Wednesday, January 16, 2019

Creating AR Invoice Interface Using API in Oracle R12 / Creating AR InvoiceInterface for Multiple Lines in Oracle R12 / Create AR Invoice Interface for multiple Lines with Separate Tax Line in Oracle R12

Here in this scenario Legacy data dump into my staging table from other platform. Here you can consider other platform means any other technology other than Oracle Apps.


Staging Table Creation:


/*------------------------------------------------------------
Header Columns:
------------------------------------------------------------*/
CREATE TABLE XXXX.XXXX_TRX_HEADERS_INTERFACE
/* +====================================================================+
   |                                                                    |
   |                                                                    |
   |$Id: $                                                              |
   |                                                                    |
   |Description      : XXXX_TRX_HEADERS_INTERFACE                     |
   |                   This table will have AR Invoice Header Legacy    |
   |                   Data                                             |
   |                                                                    |
   |Change History:                                                     |
   |---------------                                                     |
   |Version  Date       Author          Remarks                         |
   |-------  ---------- --------------  --------------------------------|
   |1.0         XX       XX                Initial Version                 |
   |                                                                    |
   +====================================================================+ */
(RECORD_ID                            NUMBER  
,CREATION_DATE                        DATE
,RECORD_STATUS                        VARCHAR2(1)   
,ERROR_MSG                            VARCHAR2(2000)
,BATCH_ID                             NUMBER        
,BATCH_SOURCE                         VARCHAR2(100) 
,TRX_COMMENTS                         VARCHAR2(2000)
,ORIG_SYSTEM_BILL_CUSTOMER_ID         NUMBER        
,ORIG_SYSTEM_BILL_ADDRESS_ID          NUMBER        
,ORIG_SYSTEM_SHIP_CUSTOMER_ID         NUMBER        
,ORIG_SYSTEM_SHIP_ADDRESS_ID          NUMBER        
,CUSTOMER_BANK_ACCOUNT_NAME           VARCHAR2(80)
,CUST_TRX_TYPE_NAME                   VARCHAR2(20)  
,TRX_NUMBER                           VARCHAR2(20)
,LAST_UPDATE_DATE                     DATE          
,CUSTOMER_TRX_ID                      NUMBER        
,DOCUMENT_NUMBER                      NUMBER        
,TRX_DATE                             DATE          
,GL_DATE                              DATE
,ORG_ID                               NUMBER
,TERM_NAME                            VARCHAR2(15) 
,INVOICING_RULE_NAME                  VARCHAR2(30)
,ACCOUNTING_RULE_DURATION             NUMBER  
,PREVIOUSE_CUST_TRX_ID                NUMBER 
,PRIMARY_SALESREP_NUMBER              VARCHAR2(30)
,ATTRIBUTE_CATEGORY                   VARCHAR2(30)  
,ATTRIBUTE1                           VARCHAR2(150) 
,ATTRIBUTE2                           VARCHAR2(150) 
,ATTRIBUTE3                           VARCHAR2(150) 
,ATTRIBUTE4                           VARCHAR2(150) 
,ATTRIBUTE5                           VARCHAR2(150) 
,ATTRIBUTE6                           VARCHAR2(150) 
,ATTRIBUTE7                           VARCHAR2(150) 
,ATTRIBUTE8                           VARCHAR2(150) 
,ATTRIBUTE9                           VARCHAR2(150) 
,ATTRIBUTE10                          VARCHAR2(150) 
,ATTRIBUTE11                          VARCHAR2(150) 
,ATTRIBUTE12                          VARCHAR2(150) 
,ATTRIBUTE13                          VARCHAR2(150) 
,ATTRIBUTE14                          VARCHAR2(150) 
,ATTRIBUTE15                          VARCHAR2(150)
,COMMENTS                             VARCHAR2(240)
,REASON                               VARCHAR2(2000)
);
/
CREATE OR REPLACE PUBLIC SYNONYM XXXX_TRX_HEADERS_INTERFACE
FOR XXIMSF.XXXX_TRX_HEADERS_INTERFACE;
/
/*------------------------------------------------------------
Line Columns:
------------------------------------------------------------*/
CREATE TABLE XXXX.XXXX_TRX_LINES_INTERFACE
/* +====================================================================+
   |                                                                    |
   |                                                                    |
   |$Id: $                                                              |
   |                                                                    |
   |Description      : XXXX_TRX_LINES_INTERFACE                       |
   |                   This table will have AR Invoice Lines Legacy     |
   |                   Data                                             |
   |                                                                    |
   |Change History:                                                     |
   |---------------                                                     |
   |Version  Date       Author          Remarks                         |
   |-------  ---------- --------------  --------------------------------|
   |1.0      XX        XX Initial Version                 |
   |                                                                    |
   +====================================================================+ */
(RECORD_ID                            NUMBER
,LINE_NUMBER                          NUMBER        
,RECORD_STATUS                        VARCHAR2(1)   
,ERROR_MSG                            VARCHAR2(2000)
,LINE_TYPE                            VARCHAR2(20)  
,DESCRIPTION                          VARCHAR2(240)
,QUANTITY                             NUMBER        
,UNIT_SELLING_PRICE                   NUMBER        
,UNIT_STANDARD_PRICE                  NUMBER        
,UOM_CODE                             VARCHAR2(3)   
,UOM_NAME                             VARCHAR2(25)  
,CURRENCY_CODE                        VARCHAR2(15)  
,AMOUNT                               NUMBER 
,CONVERSION_TYPE                      VARCHAR2(30)  
,CONVERSION_DATE                      DATE          
,CONVERSION_RATE                      NUMBER
,INTERFACE_LINE_CONTEXT               VARCHAR2(30)  
,INTERFACE_LINE_ATTRIBUTE1            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE2            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE3            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE4            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE5            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE6            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE7            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE8            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE9            VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE10           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE11           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE12           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE13           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE14           VARCHAR2(150) 
,INTERFACE_LINE_ATTRIBUTE15           VARCHAR2(150)
,RULE_START_DATE                      DATE          
,RULE_END_DATE                        DATE
,LINK_TO_LINE_ID                      NUMBER
,CREDIT_METHOD_FOR_ACCT_RULE          VARCHAR2(30)  
,CREDIT_METHOD_FOR_INSTALLMENTS       VARCHAR2(30)
,MEMO_LINE_NAME                       VARCHAR2(50)
,COMMENTS                             VARCHAR2(240)
,COGS_AMOUNT                          NUMBER        
,COGS_PERCENTAGE                      NUMBER        
,COGS_GL_FLAG                         VARCHAR2(1)
,TAX_REGIME_CODE                      VARCHAR2(30)  
,TAX_TYPE                             VARCHAR2(30)  
,TAX_JURISDICATION                    VARCHAR2(50)  
,TAX_REG_STATUS                       VARCHAR2(50)  
,TAX_RATE_CODES                       VARCHAR2(50)
,CREDIT_ALLOCATION_RULE               VARCHAR2(100) 
,UNIT_PRICE                           NUMBER        
,UOM                                  VARCHAR2(30)  
,SUPPLY_DATE                          DATE          
,TAX_AMOUNT                           NUMBER        
,TAX_GL_CODE_COMBINATION              VARCHAR2(500) 
,REV_GL_CODE_COMBINATION              VARCHAR2(500) 
,TAXABLE_AMOUNT                       NUMBER      
,REASON                               VARCHAR2(2000)
,COGS_TAX_REG_STATUS                  VARCHAR2(30)  
,COGS_TAX_RATE_CODES                  VARCHAR2(50)  
,COGS_TAX_AMOUNT                      NUMBER        
,ORA_TRX_DATE                         DATE          
,ORA_GL_DATE                          DATE          
,ORA_CREATION_DATE                    DATE          
,ITEM_CODE                            VARCHAR2(240) 
,TAX_STATUS_CODE                      VARCHAR2(240) 
,TAX_ONLY_ORIGINAL_INVOICE            VARCHAR2(240) 
,TAX_ONLY_INVOICE_DATE                DATE          
,TAX_ONLY_INVOICE_AMOUNT              NUMBER        
,PRODUCT_TYPE                         VARCHAR2(240)
);
/
CREATE OR REPLACE PUBLIC SYNONYM XXXX_TRX_LINES_INTERFACE
FOR XXIMSF.XXXX_TRX_LINES_INTERFACE;
/
Here above tables purpose of creating it will hold the data till validation and periodically data will be flush out from above tables.


Now creating the AR Invoices with Multiple lines and separate Tax Lines:


SET SERVEROUTPUT ON;
DECLARE
   /* Local Variables declaration */
   /* API Output Variables */
   l_return_status                  VARCHAR2(1);
   l_msg_count                      NUMBER;
   l_msg_data                       VARCHAR2(2000);
  
   /* Record Type Variables */
   l_batch_source_rec               ar_invoice_api_pub.batch_source_rec_type;
   l_trx_header_tbl                 ar_invoice_api_pub.trx_header_tbl_type;
   l_trx_lines_tbl                  ar_invoice_api_pub.trx_line_tbl_type;
   l_trx_dist_tbl                   ar_invoice_api_pub.trx_dist_tbl_type;
   l_trx_salescredits_tbl           ar_invoice_api_pub.trx_salescredits_tbl_type;
   l_trx_contingencies_tbl_type     ar_invoice_api_pub.trx_contingencies_tbl_type;
  
   /* Local Variables */
   l_batch_id                       NUMBER;
   l_cnt                            NUMBER := 0;
   l_cntt                            NUMBER:= 1;
   v_sr_id                          VARCHAR2(240);
   v_sr_number                      VARCHAR2(240);
   v_tax_regime_code                VARCHAR2(240);
   v_tax_class_code                 VARCHAR2(240);
   ln_CUSTOMER_ID                   NUMBER;
   l_receipt_id                     NUMBER;
   lh_trx_type_id                   NUMBER;
   l_customer_trx_id                NUMBER;
   l_user_id                        NUMBER;
   l_resp_id                        NUMBER;
   l_resp_appl_id                   NUMBER;
   ln_line_no                       NUMBER;
   lh_term_id                       NUMBER;
   lh_bill_to_customer_id           NUMBER;
   lh_bill_to_site_use_id           NUMBER;
   ll_inventory_item_id    NUMBER;
   l_rec_cnt                        NUMBER:=1;
   l_err_data                       VARCHAR2(2000);
   lc_cnt                           NUMBER := 0;
   ln_inv_item_cnt                  NUMBER := 0;
   lc_error_msg      VARCHAR2(2000);
  
   CURSOR c_trx_headers
   IS
   (SELECT xxhdr.*
    FROM xxxx.xxxx_trx_headers_interface xxhdr,
      xxxx.xxxx_trx_lines_interface xxlines
 WHERE 1          = 1
 AND   xxhdr.record_id = xxlines.record_id
 AND   xxhdr.record_status IN ('N','D','T','S')
 AND   xxhdr.error_msg is null
 AND   xxlines.interface_line_attribute1 NOT IN (SELECT
                                                    interface_line_attribute1
                FROM ra_customer_trx_lines_all
                WHERE 1 = 1) );
   CURSOR c_trx_lines (P_record_id NUMBER)
   IS
   (SELECT *
    FROM xxxx.xxxx_trx_lines_interface
 WHERE 1          = 1
 AND   record_status IN ('N','D','T','S')
 AND   error_msg is null
 AND   record_id = P_record_id );

BEGIN
   BEGIN
      /* Assigning Global Profiles */
      BEGIN
         fnd_global.apps_initialize(12344, 58413, 222);
         apps.mo_global.set_policy_context ('S', 455);
   /*Fnd_Global.APPS_INITIALIZE (Fnd_Global.user_id,
           Fnd_Global.RESP_ID,
           Fnd_Global.RESP_APPL_ID);
           apps.mo_global.set_policy_context ('S', Fnd_Global.org_id);*/
      END;
  
      DELETE  FROM ar_trx_errors_gt;
     
   FOR rec_hdr in c_trx_headers
   LOOP /* Main Loop Start here */
                       
      BEGIN
         SELECT cust_trx_type_id
   INTO   lh_trx_type_id
         FROM   ra_cust_trx_types
         WHERE  name = rec_hdr.cust_trx_type_name;
      EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Customer TRX Type '||' : '||rec_hdr.cust_trx_type_name);
   lc_error_msg := 'No Data Found for - Customer TRX Type '||' : '||rec_hdr.cust_trx_type_name ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Customer TRX Type'||' '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Customer TRX Type'||' '||SQLERRM ;
      END;
  
   BEGIN
      SELECT
               hca.cust_account_id,
               hcsua.site_use_id
         INTO
              lh_bill_to_customer_id,
              lh_bill_to_site_use_id
         FROM
              hz_cust_accounts hca,
              hz_cust_acct_sites hcasa,
              hz_cust_site_uses hcsua,
              apps.hz_parties hp
         WHERE 1                      = 1
         AND  hca.cust_account_id     = hcasa.cust_account_id
         AND  hcsua.SITE_USE_CODE     = 'BILL_TO'
         AND  hcasa.cust_acct_site_id = hcsua.cust_acct_site_id
         AND  hca.party_id            = hp.party_id
         AND  hcsua.PRIMARY_FLAG      = 'Y'
         AND  hp.party_name           IN( SELECT customer_name
                                    FROM   ar_customers
            WHERE  customer_id = rec_hdr.orig_system_bill_customer_id);  --'321 EVENTS DMCC';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id);
   lc_error_msg := 'No Data Found for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id||' : '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Customer Account and Customer Bill-To Site Use '||' : '||rec_hdr.orig_system_bill_customer_id||' : '||SQLERRM ;
   END;
  
   BEGIN
      SELECT batch_source_id
   INTO   l_batch_source_rec.batch_source_id
   FROM   ra_batch_sources
   WHERE  1    = 1
   AND    name = 'MANUAL-OTHER';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Batch Source '||' : '||'MANUAL-OTHER');
   lc_error_msg := 'No Data Found for - Batch Source '||' : '||'MANUAL-OTHER' ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Batch Source '||' : '||'MANUAL-OTHER'||' : '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Batch Source '||' : '||'MANUAL-OTHER'||' : '||SQLERRM ;
   END;
   /* Get the Term Id based on Term name */
   BEGIN
      SELECT term_id
   INTO   lh_term_id
   FROM   RA_TERMS_TL
   WHERE  1    = 1
   AND    name = rec_hdr.term_name;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
            dbms_output.put_line('No Data Found for - Term '||' : '||rec_hdr.term_name);
   lc_error_msg := 'No Data Found for - Term '||' : '||rec_hdr.term_name ;
         WHEN OTHERS THEN
            dbms_output.put_line('Undefined Error for - Term '||' : '||rec_hdr.term_name||' : '||SQLERRM);
   lc_error_msg := 'Undefined Error for - Term '||' : '||rec_hdr.term_name||' : '||SQLERRM ;
   END;
   /* Assigning Header Legacy data with API Record variables */
   l_trx_header_tbl(1).trx_header_id          := rec_hdr.record_id;
   l_trx_header_tbl(1).cust_trx_type_id       := lh_trx_type_id;
   l_trx_header_tbl(1).bill_to_customer_id    := lh_bill_to_customer_id ;
   l_trx_header_tbl(1).bill_to_site_use_id    := lh_bill_to_site_use_id ;
   l_trx_header_tbl(1).trx_date               := rec_hdr.trx_date;
   l_trx_header_tbl(1).gl_date                := rec_hdr.gl_date;
   l_trx_header_tbl(1).org_id                 := rec_hdr.org_id;
   l_trx_header_tbl(1).term_id                := lh_term_id; 
   l_trx_header_tbl(1).attribute_category     := rec_hdr.attribute_category ;
   l_trx_header_tbl(1).attribute1             := rec_hdr.attribute1  ;
   l_trx_header_tbl(1).attribute2             := rec_hdr.attribute2  ;
   l_trx_header_tbl(1).attribute3             := rec_hdr.attribute3  ;
   l_trx_header_tbl(1).attribute4             := rec_hdr.attribute4  ;
   l_trx_header_tbl(1).attribute5             := rec_hdr.attribute5  ;
   l_trx_header_tbl(1).attribute6             := rec_hdr.attribute6  ;
   l_trx_header_tbl(1).attribute7             := rec_hdr.attribute7  ;
   l_trx_header_tbl(1).attribute8             := rec_hdr.attribute8  ;
   l_trx_header_tbl(1).attribute9             := rec_hdr.attribute9  ;
   l_trx_header_tbl(1).attribute10            := rec_hdr.attribute10 ;
   l_trx_header_tbl(1).attribute11            := rec_hdr.attribute11 ;
   l_trx_header_tbl(1).attribute12            := rec_hdr.attribute12 ;
   l_trx_header_tbl(1).attribute13            := rec_hdr.attribute13 ;
   l_trx_header_tbl(1).attribute14            := rec_hdr.attribute14 ;
   l_trx_header_tbl(1).attribute15            := rec_hdr.attribute15 ;
   l_trx_header_tbl(1).comments               := rec_hdr.comments    ;
   l_trx_header_tbl(1).document_creation_date := rec_hdr.creation_date ;
      dbms_output.put_line(' Before Nested Loop : '||''||l_customer_trx_id||''||SQLERRM);
  
   /* Lines Loop Starts here */
      FOR rec_line IN c_trx_lines (rec_hdr.record_id) 
   LOOP
   IF rec_line.line_type = 'TAX' THEN
      l_cnt := l_cnt + 1;

      l_trx_lines_tbl(l_cnt).trx_header_id              := rec_line.record_id;       
   l_trx_lines_tbl(l_cnt).trx_line_id                := rec_hdr.record_id + rec_line.line_number; --1 ;
   l_trx_lines_tbl(l_cnt).description                := rec_line.description ; 
   l_trx_lines_tbl(l_cnt).line_number                := rec_line.line_number ;
--   l_trx_lines_tbl(l_cnt).inventory_item_id          := ll_inventory_item_id ;
  -- l_trx_lines_tbl(l_cnt).quantity_invoiced          := rec_line.quantity ;
  -- l_trx_lines_tbl(l_cnt).unit_selling_price         := rec_line.unit_selling_price ;
   l_trx_lines_tbl(l_cnt).line_type                  := rec_line.line_type;
  -- l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_standard_price;
   --l_trx_lines_tbl(l_cnt).uom_code                   := rec_line.uom_code;
   l_trx_lines_tbl(l_cnt).amount                     := (rec_line.quantity * rec_line.unit_selling_price );
   --l_trx_lines_tbl(l_cnt).tax_regime_code            := rec_line.tax_regime_code;
   --l_trx_lines_tbl(l_cnt).tax_status_code            := rec_line.tax_status_code;
            l_trx_lines_tbl(l_cnt).rule_start_date            := rec_line.rule_start_date;
   l_trx_lines_tbl(l_cnt).rule_end_date              := rec_line.rule_end_date;
   l_trx_lines_tbl(l_cnt).product_type               := rec_line.product_type;
   l_trx_lines_tbl(l_cnt).reason_code                := rec_line.reason;
   l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_price;
   l_trx_lines_tbl(l_cnt).interface_line_context     := rec_line.interface_line_context ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute1  := rec_line.interface_line_attribute1 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute2  := rec_line.interface_line_attribute2 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute3  := rec_line.interface_line_attribute3 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute4  := rec_line.interface_line_attribute4 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute5  := rec_line.interface_line_attribute5 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute6  := rec_line.interface_line_attribute6 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute7  := rec_line.interface_line_attribute7 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute8  := rec_line.interface_line_attribute8 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute9  := rec_line.interface_line_attribute9 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute10 := rec_line.interface_line_attribute10 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute11 := rec_line.interface_line_attribute11 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute12 := rec_line.interface_line_attribute12 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute13 := rec_line.interface_line_attribute13 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute14 := rec_line.interface_line_attribute14 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute15 := rec_line.interface_line_attribute15 ;
   ELSIF rec_line.line_type = 'LINE' THEN
      l_cnt := l_cnt + 1;
   lc_cnt := lc_cnt + 1;
      dbms_output.put_line(' In Nested Loop : '||' customer trx id : '||l_customer_trx_id||' : '||SQLERRM);
   BEGIN
      SELECT COUNT(inventory_item_id)
      INTO   ln_inv_item_cnt
      FROM   mtl_system_items_b
      WHERE  1        = 1
      AND    segment1 = rec_line.item_code;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
      ln_inv_item_cnt := 0 ;
      dbms_output.put_line('Inventory Item not found: '||' Item Code : '||rec_line.item_code);
      lc_error_msg := 'Inventory Item not found: '||' Item Code : '||rec_line.item_code ;
   WHEN OTHERS THEN
      ln_inv_item_cnt := 0 ;
      dbms_output.put_line('Inventory Item not found: '||' Item Code : '||rec_line.item_code||' : '||SQLERRM);
      lc_error_msg := 'Inventory Item not found: '||' Item Code : '||rec_line.item_code||' : '||SQLERRM ;
   END;
            IF
      ln_inv_item_cnt >0 THEN
      BEGIN
         SELECT inventory_item_id
         INTO   ll_inventory_item_id
         FROM   mtl_system_items_b
         WHERE  1        = 1
         AND    segment1 = rec_line.item_code
      AND    enabled_flag = 'Y';
      EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  ll_inventory_item_id := NULL;
      lc_error_msg := 'Inventory Item Not Enabled '||' : '||'Item Code :'||rec_line.item_code ;
                  dbms_output.put_line('Inventory Item Not Enabled '||' : '||'Item Code :'||rec_line.item_code);
               WHEN OTHERS THEN
                  dbms_output.put_line('Undefined Error for - Inventory Item Code '||' : '||SQLERRM);
      lc_error_msg := 'Undefined Error for - Inventory Item Code '||' : '||SQLERRM ;
      END;
            END IF;

      l_trx_lines_tbl(l_cnt).trx_header_id              := rec_line.record_id;       
   l_trx_lines_tbl(l_cnt).trx_line_id                := rec_hdr.record_id + l_cnt;
   l_trx_lines_tbl(l_cnt).description                := rec_line.description ; 
   l_trx_lines_tbl(l_cnt).line_number                := rec_line.line_number ;
   l_trx_lines_tbl(l_cnt).inventory_item_id          := ll_inventory_item_id ;
   l_trx_lines_tbl(l_cnt).quantity_invoiced          := rec_line.quantity ;
   l_trx_lines_tbl(l_cnt).unit_selling_price         := rec_line.unit_selling_price ;
   l_trx_lines_tbl(l_cnt).line_type                  := rec_line.line_type;
   l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_standard_price;
   l_trx_lines_tbl(l_cnt).uom_code                   := rec_line.uom_code;
   l_trx_lines_tbl(l_cnt).amount                     := (rec_line.quantity * rec_line.unit_selling_price );
            l_trx_lines_tbl(l_cnt).rule_start_date            := rec_line.rule_start_date;
   l_trx_lines_tbl(l_cnt).rule_end_date              := rec_line.rule_end_date;
   l_trx_lines_tbl(l_cnt).product_type               := rec_line.product_type;
   l_trx_lines_tbl(l_cnt).reason_code                := rec_line.reason;
   l_trx_lines_tbl(l_cnt).unit_standard_price        := rec_line.unit_price;
   l_trx_lines_tbl(l_cnt).interface_line_context     := rec_line.interface_line_context ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute1  := rec_line.interface_line_attribute1 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute2  := rec_line.interface_line_attribute2 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute3  := rec_line.interface_line_attribute3 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute4  := rec_line.interface_line_attribute4 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute5  := rec_line.interface_line_attribute5 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute6  := rec_line.interface_line_attribute6 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute7  := rec_line.interface_line_attribute7 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute8  := rec_line.interface_line_attribute8 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute9  := rec_line.interface_line_attribute9 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute10 := rec_line.interface_line_attribute10 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute11 := rec_line.interface_line_attribute11 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute12 := rec_line.interface_line_attribute12 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute13 := rec_line.interface_line_attribute13 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute14 := rec_line.interface_line_attribute14 ;
   l_trx_lines_tbl(l_cnt).interface_line_attribute15 := rec_line.interface_line_attribute15 ;
   l_trx_lines_tbl(l_cnt).taxable_flag               := 'N';

   /* TAX Lines Starts here */
     l_cntt := l_cnt + 1 ;
                    dbms_output.put_line(' Start Tax Lines Count : '||' Lines Count : '||l_cnt||' Tax Lines Count : '||l_cntt||' lc_cnt : '||lc_cnt);
                                  l_trx_lines_tbl(l_cntt).trx_line_id := rec_hdr.record_id + l_cntt;  
                         l_trx_lines_tbl(l_cntt).trx_header_id :=   rec_line.record_id;    
                                  l_trx_lines_tbl(l_cntt).line_number := rec_line.line_number ;
                                  l_trx_lines_tbl(l_cntt).description := 'Test Tax';
                                  l_trx_lines_tbl(l_cntt).amount := 100;
                                  l_trx_lines_tbl(l_cntt).line_type := 'TAX';
                                  l_trx_lines_tbl(l_cntt).tax_rate_code := 'AE_VAT_AR_09';
                                  l_trx_lines_tbl(l_cntt).tax_status_code := 'AE_VAT_STANDARD';
                                  l_trx_lines_tbl(l_cntt).link_to_trx_line_id := rec_hdr.record_id + l_cnt;
                                  l_trx_lines_tbl(l_cntt).tax_regime_code := 'AE_VAT'; 
                                  l_trx_lines_tbl(l_cntt).tax := 'AE_VAT';
         -- l_trx_lines_tbl(2).taxable_flag               := 'Y';
                 dbms_output.put_line(' End Tax Lines Count : '||' Lines Count : '||l_cnt||' Tax Lines Count : '||l_cntt||''||SQLERRM);
                     l_cnt := l_cnt + 1;          
   /* TAX Lines Ends here */
   END IF;
   END LOOP; /* Lines Loop Ends here */
      dbms_output.put_line(' After Nested loop end : '||' '||l_cnt);
   /* API Calling to Create AR Single Invoices with Multiple Lines and Tax Line for each Invoice Line */
   AR_INVOICE_API_PUB.create_single_invoice(
                                  p_api_version           => 1.0,
                                  p_batch_source_rec      => l_batch_source_rec,
                                  p_trx_header_tbl        => l_trx_header_tbl,
                                  p_trx_lines_tbl         => l_trx_lines_tbl,
                                  p_trx_dist_tbl          => l_trx_dist_tbl,
                                  p_trx_salescredits_tbl  => l_trx_salescredits_tbl,
                                  p_trx_contingencies_tbl => l_trx_contingencies_tbl_type,
                                  x_customer_trx_id       => l_customer_trx_id,
                                  x_return_status         => l_return_status,
                                  x_msg_count             => l_msg_count,
                                  x_msg_data              => l_msg_data
                              );
           
        dbms_output.put_line('********************************************');
                                dbms_output.put_line(' Am in API Calling End : '||'Customer Trx ID : '||l_customer_trx_id||' Oracle Message : '||SQLERRM||' API MSG : '||l_msg_data);
                                dbms_output.put_line(' API Return Status : '||''||l_return_status||' : '||SQLERRM);
                                dbms_output.put_line(' Record Count before addition : '||''||l_cnt);
        l_err_data := l_msg_data||''||SQLERRM;
                               
         IF l_return_status = 'S' AND l_customer_trx_id is not null THEN
     
   UPDATE XXIMSF_TRX_HEADERS_INTERFACE
   SET record_status = 'S', error_msg = 'Records Inserted into Base Tables '||' = Created Customer TRX ID ='||l_customer_trx_id
   WHERE record_id = rec_hdr.record_id;

   UPDATE XXXX_TRX_LINES_INTERFACE
   SET record_status = 'S', error_msg = 'Records Inserted into Base Tables '||' = Created Customer TRX ID ='||l_customer_trx_id
   WHERE record_id = rec_hdr.record_id;
   ELSE
   UPDATE XXXX_TRX_HEADERS_INTERFACE
   SET record_status = 'E', error_msg = 'Records Not Inserted into Base Tables'||' Validation Errors '||lc_error_msg||' '||l_err_data
   WHERE record_id = rec_hdr.record_id;

   UPDATE XXXX_TRX_LINES_INTERFACE
   SET record_status = 'E', error_msg = 'Records Not Inserted into Base Tables'||' Validation Errors '||lc_error_msg||' '||l_err_data
   WHERE record_id = rec_hdr.record_id;
   END IF;
   END LOOP; /* Main Loop Ends here */
      commit;
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      dbms_output.put_line('No Data Found for - in Main Loop '||' '||SQLERRM);
   WHEN OTHERS THEN
      dbms_output.put_line('Undefined Error - in Main Loop '||''||SQLERRM);
END;

END;




=============== Thanks for referring my blog, keep view my blog will get latest updates. ========================

No comments:

Post a Comment

SQL Query to find Customer, Customer Account and Customer Sites Information

/****************************************************************************** *PURPOSE: Query to Customer, Customer Account and Customer...