Thursday, May 25, 2017

Sales Upload

CREATE OR REPLACE PACKAGE BODY APPS.cmgom070_sales_adj_pck
AS
 
   CURSOR val_cur
   IS
      SELECT ACCOUNT_NUMBER,
             CUSTOMER_REF_NBR,
             ADJUSTMENT_TYPE,
             BIPAD,
             ISSUE_CODE,
             APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) iss_profit
        FROM CMGOM070_STG_TBL;              --Modified for Foriegn Enhancement

   CURSOR hdr_cur
   IS
        SELECT ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) iss_profit
          FROM CMGOM070_STG_TBL
      -- where account_number = p_account_nr
      GROUP BY ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE); --Modified for Foriegn Enhancement

   CURSOR GEN_CUR (p_account_nr IN VARCHAR2)
   IS
        SELECT ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               LPAD (BIPAD, 5, '0') BIPAD,
               ISSUE_CODE,
               LINE_NUMBER,
               UPC,
               SUM (copies) quantity
          --LPAD (BIPAD, 5, '0') BIPAD, ISSUE_CODE, COPIES
          FROM CMGOM070_STG_TBL
         WHERE ACCOUNT_NUMBER = P_ACCOUNT_NR
      GROUP BY ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               LPAD (BIPAD, 5, '0'),
               ISSUE_CODE,
               LINE_NUMBER,
               UPC;

   CURSOR main_cur
   IS
        SELECT rac.customer_id,
               rac.customer_number,
               c.account_number,
               LPAD (c.bipad, 5, 0) bipad,
               inventory_item_id,
               issue_code,
               c.adjustment_type
          FROM mtl_system_items msi,
               ra_customers rac,
               cmgom070_stg_tbl c,
                apps.ra_addresses_all addr
         WHERE     LPAD (c.bipad, 5, 0) = msi.attribute6
               AND msi.organization_id = cmg_utility_pck.org_id ('HDG')
               AND addr.attribute1 = c.account_number
               AND rac.customer_id = addr.customer_id
               AND rac.attribute1 = 'MO'
               AND addr.ship_to_flag IN ('Y', 'P')
      GROUP BY rac.customer_id,
               rac.customer_number,
               c.account_number,
               LPAD (c.bipad, 5, 0),
               msi.inventory_item_id,
               c.issue_code,
               c.adjustment_type;

   CURSOR customer_cur (
      p_account_nr IN VARCHAR2)
   IS
      SELECT RC.CUSTOMER_NAME,
             CCA.PRICE_LIST_ID,
             CCA.ORDER_TYPE_ID,
             rc.customer_id,
             rc.sales_channel_code,
             l.profitcenter_id,
             -- rc.attribute1  source
             addr.attribute1 SOURCE
        FROM apps.cmg_customer_attributes_vw cca,
             ra_customers rc,               --Modified for Foriegn Enhancement
             RA_ADDRESSES ADDR,
             apps.cmg_logo_mapping_vw l
       WHERE     cca.customer_id = rc.customer_id
             AND addr.attribute1 = p_account_nr
             AND RC.CUSTOMER_ID = ADDR.CUSTOMER_ID
             AND SUBSTR (rc.customer_name, 1, 1) = l.customer_name --Modified for Foriegn Enhancement
             AND rc.attribute1 = 'MO'
             AND addr.ship_to_flag IN ('Y', 'P');

   CURSOR dup_customer_cur (
      p_account_nr IN VARCHAR2)
   IS
      SELECT COUNT (*) ac_count
        FROM apps.cmg_customer_attributes_vw cca,
             ra_customers rc,
             ra_addresses addr
       WHERE     cca.customer_id = rc.customer_id
             AND addr.attribute1 = p_account_nr
             AND rc.customer_id = addr.customer_id
             AND rc.attribute1 = 'MO'
             AND addr.ship_to_flag IN ('Y', 'P');

   CURSOR addr_site_cur (
      p_customer_id          IN NUMBER,
      p_ship_to_account_nr   IN VARCHAR2)
   IS
      SELECT s1.site_use_id bill_to_id,
             s2.site_use_id ship_to_id,
             s1.address_id bill_add_id,
             s2.address_id ship_add_id
        FROM ra_site_uses s1,
             ra_site_uses s2,
             ra_addresses a1,
             ra_addresses a2,
             ra_customers c
       WHERE     c.customer_id = a1.customer_id
             AND c.customer_id = a2.customer_id
             AND a1.bill_to_flag IN ('Y', 'P')
             AND a2.ship_to_flag IN ('Y', 'P')
             AND a2.attribute1 = p_ship_to_account_nr
             AND a1.address_id = s1.address_id
             AND a2.address_id = s2.address_id
             AND s1.status = 'A'
             AND s2.status = 'A'
             AND s1.site_use_code = 'BILL_TO'
             AND s2.site_use_code = 'SHIP_TO'
             AND c.customer_id = p_customer_id;

   CURSOR salesrep_id_cur
   IS
      SELECT salesrep_id
        FROM apps.ra_salesreps
       WHERE UPPER (NAME) = 'NO SALES CREDIT';

   /* CURSOR PROFITCENTER (p_bipad_isbn IN VARCHAR2, p_issue_code IN VARCHAR2)
    IS
       select distinct i.profitcenter from
        FROM CMG_PPA_TITLE_DIM_TBL T, CMG_PPA_ISSUE_DIM_TBL I
  WHERE T.TITLE_DIM_ID = I.TITLE_DIM_ID
  AND T.BIPAD = P_BIPAD_ISBN
  and i.issue_code = p_issue_code;
  */
   CURSOR line_item_cur (
      p_iss_profit VARCHAR2)                --Modified for Foriegn Enhancement
   IS
        SELECT LPAD (bipad, 5, '0') bipad,
               issue_code,
               copies,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE)
                  line_iss_profit
          FROM CMGOM070_STG_TBL
         WHERE APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) =
                  p_iss_profit
      GROUP BY bipad, issue_code, copies;

   CURSOR item_cur (
      p_bipad_isbn   IN VARCHAR2,
      p_issue_code   IN VARCHAR2)
   IS
      SELECT DISTINCT
             msi.inventory_item_id,
             rev.attribute7,
             MSI.PRIMARY_UOM_CODE,
             l.profitcenter_id,             --Modified for Foriegn Enhancement
             rev.attribute8 cover_date,                     -- added 10/6/2014
             TO_CHAR (rev.effectivity_date, 'DD-MON-YYYY') on_sale_date, --added 10/6/2014
             rev.attribute11 off_sale_date,                  --added 10/6/2014
             rev.attribute12 last_return_date,              -- added 10/6/2014
             msi.returnable_flag returnable_flag            -- added 10/6/2014
        FROM MTL_SYSTEM_ITEMS MSI,
             MTL_ITEM_REVISIONS REV,
             PO.PO_VENDORS P,               --Modified for Foriegn Enhancement
             apps.cmg_logo_mapping_vw l
       WHERE     rev.attribute7 = p_issue_code
             AND msi.inventory_item_id = rev.inventory_item_id
             AND msi.organization_id = rev.organization_id
             AND msi.attribute6 = p_bipad_isbn
             AND msi.inventory_item_status_code = 'HDG ACTIVE'
             AND NVL (rev.attribute1, 'N') = 'N'
             AND MSI.ORGANIZATION_ID = CMG_UTILITY_PCK.ORG_ID ('HDG')
             AND REV.attribute6 = TO_CHAR (p.vendor_id)
             AND p.attribute13 = l.profitcenter_id;

   CURSOR netsale_cur (
      p_customer_id         IN NUMBER,
      p_inventory_item_id   IN NUMBER,
      p_issue_code          IN VARCHAR2)
   IS
      SELECT sol.unit_selling_price,
             line_id,
             SUBSTR (sol.attribute5, 1, 10) cover_price,
             sol.attribute2 cover_date,
             sol.attribute3 edition,
             sol.attribute6 on_sale_date,
             sol.attribute7 off_sale_date,
             sol.attribute8 last_return_date,
             sol.attribute9 returnable_status,
             sol.pricing_attribute1 upc
        FROM oe_order_lines sol, oe_order_headers soh
       WHERE     sol.unit_selling_price > 0
             AND NVL (sol.attribute13, 'xx') <> 'OBSOLETE'
             AND sol.attribute1 = p_issue_code
             AND sol.inventory_item_id = p_inventory_item_id
             AND sol.ship_from_org_id = cmg_utility_pck.org_id ('HDG')
             AND soh.ordered_date >= ADD_MONTHS (TRUNC (SYSDATE), -36)
             AND sol.header_id = soh.header_id
             AND soh.order_category_code = 'ORDER'
             AND soh.sold_to_org_id = p_customer_id
             AND ROWNUM = 1;


   CURSOR netsale_return_cur (
      p_customer_id         IN NUMBER,
      p_inventory_item_id   IN NUMBER,
      p_issue_code          IN VARCHAR2)
   IS
      SELECT sol.unit_selling_price,
             line_id,
             SUBSTR (sol.attribute5, 1, 10) cover_price,
             sol.attribute2,
             sol.attribute3 edition,
             sol.attribute6 on_sale_date,
             sol.attribute7 off_sale_date,
             sol.attribute8 last_return_date,
             sol.attribute9 returnable_status,
             sol.pricing_attribute1 upc
        FROM oe_order_lines sol, oe_order_headers soh
       WHERE     NVL (sol.attribute13, 'xx') <> 'OBSOLETE'
             --   and sol.unit_selling_price >0
             AND sol.attribute1 = p_issue_code
             AND sol.inventory_item_id = p_inventory_item_id
             AND sol.ship_from_org_id = cmg_utility_pck.org_id ('HDG')
             AND sol.header_id = soh.header_id
             AND soh.sold_to_org_id = p_customer_id
             AND soh.order_category_code = 'RETURN'
             --         AND months_between(trunc(sysdate),soh.ordered_date ) <= 36
             AND soh.ordered_date >= ADD_MONTHS (TRUNC (SYSDATE), -36)
             AND ROWNUM = 1;

   --  ORDER BY sol.unit_selling_price desc;

   CURSOR order_source_cur
   IS
      SELECT order_source_id
        FROM apps.oe_order_sources
       WHERE NAME = 'HDG MANUAL ADJ';

   CURSOR any_edition_cur (
      p_inventory_item_id   IN NUMBER,
      p_issue_code          IN VARCHAR2)
   IS
      SELECT attribute13 edition, attribute10 upc
        FROM mtl_item_revisions rev
       WHERE     rev.inventory_item_id = p_inventory_item_id
             AND rev.organization_id = cmg_utility_pck.org_id ('HDG')
             AND rev.attribute7 = p_issue_code
             AND NVL (rev.attribute1, 'N') = 'N'
             AND ROWNUM = 1;

   CURSOR line_cur (
      p_account_number     IN NUMBER,
      p_customer_ref_nbr   IN VARCHAR2,
      p_adjustment_type    IN VARCHAR2,
      p_iss_profit            VARCHAR2   --number to varchar2 vijay 11/17/2014
                                      )     --Modified for Foriegn Enhancement
   IS
        SELECT LPAD (bipad, 5, '0') bipad,
               issue_code,
               line_number,
               upc,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE),
               SUM (copies) quantity
          FROM cmgom070_stg_tbl
         WHERE     account_number = p_account_number
               AND customer_ref_nbr = p_customer_ref_nbr
               AND adjustment_type = p_adjustment_type
               AND APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) =
                      p_iss_profit
      GROUP BY LPAD (bipad, 5, '0'),
               issue_code,
               line_number,
               upc;

   CURSOR user_order_adj_type_cur (
      p_uesr_adjustment_type IN VARCHAR2)
   IS
      SELECT ffvl.description sales_adjust_upload_type
        FROM fnd_flex_values_vl ffvl, fnd_flex_value_sets ffvs
       WHERE     ffvl.flex_value_set_id = ffvs.flex_value_set_id
             AND ffvs.flex_value_set_name = 'CMG_SALES_ADJ_UPLOAD_TYPES'
             AND ffvl.flex_value = p_uesr_adjustment_type;

   --   CURSOR user_order_type_like_cur (
   --      p_user_order_adj_type   IN   VARCHAR2,
   --      p_order_type_id         IN   NUMBER
   --   )
   --   IS
   --      SELECT    SUBSTR (NAME,
   --                        1,
   --                        INSTR (NAME, '-', 1, 1) - 1
   --                       )
   --             || '%'
   --             || p_user_order_adj_type
   --             || '%'
   ----             || SUBSTR (NAME, INSTR (NAME, '-', -1, 1) + 1, LENGTH (NAME))
   --             || SUBSTR (NAME, INSTR (NAME, '-', -1, 2) + 1, 2)
   --                                                        derived_user_adj_type
   --        FROM oe_transaction_types
   --       WHERE end_date_active IS NULL
   --         AND NVL (end_date_active, SYSDATE) >= SYSDATE
   --         AND transaction_type_id = p_order_type_id;

   /* Changed the Cursor to accept the new Audit Order Types ---SCR 1348*/

   CURSOR user_order_type_like_cur (
      p_user_order_adj_type   IN VARCHAR2,
      p_order_type_id         IN NUMBER)
   IS
      SELECT order_category_code,
                SUBSTR (NAME,
                        1,
                          INSTR (NAME,
                                 '-',
                                 1,
                                 1)
                        - 1)
             || '%'
             || DECODE (
                   p_user_order_adj_type,
                   'AUDIT RETURN', '-' || p_user_order_adj_type || '-',
                   'AUDIT RETURN REVERSAL',    '-'
                                            || p_user_order_adj_type
                                            || '-',
                   'AUDIT DRAW', '-' || p_user_order_adj_type || '-',
                   'AUDIT DRAW REVERSAL', '-' || p_user_order_adj_type || '-',
                   '-' || p_user_order_adj_type)                    --SCR 1348
             || '%'
             || SUBSTR (NAME,
                          INSTR (NAME,
                                 '-',
                                 -1,
                                 2)
                        + 1,
                        2)
             || '%'
                derived_user_adj_type       --Modified for Foriegn Enhancement
        --SUBSTR (NAME,INSTR (NAME, '-', 1, 3) - 2,2) derived_user_adj_type
        FROM apps.oe_transaction_types
       WHERE     end_date_active IS NULL
             AND NVL (end_date_active, SYSDATE) >= SYSDATE
             AND transaction_type_id = p_order_type_id;



   CURSOR user_order_type_derived_cur (
      p_user_order_adj_type IN VARCHAR2)
   IS
      SELECT NAME,
             order_category_code,
             transaction_type_id,
             accounting_rule_id,
             invoicing_rule_id,
             conversion_type_code,
             currency_code
        FROM apps.OE_TRANSACTION_TYPES
       WHERE     NAME LIKE p_user_order_adj_type --H%-AUDIT RETURN REVERSAL-%CN
             AND end_date_active IS NULL
             AND NVL (end_date_active, SYSDATE) >= SYSDATE
             AND NAME NOT LIKE '%TRANSFER%'
             AND NAME NOT LIKE '%PRICE CHANGE%';


   -- cursor to capture foreign extra days   vijay 12/15/2014
   CURSOR foreign_cur (
      p_customer_id IN NUMBER)
   IS
      SELECT a.attribute14 extra_days       --, rc.customer_name customer_name
        FROM AR_CUSTOMER_PROFILES_V a, ra_customers rc
       WHERE     a.customer_id = rc.customer_id
             AND a.customer_id = p_customer_id
             AND ROWNUM < 2;

   /*   -- cursor to capture profitcenters  vijay 12/16/2014
      CURSOR prof_cur (
          p_cust_name in VARCHAR2)
      IS
         SELECT profitcenter
           FROM cmg_logo_mapping_vw
         WHERE customer_name = substr(p_cust_name,1,1);
    */

   v_bill_to_site_use_id            NUMBER;
   v_ship_to_site_use_id            NUMBER;
   v_bill_address_id                NUMBER;
   v_ship_address_id                NUMBER;
   v_sales_channel_code             VARCHAR2 (50);
   netsale_rec                      netsale_cur%ROWTYPE;
   v_accounting_rule_id             NUMBER;
   v_invoicing_rule_id              NUMBER;
   v_ord_source_id                  NUMBER;
   v_conversion_type_code           VARCHAR2 (20);
   v_currency_code                  VARCHAR2 (10);
   v_salesrep_id                    NUMBER;
   customer_rec                     customer_cur%ROWTYPE;
   dup_customer_rec                 dup_customer_cur%ROWTYPE;
   skip_header                      EXCEPTION;
   v_order_type_id                  NUMBER;
   v_original_system_ref            VARCHAR2 (100);
   v_order_type                     VARCHAR2 (40);
   v_customer_ref_nr                VARCHAR2 (50);
   v_edition                        VARCHAR2 (10) := NULL; -- =null added by vijay 10/7/2014
   v_current_line_nr                NUMBER := 0;
   v_conversion_code                VARCHAR2 (20);
   v_error_flag                     VARCHAR2 (1) := 'N';
   v_user_id                        NUMBER DEFAULT fnd_global.user_id;
   v_sysdate                        DATE DEFAULT SYSDATE;
   v_error_log                      VARCHAR2 (100);
   p_errbuf                         VARCHAR2 (80);
   p_retcode                        NUMBER;
   v_dirpath                        VARCHAR2 (100);
   v_filepath                       VARCHAR2 (100);
   v_path                           VARCHAR2 (100);
   v_status                         VARCHAR2 (80);
   v_req_id                         NUMBER DEFAULT (fnd_global.conc_request_id);
   v_user_name                      VARCHAR2 (80);
   v_logfile                        UTL_FILE.file_type;
   v_request                        NUMBER;
   v_request_status                 BOOLEAN;
   v_errbuf                         VARCHAR2 (80);
   v_retcode                        VARCHAR2 (80);
   v_phase                          VARCHAR2 (100);
   v_dev_phase                      VARCHAR2 (100);
   v_dev_status                     VARCHAR2 (100);
   v_message                        VARCHAR2 (100);
   ud_loader_error                  EXCEPTION;
   ud_no_file_found                 EXCEPTION;
   ud_dup_records                   EXCEPTION;
   ud_item_not_found                EXCEPTION;
   ud_customer_not_found            EXCEPTION;
   ud_order_not_found               EXCEPTION;
   ud_negative_copies_found         EXCEPTION;
   ud_order_type_not_found          EXCEPTION;
   ud_upc_price_not_found           EXCEPTION;
   ud_data_validation_error_found   EXCEPTION;
   UD_ISSUEBIPAD_NOT_FOUND          EXCEPTION;
   v_inventory_item_id              NUMBER;
   v_transaction_type_id            NUMBER;
   v_item_uom                       mtl_system_items.primary_uom_code%TYPE;
   v_issue_code                     VARCHAR2 (6);
   v_count                          NUMBER := 0;
   v_ret_msg_txt                    VARCHAR2 (100);
   v_dphase                         VARCHAR2 (100);
   v_dstatus                        VARCHAR2 (100);
   v_order_ajustment_type           VARCHAR2 (100);
   v_upc                            VARCHAR2 (12) := NULL; --=null added by vijay 10/7/2014
   v_order_catg_code                VARCHAR2 (50);
   v_o_price_list_id                NUMBER;
   v_o_price_list_name              VARCHAR2 (150);
   v_cover_price                    NUMBER;
   v_start_date                     DATE;
   v_end_date                       DATE;
   v_result_cover_price             NUMBER;
   V_RESULT_SELLING_PRICE           NUMBER;
   v_result_discount                NUMBER;
   V_RESULT_DISC_AMOUNT             NUMBER;
   v_profitcenter                   NUMBER;
   user_order_adj_type_rec          user_order_adj_type_cur%ROWTYPE;
   user_order_type_derived_rec      user_order_type_derived_cur%ROWTYPE;
   user_order_type_like_rec         user_order_type_like_cur%ROWTYPE;
   netsale_return_rec               netsale_return_cur%ROWTYPE;
   v_column_error_check             NUMBER DEFAULT (0);
   v_header_error_check             NUMBER DEFAULT (0);
   v_lines_error_check              NUMBER DEFAULT (0);
   v_update_error_check             NUMBER DEFAULT (0);
   v_iss_profit                     NUMBER;
   v_cover_date                     VARCHAR2 (100);         -- added 10/6/2014
   v_on_sale_date                   DATE;                   -- added 10/6/2014
   v_off_sale_date                  VARCHAR2 (100);         -- added 10/6/2014
   v_last_return_date               VARCHAR2 (100);          --added 10/6/2014
   v_returnable_flag                MTL_SYSTEM_ITEMS.returnable_flag%TYPE; --added 12/9/2014
   --profit_center_check boolean :=FALSE;            --added 10/6/2014
   item_rec                         item_cur%ROWTYPE;
   v_extra_days                     AR_CUSTOMER_PROFILES_V.attribute14%TYPE; --added 12/16/2014

   --v_cust_name                      ra_customers.customer_name%TYPE;            --added 12/16/2014
   --v_profitcenter_name              cmg_logo_mapping_vw.profitcenter%TYPE;      --added 12/16/2014


   PROCEDURE main_prc (p_errbuf        OUT VARCHAR2,
                       p_retcode       OUT NUMBER,
                       p_filename   IN     VARCHAR2)
   IS
   BEGIN
      cmg_utility_pck.write_output (
         '+--------------------------------------' || '------------+');
      cmg_utility_pck.write_output ('Hearst Applications');
      cmg_utility_pck.write_output ('Copyright (c) Comag Marketing Group');
      cmg_utility_pck.write_output (
         '+-------------------------------------' || '--------------+');
      cmg_utility_pck.write_output (
            'Current System Time is : '
         || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
      cmg_utility_pck.write_output (' ');
      cmg_utility_pck.write_output (
         '+-------------------------------------' || '--------------+');
      cmg_utility_pck.write_output (' ');
      fnd_profile.get ('HDG_INCOMING_PATH', v_path);
      v_filepath := v_path || '/' || p_filename;
      hdg_submit_request_pck.hdg_sub_req_prc (
         'HDG',
         'CMGOM070_LDR',
         'CMGOM070 Upload Sales Adjustments Loader Program',
         v_filepath,
         v_status);

      IF v_status <> 'SUCCESS'
      THEN
         RAISE ud_loader_error;
      END IF;

      OPEN order_source_cur;

      FETCH order_source_cur INTO v_ord_source_id;

      CLOSE order_source_cur;

      -- Validation 2 - Check Account Number/Customer is present in the Customer setup or not
      -- Start - 101
      /*  FOR SPLIT_REC IN SPLIT_CUR
        LOOP

        cmg_utility_pck.write_output (SUBSTR(SPLIT_REC.CUSTOMER_NAME,1,1));
        IF (SUBSTR(SPLIT_REC.CUSTOMER_NAME,1,1) = 'G') THEN
        --cmgom070_sales_adj_pck.GEN_PRC(split_rec.account_number,
        --v_errbuf,
        --v_retcode
     --);
     null;
  ELSE */


      FOR VAL_REC IN val_cur
      LOOP                                  --Modified for Foriegn Enhancement
         IF VAL_rec.iss_profit = 'NO ISSUE PROFITCENTER'
         THEN
            cmg_utility_pck.write_output (
                  'Invalid issue/bipad: Bipad: '
               || VAL_REC.bipad
               || '  '
               || 'Issue_code :'
               || VAL_REC.issue_code);
            v_error_flag := 'Y';
         -- RAISE UD_ISSUEBIPAD_NOT_FOUND;
         END IF;
      END LOOP;



      FOR hdr_rec IN hdr_cur                --Modified for Foriegn Enhancement
      LOOP
         --101
         OPEN customer_cur (hdr_rec.account_number);


         FETCH customer_cur INTO customer_rec;


         IF customer_cur%NOTFOUND
         THEN
            cmg_utility_pck.write_output (
                  'Customer Account Number not found for '
               || hdr_rec.account_number);
            v_error_flag := 'Y';
         END IF;

         IF customer_cur%ROWCOUNT > 1
         THEN
            cmg_utility_pck.write_output (
                  'This Account Number Assigned to Multiple Customers '
               || hdr_rec.account_number);
            v_error_flag := 'Y';
         END IF;

         CLOSE customer_cur;

         OPEN dup_customer_cur (hdr_rec.account_number);



         FETCH dup_customer_cur INTO dup_customer_rec;

         IF dup_customer_rec.ac_count > 1
         THEN
            cmg_utility_pck.write_output (
                  'This Account Number Assigned to Multiple Customers '
               || hdr_rec.account_number);
            v_error_flag := 'Y';
         END IF;

         CLOSE dup_customer_cur;
      END LOOP;



      --   end loop;-- 101

      -- Validation 2 - Check Account Number/Customer is present in the Customer setup or not
      -- End- 101

      -- Validation  5a - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
      -- start 105a
      BEGIN
         -- FOR SPLIT_REC IN SPLIT_CUR-- 105 a
         -- LOOP

         FOR hdr_rec IN hdr_cur
         LOOP
            --BEGIN


            IF hdr_rec.iss_profit = 'NO ISSUE PROFITCENTER' --added vijay 11/17/2014
            THEN
               v_iss_profit := NULL;
            ELSE
               v_iss_profit := hdr_rec.iss_profit; --Modified for Foriegn Enhancement
            END IF;

            OPEN user_order_adj_type_cur (hdr_rec.adjustment_type);

            FETCH user_order_adj_type_cur INTO user_order_adj_type_rec;

            CLOSE user_order_adj_type_cur;


            OPEN user_order_type_like_cur (user_order_adj_type_rec.sales_adjust_upload_type,
                                           customer_rec.order_type_id);

            FETCH user_order_type_like_cur INTO user_order_type_like_rec;

            CLOSE user_order_type_like_cur;

            --Modified for Foriegn Enhancement



            IF (v_iss_profit <> customer_rec.profitcenter_id)
            THEN -- hdr_rec.iss_profit changed to v_iss_profit vijay 11/17/2014
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;

               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive the Order Type for Sales Adjustment Type / Accountfor(2) '
                     || hdr_rec.adjustment_type
                     || '/'
                     || hdr_rec.account_number);
                  RAISE ud_order_type_not_found;
               END IF;

               CLOSE user_order_type_derived_cur;

               BEGIN
                  SELECT transaction_type_id
                    INTO v_transaction_type_id
                    FROM apps.oe_transaction_types t,
                         hdg.gen_profitcenter_mapping_tbl m
                   WHERE     t.name LIKE
                                   M.DERIVED_ORDERTYPE
                                || SUBSTR (t.name, INSTR (t.name, '-', 2))
                                || '%'
                         AND m.WHOLESALER_PROFITCENTER_ID =
                                customer_rec.profitcenter_id
                         AND m.ISSUE_PROFITCENTER_ID = hdr_rec.iss_profit
                         AND t.name LIKE
                                   '%' || SUBSTR(user_order_type_derived_rec.name,5)||'%'; -- SCR 8591
                             --   || user_order_adj_type_rec.sales_adjust_upload_type
                              --  || '-%';
               /*select transaction_type_id
               into  v_transaction_type_id
              from apps.oe_transaction_types t,
                   hdg.gen_ordertypes_mapping_tbl m,
                   apps.cmg_logo_mapping_vw l
              where t.name=decode(v_profitcenter,l.profitcenter_id,m.name||l.customer_name||m.attribute1)
              and l.profitcenter_id=v_profitcenter
             and m.name like 'G-MO-'||user_order_adj_type_rec.sales_adjust_upload_type||'-%'
              and m.attribute1='FN'
              and m.attribute2 is null;
              */
               EXCEPTION
                  WHEN NO_DATA_FOUND
                  THEN
                     v_column_error_check := v_column_error_check + 1;
                     v_lines_error_check := v_lines_error_check + 1;

                     cmg_utility_pck.write_output ('');
                     -- cmg_utility_pck.write_output('     Error in record '||
                     --                              v_details_rec.rownum);
                     cmg_utility_pck.write_output (
                           ' Order type  not available '
                        || 'for the customer '
                        || customer_rec.customer_name);
               END;
            ELSE
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;


               V_TRANSACTION_TYPE_ID :=
                  user_order_type_derived_rec.transaction_type_id;



               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive Order Type from Sales Adjustment Type for the account: '
                     || hdr_rec.account_number);
                  v_error_flag := 'Y';
               END IF;

               CLOSE user_order_type_derived_cur;
            END IF;
         --END IF;


         END LOOP;                          --Modified for Foriegn Enhancement
      --  end loop;
      END;

      -- 105a

      -- Validation  5a - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
      -- End 105a

      -- Validation  3 - Check bipad and Issue codes are present in the Item setup
      -- Start 102
      FOR line_item_rec IN line_item_cur (v_iss_profit)
      LOOP
         IF line_item_rec.copies < 0
         THEN
            cmg_utility_pck.write_output (
                  'Negative Copies Found for the'
               || ' Bipad: '
               || line_item_rec.bipad
               || '  '
               || ' Issue_code : '
               || line_item_rec.issue_code);
            v_error_flag := 'Y';
         END IF;

         -- 102
         OPEN item_cur (line_item_rec.bipad, line_item_rec.issue_code);

         FETCH ITEM_CUR
         INTO v_inventory_item_id,
              v_issue_code,
              v_item_uom,
              v_profitcenter,
              v_cover_date,
              v_on_sale_date,
              v_off_sale_date,
              v_last_return_date,                   --added by vijay 10/6/2013
              v_returnable_flag;                   -- added by vijay 12/9/2014

         IF item_cur%NOTFOUND
         THEN
            cmg_utility_pck.write_output (
                  'Bipad/Issue Not Present In Item Setup. '
               || ' Bipad: '
               || line_item_rec.bipad
               || '  '
               || ' Issue_code :'
               || line_item_rec.issue_code);
            v_error_flag := 'Y';
         END IF;

         CLOSE item_cur;
      END LOOP;                                                         -- 102


      -- Validation  3 - Check bipad and Issue codes are present in the Item setup
      -- End 102
      -- Validation  9 - Check for the Existing of Sales Order  and UPC for the given Customer Id, Invenroty Item Id and Issue codes
      -- Start 109
      -- FOR SPLIT_REC IN SPLIT_CUR
      -- LOOP
      FOR hdr_rec IN hdr_cur
      LOOP
         --  109a
         OPEN customer_cur (hdr_rec.account_number);

         FETCH customer_cur INTO customer_rec;

         CLOSE customer_cur;


         FOR line_rec IN line_cur (hdr_rec.account_number,
                                   hdr_rec.customer_ref_nbr,
                                   hdr_rec.adjustment_type,
                                   hdr_rec.iss_profit) --Modified for Foriegn Enhancement
         LOOP                                                          -- 109b
            OPEN ITEM_CUR (LINE_REC.BIPAD, LINE_REC.ISSUE_CODE);

            FETCH ITEM_CUR
            INTO v_inventory_item_id,
                 v_issue_code,
                 v_item_uom,
                 v_profitcenter,            --Modified for Foriegn Enhancement
                 v_cover_date,
                 v_on_sale_date,
                 v_off_sale_date,
                 v_last_return_date,                --added by vijay 10/6/2014
                 v_returnable_flag;                -- added by vijay 12/9/2014

            IF item_cur%NOTFOUND
            THEN
               cmg_utility_pck.write_output (
                     'Item not found for bipad/issue code: '
                  || line_rec.bipad
                  || '-'
                  || line_rec.issue_code);
            END IF;

            CLOSE item_cur;



            OPEN netsale_cur (customer_rec.customer_id,
                              v_inventory_item_id,
                              line_rec.issue_code);

            FETCH netsale_cur INTO netsale_rec;

            IF netsale_cur%NOTFOUND AND line_rec.upc IS NULL
            THEN
               IF hdr_rec.adjustment_type IN
                     ('SNC', 'SCR', 'DRW', 'RRV', 'ADW', 'ARV') -- SCR 1348 ( Added the New audit adjustment types)
               THEN
                  OPEN netsale_return_cur (customer_rec.customer_id,
                                           v_inventory_item_id,
                                           line_rec.issue_code);

                  FETCH netsale_return_cur INTO netsale_return_rec;



                  IF netsale_return_cur%NOTFOUND
                  THEN
                     cmg_utility_pck.write_output (
                           'Original Return Order not found for Adjustment Type/Acccount/Bipad/Issue : '
                        || hdr_rec.adjustment_type
                        || '-'
                        || hdr_rec.account_number
                        || '-'
                        || line_rec.bipad
                        || '-'
                        || line_rec.issue_code);
                     v_error_flag := 'Y';
                  END IF;

                  CLOSE netsale_return_cur;
               ELSE
                  cmg_utility_pck.write_output (
                        'Original Sales Order not found for Adjustment Type/Acccount/Bipad/Issue : '
                     || hdr_rec.adjustment_type
                     || '-'
                     || hdr_rec.account_number
                     || '-'
                     || line_rec.bipad
                     || '-'
                     || line_rec.issue_code);
                  v_error_flag := 'Y';
               END IF;
            ELSE
               IF netsale_rec.edition IS NULL
               THEN
                  OPEN any_edition_cur (v_inventory_item_id,
                                        line_rec.issue_code);

                  FETCH any_edition_cur
                  INTO v_edition, v_upc;

                  CLOSE any_edition_cur;
               END IF;



               IF     hdr_rec.adjustment_type IN ('SCR', 'DRW', 'ADW', 'MRC')
                  AND line_rec.upc IS NULL -- SCR 1348 ( Added the New audit adjustment types)
               THEN
                  IF    netsale_rec.cover_price = 0
                     OR netsale_rec.cover_price IS NULL
                  THEN
                     IF netsale_rec.upc IS NULL
                     THEN
                        cmg_utility_pck.write_output (
                              'UPC Not found for this SCR Type Adjustments Account/Bipad/Issue : '
                           || hdr_rec.account_number
                           || '-'
                           || line_rec.bipad
                           || '-'
                           || line_rec.issue_code);
                        v_error_flag := 'Y';
                     END IF;
                  END IF;
               END IF;
            END IF;

            CLOSE netsale_cur;
         END LOOP;
      -- 109b                                              -- line
      END LOOP;



      -- end loop;

      -- 109a                                              -- hdr_cur
      -- Validation  9 - Check for the Existing of Sales Order  and UPC for the given Customer Id, Invenroty Item Id and Issue codes
      -- End 109
      IF v_error_flag = 'Y'
      THEN
         RAISE ud_data_validation_error_found;
      END IF;

      --FOR SPLIT_REC IN SPLIT_CUR
      --loop
      FOR hdr_rec IN hdr_cur
      LOOP
         OPEN customer_cur (hdr_rec.account_number);

         FETCH customer_cur INTO customer_rec;

         CLOSE customer_cur;

         OPEN addr_site_cur (customer_rec.customer_id, customer_rec.SOURCE);

         FETCH addr_site_cur
         INTO v_bill_to_site_use_id,
              v_ship_to_site_use_id,
              v_bill_address_id,
              v_ship_address_id;

         IF addr_site_cur%NOTFOUND
         THEN
            cmg_utility_pck.write_output (
                  'Address Info not found for the Account(2) #: '
               || hdr_rec.account_number);
         END IF;

         CLOSE addr_site_cur;

         OPEN salesrep_id_cur;

         FETCH salesrep_id_cur INTO v_salesrep_id;

         CLOSE salesrep_id_cur;

         v_customer_ref_nr := hdr_rec.customer_ref_nbr;
         v_original_system_ref :=
               'SAJ-'
            || hdr_rec.account_number
            || '-'
            || hdr_rec.customer_ref_nbr
            || hdr_rec.iss_profit           --Modified for Foriegn Enhancement
            || '-'
            || hdr_rec.adjustment_type
            || '-'
            || SYSDATE;

         -- Validation  5 - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
         -- start 105
         BEGIN                                                          -- 105
            --             cmg_utility_pck.write_output (   'Account No: '
            --                                           || hdr_rec.account_number
            --                                           || ' Adjustment Type: '
            --                                           || hdr_rec.adjustment_type
            --                                          );
            OPEN user_order_adj_type_cur (hdr_rec.adjustment_type);

            FETCH user_order_adj_type_cur INTO user_order_adj_type_rec;

            CLOSE user_order_adj_type_cur;

            OPEN user_order_type_like_cur (user_order_adj_type_rec.sales_adjust_upload_type,
                                           customer_rec.order_type_id);



            FETCH user_order_type_like_cur INTO user_order_type_like_rec;

            CLOSE user_order_type_like_cur;

            --             cmg_utility_pck.write_output
            --                           (   'Account No: '
            --                            || hdr_rec.account_number
            --                            || ' Derived Adjustment Type: '
            --                            || user_order_adj_type_rec.sales_adjust_upload_type
            --                            || ' Derived Adj Type: '
            --                            || user_order_type_like_rec.derived_user_adj_type
            --                           );

            --Modified for Foriegn Enhancement
            IF (hdr_rec.iss_profit <> customer_rec.profitcenter_id)
            THEN
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;

               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive the Order Type for Sales Adjustment Type / Accountfor(2) '
                     || hdr_rec.adjustment_type
                     || '/'
                     || hdr_rec.account_number);
                  RAISE ud_order_type_not_found;
               END IF;

               CLOSE user_order_type_derived_cur;

               BEGIN
                  SELECT transaction_type_id
                    INTO v_transaction_type_id
                    FROM apps.oe_transaction_types t,
                         hdg.gen_profitcenter_mapping_tbl m
                   WHERE     t.name LIKE
                                   M.DERIVED_ORDERTYPE
                                || SUBSTR (t.name, INSTR (t.name, '-', 2))
                                || '%'
                         AND m.WHOLESALER_PROFITCENTER_ID =
                                customer_rec.profitcenter_id
                         AND m.ISSUE_PROFITCENTER_ID = hdr_rec.iss_profit
                         AND t.name LIKE
                                   '%'
                                  || SUBSTR(user_order_type_derived_rec.name,5)||'%'; --SCR 8591
                               -- || user_order_adj_type_rec.sales_adjust_upload_type
                               -- || '-%';
               /*select transaction_type_id
               into  v_transaction_type_id
              from apps.oe_transaction_types t,
                   hdg.gen_ordertypes_mapping_tbl m,
                   apps.cmg_logo_mapping_vw l
              where t.name=decode(v_profitcenter,l.profitcenter_id,m.name||l.customer_name||m.attribute1)
              and l.profitcenter_id=v_profitcenter
             and m.name like 'G-MO-'||user_order_adj_type_rec.sales_adjust_upload_type||'-%'
              and m.attribute1='FN'
              and m.attribute2 is null;
              */
               EXCEPTION
                  WHEN NO_DATA_FOUND
                  THEN
                     v_column_error_check := v_column_error_check + 1;
                     v_lines_error_check := v_lines_error_check + 1;

                     cmg_utility_pck.write_output ('');
                     -- cmg_utility_pck.write_output('     Error in record '||
                     --                              v_details_rec.rownum);
                     cmg_utility_pck.write_output (
                           ' Order type  not available '
                        || 'for the customer '
                        || customer_rec.customer_name);
               END;
            ELSE
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;

               V_TRANSACTION_TYPE_ID :=
                  user_order_type_derived_rec.transaction_type_id;

               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive the Order Type for Sales Adjustment Type / Accountfor(2) '
                     || hdr_rec.adjustment_type
                     || '/'
                     || hdr_rec.account_number);
                  RAISE ud_order_type_not_found;
               END IF;

               CLOSE user_order_type_derived_cur;
            END IF;                         --Modified for Foriegn Enhancement
         END;                                                           -- 105



         -- Validation  5 - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
         -- End 105
         INSERT INTO oe_headers_interface (creation_date,
                                           created_by,
                                           last_update_date,
                                           last_updated_by,
                                           orig_sys_document_ref,
                                           sold_to_org_id,
                                           order_type_id,
                                           order_category,
                                           ordered_date,
                                           transactional_curr_code,
                                           order_source_id,
                                           price_list_id,
                                           salesrep_id,
                                           invoice_customer_id,
                                           ship_to_customer_id,
                                           invoice_to_org_id,
                                           ship_to_org_id,
                                           --  invoice_address_id,
                                           --  ship_address_id,
                                           agreement_id,
                                           customer_payment_term_id,
                                           booked_flag,
                                           accounting_rule_id,
                                           invoicing_rule_id,
                                           sales_channel_code,
                                           conversion_type_code,
                                           customer_po_number,
                                           CONTEXT,
                                           attribute1,
                                           attribute2,
                                           attribute3,
                                           ready_flag,
                                           rejected_flag,
                                           operation_code,
                                           return_reason_code)
              VALUES (
                        SYSDATE,
                        v_user_id,
                        SYSDATE,
                        v_user_id,
                        v_original_system_ref,
                        customer_rec.customer_id,
                        V_TRANSACTION_TYPE_ID, --user_order_type_derived_rec.transaction_type_id,--Modified for Foriegn Enhancement
                        --v_order_type_id,
                        user_order_type_derived_rec.order_category_code,
                        --v_order_catg_code, --'ORDER',
                        SYSDATE,
                        user_order_type_derived_rec.currency_code,
                        --v_currency_code,
                        v_ord_source_id,
                        customer_rec.price_list_id,
                        v_salesrep_id,
                        customer_rec.customer_id,
                        customer_rec.customer_id,
                        v_bill_to_site_use_id,
                        v_ship_to_site_use_id,
                        --    v_bill_address_id,
                        --    v_ship_address_id,
                        NULL,                        --  hdr_rec.agreement_id,
                        5,                                       -- Immeditate
                        'Y',
                        user_order_type_derived_rec.accounting_rule_id,
                        --v_accounting_rule_id,
                        user_order_type_derived_rec.invoicing_rule_id,
                        --v_invoicing_rule_id,
                        v_sales_channel_code,
                        user_order_type_derived_rec.conversion_type_code,
                        --v_conversion_type_code,
                        v_customer_ref_nr,
                        user_order_type_derived_rec.order_category_code,
                        --v_order_catg_code ,  -- 'ORDER',
                        NULL,
                        NULL,
                        v_customer_ref_nr,
                        'Y',
                        'N',
                        'CREATE',
                        DECODE (
                           user_order_type_derived_rec.order_category_code,
                           'RETURN', 'RETURN',
                           NULL));



         --     FOR line_rec IN line_cur(hdr_rec.customer_number,hdr_rec.customer_ref_nr)



         v_current_line_nr := 0;

         FOR line_rec IN line_cur (hdr_rec.account_number,
                                   hdr_rec.customer_ref_nbr,
                                   hdr_rec.adjustment_type,
                                   hdr_rec.iss_profit)
         LOOP
            OPEN item_cur (line_rec.bipad, line_rec.issue_code);

            FETCH ITEM_CUR
            --INTO item_rec;


            INTO v_inventory_item_id,
                 v_issue_code,
                 v_item_uom,
                 v_profitcenter,            --Modified for Foriegn Enhancement
                 v_cover_date,
                 v_on_sale_date,
                 v_off_sale_date,
                 v_last_return_date,                 --added by vijay10/6/2014
                 v_returnable_flag;                -- added by vijay 12/9/2014


            IF item_cur%NOTFOUND
            THEN
               cmg_utility_pck.write_output ('ITEM NOT FOUND ');
            END IF;

            --CLOSE item_cur; --modified by vijay



            OPEN netsale_cur (customer_rec.customer_id,
                              v_inventory_item_id,
                              line_rec.issue_code);

            FETCH netsale_cur INTO netsale_rec;

            -- cmg_utility_pck.write_output (
            --    'Cover_date' || netsale_rec.cover_date || ' ');


            IF     netsale_cur%NOTFOUND
               AND line_rec.upc IS NULL
               AND hdr_rec.adjustment_type NOT IN
                      ('SNC', 'SCR', 'DRW', 'RRV', 'ADW', 'ARV') -- SCR 1348 ( Added the New audit adjustment types)
            -- IF 901 -- START
            THEN
               cmg_utility_pck.write_output (
                     'Original order not found for Account/Bipad/Issue(2) : '
                  || hdr_rec.account_number
                  || '-'
                  || line_rec.bipad
                  || '-'
                  || line_rec.issue_code);
               RAISE ud_order_not_found;
            -- added - 09-May-07 - by Senthil - added to handle SNC and SNR Adjustments types -- Start
            ELSIF     netsale_cur%NOTFOUND
                  AND line_rec.upc IS NULL
                  AND hdr_rec.adjustment_type IN
                         ('SNC', 'SCR', 'DRW', 'RRV', 'ADW', 'ARV') -- SCR 1348 ( Added the New audit adjustment types)
            THEN
               OPEN netsale_return_cur (customer_rec.customer_id,
                                        v_inventory_item_id,
                                        line_rec.issue_code);

               FETCH netsale_return_cur INTO netsale_rec;

               IF netsale_return_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Original Return Order not found for Adjustment Type/Acccount/Bipad/Issue(2) : '
                     || hdr_rec.adjustment_type
                     || '-'
                     || hdr_rec.account_number
                     || '-'
                     || line_rec.bipad
                     || '-'
                     || line_rec.issue_code);
                  RAISE ud_order_not_found;
               END IF;
            -- v_sncsnr_cover_price := netsale_return_rec.cover_price ;
            -- CLOSE netsale_return_cur;
            -- added - 09-May-07 - by Senthil - added to handle SNC and SNR Adjustments types  - End ;

            --            ELSE -- commented by senthil - 09-may-07
            END IF;                                           -- IF 901 -- END

            IF netsale_rec.edition IS NULL
            THEN
               OPEN any_edition_cur (v_inventory_item_id, line_rec.issue_code);

               FETCH any_edition_cur
               INTO v_edition, v_upc;

               CLOSE any_edition_cur;
            END IF;



            IF hdr_rec.adjustment_type = 'SNC'
            THEN
               IF    netsale_rec.cover_price = 0
                  OR netsale_rec.cover_price IS NULL
               THEN
                  OPEN any_edition_cur (v_inventory_item_id,
                                        line_rec.issue_code);

                  FETCH any_edition_cur
                  INTO v_edition, v_upc;

                  CLOSE any_edition_cur;

                  cmg_price_disc_pck.calculate_list_price_prc (
                     customer_rec.price_list_id,
                     v_inventory_item_id,
                     v_upc,
                     v_o_price_list_id,
                     v_o_price_list_name,
                     v_cover_price,
                     v_start_date,
                     v_end_date);
                  v_result_selling_price := 0;
                  v_result_cover_price := NVL (v_cover_price, 0);
               ELSE
                  v_result_selling_price := 0;
                  v_result_cover_price := NVL (netsale_rec.cover_price, 0);
               END IF;
            ELSIF hdr_rec.adjustment_type IN
                     ('RRV', 'MRC', 'KIL', 'ARV', 'ART', 'AKL') -- SCR 1348 ( Added the New audit adjustment types)
            THEN
               v_result_cover_price := netsale_rec.cover_price;

               -- Added by Senthil - 09-May-07 - Start
               IF     (   v_result_cover_price = 0
                       OR v_result_cover_price IS NULL)
                  AND line_rec.upc IS NOT NULL
               THEN
                  cmg_price_disc_pck.calculate_list_price_prc (
                     customer_rec.price_list_id,
                     v_inventory_item_id,
                     line_rec.upc,
                     v_o_price_list_id,
                     v_o_price_list_name,
                     v_cover_price,
                     v_start_date,
                     v_end_date);

                  v_result_cover_price := v_cover_price;
                  cmg_price_disc_pck.calculate_discount_prc (
                     v_o_price_list_id,
                     v_inventory_item_id,
                     v_result_discount,
                     v_result_disc_amount);

                  --                v_result_discount      := p_discount;
                  --                billingprice = Coverprice - (coverprice*discount/100)
                  --                   v_result_selling_price :=
                  --                      (  v_result_cover_price
                  --                       - (v_result_cover_price * v_result_discount / 100)
                  --                      );
                  IF v_result_discount IS NOT NULL
                  THEN
                     v_result_selling_price :=
                        (ROUND (
                              v_result_cover_price
                            - (  v_result_cover_price
                               * (v_result_discount / 100)),
                            5));
                  ELSE
                     v_result_selling_price := v_result_disc_amount;
                  END IF;
               ELSE
                  v_result_cover_price := netsale_rec.cover_price;
                  v_result_selling_price := netsale_rec.unit_selling_price;
               END IF;
            --Modified for Foriegn Enhancement
            ELSIF hdr_rec.adjustment_type IN ('SCR', 'DRW', 'ADW', 'MRC') -- SCR 1348 ( Added the New audit adjustment types)
            THEN
               DBMS_OUTPUT.put_line (netsale_rec.cover_price);

               IF    netsale_rec.cover_price = 0
                  OR netsale_rec.cover_price IS NULL
               THEN
                  IF line_rec.upc IS NOT NULL
                  THEN
                     DBMS_OUTPUT.put_line (line_rec.upc);
                     cmg_price_disc_pck.calculate_list_price_prc (
                        customer_rec.price_list_id,
                        v_inventory_item_id,
                        line_rec.upc,
                        v_o_price_list_id,
                        v_o_price_list_name,
                        v_cover_price,
                        v_start_date,
                        v_end_date);

                     v_result_cover_price := v_cover_price;
                     cmg_price_disc_pck.calculate_discount_prc (
                        v_o_price_list_id,
                        v_inventory_item_id,
                        v_result_discount,
                        v_result_disc_amount);

                     --                      v_result_selling_price :=
                     --                         (  v_result_cover_price
                     --                          - (v_result_cover_price * v_result_discount / 100)
                     --                         );
                     IF v_result_discount IS NOT NULL
                     THEN
                        v_result_selling_price :=
                           (ROUND (
                                 v_result_cover_price
                               - (  v_result_cover_price
                                  * (v_result_discount / 100)),
                               5));
                     ELSE
                        v_result_selling_price := v_result_disc_amount;
                     END IF;
                  ELSIF line_rec.upc IS NULL AND netsale_rec.upc IS NOT NULL
                  THEN
                     cmg_price_disc_pck.calculate_list_price_prc (
                        customer_rec.price_list_id,
                        v_inventory_item_id,
                        netsale_rec.upc, --line_rec.upc,--Modified for Foriegn Enhancement
                        v_o_price_list_id,
                        v_o_price_list_name,
                        v_cover_price,
                        v_start_date,
                        v_end_date);

                     v_result_cover_price := v_cover_price;
                     cmg_price_disc_pck.calculate_discount_prc (
                        v_o_price_list_id,
                        v_inventory_item_id,
                        v_result_discount,
                        v_result_disc_amount);

                     --     v_result_selling_price :=
                     --      (  v_result_cover_price
                     --      - (v_result_cover_price * v_result_discount / 100)
                     --    );
                     IF v_result_discount IS NOT NULL
                     THEN
                        v_result_selling_price :=
                           (ROUND (
                                 v_result_cover_price
                               - (  v_result_cover_price
                                  * (v_result_discount / 100)),
                               5));
                     ELSE
                        v_result_selling_price := v_result_disc_amount;
                     END IF;
                  ELSIF line_rec.upc IS NULL AND netsale_rec.upc IS NULL
                  THEN
                     cmg_utility_pck.write_output (
                           'UPC Not found to calculate unit and selling price for this '
                        || hdr_rec.adjustment_type
                        || ' Type Adjustments Account/Bipad/Issue : '
                        || hdr_rec.account_number
                        || '-'
                        || line_rec.bipad
                        || '-'
                        || line_rec.issue_code);
                     RAISE ud_upc_price_not_found;
                  END IF;
               ELSE
                  v_result_cover_price := netsale_rec.cover_price;
                  v_result_selling_price := netsale_rec.unit_selling_price;
               END IF;
            END IF;

            -- capture last return date change  vijay 12/16/2014
            OPEN foreign_cur (customer_rec.customer_id);

            FETCH foreign_cur INTO v_extra_days;

            --OPEN prof_cur (v_cust_name);
            --FETCH prof_cur INTO v_profitcenter_name;

            -- cmg_utility_pck.write_output('v_last_return_date BEFORE'|| v_last_return_date);

            IF v_extra_days > 0
            THEN
               v_last_return_date :=
                  TO_DATE (v_last_return_date) + v_extra_days;
            END IF;

            CLOSE foreign_cur;

            --CLOSE prof_cur;
            --
            --  cmg_utility_pck.write_output('v_last_return_date'|| v_last_return_date);

            v_current_line_nr := NVL (v_current_line_nr, 0) + 1;

            INSERT INTO oe_lines_interface (creation_date,
                                            created_by,
                                            last_update_date,
                                            last_updated_by,
                                            orig_sys_document_ref,
                                            orig_sys_line_ref,
                                            line_number,
                                            --    line_type,
                                            order_quantity_uom,
                                            ordered_quantity,
                                            unit_selling_price,
                                            unit_list_price,
                                            request_date,
                                            inventory_item_id,
                                            sold_to_org_id,
                                            ship_from_org_id,
                                            accounting_rule_id,
                                            invoicing_rule_id,
                                            order_source_id,
                                            ship_to_org_id,
                                            tax_code,
                                            calculate_price_flag,
                                            pricing_context,
                                            pricing_attribute1,
                                            CONTEXT,
                                            attribute1,
                                            attribute2,
                                            attribute3,
                                            attribute4,
                                            attribute5,
                                            attribute6,
                                            attribute7,
                                            attribute8,
                                            attribute9,
                                            pricing_date,
                                            rejected_flag,
                                            operation_code,
                                            industry_attribute19)
                 VALUES (
                           SYSDATE,
                           v_user_id,
                           SYSDATE,
                           v_user_id,
                           v_original_system_ref,
                           v_current_line_nr,
                           v_current_line_nr,
                           --   'REGULAR',
                           v_item_uom,
                           line_rec.quantity,
                           --                            netsale_rec.unit_selling_price,
                           --                            netsale_rec.unit_selling_price,
                           ROUND (v_result_selling_price, 5),
                           v_result_cover_price,
                           SYSDATE,
                           v_inventory_item_id,
                           customer_rec.customer_id,
                           cmg_utility_pck.org_id ('HDG'),
                           v_accounting_rule_id,
                           v_invoicing_rule_id,
                           v_ord_source_id,
                           v_ship_to_site_use_id,
                           NULL,
                           -- line_rec.tax_code,
                           'N',                        -- calculate_price_flag
                           'Upgrade Context',               -- pricing context
                           NVL (NVL (line_rec.upc, netsale_rec.upc), v_upc),
                           NULL,
                           line_rec.issue_code,
                           NVL (v_cover_date, netsale_rec.cover_date), --netsale_rec.cover_date changed to nvl(..) 10/6/2014 by vijay
                           NVL (v_edition, netsale_rec.edition), -- NVL (netsale_rec.edition,v_edition) flipped by vijay 10/7/2014
                           line_rec.bipad,
                           --                   netsale_rec.cover_price,
                           v_result_cover_price,
                           NVL (TO_CHAR (v_on_sale_date, 'DD-MON-YYYY'),
                                netsale_rec.on_sale_date), --netsale_rec.on_sale_date changed to nvl(..) 10/6/2014
                           NVL (v_off_sale_date, netsale_rec.off_sale_date), --netsale_rec.off_sale_date changed to nvl(..) 10/6/2014
                           --  NVL (v_last_return_date,netsale_rec.last_return_date), --netsale_rec.last_return_date changed to nvl(..) 10/6/2014
                           NVL (
                              TO_CHAR (
                                 TO_DATE (v_last_return_date, 'DD-MON-YY'),
                                 'DD-MON-YYYY'),
                              netsale_rec.last_return_date),        --SCR 8442
                           NVL (v_returnable_flag,
                                netsale_rec.returnable_status), --netsale_rec.returnable_status changed to nvl(..) 12/9/2014
                           SYSDATE,
                           'N',
                           'CREATE',
                           netsale_rec.line_id);



            INSERT INTO oe_price_atts_interface (created_by,
                                                 creation_date,
                                                 last_updated_by,
                                                 last_update_date,
                                                 operation_code,
                                                 orig_sys_document_ref,
                                                 orig_sys_line_ref,
                                                 pricing_context,
                                                 pricing_attribute1,
                                                 order_source_id,
                                                 flex_title)
                 VALUES (v_user_id,
                         SYSDATE,
                         v_user_id,
                         SYSDATE,
                         'CREATE',
                         v_original_system_ref,
                         v_current_line_nr,
                         'Upgrade Context',
                         NVL (line_rec.upc, netsale_rec.upc),
                         v_ord_source_id,
                         'QP_ATTR_DEFNS_PRICING');

            v_count := v_count + 1;

            --            END IF; -- commented by Senthil - 09-may-07


            v_edition := NULL;                      --added by vijay 10/7/2014
            v_upc := NULL;                          --added by vijay 10/7/2014



            --added by vijay 10/6/2014
            IF item_cur%ISOPEN
            THEN
               CLOSE item_cur;
            END IF;

            -- added by Senthil 09-may-2007  - Start
            IF netsale_return_cur%ISOPEN
            THEN
               CLOSE netsale_return_cur;
            END IF;

            IF netsale_cur%ISOPEN
            THEN
               CLOSE netsale_cur;
            END IF;

            -- added by Senthil 09-may-2007 - End
            UPDATE cmgom070_stg_tbl
               SET interface_flag = 'Y',
                   last_update_date = SYSDATE,
                   last_updated_by = v_user_id
             WHERE line_number = line_rec.line_number;

            v_result_cover_price := NULL;
            v_result_selling_price := NULL;
         END LOOP;                                                     -- line
      END LOOP;

      --  END IF;
      --     END LOOP;-- hdr_cur



      IF v_count > 0
      THEN
         hdg_ret_global_pck.hdg_order_import_prc (v_retcode,
                                                  v_ret_msg_txt,
                                                  v_dphase,
                                                  v_dstatus,
                                                  v_ord_source_id,
                                                  v_error_log,
                                                  3);
      END IF;

      cmg_utility_pck.write_output ('');
      cmg_utility_pck.write_output (
         'Total No of Records Processed :' || v_count);



      p_retcode := SQLCODE;
      p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: Completed' || p_errbuf;
      COMMIT;
   EXCEPTION
      WHEN ud_data_validation_error_found
      THEN
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_DATA_VALIDATION_ERROR_FOUND';
         cmg_utility_pck.write_output (
            ' Data Validation Error occured, please check the data and rerun the program');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_no_file_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_NO_FILE_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN UD_ISSUEBIPAD_NOT_FOUND
      THEN
         p_retcode := 2;
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ISSUEBIPAD_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      --DELETE  from cmgom070_stg_tbl;
      WHEN ud_negative_copies_found
      THEN
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_NEGATIVE_COPIES_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_loader_error
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_LOADER_ERROR';
         cmg_utility_pck.write_output (
               'The sql Loader failed '
            || 'to load the data. Check the'
            || ' log file for that process');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_item_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ITEM_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Correct The Data File ' || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_customer_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_CUSTOMER_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Correct The Data File ' || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_order_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ORDER_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_upc_price_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_UPC_PRICE_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
               'Correct The Data File and/or check the UPC and Price setup for this Order Type '
            || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_order_type_not_found
      THEN
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ORDER_TYPE_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
               'Correct The Data File and/or check the setup for this Order Type '
            || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
CREATE OR REPLACE PACKAGE BODY APPS.cmgom070_sales_adj_pck
AS
   /******************************************************************************
      NAME:       cmgom070_sales_adj_pck
      PURPOSE:

      REVISIONS:
      Ver        Date        Author                     Description
      ---------  ----------  ---------------           ------------------------------------
      1.0        03/06/2007   Senthilkumar Palanisamy  CMGOM070 - Updated Sales Adjustments to OM - 2007 Enhancements .
      1.5        06/01/2007   Senthilkumar Palanisamy   hdr_rec.adjustment_type IN ('SNC', 'SCR','DRW') included to find Return Sales Orders

    1.8        07/22/2009   Uday T                     SCR 1348- Added new Audit Order Types
      1.9        07/24/2014    Sunitha Rani               Modified for Foriegn Enhancement
      1.10        12/22/2014    Vijay   - Foreing Enhancement SCR 8385
      1.11       03/03/2015   Uday T                      SCR 8442- Last return  format to be changed

     ******************************************************************************/


   CURSOR val_cur
   IS
      SELECT ACCOUNT_NUMBER,
             CUSTOMER_REF_NBR,
             ADJUSTMENT_TYPE,
             BIPAD,
             ISSUE_CODE,
             APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) iss_profit
        FROM CMGOM070_STG_TBL;              --Modified for Foriegn Enhancement

   CURSOR hdr_cur
   IS
        SELECT ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) iss_profit
          FROM CMGOM070_STG_TBL
      -- where account_number = p_account_nr
      GROUP BY ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE); --Modified for Foriegn Enhancement

   CURSOR GEN_CUR (p_account_nr IN VARCHAR2)
   IS
        SELECT ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               LPAD (BIPAD, 5, '0') BIPAD,
               ISSUE_CODE,
               LINE_NUMBER,
               UPC,
               SUM (copies) quantity
          --LPAD (BIPAD, 5, '0') BIPAD, ISSUE_CODE, COPIES
          FROM CMGOM070_STG_TBL
         WHERE ACCOUNT_NUMBER = P_ACCOUNT_NR
      GROUP BY ACCOUNT_NUMBER,
               CUSTOMER_REF_NBR,
               ADJUSTMENT_TYPE,
               LPAD (BIPAD, 5, '0'),
               ISSUE_CODE,
               LINE_NUMBER,
               UPC;

   CURSOR main_cur
   IS
        SELECT rac.customer_id,
               rac.customer_number,
               c.account_number,
               LPAD (c.bipad, 5, 0) bipad,
               inventory_item_id,
               issue_code,
               c.adjustment_type
          FROM mtl_system_items msi,
               ra_customers rac,
               cmgom070_stg_tbl c,
                apps.ra_addresses_all addr
         WHERE     LPAD (c.bipad, 5, 0) = msi.attribute6
               AND msi.organization_id = cmg_utility_pck.org_id ('HDG')
               AND addr.attribute1 = c.account_number
               AND rac.customer_id = addr.customer_id
               AND rac.attribute1 = 'MO'
               AND addr.ship_to_flag IN ('Y', 'P')
      GROUP BY rac.customer_id,
               rac.customer_number,
               c.account_number,
               LPAD (c.bipad, 5, 0),
               msi.inventory_item_id,
               c.issue_code,
               c.adjustment_type;

   CURSOR customer_cur (
      p_account_nr IN VARCHAR2)
   IS
      SELECT RC.CUSTOMER_NAME,
             CCA.PRICE_LIST_ID,
             CCA.ORDER_TYPE_ID,
             rc.customer_id,
             rc.sales_channel_code,
             l.profitcenter_id,
             -- rc.attribute1  source
             addr.attribute1 SOURCE
        FROM apps.cmg_customer_attributes_vw cca,
             ra_customers rc,               --Modified for Foriegn Enhancement
             RA_ADDRESSES ADDR,
             apps.cmg_logo_mapping_vw l
       WHERE     cca.customer_id = rc.customer_id
             AND addr.attribute1 = p_account_nr
             AND RC.CUSTOMER_ID = ADDR.CUSTOMER_ID
             AND SUBSTR (rc.customer_name, 1, 1) = l.customer_name --Modified for Foriegn Enhancement
             AND rc.attribute1 = 'MO'
             AND addr.ship_to_flag IN ('Y', 'P');

   CURSOR dup_customer_cur (
      p_account_nr IN VARCHAR2)
   IS
      SELECT COUNT (*) ac_count
        FROM apps.cmg_customer_attributes_vw cca,
             ra_customers rc,
             ra_addresses addr
       WHERE     cca.customer_id = rc.customer_id
             AND addr.attribute1 = p_account_nr
             AND rc.customer_id = addr.customer_id
             AND rc.attribute1 = 'MO'
             AND addr.ship_to_flag IN ('Y', 'P');

   CURSOR addr_site_cur (
      p_customer_id          IN NUMBER,
      p_ship_to_account_nr   IN VARCHAR2)
   IS
      SELECT s1.site_use_id bill_to_id,
             s2.site_use_id ship_to_id,
             s1.address_id bill_add_id,
             s2.address_id ship_add_id
        FROM ra_site_uses s1,
             ra_site_uses s2,
             ra_addresses a1,
             ra_addresses a2,
             ra_customers c
       WHERE     c.customer_id = a1.customer_id
             AND c.customer_id = a2.customer_id
             AND a1.bill_to_flag IN ('Y', 'P')
             AND a2.ship_to_flag IN ('Y', 'P')
             AND a2.attribute1 = p_ship_to_account_nr
             AND a1.address_id = s1.address_id
             AND a2.address_id = s2.address_id
             AND s1.status = 'A'
             AND s2.status = 'A'
             AND s1.site_use_code = 'BILL_TO'
             AND s2.site_use_code = 'SHIP_TO'
             AND c.customer_id = p_customer_id;

   CURSOR salesrep_id_cur
   IS
      SELECT salesrep_id
        FROM apps.ra_salesreps
       WHERE UPPER (NAME) = 'NO SALES CREDIT';

   /* CURSOR PROFITCENTER (p_bipad_isbn IN VARCHAR2, p_issue_code IN VARCHAR2)
    IS
       select distinct i.profitcenter from
        FROM CMG_PPA_TITLE_DIM_TBL T, CMG_PPA_ISSUE_DIM_TBL I
  WHERE T.TITLE_DIM_ID = I.TITLE_DIM_ID
  AND T.BIPAD = P_BIPAD_ISBN
  and i.issue_code = p_issue_code;
  */
   CURSOR line_item_cur (
      p_iss_profit VARCHAR2)                --Modified for Foriegn Enhancement
   IS
        SELECT LPAD (bipad, 5, '0') bipad,
               issue_code,
               copies,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE)
                  line_iss_profit
          FROM CMGOM070_STG_TBL
         WHERE APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) =
                  p_iss_profit
      GROUP BY bipad, issue_code, copies;

   CURSOR item_cur (
      p_bipad_isbn   IN VARCHAR2,
      p_issue_code   IN VARCHAR2)
   IS
      SELECT DISTINCT
             msi.inventory_item_id,
             rev.attribute7,
             MSI.PRIMARY_UOM_CODE,
             l.profitcenter_id,             --Modified for Foriegn Enhancement
             rev.attribute8 cover_date,                     -- added 10/6/2014
             TO_CHAR (rev.effectivity_date, 'DD-MON-YYYY') on_sale_date, --added 10/6/2014
             rev.attribute11 off_sale_date,                  --added 10/6/2014
             rev.attribute12 last_return_date,              -- added 10/6/2014
             msi.returnable_flag returnable_flag            -- added 10/6/2014
        FROM MTL_SYSTEM_ITEMS MSI,
             MTL_ITEM_REVISIONS REV,
             PO.PO_VENDORS P,               --Modified for Foriegn Enhancement
             apps.cmg_logo_mapping_vw l
       WHERE     rev.attribute7 = p_issue_code
             AND msi.inventory_item_id = rev.inventory_item_id
             AND msi.organization_id = rev.organization_id
             AND msi.attribute6 = p_bipad_isbn
             AND msi.inventory_item_status_code = 'HDG ACTIVE'
             AND NVL (rev.attribute1, 'N') = 'N'
             AND MSI.ORGANIZATION_ID = CMG_UTILITY_PCK.ORG_ID ('HDG')
             AND REV.attribute6 = TO_CHAR (p.vendor_id)
             AND p.attribute13 = l.profitcenter_id;

   CURSOR netsale_cur (
      p_customer_id         IN NUMBER,
      p_inventory_item_id   IN NUMBER,
      p_issue_code          IN VARCHAR2)
   IS
      SELECT sol.unit_selling_price,
             line_id,
             SUBSTR (sol.attribute5, 1, 10) cover_price,
             sol.attribute2 cover_date,
             sol.attribute3 edition,
             sol.attribute6 on_sale_date,
             sol.attribute7 off_sale_date,
             sol.attribute8 last_return_date,
             sol.attribute9 returnable_status,
             sol.pricing_attribute1 upc
        FROM oe_order_lines sol, oe_order_headers soh
       WHERE     sol.unit_selling_price > 0
             AND NVL (sol.attribute13, 'xx') <> 'OBSOLETE'
             AND sol.attribute1 = p_issue_code
             AND sol.inventory_item_id = p_inventory_item_id
             AND sol.ship_from_org_id = cmg_utility_pck.org_id ('HDG')
             AND soh.ordered_date >= ADD_MONTHS (TRUNC (SYSDATE), -36)
             AND sol.header_id = soh.header_id
             AND soh.order_category_code = 'ORDER'
             AND soh.sold_to_org_id = p_customer_id
             AND ROWNUM = 1;


   CURSOR netsale_return_cur (
      p_customer_id         IN NUMBER,
      p_inventory_item_id   IN NUMBER,
      p_issue_code          IN VARCHAR2)
   IS
      SELECT sol.unit_selling_price,
             line_id,
             SUBSTR (sol.attribute5, 1, 10) cover_price,
             sol.attribute2,
             sol.attribute3 edition,
             sol.attribute6 on_sale_date,
             sol.attribute7 off_sale_date,
             sol.attribute8 last_return_date,
             sol.attribute9 returnable_status,
             sol.pricing_attribute1 upc
        FROM oe_order_lines sol, oe_order_headers soh
       WHERE     NVL (sol.attribute13, 'xx') <> 'OBSOLETE'
             --   and sol.unit_selling_price >0
             AND sol.attribute1 = p_issue_code
             AND sol.inventory_item_id = p_inventory_item_id
             AND sol.ship_from_org_id = cmg_utility_pck.org_id ('HDG')
             AND sol.header_id = soh.header_id
             AND soh.sold_to_org_id = p_customer_id
             AND soh.order_category_code = 'RETURN'
             --         AND months_between(trunc(sysdate),soh.ordered_date ) <= 36
             AND soh.ordered_date >= ADD_MONTHS (TRUNC (SYSDATE), -36)
             AND ROWNUM = 1;

   --  ORDER BY sol.unit_selling_price desc;

   CURSOR order_source_cur
   IS
      SELECT order_source_id
        FROM apps.oe_order_sources
       WHERE NAME = 'HDG MANUAL ADJ';

   CURSOR any_edition_cur (
      p_inventory_item_id   IN NUMBER,
      p_issue_code          IN VARCHAR2)
   IS
      SELECT attribute13 edition, attribute10 upc
        FROM mtl_item_revisions rev
       WHERE     rev.inventory_item_id = p_inventory_item_id
             AND rev.organization_id = cmg_utility_pck.org_id ('HDG')
             AND rev.attribute7 = p_issue_code
             AND NVL (rev.attribute1, 'N') = 'N'
             AND ROWNUM = 1;

   CURSOR line_cur (
      p_account_number     IN NUMBER,
      p_customer_ref_nbr   IN VARCHAR2,
      p_adjustment_type    IN VARCHAR2,
      p_iss_profit            VARCHAR2   --number to varchar2 vijay 11/17/2014
                                      )     --Modified for Foriegn Enhancement
   IS
        SELECT LPAD (bipad, 5, '0') bipad,
               issue_code,
               line_number,
               upc,
               APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE),
               SUM (copies) quantity
          FROM cmgom070_stg_tbl
         WHERE     account_number = p_account_number
               AND customer_ref_nbr = p_customer_ref_nbr
               AND adjustment_type = p_adjustment_type
               AND APPS.get_isspc_fnc (LPAD (BIPAD, 5, '0'), ISSUE_CODE) =
                      p_iss_profit
      GROUP BY LPAD (bipad, 5, '0'),
               issue_code,
               line_number,
               upc;

   CURSOR user_order_adj_type_cur (
      p_uesr_adjustment_type IN VARCHAR2)
   IS
      SELECT ffvl.description sales_adjust_upload_type
        FROM fnd_flex_values_vl ffvl, fnd_flex_value_sets ffvs
       WHERE     ffvl.flex_value_set_id = ffvs.flex_value_set_id
             AND ffvs.flex_value_set_name = 'CMG_SALES_ADJ_UPLOAD_TYPES'
             AND ffvl.flex_value = p_uesr_adjustment_type;

   --   CURSOR user_order_type_like_cur (
   --      p_user_order_adj_type   IN   VARCHAR2,
   --      p_order_type_id         IN   NUMBER
   --   )
   --   IS
   --      SELECT    SUBSTR (NAME,
   --                        1,
   --                        INSTR (NAME, '-', 1, 1) - 1
   --                       )
   --             || '%'
   --             || p_user_order_adj_type
   --             || '%'
   ----             || SUBSTR (NAME, INSTR (NAME, '-', -1, 1) + 1, LENGTH (NAME))
   --             || SUBSTR (NAME, INSTR (NAME, '-', -1, 2) + 1, 2)
   --                                                        derived_user_adj_type
   --        FROM oe_transaction_types
   --       WHERE end_date_active IS NULL
   --         AND NVL (end_date_active, SYSDATE) >= SYSDATE
   --         AND transaction_type_id = p_order_type_id;

   /* Changed the Cursor to accept the new Audit Order Types ---SCR 1348*/

   CURSOR user_order_type_like_cur (
      p_user_order_adj_type   IN VARCHAR2,
      p_order_type_id         IN NUMBER)
   IS
      SELECT order_category_code,
                SUBSTR (NAME,
                        1,
                          INSTR (NAME,
                                 '-',
                                 1,
                                 1)
                        - 1)
             || '%'
             || DECODE (
                   p_user_order_adj_type,
                   'AUDIT RETURN', '-' || p_user_order_adj_type || '-',
                   'AUDIT RETURN REVERSAL',    '-'
                                            || p_user_order_adj_type
                                            || '-',
                   'AUDIT DRAW', '-' || p_user_order_adj_type || '-',
                   'AUDIT DRAW REVERSAL', '-' || p_user_order_adj_type || '-',
                   '-' || p_user_order_adj_type)                    --SCR 1348
             || '%'
             || SUBSTR (NAME,
                          INSTR (NAME,
                                 '-',
                                 -1,
                                 2)
                        + 1,
                        2)
             || '%'
                derived_user_adj_type       --Modified for Foriegn Enhancement
        --SUBSTR (NAME,INSTR (NAME, '-', 1, 3) - 2,2) derived_user_adj_type
        FROM apps.oe_transaction_types
       WHERE     end_date_active IS NULL
             AND NVL (end_date_active, SYSDATE) >= SYSDATE
             AND transaction_type_id = p_order_type_id;



   CURSOR user_order_type_derived_cur (
      p_user_order_adj_type IN VARCHAR2)
   IS
      SELECT NAME,
             order_category_code,
             transaction_type_id,
             accounting_rule_id,
             invoicing_rule_id,
             conversion_type_code,
             currency_code
        FROM apps.OE_TRANSACTION_TYPES
       WHERE     NAME LIKE p_user_order_adj_type --H%-AUDIT RETURN REVERSAL-%CN
             AND end_date_active IS NULL
             AND NVL (end_date_active, SYSDATE) >= SYSDATE
             AND NAME NOT LIKE '%TRANSFER%'
             AND NAME NOT LIKE '%PRICE CHANGE%';


   -- cursor to capture foreign extra days   vijay 12/15/2014
   CURSOR foreign_cur (
      p_customer_id IN NUMBER)
   IS
      SELECT a.attribute14 extra_days       --, rc.customer_name customer_name
        FROM AR_CUSTOMER_PROFILES_V a, ra_customers rc
       WHERE     a.customer_id = rc.customer_id
             AND a.customer_id = p_customer_id
             AND ROWNUM < 2;

   /*   -- cursor to capture profitcenters  vijay 12/16/2014
      CURSOR prof_cur (
          p_cust_name in VARCHAR2)
      IS
         SELECT profitcenter
           FROM cmg_logo_mapping_vw
         WHERE customer_name = substr(p_cust_name,1,1);
    */

   v_bill_to_site_use_id            NUMBER;
   v_ship_to_site_use_id            NUMBER;
   v_bill_address_id                NUMBER;
   v_ship_address_id                NUMBER;
   v_sales_channel_code             VARCHAR2 (50);
   netsale_rec                      netsale_cur%ROWTYPE;
   v_accounting_rule_id             NUMBER;
   v_invoicing_rule_id              NUMBER;
   v_ord_source_id                  NUMBER;
   v_conversion_type_code           VARCHAR2 (20);
   v_currency_code                  VARCHAR2 (10);
   v_salesrep_id                    NUMBER;
   customer_rec                     customer_cur%ROWTYPE;
   dup_customer_rec                 dup_customer_cur%ROWTYPE;
   skip_header                      EXCEPTION;
   v_order_type_id                  NUMBER;
   v_original_system_ref            VARCHAR2 (100);
   v_order_type                     VARCHAR2 (40);
   v_customer_ref_nr                VARCHAR2 (50);
   v_edition                        VARCHAR2 (10) := NULL; -- =null added by vijay 10/7/2014
   v_current_line_nr                NUMBER := 0;
   v_conversion_code                VARCHAR2 (20);
   v_error_flag                     VARCHAR2 (1) := 'N';
   v_user_id                        NUMBER DEFAULT fnd_global.user_id;
   v_sysdate                        DATE DEFAULT SYSDATE;
   v_error_log                      VARCHAR2 (100);
   p_errbuf                         VARCHAR2 (80);
   p_retcode                        NUMBER;
   v_dirpath                        VARCHAR2 (100);
   v_filepath                       VARCHAR2 (100);
   v_path                           VARCHAR2 (100);
   v_status                         VARCHAR2 (80);
   v_req_id                         NUMBER DEFAULT (fnd_global.conc_request_id);
   v_user_name                      VARCHAR2 (80);
   v_logfile                        UTL_FILE.file_type;
   v_request                        NUMBER;
   v_request_status                 BOOLEAN;
   v_errbuf                         VARCHAR2 (80);
   v_retcode                        VARCHAR2 (80);
   v_phase                          VARCHAR2 (100);
   v_dev_phase                      VARCHAR2 (100);
   v_dev_status                     VARCHAR2 (100);
   v_message                        VARCHAR2 (100);
   ud_loader_error                  EXCEPTION;
   ud_no_file_found                 EXCEPTION;
   ud_dup_records                   EXCEPTION;
   ud_item_not_found                EXCEPTION;
   ud_customer_not_found            EXCEPTION;
   ud_order_not_found               EXCEPTION;
   ud_negative_copies_found         EXCEPTION;
   ud_order_type_not_found          EXCEPTION;
   ud_upc_price_not_found           EXCEPTION;
   ud_data_validation_error_found   EXCEPTION;
   UD_ISSUEBIPAD_NOT_FOUND          EXCEPTION;
   v_inventory_item_id              NUMBER;
   v_transaction_type_id            NUMBER;
   v_item_uom                       mtl_system_items.primary_uom_code%TYPE;
   v_issue_code                     VARCHAR2 (6);
   v_count                          NUMBER := 0;
   v_ret_msg_txt                    VARCHAR2 (100);
   v_dphase                         VARCHAR2 (100);
   v_dstatus                        VARCHAR2 (100);
   v_order_ajustment_type           VARCHAR2 (100);
   v_upc                            VARCHAR2 (12) := NULL; --=null added by vijay 10/7/2014
   v_order_catg_code                VARCHAR2 (50);
   v_o_price_list_id                NUMBER;
   v_o_price_list_name              VARCHAR2 (150);
   v_cover_price                    NUMBER;
   v_start_date                     DATE;
   v_end_date                       DATE;
   v_result_cover_price             NUMBER;
   V_RESULT_SELLING_PRICE           NUMBER;
   v_result_discount                NUMBER;
   V_RESULT_DISC_AMOUNT             NUMBER;
   v_profitcenter                   NUMBER;
   user_order_adj_type_rec          user_order_adj_type_cur%ROWTYPE;
   user_order_type_derived_rec      user_order_type_derived_cur%ROWTYPE;
   user_order_type_like_rec         user_order_type_like_cur%ROWTYPE;
   netsale_return_rec               netsale_return_cur%ROWTYPE;
   v_column_error_check             NUMBER DEFAULT (0);
   v_header_error_check             NUMBER DEFAULT (0);
   v_lines_error_check              NUMBER DEFAULT (0);
   v_update_error_check             NUMBER DEFAULT (0);
   v_iss_profit                     NUMBER;
   v_cover_date                     VARCHAR2 (100);         -- added 10/6/2014
   v_on_sale_date                   DATE;                   -- added 10/6/2014
   v_off_sale_date                  VARCHAR2 (100);         -- added 10/6/2014
   v_last_return_date               VARCHAR2 (100);          --added 10/6/2014
   v_returnable_flag                MTL_SYSTEM_ITEMS.returnable_flag%TYPE; --added 12/9/2014
   --profit_center_check boolean :=FALSE;            --added 10/6/2014
   item_rec                         item_cur%ROWTYPE;
   v_extra_days                     AR_CUSTOMER_PROFILES_V.attribute14%TYPE; --added 12/16/2014

   --v_cust_name                      ra_customers.customer_name%TYPE;            --added 12/16/2014
   --v_profitcenter_name              cmg_logo_mapping_vw.profitcenter%TYPE;      --added 12/16/2014


   PROCEDURE main_prc (p_errbuf        OUT VARCHAR2,
                       p_retcode       OUT NUMBER,
                       p_filename   IN     VARCHAR2)
   IS
   BEGIN
      cmg_utility_pck.write_output (
         '+--------------------------------------' || '------------+');
      cmg_utility_pck.write_output ('Hearst Applications');
      cmg_utility_pck.write_output ('Copyright (c) Comag Marketing Group');
      cmg_utility_pck.write_output (
         '+-------------------------------------' || '--------------+');
      cmg_utility_pck.write_output (
            'Current System Time is : '
         || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
      cmg_utility_pck.write_output (' ');
      cmg_utility_pck.write_output (
         '+-------------------------------------' || '--------------+');
      cmg_utility_pck.write_output (' ');
      fnd_profile.get ('HDG_INCOMING_PATH', v_path);
      v_filepath := v_path || '/' || p_filename;
      hdg_submit_request_pck.hdg_sub_req_prc (
         'HDG',
         'CMGOM070_LDR',
         'CMGOM070 Upload Sales Adjustments Loader Program',
         v_filepath,
         v_status);

      IF v_status <> 'SUCCESS'
      THEN
         RAISE ud_loader_error;
      END IF;

      OPEN order_source_cur;

      FETCH order_source_cur INTO v_ord_source_id;

      CLOSE order_source_cur;

      -- Validation 2 - Check Account Number/Customer is present in the Customer setup or not
      -- Start - 101
      /*  FOR SPLIT_REC IN SPLIT_CUR
        LOOP

        cmg_utility_pck.write_output (SUBSTR(SPLIT_REC.CUSTOMER_NAME,1,1));
        IF (SUBSTR(SPLIT_REC.CUSTOMER_NAME,1,1) = 'G') THEN
        --cmgom070_sales_adj_pck.GEN_PRC(split_rec.account_number,
        --v_errbuf,
        --v_retcode
     --);
     null;
  ELSE */


      FOR VAL_REC IN val_cur
      LOOP                                  --Modified for Foriegn Enhancement
         IF VAL_rec.iss_profit = 'NO ISSUE PROFITCENTER'
         THEN
            cmg_utility_pck.write_output (
                  'Invalid issue/bipad: Bipad: '
               || VAL_REC.bipad
               || '  '
               || 'Issue_code :'
               || VAL_REC.issue_code);
            v_error_flag := 'Y';
         -- RAISE UD_ISSUEBIPAD_NOT_FOUND;
         END IF;
      END LOOP;



      FOR hdr_rec IN hdr_cur                --Modified for Foriegn Enhancement
      LOOP
         --101
         OPEN customer_cur (hdr_rec.account_number);


         FETCH customer_cur INTO customer_rec;


         IF customer_cur%NOTFOUND
         THEN
            cmg_utility_pck.write_output (
                  'Customer Account Number not found for '
               || hdr_rec.account_number);
            v_error_flag := 'Y';
         END IF;

         IF customer_cur%ROWCOUNT > 1
         THEN
            cmg_utility_pck.write_output (
                  'This Account Number Assigned to Multiple Customers '
               || hdr_rec.account_number);
            v_error_flag := 'Y';
         END IF;

         CLOSE customer_cur;

         OPEN dup_customer_cur (hdr_rec.account_number);



         FETCH dup_customer_cur INTO dup_customer_rec;

         IF dup_customer_rec.ac_count > 1
         THEN
            cmg_utility_pck.write_output (
                  'This Account Number Assigned to Multiple Customers '
               || hdr_rec.account_number);
            v_error_flag := 'Y';
         END IF;

         CLOSE dup_customer_cur;
      END LOOP;



      --   end loop;-- 101

      -- Validation 2 - Check Account Number/Customer is present in the Customer setup or not
      -- End- 101

      -- Validation  5a - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
      -- start 105a
      BEGIN
         -- FOR SPLIT_REC IN SPLIT_CUR-- 105 a
         -- LOOP

         FOR hdr_rec IN hdr_cur
         LOOP
            --BEGIN


            IF hdr_rec.iss_profit = 'NO ISSUE PROFITCENTER' --added vijay 11/17/2014
            THEN
               v_iss_profit := NULL;
            ELSE
               v_iss_profit := hdr_rec.iss_profit; --Modified for Foriegn Enhancement
            END IF;

            OPEN user_order_adj_type_cur (hdr_rec.adjustment_type);

            FETCH user_order_adj_type_cur INTO user_order_adj_type_rec;

            CLOSE user_order_adj_type_cur;


            OPEN user_order_type_like_cur (user_order_adj_type_rec.sales_adjust_upload_type,
                                           customer_rec.order_type_id);

            FETCH user_order_type_like_cur INTO user_order_type_like_rec;

            CLOSE user_order_type_like_cur;

            --Modified for Foriegn Enhancement



            IF (v_iss_profit <> customer_rec.profitcenter_id)
            THEN -- hdr_rec.iss_profit changed to v_iss_profit vijay 11/17/2014
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;

               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive the Order Type for Sales Adjustment Type / Accountfor(2) '
                     || hdr_rec.adjustment_type
                     || '/'
                     || hdr_rec.account_number);
                  RAISE ud_order_type_not_found;
               END IF;

               CLOSE user_order_type_derived_cur;

               BEGIN
                  SELECT transaction_type_id
                    INTO v_transaction_type_id
                    FROM apps.oe_transaction_types t,
                         hdg.gen_profitcenter_mapping_tbl m
                   WHERE     t.name LIKE
                                   M.DERIVED_ORDERTYPE
                                || SUBSTR (t.name, INSTR (t.name, '-', 2))
                                || '%'
                         AND m.WHOLESALER_PROFITCENTER_ID =
                                customer_rec.profitcenter_id
                         AND m.ISSUE_PROFITCENTER_ID = hdr_rec.iss_profit
                         AND t.name LIKE
                                   '%' || SUBSTR(user_order_type_derived_rec.name,5)||'%'; -- SCR 8591
                             --   || user_order_adj_type_rec.sales_adjust_upload_type
                              --  || '-%';
               /*select transaction_type_id
               into  v_transaction_type_id
              from apps.oe_transaction_types t,
                   hdg.gen_ordertypes_mapping_tbl m,
                   apps.cmg_logo_mapping_vw l
              where t.name=decode(v_profitcenter,l.profitcenter_id,m.name||l.customer_name||m.attribute1)
              and l.profitcenter_id=v_profitcenter
             and m.name like 'G-MO-'||user_order_adj_type_rec.sales_adjust_upload_type||'-%'
              and m.attribute1='FN'
              and m.attribute2 is null;
              */
               EXCEPTION
                  WHEN NO_DATA_FOUND
                  THEN
                     v_column_error_check := v_column_error_check + 1;
                     v_lines_error_check := v_lines_error_check + 1;

                     cmg_utility_pck.write_output ('');
                     -- cmg_utility_pck.write_output('     Error in record '||
                     --                              v_details_rec.rownum);
                     cmg_utility_pck.write_output (
                           ' Order type  not available '
                        || 'for the customer '
                        || customer_rec.customer_name);
               END;
            ELSE
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;


               V_TRANSACTION_TYPE_ID :=
                  user_order_type_derived_rec.transaction_type_id;



               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive Order Type from Sales Adjustment Type for the account: '
                     || hdr_rec.account_number);
                  v_error_flag := 'Y';
               END IF;

               CLOSE user_order_type_derived_cur;
            END IF;
         --END IF;


         END LOOP;                          --Modified for Foriegn Enhancement
      --  end loop;
      END;

      -- 105a

      -- Validation  5a - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
      -- End 105a

      -- Validation  3 - Check bipad and Issue codes are present in the Item setup
      -- Start 102
      FOR line_item_rec IN line_item_cur (v_iss_profit)
      LOOP
         IF line_item_rec.copies < 0
         THEN
            cmg_utility_pck.write_output (
                  'Negative Copies Found for the'
               || ' Bipad: '
               || line_item_rec.bipad
               || '  '
               || ' Issue_code : '
               || line_item_rec.issue_code);
            v_error_flag := 'Y';
         END IF;

         -- 102
         OPEN item_cur (line_item_rec.bipad, line_item_rec.issue_code);

         FETCH ITEM_CUR
         INTO v_inventory_item_id,
              v_issue_code,
              v_item_uom,
              v_profitcenter,
              v_cover_date,
              v_on_sale_date,
              v_off_sale_date,
              v_last_return_date,                   --added by vijay 10/6/2013
              v_returnable_flag;                   -- added by vijay 12/9/2014

         IF item_cur%NOTFOUND
         THEN
            cmg_utility_pck.write_output (
                  'Bipad/Issue Not Present In Item Setup. '
               || ' Bipad: '
               || line_item_rec.bipad
               || '  '
               || ' Issue_code :'
               || line_item_rec.issue_code);
            v_error_flag := 'Y';
         END IF;

         CLOSE item_cur;
      END LOOP;                                                         -- 102


      -- Validation  3 - Check bipad and Issue codes are present in the Item setup
      -- End 102
      -- Validation  9 - Check for the Existing of Sales Order  and UPC for the given Customer Id, Invenroty Item Id and Issue codes
      -- Start 109
      -- FOR SPLIT_REC IN SPLIT_CUR
      -- LOOP
      FOR hdr_rec IN hdr_cur
      LOOP
         --  109a
         OPEN customer_cur (hdr_rec.account_number);

         FETCH customer_cur INTO customer_rec;

         CLOSE customer_cur;


         FOR line_rec IN line_cur (hdr_rec.account_number,
                                   hdr_rec.customer_ref_nbr,
                                   hdr_rec.adjustment_type,
                                   hdr_rec.iss_profit) --Modified for Foriegn Enhancement
         LOOP                                                          -- 109b
            OPEN ITEM_CUR (LINE_REC.BIPAD, LINE_REC.ISSUE_CODE);

            FETCH ITEM_CUR
            INTO v_inventory_item_id,
                 v_issue_code,
                 v_item_uom,
                 v_profitcenter,            --Modified for Foriegn Enhancement
                 v_cover_date,
                 v_on_sale_date,
                 v_off_sale_date,
                 v_last_return_date,                --added by vijay 10/6/2014
                 v_returnable_flag;                -- added by vijay 12/9/2014

            IF item_cur%NOTFOUND
            THEN
               cmg_utility_pck.write_output (
                     'Item not found for bipad/issue code: '
                  || line_rec.bipad
                  || '-'
                  || line_rec.issue_code);
            END IF;

            CLOSE item_cur;



            OPEN netsale_cur (customer_rec.customer_id,
                              v_inventory_item_id,
                              line_rec.issue_code);

            FETCH netsale_cur INTO netsale_rec;

            IF netsale_cur%NOTFOUND AND line_rec.upc IS NULL
            THEN
               IF hdr_rec.adjustment_type IN
                     ('SNC', 'SCR', 'DRW', 'RRV', 'ADW', 'ARV') -- SCR 1348 ( Added the New audit adjustment types)
               THEN
                  OPEN netsale_return_cur (customer_rec.customer_id,
                                           v_inventory_item_id,
                                           line_rec.issue_code);

                  FETCH netsale_return_cur INTO netsale_return_rec;



                  IF netsale_return_cur%NOTFOUND
                  THEN
                     cmg_utility_pck.write_output (
                           'Original Return Order not found for Adjustment Type/Acccount/Bipad/Issue : '
                        || hdr_rec.adjustment_type
                        || '-'
                        || hdr_rec.account_number
                        || '-'
                        || line_rec.bipad
                        || '-'
                        || line_rec.issue_code);
                     v_error_flag := 'Y';
                  END IF;

                  CLOSE netsale_return_cur;
               ELSE
                  cmg_utility_pck.write_output (
                        'Original Sales Order not found for Adjustment Type/Acccount/Bipad/Issue : '
                     || hdr_rec.adjustment_type
                     || '-'
                     || hdr_rec.account_number
                     || '-'
                     || line_rec.bipad
                     || '-'
                     || line_rec.issue_code);
                  v_error_flag := 'Y';
               END IF;
            ELSE
               IF netsale_rec.edition IS NULL
               THEN
                  OPEN any_edition_cur (v_inventory_item_id,
                                        line_rec.issue_code);

                  FETCH any_edition_cur
                  INTO v_edition, v_upc;

                  CLOSE any_edition_cur;
               END IF;



               IF     hdr_rec.adjustment_type IN ('SCR', 'DRW', 'ADW', 'MRC')
                  AND line_rec.upc IS NULL -- SCR 1348 ( Added the New audit adjustment types)
               THEN
                  IF    netsale_rec.cover_price = 0
                     OR netsale_rec.cover_price IS NULL
                  THEN
                     IF netsale_rec.upc IS NULL
                     THEN
                        cmg_utility_pck.write_output (
                              'UPC Not found for this SCR Type Adjustments Account/Bipad/Issue : '
                           || hdr_rec.account_number
                           || '-'
                           || line_rec.bipad
                           || '-'
                           || line_rec.issue_code);
                        v_error_flag := 'Y';
                     END IF;
                  END IF;
               END IF;
            END IF;

            CLOSE netsale_cur;
         END LOOP;
      -- 109b                                              -- line
      END LOOP;



      -- end loop;

      -- 109a                                              -- hdr_cur
      -- Validation  9 - Check for the Existing of Sales Order  and UPC for the given Customer Id, Invenroty Item Id and Issue codes
      -- End 109
      IF v_error_flag = 'Y'
      THEN
         RAISE ud_data_validation_error_found;
      END IF;

      --FOR SPLIT_REC IN SPLIT_CUR
      --loop
      FOR hdr_rec IN hdr_cur
      LOOP
         OPEN customer_cur (hdr_rec.account_number);

         FETCH customer_cur INTO customer_rec;

         CLOSE customer_cur;

         OPEN addr_site_cur (customer_rec.customer_id, customer_rec.SOURCE);

         FETCH addr_site_cur
         INTO v_bill_to_site_use_id,
              v_ship_to_site_use_id,
              v_bill_address_id,
              v_ship_address_id;

         IF addr_site_cur%NOTFOUND
         THEN
            cmg_utility_pck.write_output (
                  'Address Info not found for the Account(2) #: '
               || hdr_rec.account_number);
         END IF;

         CLOSE addr_site_cur;

         OPEN salesrep_id_cur;

         FETCH salesrep_id_cur INTO v_salesrep_id;

         CLOSE salesrep_id_cur;

         v_customer_ref_nr := hdr_rec.customer_ref_nbr;
         v_original_system_ref :=
               'SAJ-'
            || hdr_rec.account_number
            || '-'
            || hdr_rec.customer_ref_nbr
            || hdr_rec.iss_profit           --Modified for Foriegn Enhancement
            || '-'
            || hdr_rec.adjustment_type
            || '-'
            || SYSDATE;

         -- Validation  5 - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
         -- start 105
         BEGIN                                                          -- 105
            --             cmg_utility_pck.write_output (   'Account No: '
            --                                           || hdr_rec.account_number
            --                                           || ' Adjustment Type: '
            --                                           || hdr_rec.adjustment_type
            --                                          );
            OPEN user_order_adj_type_cur (hdr_rec.adjustment_type);

            FETCH user_order_adj_type_cur INTO user_order_adj_type_rec;

            CLOSE user_order_adj_type_cur;

            OPEN user_order_type_like_cur (user_order_adj_type_rec.sales_adjust_upload_type,
                                           customer_rec.order_type_id);



            FETCH user_order_type_like_cur INTO user_order_type_like_rec;

            CLOSE user_order_type_like_cur;

            --             cmg_utility_pck.write_output
            --                           (   'Account No: '
            --                            || hdr_rec.account_number
            --                            || ' Derived Adjustment Type: '
            --                            || user_order_adj_type_rec.sales_adjust_upload_type
            --                            || ' Derived Adj Type: '
            --                            || user_order_type_like_rec.derived_user_adj_type
            --                           );

            --Modified for Foriegn Enhancement
            IF (hdr_rec.iss_profit <> customer_rec.profitcenter_id)
            THEN
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;

               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive the Order Type for Sales Adjustment Type / Accountfor(2) '
                     || hdr_rec.adjustment_type
                     || '/'
                     || hdr_rec.account_number);
                  RAISE ud_order_type_not_found;
               END IF;

               CLOSE user_order_type_derived_cur;

               BEGIN
                  SELECT transaction_type_id
                    INTO v_transaction_type_id
                    FROM apps.oe_transaction_types t,
                         hdg.gen_profitcenter_mapping_tbl m
                   WHERE     t.name LIKE
                                   M.DERIVED_ORDERTYPE
                                || SUBSTR (t.name, INSTR (t.name, '-', 2))
                                || '%'
                         AND m.WHOLESALER_PROFITCENTER_ID =
                                customer_rec.profitcenter_id
                         AND m.ISSUE_PROFITCENTER_ID = hdr_rec.iss_profit
                         AND t.name LIKE
                                   '%'
                                  || SUBSTR(user_order_type_derived_rec.name,5)||'%'; --SCR 8591
                               -- || user_order_adj_type_rec.sales_adjust_upload_type
                               -- || '-%';
               /*select transaction_type_id
               into  v_transaction_type_id
              from apps.oe_transaction_types t,
                   hdg.gen_ordertypes_mapping_tbl m,
                   apps.cmg_logo_mapping_vw l
              where t.name=decode(v_profitcenter,l.profitcenter_id,m.name||l.customer_name||m.attribute1)
              and l.profitcenter_id=v_profitcenter
             and m.name like 'G-MO-'||user_order_adj_type_rec.sales_adjust_upload_type||'-%'
              and m.attribute1='FN'
              and m.attribute2 is null;
              */
               EXCEPTION
                  WHEN NO_DATA_FOUND
                  THEN
                     v_column_error_check := v_column_error_check + 1;
                     v_lines_error_check := v_lines_error_check + 1;

                     cmg_utility_pck.write_output ('');
                     -- cmg_utility_pck.write_output('     Error in record '||
                     --                              v_details_rec.rownum);
                     cmg_utility_pck.write_output (
                           ' Order type  not available '
                        || 'for the customer '
                        || customer_rec.customer_name);
               END;
            ELSE
               OPEN user_order_type_derived_cur (user_order_type_like_rec.derived_user_adj_type);

               FETCH user_order_type_derived_cur
               INTO user_order_type_derived_rec;

               V_TRANSACTION_TYPE_ID :=
                  user_order_type_derived_rec.transaction_type_id;

               IF user_order_type_derived_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Could not derive the Order Type for Sales Adjustment Type / Accountfor(2) '
                     || hdr_rec.adjustment_type
                     || '/'
                     || hdr_rec.account_number);
                  RAISE ud_order_type_not_found;
               END IF;

               CLOSE user_order_type_derived_cur;
            END IF;                         --Modified for Foriegn Enhancement
         END;                                                           -- 105



         -- Validation  5 - Get the Adjustment Order Type based on the Ajustment Type in the file and Order Type
         -- End 105
         INSERT INTO oe_headers_interface (creation_date,
                                           created_by,
                                           last_update_date,
                                           last_updated_by,
                                           orig_sys_document_ref,
                                           sold_to_org_id,
                                           order_type_id,
                                           order_category,
                                           ordered_date,
                                           transactional_curr_code,
                                           order_source_id,
                                           price_list_id,
                                           salesrep_id,
                                           invoice_customer_id,
                                           ship_to_customer_id,
                                           invoice_to_org_id,
                                           ship_to_org_id,
                                           --  invoice_address_id,
                                           --  ship_address_id,
                                           agreement_id,
                                           customer_payment_term_id,
                                           booked_flag,
                                           accounting_rule_id,
                                           invoicing_rule_id,
                                           sales_channel_code,
                                           conversion_type_code,
                                           customer_po_number,
                                           CONTEXT,
                                           attribute1,
                                           attribute2,
                                           attribute3,
                                           ready_flag,
                                           rejected_flag,
                                           operation_code,
                                           return_reason_code)
              VALUES (
                        SYSDATE,
                        v_user_id,
                        SYSDATE,
                        v_user_id,
                        v_original_system_ref,
                        customer_rec.customer_id,
                        V_TRANSACTION_TYPE_ID, --user_order_type_derived_rec.transaction_type_id,--Modified for Foriegn Enhancement
                        --v_order_type_id,
                        user_order_type_derived_rec.order_category_code,
                        --v_order_catg_code, --'ORDER',
                        SYSDATE,
                        user_order_type_derived_rec.currency_code,
                        --v_currency_code,
                        v_ord_source_id,
                        customer_rec.price_list_id,
                        v_salesrep_id,
                        customer_rec.customer_id,
                        customer_rec.customer_id,
                        v_bill_to_site_use_id,
                        v_ship_to_site_use_id,
                        --    v_bill_address_id,
                        --    v_ship_address_id,
                        NULL,                        --  hdr_rec.agreement_id,
                        5,                                       -- Immeditate
                        'Y',
                        user_order_type_derived_rec.accounting_rule_id,
                        --v_accounting_rule_id,
                        user_order_type_derived_rec.invoicing_rule_id,
                        --v_invoicing_rule_id,
                        v_sales_channel_code,
                        user_order_type_derived_rec.conversion_type_code,
                        --v_conversion_type_code,
                        v_customer_ref_nr,
                        user_order_type_derived_rec.order_category_code,
                        --v_order_catg_code ,  -- 'ORDER',
                        NULL,
                        NULL,
                        v_customer_ref_nr,
                        'Y',
                        'N',
                        'CREATE',
                        DECODE (
                           user_order_type_derived_rec.order_category_code,
                           'RETURN', 'RETURN',
                           NULL));



         --     FOR line_rec IN line_cur(hdr_rec.customer_number,hdr_rec.customer_ref_nr)



         v_current_line_nr := 0;

         FOR line_rec IN line_cur (hdr_rec.account_number,
                                   hdr_rec.customer_ref_nbr,
                                   hdr_rec.adjustment_type,
                                   hdr_rec.iss_profit)
         LOOP
            OPEN item_cur (line_rec.bipad, line_rec.issue_code);

            FETCH ITEM_CUR
            --INTO item_rec;


            INTO v_inventory_item_id,
                 v_issue_code,
                 v_item_uom,
                 v_profitcenter,            --Modified for Foriegn Enhancement
                 v_cover_date,
                 v_on_sale_date,
                 v_off_sale_date,
                 v_last_return_date,                 --added by vijay10/6/2014
                 v_returnable_flag;                -- added by vijay 12/9/2014


            IF item_cur%NOTFOUND
            THEN
               cmg_utility_pck.write_output ('ITEM NOT FOUND ');
            END IF;

            --CLOSE item_cur; --modified by vijay



            OPEN netsale_cur (customer_rec.customer_id,
                              v_inventory_item_id,
                              line_rec.issue_code);

            FETCH netsale_cur INTO netsale_rec;

            -- cmg_utility_pck.write_output (
            --    'Cover_date' || netsale_rec.cover_date || ' ');


            IF     netsale_cur%NOTFOUND
               AND line_rec.upc IS NULL
               AND hdr_rec.adjustment_type NOT IN
                      ('SNC', 'SCR', 'DRW', 'RRV', 'ADW', 'ARV') -- SCR 1348 ( Added the New audit adjustment types)
            -- IF 901 -- START
            THEN
               cmg_utility_pck.write_output (
                     'Original order not found for Account/Bipad/Issue(2) : '
                  || hdr_rec.account_number
                  || '-'
                  || line_rec.bipad
                  || '-'
                  || line_rec.issue_code);
               RAISE ud_order_not_found;
            -- added - 09-May-07 - by Senthil - added to handle SNC and SNR Adjustments types -- Start
            ELSIF     netsale_cur%NOTFOUND
                  AND line_rec.upc IS NULL
                  AND hdr_rec.adjustment_type IN
                         ('SNC', 'SCR', 'DRW', 'RRV', 'ADW', 'ARV') -- SCR 1348 ( Added the New audit adjustment types)
            THEN
               OPEN netsale_return_cur (customer_rec.customer_id,
                                        v_inventory_item_id,
                                        line_rec.issue_code);

               FETCH netsale_return_cur INTO netsale_rec;

               IF netsale_return_cur%NOTFOUND
               THEN
                  cmg_utility_pck.write_output (
                        'Original Return Order not found for Adjustment Type/Acccount/Bipad/Issue(2) : '
                     || hdr_rec.adjustment_type
                     || '-'
                     || hdr_rec.account_number
                     || '-'
                     || line_rec.bipad
                     || '-'
                     || line_rec.issue_code);
                  RAISE ud_order_not_found;
               END IF;
            -- v_sncsnr_cover_price := netsale_return_rec.cover_price ;
            -- CLOSE netsale_return_cur;
            -- added - 09-May-07 - by Senthil - added to handle SNC and SNR Adjustments types  - End ;

            --            ELSE -- commented by senthil - 09-may-07
            END IF;                                           -- IF 901 -- END

            IF netsale_rec.edition IS NULL
            THEN
               OPEN any_edition_cur (v_inventory_item_id, line_rec.issue_code);

               FETCH any_edition_cur
               INTO v_edition, v_upc;

               CLOSE any_edition_cur;
            END IF;



            IF hdr_rec.adjustment_type = 'SNC'
            THEN
               IF    netsale_rec.cover_price = 0
                  OR netsale_rec.cover_price IS NULL
               THEN
                  OPEN any_edition_cur (v_inventory_item_id,
                                        line_rec.issue_code);

                  FETCH any_edition_cur
                  INTO v_edition, v_upc;

                  CLOSE any_edition_cur;

                  cmg_price_disc_pck.calculate_list_price_prc (
                     customer_rec.price_list_id,
                     v_inventory_item_id,
                     v_upc,
                     v_o_price_list_id,
                     v_o_price_list_name,
                     v_cover_price,
                     v_start_date,
                     v_end_date);
                  v_result_selling_price := 0;
                  v_result_cover_price := NVL (v_cover_price, 0);
               ELSE
                  v_result_selling_price := 0;
                  v_result_cover_price := NVL (netsale_rec.cover_price, 0);
               END IF;
            ELSIF hdr_rec.adjustment_type IN
                     ('RRV', 'MRC', 'KIL', 'ARV', 'ART', 'AKL') -- SCR 1348 ( Added the New audit adjustment types)
            THEN
               v_result_cover_price := netsale_rec.cover_price;

               -- Added by Senthil - 09-May-07 - Start
               IF     (   v_result_cover_price = 0
                       OR v_result_cover_price IS NULL)
                  AND line_rec.upc IS NOT NULL
               THEN
                  cmg_price_disc_pck.calculate_list_price_prc (
                     customer_rec.price_list_id,
                     v_inventory_item_id,
                     line_rec.upc,
                     v_o_price_list_id,
                     v_o_price_list_name,
                     v_cover_price,
                     v_start_date,
                     v_end_date);

                  v_result_cover_price := v_cover_price;
                  cmg_price_disc_pck.calculate_discount_prc (
                     v_o_price_list_id,
                     v_inventory_item_id,
                     v_result_discount,
                     v_result_disc_amount);

                  --                v_result_discount      := p_discount;
                  --                billingprice = Coverprice - (coverprice*discount/100)
                  --                   v_result_selling_price :=
                  --                      (  v_result_cover_price
                  --                       - (v_result_cover_price * v_result_discount / 100)
                  --                      );
                  IF v_result_discount IS NOT NULL
                  THEN
                     v_result_selling_price :=
                        (ROUND (
                              v_result_cover_price
                            - (  v_result_cover_price
                               * (v_result_discount / 100)),
                            5));
                  ELSE
                     v_result_selling_price := v_result_disc_amount;
                  END IF;
               ELSE
                  v_result_cover_price := netsale_rec.cover_price;
                  v_result_selling_price := netsale_rec.unit_selling_price;
               END IF;
            --Modified for Foriegn Enhancement
            ELSIF hdr_rec.adjustment_type IN ('SCR', 'DRW', 'ADW', 'MRC') -- SCR 1348 ( Added the New audit adjustment types)
            THEN
               DBMS_OUTPUT.put_line (netsale_rec.cover_price);

               IF    netsale_rec.cover_price = 0
                  OR netsale_rec.cover_price IS NULL
               THEN
                  IF line_rec.upc IS NOT NULL
                  THEN
                     DBMS_OUTPUT.put_line (line_rec.upc);
                     cmg_price_disc_pck.calculate_list_price_prc (
                        customer_rec.price_list_id,
                        v_inventory_item_id,
                        line_rec.upc,
                        v_o_price_list_id,
                        v_o_price_list_name,
                        v_cover_price,
                        v_start_date,
                        v_end_date);

                     v_result_cover_price := v_cover_price;
                     cmg_price_disc_pck.calculate_discount_prc (
                        v_o_price_list_id,
                        v_inventory_item_id,
                        v_result_discount,
                        v_result_disc_amount);

                     --                      v_result_selling_price :=
                     --                         (  v_result_cover_price
                     --                          - (v_result_cover_price * v_result_discount / 100)
                     --                         );
                     IF v_result_discount IS NOT NULL
                     THEN
                        v_result_selling_price :=
                           (ROUND (
                                 v_result_cover_price
                               - (  v_result_cover_price
                                  * (v_result_discount / 100)),
                               5));
                     ELSE
                        v_result_selling_price := v_result_disc_amount;
                     END IF;
                  ELSIF line_rec.upc IS NULL AND netsale_rec.upc IS NOT NULL
                  THEN
                     cmg_price_disc_pck.calculate_list_price_prc (
                        customer_rec.price_list_id,
                        v_inventory_item_id,
                        netsale_rec.upc, --line_rec.upc,--Modified for Foriegn Enhancement
                        v_o_price_list_id,
                        v_o_price_list_name,
                        v_cover_price,
                        v_start_date,
                        v_end_date);

                     v_result_cover_price := v_cover_price;
                     cmg_price_disc_pck.calculate_discount_prc (
                        v_o_price_list_id,
                        v_inventory_item_id,
                        v_result_discount,
                        v_result_disc_amount);

                     --     v_result_selling_price :=
                     --      (  v_result_cover_price
                     --      - (v_result_cover_price * v_result_discount / 100)
                     --    );
                     IF v_result_discount IS NOT NULL
                     THEN
                        v_result_selling_price :=
                           (ROUND (
                                 v_result_cover_price
                               - (  v_result_cover_price
                                  * (v_result_discount / 100)),
                               5));
                     ELSE
                        v_result_selling_price := v_result_disc_amount;
                     END IF;
                  ELSIF line_rec.upc IS NULL AND netsale_rec.upc IS NULL
                  THEN
                     cmg_utility_pck.write_output (
                           'UPC Not found to calculate unit and selling price for this '
                        || hdr_rec.adjustment_type
                        || ' Type Adjustments Account/Bipad/Issue : '
                        || hdr_rec.account_number
                        || '-'
                        || line_rec.bipad
                        || '-'
                        || line_rec.issue_code);
                     RAISE ud_upc_price_not_found;
                  END IF;
               ELSE
                  v_result_cover_price := netsale_rec.cover_price;
                  v_result_selling_price := netsale_rec.unit_selling_price;
               END IF;
            END IF;

            -- capture last return date change  vijay 12/16/2014
            OPEN foreign_cur (customer_rec.customer_id);

            FETCH foreign_cur INTO v_extra_days;

            --OPEN prof_cur (v_cust_name);
            --FETCH prof_cur INTO v_profitcenter_name;

            -- cmg_utility_pck.write_output('v_last_return_date BEFORE'|| v_last_return_date);

            IF v_extra_days > 0
            THEN
               v_last_return_date :=
                  TO_DATE (v_last_return_date) + v_extra_days;
            END IF;

            CLOSE foreign_cur;

            --CLOSE prof_cur;
            --
            --  cmg_utility_pck.write_output('v_last_return_date'|| v_last_return_date);

            v_current_line_nr := NVL (v_current_line_nr, 0) + 1;

            INSERT INTO oe_lines_interface (creation_date,
                                            created_by,
                                            last_update_date,
                                            last_updated_by,
                                            orig_sys_document_ref,
                                            orig_sys_line_ref,
                                            line_number,
                                            --    line_type,
                                            order_quantity_uom,
                                            ordered_quantity,
                                            unit_selling_price,
                                            unit_list_price,
                                            request_date,
                                            inventory_item_id,
                                            sold_to_org_id,
                                            ship_from_org_id,
                                            accounting_rule_id,
                                            invoicing_rule_id,
                                            order_source_id,
                                            ship_to_org_id,
                                            tax_code,
                                            calculate_price_flag,
                                            pricing_context,
                                            pricing_attribute1,
                                            CONTEXT,
                                            attribute1,
                                            attribute2,
                                            attribute3,
                                            attribute4,
                                            attribute5,
                                            attribute6,
                                            attribute7,
                                            attribute8,
                                            attribute9,
                                            pricing_date,
                                            rejected_flag,
                                            operation_code,
                                            industry_attribute19)
                 VALUES (
                           SYSDATE,
                           v_user_id,
                           SYSDATE,
                           v_user_id,
                           v_original_system_ref,
                           v_current_line_nr,
                           v_current_line_nr,
                           --   'REGULAR',
                           v_item_uom,
                           line_rec.quantity,
                           --                            netsale_rec.unit_selling_price,
                           --                            netsale_rec.unit_selling_price,
                           ROUND (v_result_selling_price, 5),
                           v_result_cover_price,
                           SYSDATE,
                           v_inventory_item_id,
                           customer_rec.customer_id,
                           cmg_utility_pck.org_id ('HDG'),
                           v_accounting_rule_id,
                           v_invoicing_rule_id,
                           v_ord_source_id,
                           v_ship_to_site_use_id,
                           NULL,
                           -- line_rec.tax_code,
                           'N',                        -- calculate_price_flag
                           'Upgrade Context',               -- pricing context
                           NVL (NVL (line_rec.upc, netsale_rec.upc), v_upc),
                           NULL,
                           line_rec.issue_code,
                           NVL (v_cover_date, netsale_rec.cover_date), --netsale_rec.cover_date changed to nvl(..) 10/6/2014 by vijay
                           NVL (v_edition, netsale_rec.edition), -- NVL (netsale_rec.edition,v_edition) flipped by vijay 10/7/2014
                           line_rec.bipad,
                           --                   netsale_rec.cover_price,
                           v_result_cover_price,
                           NVL (TO_CHAR (v_on_sale_date, 'DD-MON-YYYY'),
                                netsale_rec.on_sale_date), --netsale_rec.on_sale_date changed to nvl(..) 10/6/2014
                           NVL (v_off_sale_date, netsale_rec.off_sale_date), --netsale_rec.off_sale_date changed to nvl(..) 10/6/2014
                           --  NVL (v_last_return_date,netsale_rec.last_return_date), --netsale_rec.last_return_date changed to nvl(..) 10/6/2014
                           NVL (
                              TO_CHAR (
                                 TO_DATE (v_last_return_date, 'DD-MON-YY'),
                                 'DD-MON-YYYY'),
                              netsale_rec.last_return_date),        --SCR 8442
                           NVL (v_returnable_flag,
                                netsale_rec.returnable_status), --netsale_rec.returnable_status changed to nvl(..) 12/9/2014
                           SYSDATE,
                           'N',
                           'CREATE',
                           netsale_rec.line_id);



            INSERT INTO oe_price_atts_interface (created_by,
                                                 creation_date,
                                                 last_updated_by,
                                                 last_update_date,
                                                 operation_code,
                                                 orig_sys_document_ref,
                                                 orig_sys_line_ref,
                                                 pricing_context,
                                                 pricing_attribute1,
                                                 order_source_id,
                                                 flex_title)
                 VALUES (v_user_id,
                         SYSDATE,
                         v_user_id,
                         SYSDATE,
                         'CREATE',
                         v_original_system_ref,
                         v_current_line_nr,
                         'Upgrade Context',
                         NVL (line_rec.upc, netsale_rec.upc),
                         v_ord_source_id,
                         'QP_ATTR_DEFNS_PRICING');

            v_count := v_count + 1;

            --            END IF; -- commented by Senthil - 09-may-07


            v_edition := NULL;                      --added by vijay 10/7/2014
            v_upc := NULL;                          --added by vijay 10/7/2014



            --added by vijay 10/6/2014
            IF item_cur%ISOPEN
            THEN
               CLOSE item_cur;
            END IF;

            -- added by Senthil 09-may-2007  - Start
            IF netsale_return_cur%ISOPEN
            THEN
               CLOSE netsale_return_cur;
            END IF;

            IF netsale_cur%ISOPEN
            THEN
               CLOSE netsale_cur;
            END IF;

            -- added by Senthil 09-may-2007 - End
            UPDATE cmgom070_stg_tbl
               SET interface_flag = 'Y',
                   last_update_date = SYSDATE,
                   last_updated_by = v_user_id
             WHERE line_number = line_rec.line_number;

            v_result_cover_price := NULL;
            v_result_selling_price := NULL;
         END LOOP;                                                     -- line
      END LOOP;

      --  END IF;
      --     END LOOP;-- hdr_cur



      IF v_count > 0
      THEN
         hdg_ret_global_pck.hdg_order_import_prc (v_retcode,
                                                  v_ret_msg_txt,
                                                  v_dphase,
                                                  v_dstatus,
                                                  v_ord_source_id,
                                                  v_error_log,
                                                  3);
      END IF;

      cmg_utility_pck.write_output ('');
      cmg_utility_pck.write_output (
         'Total No of Records Processed :' || v_count);



      p_retcode := SQLCODE;
      p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: Completed' || p_errbuf;
      COMMIT;
   EXCEPTION
      WHEN ud_data_validation_error_found
      THEN
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_DATA_VALIDATION_ERROR_FOUND';
         cmg_utility_pck.write_output (
            ' Data Validation Error occured, please check the data and rerun the program');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_no_file_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_NO_FILE_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN UD_ISSUEBIPAD_NOT_FOUND
      THEN
         p_retcode := 2;
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ISSUEBIPAD_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      --DELETE  from cmgom070_stg_tbl;
      WHEN ud_negative_copies_found
      THEN
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_NEGATIVE_COPIES_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent request ' || 'completed successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_loader_error
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_LOADER_ERROR';
         cmg_utility_pck.write_output (
               'The sql Loader failed '
            || 'to load the data. Check the'
            || ' log file for that process');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_item_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ITEM_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Correct The Data File ' || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_customer_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_CUSTOMER_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Correct The Data File ' || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_order_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ORDER_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_upc_price_not_found
      THEN
         p_retcode := 2;
         p_errbuf := 'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_UPC_PRICE_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
               'Correct The Data File and/or check the UPC and Price setup for this Order Type '
            || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN ud_order_type_not_found
      THEN
         p_retcode := 2;
         p_errbuf :=
            'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: UD_ORDER_TYPE_NOT_FOUND';
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
               'Correct The Data File and/or check the setup for this Order Type '
            || 'And Run The Program Again');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN OTHERS
      THEN
         p_retcode := SQLCODE;
         p_errbuf :=
            SUBSTR (
               'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: Err Others = > ' || SQLERRM,
               1,
               150);
         cmg_utility_pck.write_output (SQLERRM);
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
   END MAIN_PRC;
END cmgom070_sales_adj_pck;
/
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
      WHEN OTHERS
      THEN
         p_retcode := SQLCODE;
         p_errbuf :=
            SUBSTR (
               'CMGOM070_SALES_ADJ_PCK.MAIN_PRC: Err Others = > ' || SQLERRM,
               1,
               150);
         cmg_utility_pck.write_output (SQLERRM);
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            'Concurrent Request ' || 'Completed Successfully');
         cmg_utility_pck.write_output (
               'Current System Time is : '
            || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MM:SS'));
         cmg_utility_pck.write_output (' ');
         cmg_utility_pck.write_output (
            '+----------------------' || '-----------------------------+');
         ROLLBACK;
   END MAIN_PRC;
END cmgom070_sales_adj_pck;
/




CREATE OR REPLACE PACKAGE BODY APPS.hdg_submit_request_pck AS
  PROCEDURE hdg_sub_req_prc(p_application IN  VARCHAR2 DEFAULT('HDG'),
   p_program     IN  VARCHAR2,
   p_description IN  VARCHAR2,
   p_filepath_name IN  VARCHAR2,
   p_dev_status OUT VARCHAR2) AS
v_req_id NUMBER;
  v_call_status BOOLEAN;
v_phase   VARCHAR2(100);
  v_status VARCHAR2(100);
  v_dev_phase VARCHAR2(100);
  v_dev_status VARCHAR2(100);
  v_message VARCHAR2(100);
 BEGIN
    v_req_id := FND_REQUEST.SUBMIT_REQUEST(p_application ,
    p_program ,
    p_description ,
              '' ,
            FALSE ,
                                             p_filepath_name);
    if v_req_id <> 0 then
        commit;
    end if;

--  v_status ='Error' was added by Ravi Maddali on May 6th 2005, to check the Error Condition
    Loop
      v_call_status := FND_CONCURRENT.GET_REQUEST_STATUS(v_req_id,
        null,
    null,
    v_phase,
    v_status,
    v_dev_phase,
    v_dev_status,
    v_message);
      EXIT WHEN v_dev_phase = 'COMPLETE' or v_status ='Error';
    END LOOP;





   IF v_dev_phase = 'COMPLETE' AND v_dev_status = 'NORMAL' THEN
      p_dev_status := 'SUCCESS';
   ELSE
      p_dev_status := 'FAILED';
   END IF;
 END hdg_sub_req_prc;
END hdg_submit_request_pck;
/












 function submit_request (
 application IN varchar2 default NULL,
 program     IN varchar2 default NULL,
 description IN varchar2 default NULL,
 start_time  IN varchar2 default NULL,
 sub_request IN boolean  default FALSE,
 argument1   IN varchar2 default CHR(0),
 argument2   IN varchar2 default CHR(0),
   argument3   IN varchar2 default CHR(0),
 argument4   IN varchar2 default CHR(0),
 argument5   IN varchar2 default CHR(0),
 argument6   IN varchar2 default CHR(0),
 argument7   IN varchar2 default CHR(0),
 argument8   IN varchar2 default CHR(0),
 argument9   IN varchar2 default CHR(0),
 argument10  IN varchar2 default CHR(0),
 argument11  IN varchar2 default CHR(0),
 argument12  IN varchar2 default CHR(0),
   argument13  IN varchar2 default CHR(0),
 argument14  IN varchar2 default CHR(0),
 argument15  IN varchar2 default CHR(0),
 argument16  IN varchar2 default CHR(0),
 argument17  IN varchar2 default CHR(0),
 argument18  IN varchar2 default CHR(0),
 argument19  IN varchar2 default CHR(0),
 argument20  IN varchar2 default CHR(0),
 argument21  IN varchar2 default CHR(0),
 argument22  IN varchar2 default CHR(0),
   argument23  IN varchar2 default CHR(0),
 argument24  IN varchar2 default CHR(0),
 argument25  IN varchar2 default CHR(0),
 argument26  IN varchar2 default CHR(0),
 argument27  IN varchar2 default CHR(0),
 argument28  IN varchar2 default CHR(0),
 argument29  IN varchar2 default CHR(0),
 argument30  IN varchar2 default CHR(0),
 argument31  IN varchar2 default CHR(0),
 argument32  IN varchar2 default CHR(0),
   argument33  IN varchar2 default CHR(0),
 argument34  IN varchar2 default CHR(0),
 argument35  IN varchar2 default CHR(0),
 argument36  IN varchar2 default CHR(0),
 argument37  IN varchar2 default CHR(0),
   argument38  IN varchar2 default CHR(0),
 argument39  IN varchar2 default CHR(0),
 argument40  IN varchar2 default CHR(0),
 argument41  IN varchar2 default CHR(0),
   argument42  IN varchar2 default CHR(0),
 argument43  IN varchar2 default CHR(0),
 argument44  IN varchar2 default CHR(0),
 argument45  IN varchar2 default CHR(0),
 argument46  IN varchar2 default CHR(0),
 argument47  IN varchar2 default CHR(0),
   argument48  IN varchar2 default CHR(0),
 argument49  IN varchar2 default CHR(0),
 argument50  IN varchar2 default CHR(0),
 argument51  IN varchar2 default CHR(0),
   argument52  IN varchar2 default CHR(0),
 argument53  IN varchar2 default CHR(0),
 argument54  IN varchar2 default CHR(0),
 argument55  IN varchar2 default CHR(0),
 argument56  IN varchar2 default CHR(0),
 argument57  IN varchar2 default CHR(0),
 argument58  IN varchar2 default CHR(0),
 argument59  IN varchar2 default CHR(0),
 argument60  IN varchar2 default CHR(0),
 argument61  IN varchar2 default CHR(0),
 argument62  IN varchar2 default CHR(0),
   argument63  IN varchar2 default CHR(0),
 argument64  IN varchar2 default CHR(0),
 argument65  IN varchar2 default CHR(0),
 argument66  IN varchar2 default CHR(0),
 argument67  IN varchar2 default CHR(0),
 argument68  IN varchar2 default CHR(0),
 argument69  IN varchar2 default CHR(0),
 argument70  IN varchar2 default CHR(0),
 argument71  IN varchar2 default CHR(0),
 argument72  IN varchar2 default CHR(0),
   argument73  IN varchar2 default CHR(0),
 argument74  IN varchar2 default CHR(0),
 argument75  IN varchar2 default CHR(0),
 argument76  IN varchar2 default CHR(0),
 argument77  IN varchar2 default CHR(0),
 argument78  IN varchar2 default CHR(0),
 argument79  IN varchar2 default CHR(0),
 argument80  IN varchar2 default CHR(0),
 argument81  IN varchar2 default CHR(0),
 argument82  IN varchar2 default CHR(0),
   argument83  IN varchar2 default CHR(0),
 argument84  IN varchar2 default CHR(0),
 argument85  IN varchar2 default CHR(0),
 argument86  IN varchar2 default CHR(0),
 argument87  IN varchar2 default CHR(0),
 argument88  IN varchar2 default CHR(0),
 argument89  IN varchar2 default CHR(0),
 argument90  IN varchar2 default CHR(0),
 argument91  IN varchar2 default CHR(0),
 argument92  IN varchar2 default CHR(0),
   argument93  IN varchar2 default CHR(0),
 argument94  IN varchar2 default CHR(0),
 argument95  IN varchar2 default CHR(0),
 argument96  IN varchar2 default CHR(0),
 argument97  IN varchar2 default CHR(0),
 argument98  IN varchar2 default CHR(0),
 argument99  IN varchar2 default CHR(0),
 argument100  IN varchar2 default CHR(0))
 return number is

reqid number;

  begin
-- If not in database trigger mode:
-- Rollback to start_of_submission if submit() function fails to
-- submit the request.
if (not (P_DB_TRIGGER_MODE)) then
savepoint start_of_submission;
end if;

reqid := submit (
application, program, description, start_time, sub_request,
Argument1,  Argument2,  Argument3,  Argument4,  Argument5,
Argument6,  Argument7,  Argument8,  Argument9,  Argument10,
Argument11, Argument12, Argument13, Argument14, Argument15,
Argument16, Argument17, Argument18, Argument19, Argument20,
Argument21, Argument22, Argument23, Argument24, Argument25,
Argument26, Argument27, Argument28, Argument29, Argument30,
Argument31, Argument32, Argument33, Argument34, Argument35,
Argument36, Argument37, Argument38, Argument39, Argument40,
Argument41, Argument42, Argument43, Argument44, Argument45,
Argument46, Argument47, Argument48, Argument49, Argument50,
Argument51, Argument52, Argument53, Argument54, Argument55,
Argument56, Argument57, Argument58, Argument59, Argument60,
Argument61, Argument62, Argument63, Argument64, Argument65,
Argument66, Argument67, Argument68, Argument69, Argument70,
Argument71, Argument72, Argument73, Argument74, Argument75,
Argument76, Argument77, Argument78, Argument79, Argument80,
Argument81, Argument82, Argument83, Argument84, Argument85,
Argument86, Argument87, Argument88, Argument89, Argument90,
Argument91, Argument92, Argument93, Argument94, Argument95,
Argument96, Argument97, Argument98, Argument99, Argument100);

if (not (P_DB_TRIGGER_MODE)) then
if (reqid = 0) then
rollback to start_of_submission;
end if;
end if;

init_pvt_vars;

return (reqid);

  end submit_request;