0% found this document useful (0 votes)
570 views5 pages

Api Ar Invoice

1. This document contains PL/SQL code that declares variables and cursors to process customer invoice transactions. 2. It loops through invoice header and line item data, populates data structures, and calls an API to create invoice transactions. 3. Any errors encountered are logged, and transaction status is updated based on the API response and error checking.

Uploaded by

Aamani Ammu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
570 views5 pages

Api Ar Invoice

1. This document contains PL/SQL code that declares variables and cursors to process customer invoice transactions. 2. It loops through invoice header and line item data, populates data structures, and calls an API to create invoice transactions. 3. Any errors encountered are logged, and transaction status is updated based on the API response and error checking.

Uploaded by

Aamani Ammu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

/* Formatted on 2/2/2020 2:19:03 PM (QP5 v5.256.13226.

35538) */
DECLARE
--1.
l_return_status VARCHAR2 (1);
l_msg_count NUMBER;
l_msg_data VARCHAR2 (2000);
l_batch_id NUMBER;
l_cnt NUMBER := 0;
l_customer_trx_id NUMBER;
cnt NUMBER;
item_id NUMBER;
BILL_TO_cust_NO VARCHAR2 (100);
SHIP_TO_cust_NO VARCHAR2 (100);
VORG_ID NUMBER;
SI_ID NUMBER;
V_CUST_TRX_TYPE_ID NUMBER;
BATCH_SOURCE_ID NUMBER;
BILL_TO_cust_ID NUMBER;
lLineDistCouner NUMBER := 1;

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;

CURSOR s1
IS
SELECT DISTINCT
A.ORG_NAME,
BILL_TO_CUSTOMER_NAME,
SHIP_TO_CUSTOMER_NAME,
(SELECT MAX (CUSTOMER_TRX_ID) + 1 FROM RA_CUSTOMER_TRX_ALL)
trx_header_id,
A.CUST_TRX_TYPE,
A.BATCH_SOURCE,
A.gl_date,
A.trx_currency,
A.term_id,
A.trx_date,
A.exchange_rate_type,
A.exchange_date,
A.exchange_rate,
A.salesrep_id,
A.user_id,
A.resp_id,
A.app_id-- ,BILL_TO_ACCOUNT_NUMBER
,
A.CODE_COMBINATION_ID,
A.CUS_SITE,
B.SITE_USE_ID,
A.ATTRIBUTE1,
A.TRX_HEADER_ID1
FROM raya_ar_invoice_table A, WSH_CUSTOMER_SITES_V B
WHERE A.status IS NULL AND
B.SITE_USE_ID = A.CUS_SITE
AND a.TRX_HEADER_ID1 = 3910018;
CURSOR s2 (
trx_header1 IN NUMBER)
IS
SELECT ORG_NAME,
BILL_TO_CUSTOMER_NAME,
SHIP_TO_CUSTOMER_NAME,
TO_NUMBER (
(SELECT MAX (CUSTOMER_TRX_ID) + 1 FROM RA_CUSTOMER_TRX_ALL))
trx_header_id,
CUST_TRX_TYPE,
BATCH_SOURCE,
(SELECT MAX (CUSTOMER_TRX_LINE_ID) + 1
FROM RA_CUSTOMER_TRX_LINES_ALL)
trx_line_id,
line_number,
description,
quantity_invoiced,
unit_selling_price,
trx_date-- ,item_number
--,item_desc
,
status,
gl_date,
trx_currency,
term_id,
exchange_rate_type,
exchange_date,
exchange_rate,
user_id,
resp_id,
app_id,
CODE_COMBINATION_ID,
TRX_HEADER_ID1,
TRX_LINE_ID1
FROM raya_ar_invoice_table
WHERE TRX_HEADER_ID1 = trx_header1
AND status IS NULL
AND TRX_HEADER_ID1 = 3910018;
--xx number;
BEGIN ---2.
mo_global.init ('AR');

FOR i IN s1
LOOP
/*
SELECT SITE_USE_ID
INTO SI_ID
FROM WSH_CUSTOMER_SITES_V
WHERE LOCATION = I.CUS_SITE ;
*/
SELECT CUSTOMER_NUMBER ,CUSTOMER_ID
INTO BILL_TO_cust_NO , BILL_TO_cust_ID
FROM ar_customers_all_v
WHERE CUSTOMER_NAME = i.BILL_TO_CUSTOMER_NAME;

-- DBMS_OUTPUT.put_line ('cust_id=' || cust_id);

BEGIN
SELECT CUSTOMER_NUMBER
INTO SHIP_TO_cust_NO
FROM ar_customers_all_v
WHERE CUSTOMER_NAME = i.SHIP_TO_CUSTOMER_NAME;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
SHIP_TO_cust_NO := NULL;
END;

SELECT ORGANIZATION_ID
INTO VORG_ID
FROM hr_operating_units
WHERE NAME = I.ORG_NAME;

SELECT DISTINCT BATCH_SOURCE_ID


INTO BATCH_SOURCE_ID
FROM RA_BATCH_SOURCES_ALL
WHERE NAME = I.BATCH_SOURCE;

SELECT DISTINCT CUST_TRX_TYPE_ID


INTO V_CUST_TRX_TYPE_ID
FROM RA_CUST_TRX_TYPES_ALL
WHERE NAME = I.CUST_TRX_TYPE;

--mo_global.set_policy_context('S',81); -- take org_id

--fnd_global.apps_initialize(1133, 51190, 222); -- user_id, resp_id, app_id

mo_global.init ('AR');
-- xla_security_pkg.set_security_context (222);

l_trx_header_tbl (1).trx_header_id := i.TRX_HEADER_ID1; -- may be neglected


and take another id from system
l_trx_header_tbl (1).BILL_TO_ACCOUNT_NUMBER := BILL_TO_cust_NO;
--i.bill_to_customer_id;
l_trx_header_tbl (1).SOLD_TO_CUSTOMER_ID := BILL_TO_cust_ID;
--i.bill_to_customer_id;
l_trx_header_tbl (1).SHIP_TO_ACCOUNT_NUMBER := SHIP_TO_cust_NO;
l_trx_header_tbl (1).ORG_ID := VORG_ID;
l_trx_header_tbl (1).BILL_TO_SITE_USE_ID := I.SITE_USE_ID;
l_trx_header_tbl (1).cust_trx_type_id := V_CUST_TRX_TYPE_ID;
l_trx_header_tbl (1).gl_date := i.gl_date;
l_trx_header_tbl (1).trx_currency := i.trx_currency;
l_trx_header_tbl (1).term_id := I.term_id;
--i.term_id;
l_trx_header_tbl (1).trx_date := i.trx_date;

---- l_trx_header_tbl(1).exchange_rate_type:=i.exchange_rate_type;
-- l_trx_header_tbl(1).exchange_date:=i.exchange_date;
-- l_trx_header_tbl(1).exchange_rate:=i.exchange_rate;
l_batch_source_rec.batch_source_id := BATCH_SOURCE_ID; -- batch Source_id
-- l_trx_header_tbl(1).primary_salesrep_id:=-3; --i.salesrep_id;

-- DBMS_OUTPUT.put_line ('cust_trx_type_id=' || i.cust_trx_type_id);

--l_batch_source_rec.batch_source_id := 24; -- batch Source_id

FOR ii IN s2 (i.TRX_HEADER_ID1)
LOOP
/*
select distinct inventory_item_id
into item_id
from mtl_system_items
where segment1=ii.item_number;
*/
DBMS_OUTPUT.put_line ('item_id=' || item_id);

--4. Populate line 1 information.


l_trx_lines_tbl (ii.line_number).trx_header_id := ii.TRX_HEADER_ID1;
l_trx_lines_tbl (ii.line_number).trx_line_id := ii.TRX_LINE_ID1;
l_trx_lines_tbl (ii.line_number).line_number := ii.line_number;
--l_trx_lines_tbl(ii.line_number).inventory_item_id := item_id;
l_trx_lines_tbl (ii.line_number).DESCRIPTION := ii.DESCRIPTION;
-- l_trx_lines_tbl(ii.line_number).TAX_CLASSIFICATION_CODE := 'NOTAX';

l_trx_lines_tbl (ii.line_number).quantity_invoiced :=
ii.quantity_invoiced;
l_trx_lines_tbl (ii.line_number).unit_selling_price :=
ii.unit_selling_price;

l_trx_lines_tbl (ii.line_number).line_type := 'LINE';


/* l_trx_dist_tbl(lLineDistCouner).account_class := 'REV';
l_trx_dist_tbl(lLineDistCouner).PERCENT := 100;
l_trx_dist_tbl(lLineDistCouner).code_combination_id :=218919 ;*/
-- ii.Code_combination_id;

END LOOP;

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,
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 ('l_msg_count=' || l_msg_count);


DBMS_OUTPUT.put_line ('l_msg_data=' || l_msg_data);
DBMS_OUTPUT.put_line ('l_return_status=' || l_return_status);

IF l_return_status = fnd_api.g_ret_sts_error
OR l_return_status = fnd_api.g_ret_sts_unexp_error
THEN
DBMS_OUTPUT.put_line ('unexpected errors found!');
ELSE
SELECT COUNT (*) INTO cnt FROM ar_trx_errors_gt;

IF cnt = 0
THEN
DBMS_OUTPUT.put_line ('Customer Trx id ' || l_customer_trx_id);
UPDATE raya_ar_invoice_table
SET status = 'S'
WHERE TRX_HEADER_ID1 =
i.TRX_HEADER_ID1;
ELSE
INSERT INTO raya_ar_trx_errors_gt
(SELECT * FROM ar_trx_errors_gt);

UPDATE raya_ar_invoice_table
SET status = 'E'
WHERE TRX_HEADER_ID1 =
i.TRX_HEADER_ID1;

DBMS_OUTPUT.put_line (
'Transaction not Created, Please check
ar_trx_errors_gt table');
END IF;
END IF;
commit;

END LOOP;
END;
/

-- End of DDL Script for Procedure APPS.CITE_AR_INVOICE

You might also like