Thursday, 3 March 2016

Supplier Conversion in Oracle Apps R12

/* Formatted on 2016/03/03 21:41 (Formatter Plus v4.8.8) */
CREATE OR REPLACE PACKAGE aad_sup_1
IS
   PROCEDURE PRINT (p_message VARCHAR2);

   PROCEDURE main1 (errbuf OUT VARCHAR2, retcode OUT VARCHAR2);
END;

CREATE OR REPLACE PACKAGE BODY aad_sup_1
IS
   PROCEDURE PRINT (p_message VARCHAR2)
   IS
   BEGIN
      fnd_file.put_line (fnd_file.LOG, p_message);
   END;

   PROCEDURE main1 (errbuf OUT VARCHAR2, retcode OUT VARCHAR2)
   IS
      CURSOR c1
      IS
         (SELECT vendor_name, vendor_type_lookup_code, invoice_currency_code,
                 payment_currency_code, start_date_active, terms_name,
                 ROWID row_id
            FROM aad_supplier_stg
           WHERE process_flag = 'N');

      lv_vendor_name               NUMBER;
      ln_err_cnt                   NUMBER;
      ln_err_msg                   VARCHAR2 (4000);
      ln_vendor_interface_id       NUMBER;
      lv_vendor_type_lookup_code   NUMBER;
      lv_invoice_currency_code     NUMBER;
      lv_payment_currency_code     NUMBER;
      lv_terms_name                NUMBER;
   BEGIN
      FOR i IN c1
      LOOP
         ln_err_cnt := 0;
         ln_err_msg := ' ';

-- Vendor name validation -----------
         BEGIN
            SELECT 1
              INTO lv_vendor_name
              FROM ap_suppliers aps
             WHERE aps.vendor_name = i.vendor_name;

            IF lv_vendor_name = 1
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                      'Given vendor name ' || i.vendor_name || 'already exit';
            END IF;
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               NULL;
            WHEN OTHERS
            THEN
               ln_err_cnt := 1;
               ln_err_msg := 'Err_msg: ' || SQLERRM;
         END;

-- Vendor code validation -----------
         BEGIN
            SELECT 1
              INTO lv_vendor_type_lookup_code
              FROM fnd_lookup_values
             WHERE lookup_type = 'VENDOR TYPE'
               AND enabled_flag = 'Y'
               AND LANGUAGE = USERENV ('LANG')
               AND lookup_code = i.vendor_type_lookup_code;
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Given vendor site code invalid- '
                  || i.vendor_type_lookup_code;
            WHEN OTHERS
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Error While validating Vendor Type: '
                  || SQLERRM;
         END;

-- Invoice currency code validation -----------
         BEGIN
            SELECT 1
              INTO lv_invoice_currency_code
              FROM fnd_currencies
             WHERE currency_code = i.invoice_currency_code
               AND enabled_flag = 'Y';
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Given invoice currency code invalid- '
                  || i.invoice_currency_code;
            WHEN OTHERS
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Error While validating invoice currency code: '
                  || SQLERRM;
         END;

-- Payment currency code validation -----------
         BEGIN
            SELECT 1
              INTO lv_payment_currency_code
              FROM fnd_currencies
             WHERE currency_code = i.payment_currency_code
               AND enabled_flag = 'Y';
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Given Payment currency code invalid- '
                  || i.payment_currency_code;
            WHEN OTHERS
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Error While validating Payment currency code: '
                  || SQLERRM;
         END;

-- Terms name validation -----------
         BEGIN
            SELECT 1
              INTO lv_terms_name
              FROM ap_terms_tl
             WHERE NAME = i.terms_name AND LANGUAGE = USERENV ('LANG');
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Given Term name invalid- '
                  || i.terms_name;
            WHEN OTHERS
            THEN
               ln_err_cnt := 1;
               ln_err_msg :=
                     ln_err_msg
                  || ','
                  || 'Error While validating Terms name: '
                  || SQLERRM;
         END;

         IF ln_err_cnt = 0
         THEN
            SELECT ap_suppliers_int_s.NEXTVAL
              INTO ln_vendor_interface_id
              FROM DUAL;

            INSERT INTO ap_suppliers_int
                        (vendor_interface_id, vendor_name,
                         vendor_type_lookup_code, invoice_currency_code,
                         payment_currency_code, terms_name,
                         start_date_active, created_by, creation_date,
                         last_updated_by, last_update_date
                        )
                 VALUES (ln_vendor_interface_id, i.vendor_name,
                         i.vendor_type_lookup_code, i.invoice_currency_code,
                         i.payment_currency_code, i.terms_name,
                         i.start_date_active, fnd_global.user_id, SYSDATE,
                         fnd_global.user_id, SYSDATE
                        );

            UPDATE aad_supplier_stg
               SET process_flag = 'S'
             WHERE ROWID = i.row_id;
         ELSE
            UPDATE aad_supplier_stg
               SET process_flag = 'E',
                   error_msg = ln_err_msg
             WHERE ROWID = i.row_id;
         END IF;
      END LOOP;

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         PRINT ('Err_msg:- ' || SQLERRM);
   END;
END;

No comments:

Post a Comment