You are on page 1of 6

CREATE OR REPLACE PROCEDURE xxap_invoice_load_interface (errbuf 2,retcode OUT VA

RCHAR2) AS CURSOR c IS SELECT a.ROWID, a.* FROM xx_ap_invoice_stg a WHERE a.STAT


US_CODE = 'N' ORDER BY a.LINE_NUM; l_flag VARCHAR2 (9); err_msg VARCHAR (1000) :
= NULL; l_invoice_num VARCHAR2 (50); l_currency_code VARCHAR2 (15); l_vendor_nam
e VARCHAR2 (240); l_vendor_id NUMBER (20); l_vendor_num VARCHAR2 (30); l_vendor_
site_id NUMBER; l_vendor_site_code VARCHAR (15); l_user_id NUMBER; l_org_id NUMB
ER (20); l_code_combination_id NUMBER (20); l_request_id NUMBER; inv_dist_amount
_total NUMBER (15, 2) := 0; l_amount NUMBER (14, 2); l_invoice_id NUMBER; l_term
s_date DATE; l_terms_id NUMBER (15); l_terms_name VARCHAR2 (50); l_invoice_type_
lookup_code VARCHAR2 (50); BEGIN FOR i IN c LOOP l_flag := 'Y'; err_msg := NULL;
l_invoice_num := NULL; l_currency_code := NULL; l_vendor_name := NULL; l_vendor
_id := NULL; l_vendor_num := NULL; l_vendor_site_id := NULL; l_vendor_site_code
:= NULL; l_user_id := NULL; l_org_id := NULL; l_code_combination_id := NULL; l_r
equest_id := NULL; inv_dist_amount_total := 0; l_amount := NULL; l_invoice_id :=
NULL; l_terms_date := NULL; l_terms_id := NULL; l_terms_name := NULL; l_invoice
_type_lookup_code := NULL; BEGIN --VENDOR VALIDATION BEGIN SELECT vendor_id, ven
dor_name, segment1 INTO l_vendor_id, l_vendor_name, l_vendor_num FROM po_vendors
WHERE TRIM (vendor_name) = TRIM (i.VENDOR_NAME ); --WHERE TRIM (segment1) = TRI
M (i.vendor_num);
OUT
VARCHAR

EXCEPTION WHEN OTHERS THEN l_flag := 'E'; err_msg := err_msg END; /*


'Invalid SUPPLIER '
'/';
--VENDOR SITE VALIDATION BEGIN SELECT vendor_site_code, vendor_site_id INTO l_ve
ndor_site_code, l_vendor_site_id FROM po_vendor_sites_all WHERE vendor_id = l_ve
ndor_id AND org_id = 101 AND vendor_site_id = i.vendor_site_id --AND TRIM(VENDOR
_SITE_CODE) =nvl(TRIM(I.VENDOR_SITE_CODE),TRIM(VENDOR_SITE_CODE )) AND ROWNUM =
1; EXCEPTION WHEN OTHERS THEN l_flag := 'E'; err_msg := err_msg 'Invalid SUPPLIE
R Site ' '/'; END; */ -- VALIDATION FOR DUPLICATE INVOICE NUMBER /* BEGIN SELECT
INVOICE_NUM INTO L_INVOICE_NUM FROM AP_INVOICES_ALL WHERE VENDOR_ID=L_VENDOR_id
AND UPPER(TRIM(INVOICE_NUM))=UPPER(TRIM(I.INVOICE_REFERENCE)); IF L_INVOICE_NUM
IS NOT NULL THEN L_FLAG:='E'; ERR_MSG:=ERR_MSG 'Duplicate invoice Number ' '/';
END IF; EXCEPTION WHEN TOO_MANY_ROWS THEN L_FLAG:='E'; ERR_MSG:=ERR_MSG 'Duplic
ate Invoice Number ' '/'; when others then ERR_MSG:=ERR_MSG 'error at invoice Nu
mber checking ' '/'; END; */ --CURRENCY VALIDATION BEGIN SELECT currency_code IN
TO l_currency_code FROM fnd_currencies WHERE TRIM (currency_code) = TRIM (i.INVO
ICE_CURRENCY_CODE); EXCEPTION

WHEN OTHERS THEN l_flag := 'E'; err_msg := err_msg END;


'Invalid Currency '
'/';
BEGIN IF i.OPEN_AMOUNT < 0 OR i.BASE_OPEN_AMOUNT < 0 THEN l_invoice_type_lookup_
code := 'DEBIT'; ELSE l_invoice_type_lookup_code := 'STANDARD'; END IF; EXCEPTIO
N WHEN OTHERS THEN l_flag := 'E'; err_msg := err_msg 'INVALID ' '/'; END; BEGIN
--IF l_currency_code = 'KES' THEN l_amount := i.OPEN_AMOUNT; --ELSE -- l_amount
:= i.fc_amount; -- END IF; END; BEGIN SELECT ap_invoices_interface_s.NEXTVAL INT
O l_invoice_id FROM DUAL; EXCEPTION WHEN OTHERS THEN NULL; END; BEGIN SELECT ter
m_id INTO l_terms_id FROM ap_terms WHERE TRIM (NAME) = TRIM (i.TERMS_NAME); EXCE
PTION WHEN OTHERS THEN l_flag := 'E'; err_msg := err_msg 'Invalid TERM INFO ' EN
D;
'/';
IF l_flag <> 'E' THEN BEGIN INSERT INTO ap_invoices_interface (invoice_id, invoi
ce_num, invoice_date, vendor_id, vendor_num, vendor_name, vendor_site_id, vendor
_site_code, invoice_amount, invoice_currency_code, last_update_date, last_update
d_by, creation_date, created_by,

SOURCE, terms_id, org_id, exchange_date, exchange_rate, exchange_rate_type, gl_d


ate, invoice_type_lookup_code, payment_method_lookup_code, GROUP_ID, ATTRIBUTE_C
ATEGORY,ATTRIBUTE2 ) VALUES (l_invoice_id, i.INVOICE_NUM, i.invoice_date, l_vend
or_id, l_vendor_num, l_vendor_name, l_vendor_site_id, l_vendor_site_code, l_amou
nt, l_currency_code,SYSDATE, 1110, SYSDATE,1110, 'ERS', l_terms_id, 82, i.invoic
e_date, i.EXCHANGE_RATE, i.EXCHANGE_RATE_TYPE, '30-SEP-2010' , l_invoice_type_lo
okup_code, i.payment_method_lookup_code, 'AP_INVOICE_MIGRATION', 'Additional Inv
oice Details', i.INVOICE_AMOUNT ); UPDATE XX_AP_INVOICE_STG SET status_CODE = 'P
', ERROR_MESSAGE = err_msg WHERE LINE_NUM = i.LINE_NUM AND ROWID = i.ROWID; EXCE
PTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('IN HEADER INSET ' i.LINE_NUM); RAI
SE; END; BEGIN INSERT INTO ap_invoice_lines_interface (invoice_id, invoice_line_
id, line_type_lookup_code, line_number, amount, dist_code_combination_id, last_u
pdate_date, last_updated_by, creation_date, created_by, org_id ) VALUES (l_invoi
ce_id, l_invoice_id + 1, 'ITEM', 1, l_amount, 6318, SYSDATE, 1110, SYSDATE, 1110
, 82 ); UPDATE XX_AP_INVOICE_STG SET status_CODE = 'P', ERROR_MESSAGE = err_msg
WHERE LINE_NUM = i.LINE_NUM AND ROWID = i.ROWID; EXCEPTION WHEN OTHERS THEN DBMS
_OUTPUT.put_line ( 'IN LINE INSET ' i.LINE_NUM ' ' SQLERRM

' ' SQLCODE ); RAISE; END; UPDATE XX_AP_INVOICE_STG SET status_CODE = 'P' WHERE
LINE_NUM = i.LINE_NUM AND ROWID = i.ROWID; COMMIT; ELSE UPDATE XX_AP_INVOICE_STG
SET status_CODE = 'E', ERROR_MESSAGE = err_msg WHERE LINE_NUM = i.LINE_NUM AND
ROWID = i.ROWID; COMMIT; END IF; EXCEPTION WHEN OTHERS THEN UPDATE XX_AP_INVOICE
_STG SET status_CODE = 'E', ERROR_MESSAGE = err_msg WHERE LINE_NUM = i.LINE_NUM
AND ROWID = i.ROWID; NULL; END; err_msg := NULL; END LOOP; EXCEPTION WHEN OTHERS
THEN NULL; fnd_file.put_line (fnd_file.LOG, 'Error in mail loop -code: ' SQLCOD
E ' Error message: ' SQLERRM ); END xxap_invoice_load_interface;

You might also like