You are on page 1of 8

====================== CUSTOM TABLE ====================

CREATE TABLE XX_AR_INVOICES_UPLOAD_DATA


(
SR_NO
NUMBER,
PARTY_NAME
VARCHAR2(360 BYTE),
AMOUNT
NUMBER,
ACCOUNT_NUMBER VARCHAR2(30 BYTE),
TRX_NUMBER
VARCHAR2(20 BYTE),
CUSTOMER_TRX_ID VARCHAR2(240 BYTE),
PROCESS_FLAG
VARCHAR2(15 BYTE),
ERROR_MESSAGE
VARCHAR2(4000 BYTE)
)
=========================== API ================================
Declare
l_return_status
varchar2(1);
l_msg_count
number;
l_msg_data
varchar2(2000);
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 ar_invoice_api_pub.trx_contingencies_tbl_type;
l_cust_trx_id
number;
V_HDR_ID
NUMBER;
V_CUST_LINE_ID NUMBER;
V_CUST_DIST_ID NUMBER;
v_trx_no
varchar2(240);
l_cnt
number := 0;
lx_cnt
number := 0;
l_org_id
l_sob_id
l_cust_trx_type_id
l_gl_id_rev
l_cust_trx_type_name
l_currency_code
l_term_id
l_term_name
l_address_id
lx_address_id
l_customer_id_bill_to
l_customer_id_ship_to
l_ERROR_MESSAGE
lX_ERROR_MESSAGE
lXX_ERROR_MESSAGE
V_TAX NUMBER;
PROCESS_FLAG
ERROR_MESSAGE

l_address_ref
l_customer_ref

hr_operating_units.organization_id%TYPE;
hr_operating_units.set_of_books_id%TYPE;
ra_cust_trx_types_all.cust_trx_type_id%TYPE;
ra_cust_trx_types_all.gl_id_rev%TYPE;
ra_cust_trx_types_all.NAME%TYPE;
fnd_currencies.currency_code%TYPE;
ra_terms_tl.term_id%TYPE;
ra_terms_tl.NAME%TYPE;
hz_cust_acct_sites_all.cust_acct_site_id%TYPE;
hz_cust_acct_sites_all.cust_acct_site_id%TYPE;
hz_cust_accounts.cust_account_id%TYPE;
hz_cust_accounts.cust_account_id%TYPE;
VARCHAR2(4000 BYTE);
VARCHAR2(4000 BYTE);
VARCHAR2(4000 BYTE);

VARCHAR2(15 BYTE);
VARCHAR2(4000 BYTE);

VARCHAR2 (50);
VARCHAR2 (50);

l_party_id
l_party_site_id
lx_address_ref
lx_customer_ref
lx_party_id
lx_party_site_id
l_customer_trx_id

VARCHAR2 (50);
VARCHAR2 (50);
VARCHAR2 (50);
VARCHAR2 (50);
VARCHAR2 (50);
VARCHAR2 (50);
Number;

CURSOR c1
IS
SELECT *
FROM XX_AR_INVOICES_UPLOAD_DATA
WHERE PROCESS_FLAG is null
AND SR_NO between 1 and 724 ;

BEGIN
MO_GLOBAL.SET_POLICY_CONTEXT('S',85);
fnd_global.apps_initialize(1110,50639,7000);
BEGIN
SELECT organization_id, set_of_books_id
INTO l_org_id, l_sob_id
FROM hr_operating_units
WHERE NAME = 'SaaS Operating Unit';
EXCEPTION
WHEN OTHERS
THEN
PROCESS_FLAG := 'E';
ERROR_MESSAGE := 'Invalide Operating Unit...';
END;
BEGIN
SELECT cust_trx_type_id, NAME, gl_id_rev
INTO l_cust_trx_type_id, l_cust_trx_type_name, l_gl_id_rev
FROM ra_cust_trx_types_all
WHERE set_of_books_id = l_sob_id
AND org_id = l_org_id
AND NAME = 'S_DOM_MYCS_INV';
dbms_output.put_line('cust_trx_type_id:='||l_cust_trx_type_id );
dbms_output.put_line('NAME:='||l_cust_trx_type_name );
dbms_output.put_line('gl_id_rev:='||l_gl_id_rev );
EXCEPTION
WHEN OTHERS
THEN
PROCESS_FLAG := 'E';
ERROR_MESSAGE := 'Invalide Invoice Type...';
END;
BEGIN
SELECT currency_code
INTO l_currency_code
FROM fnd_currencies

WHERE currency_code = 'INR';


dbms_output.put_line('currency_code:='||l_currency_code );
EXCEPTION
WHEN OTHERS
THEN
PROCESS_FLAG := 'E';
ERROR_MESSAGE := 'Invalide Currency Code...';
END;
BEGIN
SELECT term_id, NAME
INTO l_term_id, l_term_name
FROM ra_terms_tl
WHERE UPPER (NAME) = UPPER ('IMMEDIATE');
dbms_output.put_line('term_id:='||l_term_id );
dbms_output.put_line('TERM_NAME:='||l_term_name );
EXCEPTION
WHEN OTHERS
THEN
PROCESS_FLAG := 'E';
ERROR_MESSAGE := 'Invalide Terms Name...';
END;
FOR i IN C1 Loop
BEGIN
SELECT DISTINCT hcas.cust_acct_site_id,
hca.cust_account_id,
hp.orig_system_reference,
hps.orig_system_reference,
hp.party_id,
hps.party_site_id
INTO l_address_id, l_customer_id_bill_to,l_address_ref,l_cus
tomer_ref, l_party_id,l_party_site_id
FROM hz_parties hp,
hz_party_sites hps,
hz_cust_accounts hca,
hz_cust_acct_sites_all hcas,
hz_cust_site_uses_all hcsu
WHERE hca.party_id = hp.party_id
AND hp.party_id = hps.party_id
AND hca.cust_account_id = hcas.cust_account_id
AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
AND hcsu.site_use_code = 'BILL_TO'
AND hcsu.primary_flag = 'Y'
AND hca.ACCOUNT_NUMBER = i.ACCOUNT_NUMBER
AND UPPER (LTRIM (RTRIM (hp.party_name))) = UPPER (LTRIM (R
TRIM (i.party_name)))
AND hcas.org_id = 85
AND ROWNUM = 1;
dbms_output.put_line('cust_acct_site_id:='||l_address_id );
dbms_output.put_line('cust_account_id_bill_to:='||l_customer_i
d_bill_to );
EXCEPTION
WHEN OTHERS THEN
PROCESS_FLAG := 'E';

ERROR_MESSAGE := 'INVALIDE CUSTOMER NAME FOR BILL_TO...';


END;
BEGIN
SELECT DISTINCT hcas.cust_acct_site_id,
hca.cust_account_id,
hp.orig_system_reference,
hps.orig_system_reference,
hp.party_id,
hps.party_site_id
INTO lx_address_id,l_customer_id_ship_to,lx_address_ref,lx_c
ustomer_ref, lx_party_id,lx_party_site_id
FROM hz_parties hp,
hz_party_sites hps,
hz_cust_accounts hca,
hz_cust_acct_sites_all hcas,
hz_cust_site_uses_all hcsu
WHERE hca.party_id = hp.party_id
AND hp.party_id = hps.party_id
AND hca.cust_account_id = hcas.cust_account_id
AND hcas.cust_acct_site_id = hcsu.cust_acct_site_id
AND hcsu.site_use_code = 'SHIP_TO'
AND hcsu.primary_flag = 'Y'
AND hca.ACCOUNT_NUMBER = i.ACCOUNT_NUMBER
AND UPPER (LTRIM (RTRIM (hp.party_name))) = UPPER (LTRIM (R
TRIM (i.party_name)))
AND hcas.org_id = 85
AND ROWNUM = 1;
dbms_output.put_line('cust_acct_site_id:='||l_address_id );
dbms_output.put_line('cust_account_id_ship_to:='||l_customer_i
d_ship_to );
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('ship_to location is null:='||l_custom
er_id_ship_to );
WHEN OTHERS THEN
PROCESS_FLAG := 'E';
ERROR_MESSAGE := 'SHIP_TO IS NULL...';
END;

SELECT RA_CUSTOMER_TRX_S.NEXTVAL INTO V_HDR_ID FROM DUAL;


SELECT RA_CUSTOMER_TRX_LINES_S.NEXTVAL INTO V_CUST_LINE_ID FROM DUAL;
SELECT RA_CUST_TRX_LINE_GL_DIST_S.NEXTVAL INTO V_CUST_DIST_ID from Dual;
l_batch_source_rec.batch_source_id

:= 5002; ---- Open Invoice

l_trx_header_tbl(1).trx_header_id

:= V_HDR_ID; --- seeded seq

l_trx_header_tbl(1).trx_date
l_trx_header_tbl(1).gl_date
l_trx_header_tbl(1).trx_currency

:= '31-MAR-2014';
:= '31-MAR-2014';
:= l_currency_code; --'INR'

Source
uence

;
l_trx_header_tbl(1).cust_trx_type_id
62;--1007;
l_trx_header_tbl(1).bill_to_customer_id
l_trx_header_tbl(1).ship_to_customer_id
l_trx_header_tbl(1).term_id
l_trx_header_tbl(1).printing_option

:= l_cust_trx_type_id; --11

l_trx_lines_tbl(1).trx_header_id
l_trx_lines_tbl(1).trx_line_id
ded sequence
l_trx_lines_tbl(1).line_number
l_trx_lines_tbl(1).description
-Mar-2014'; --i.item_description;
l_trx_lines_tbl(1).quantity_invoiced
l_trx_lines_tbl(1).unit_selling_price
ce
l_trx_lines_tbl(1).uom_code
l_trx_lines_tbl(1).line_type
l_trx_lines_tbl(1).TAX_EXEMPT_FLAG
--l_trx_lines_tbl(1).inventory_item_id
--l_trx_lines_tbl(1).WAREHOUSE_ID
india localization

:= V_HDR_ID;
:= V_CUST_LINE_ID; --- see

l_trx_dist_tbl(1).trx_dist_id
ded sequence
l_trx_dist_tbl(1).trx_line_id
ded sequence
l_trx_dist_tbl(1).ACCOUNT_CLASS
l_trx_dist_tbl(1).percent
l_trx_dist_tbl(1).CODE_COMBINATION_ID
556966;--537959;--3054;

:= V_CUST_DIST_ID; --- see

:=
:=
:=
:=

l_customer_id_bill_to;
l_customer_id_ship_to;
l_term_id; --5; --1000;
'PRI';

:= 1;
:= 'Opening Balance As on 31
:= 1; --i.Quantity;
:= i.AMOUNT;

:= '';
:= 'LINE';
:= 'S';
:= 1185;
:= 89; only if using for

:= V_CUST_LINE_ID; --- see


:= 'REV';
:= 100;
:= l_gl_id_rev ; --556967;--

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('Created:'||l_msg_data||l_return_status);
Dbms_output.put_line('customer_trx_Id:=' || l_customer_trx_id );
IF l_return_status = 'S'
THEN
begin
SELECT count(*)

--Pri

Into
l_cnt
From ar_trx_errors_gt;
dbms_output.put_line('l_cnt:='|| l_cnt);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
dbms_output.put_line('l_cnt:='|| l_cnt);
dbms_output.put_line('no error count in ar_trx_errors_gt');
end;
begin
SELECT ERROR_MESSAGE
Into l_ERROR_MESSAGE
From ar_trx_errors_gt
where ROWNUM = 1;
dbms_output.put_line('l_ERROR_MESSAGE:='|| l_ERROR_MESSAGE);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
dbms_output.put_line('no error in ar_trx_errors_gt');
dbms_output.put_line('l_ERROR_MESSAGE:='|| l_ERROR_MESSAGE);
WHEN TOO_MANY_ROWS
THEN
dbms_output.put_line('TOO_MANY_ROWS in ar_trx_errors_gt');
/*SELECT ERROR_MESSAGE
Into lX_ERROR_MESSAGE
From ar_trx_errors_gt
where ROWNUM = 1;
*/
dbms_output.put_line('l_ERROR_MESSAGE:='|| l_ERROR_MESSAGE);
end;
dbms_output.put_line('l_return_status:='||l_return_status);
dbms_output.put_line ( 'Customer Trx id:='|| l_customer_trx_id);
begin
select trx_number
into v_trx_no
from ra_customer_trx_all
where customer_trx_id = l_customer_trx_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
dbms_output.put_line ('trx number not generated');
end;
dbms_output.put_line ( 'Customer trx number= '|| v_trx_no);
Dbms_output.put_line('Invoice(s) suceessfully created!') ;
Update XX_AR_INVOICES_UPLOAD_DATA
Set PROCESS_FLAG = 'Y',
ERROR_MESSAGE = 'SUCCESS',
TRX_NUMBER = v_trx_no,
customer_trx_id = l_customer_trx_id
Where SR_NO = i.SR_NO;

ELSE
dbms_output.put_line ( 'Transaction not Created, Please check ar_trx_errors_
gt table');
END IF;
IF l_return_status <> 'S' OR
l_return_status = fnd_api.g_ret_sts_unexp_error
THEN
dbms_output.put_line('l_msg_data:='|| l_msg_data);
ELSE
begin
SELECT count(*)
Into
lx_cnt
From ar_trx_errors_gt;
dbms_output.put_line('lx_cnt:='|| lx_cnt);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
dbms_output.put_line('lx_cnt:='|| lx_cnt);
dbms_output.put_line('no error count in ar_trx_errors_gt');
end;
begin
SELECT ERROR_MESSAGE
Into lxx_ERROR_MESSAGE
From ar_trx_errors_gt
where ROWNUM = 1;
dbms_output.put_line('lxx_ERROR_MESSAGE:='|| lxx_ERROR_MESSAGE);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
dbms_output.put_line('no error in ar_trx_errors_gt');
dbms_output.put_line('lxx_ERROR_MESSAGE:='|| lxx_ERROR_MESSAGE);
WHEN TOO_MANY_ROWS
THEN
dbms_output.put_line('TOO_MANY_ROWS in ar_trx_errors_gt');
SELECT ERROR_MESSAGE
Into lX_ERROR_MESSAGE
From ar_trx_errors_gt
where ROWNUM = 1;
dbms_output.put_line('lX_ERROR_MESSAGE:='|| lX_ERROR_MESSAGE);
end;
End If;
commit;
END LOOP;
End;

You might also like