Anda di halaman 1dari 14

CREATE OR REPLACE PROCEDURE APPS.

xxanb_apinvoice_conv_proc11 AS v_error_h_flag NUMBER; v_error_h_msg VARCHAR2 (300); v_org_id NUMBER; v_source VARCHAR2 (100); v_vendor_id NUMBER; v_vendor_site_id NUMBER; v_inv_currc_code VARCHAR2 (100); v_inv_amount VARCHAR2 (100); v_term_id NUMBER; v_pay_method_code VARCHAR2 (100); v_pay_group_code VARCHAR2 (100); v_invoice_type VARCHAR2 (100); v_error_l_flag NUMBER; v_error_l_msg VARCHAR2 (300); v_line_type_code VARCHAR2 (100); v_dist_code_id NUMBER; v_amount VARCHAR2 (100); v_invoice_id NUMBER; v_invoice_line_id NUMBER; v_count NUMBER; BEGIN DBMS_OUTPUT.put_line ('HEADER IS GOING TO START'); FOR a_head IN (SELECT DISTINCT org_name, SOURCE, vendor_num, vendor_site_code, invoice_num, invoice_date, invoice_currency_code, invoice_amount, terms_name, description, gl_date, payment_method_lookup_code, pay_group_lookup_code, header_attribute_category, header_attribute1, header_attribute2, header_attribute3, header_attribute4, header_attribute5, invoice_type, po_number FROM invoice_staging_table WHERE error_status = 'N') LOOP DBMS_OUTPUT.put_line ('IN HEADER LOOP'); v_error_h_flag := 0; v_error_h_msg := NULL; v_error_l_flag := 0; v_error_l_msg := NULL; v_count := 0; SELECT INTO FROM WHERE COUNT (*) v_count ap_invoices_interface invoice_num = a_head.invoice_num AND status IS NULL;

IF v_count = 0 THEN --organization validation v_org_id := NULL; IF a_head.org_name IS NOT NULL THEN BEGIN SELECT organization_id INTO v_org_id

FROM hr_operating_units WHERE UPPER (NAME) = UPPER (a_head.org_name); DBMS_OUTPUT.put_line ('organization id is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'organization_name validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.org_name, a_head.org_name, v_org_id, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'organization code error - ' || v_error_h_msg ); END; ELSE v_error_h_flag := 1; v_error_h_msg := 'organization_name is null - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.org_name, 'ORGANIZATION NAME IS NULL', v_org_id, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('organization name is null'); END IF; --source validation v_source := NULL; IF a_head.SOURCE IS NOT NULL THEN BEGIN SELECT lookup_code INTO v_source FROM fnd_lookup_values WHERE ( UPPER (meaning) = UPPER (a_head.SOURCE) OR UPPER (lookup_code) = UPPER (a_head.SOURCE) ) AND lookup_type = 'SOURCE' AND enabled_flag = 'Y' AND UPPER (source_lang) = UPPER ('US'); DBMS_OUTPUT.put_line ('source is valid'); EXCEPTION WHEN OTHERS THEN

v_error_h_flag := 1; v_error_h_msg := 'source validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.org_name || '-' || a_head.SOURCE, a_head.SOURCE, v_source, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('source error - ' || v_error_h_msg); END; ELSE v_error_h_flag := 1; v_error_h_msg := 'source is null - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.org_name || '-' || a_head.SOURCE, 'SOURCE IS NULL', v_source, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('source is null'); END IF; --vendor validation v_vendor_id := NULL; IF a_head.vendor_num IS NOT NULL THEN BEGIN SELECT vendor_id INTO v_vendor_id FROM ap_suppliers WHERE segment1 = a_head.vendor_num; DBMS_OUTPUT.put_line ('vendor id is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'vendor validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.org_name || '-' || a_head.vendor_num,

a_head.vendor_num, v_vendor_id, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('vendor error - ' || v_error_h_msg); END; ELSE v_error_h_flag := 1; v_error_h_msg := 'vendor id is null - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.org_name || '-' || a_head.vendor_num, 'VENDOR ID IS NULL', v_vendor_id, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('vendor id is null'); END IF; --vendor site validation v_vendor_site_id := NULL; IF v_vendor_id IS NOT NULL AND a_head.vendor_site_code IS NOT NULL THEN BEGIN SELECT vendor_site_id INTO v_vendor_site_id FROM ap_supplier_sites_all WHERE UPPER (vendor_site_code) = UPPER (a_head.vendor_site_code) AND vendor_id = v_vendor_id AND org_id = v_org_id; DBMS_OUTPUT.put_line ('vendor site id is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'vendor site validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.vendor_site_code, a_head.vendor_site_code, v_vendor_site_id, v_error_h_msg, SYSDATE, 'E'

); DBMS_OUTPUT.put_line ('vendor site error - ' || v_error_h_msg ); END; ELSE v_error_h_flag := 1; v_error_h_msg := 'vendor site id is null - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.vendor_site_code, 'VENDOR SITE ID IS NULL', v_vendor_site_id, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('vendor site id is null'); END IF; --invoice currencey validation v_inv_currc_code := NULL; IF a_head.invoice_currency_code IS NOT NULL THEN BEGIN SELECT currency_code INTO v_inv_currc_code FROM fnd_currencies WHERE UPPER (currency_code) = UPPER (a_head.invoice_currency_code) AND enabled_flag = 'Y'; DBMS_OUTPUT.put_line ('inv currency code is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'inv currency code validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.invoice_currency_code, a_head.invoice_currency_code, v_inv_currc_code, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'inv currency code error - ' || v_error_h_msg );

END; END IF; -- invoice amount v_inv_amount := NULL; IF a_head.invoice_amount IS NOT NULL THEN v_inv_amount := a_head.invoice_amount; ELSE v_error_h_flag := 1; v_error_h_msg := 'invoice amount is null - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.invoice_amount, 'INVOICE AMOUNT IS NULL', v_inv_amount, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('invoice amount is null'); END IF; -- term validation v_term_id := NULL; IF a_head.terms_name IS NOT NULL THEN BEGIN SELECT term_id INTO v_term_id FROM ap_terms WHERE UPPER (NAME) = UPPER (a_head.terms_name) AND enabled_flag = 'Y' AND (end_date_active IS NULL OR end_date_active >= SYSDATE ); DBMS_OUTPUT.put_line ('term id is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'term id validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.terms_name, a_head.terms_name, v_term_id, v_error_h_msg, SYSDATE, 'E'

); DBMS_OUTPUT.put_line ('term id error - ' || v_error_h_msg); END; END IF; -- payment method validation v_pay_method_code := NULL; IF a_head.payment_method_lookup_code IS NOT NULL THEN BEGIN SELECT payment_method_code INTO v_pay_method_code FROM iby_payment_methods_tl WHERE UPPER (payment_method_name) = UPPER (a_head.payment_method_lookup_code); DBMS_OUTPUT.put_line ('payment method is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'payment method validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.payment_method_lookup_code, a_head.payment_method_lookup_code, v_pay_method_code, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'payment method error - ' || v_error_h_msg ); END; END IF; -- pay group validation v_pay_group_code := NULL; IF a_head.pay_group_lookup_code IS NOT NULL THEN BEGIN SELECT lookup_code INTO v_pay_group_code FROM fnd_lookup_values WHERE ( UPPER (meaning) = UPPER (a_head.pay_group_lookup_code) OR UPPER (lookup_code) = UPPER (a_head.pay_group_lookup_code) ) AND lookup_type = 'PAY GROUP' AND enabled_flag = 'Y' AND UPPER (source_lang) = UPPER ('US');

DBMS_OUTPUT.put_line ('pay group is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'pay group validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.pay_group_lookup_code, a_head.pay_group_lookup_code, v_pay_group_code, v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('pay group error - ' || v_error_h_msg); END; END IF; -- invoice type validation v_invoice_type := NULL; IF a_head.invoice_type IS NOT NULL THEN BEGIN SELECT lookup_code INTO v_invoice_type FROM fnd_lookup_values WHERE ( UPPER (meaning) = UPPER (a_head.invoice_type) OR UPPER (lookup_code) = UPPER (a_head.invoice_type) ) AND UPPER (lookup_type) = UPPER ('INVOICE TYPE') AND enabled_flag = 'Y' AND UPPER (source_lang) = UPPER ('US') AND view_application_id = 200; DBMS_OUTPUT.put_line ('invoice_type is valid'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'invoice_type validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num || '-' || a_head.invoice_type, a_head.invoice_type, v_invoice_type, v_error_h_msg, SYSDATE, 'E'

); DBMS_OUTPUT.put_line ( 'invoice type error - ' || v_error_h_msg ); END; END IF; IF v_error_h_flag = 0 THEN v_invoice_id := NULL; BEGIN SELECT ap_invoices_interface_s.NEXTVAL INTO v_invoice_id FROM DUAL; EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'header sequence validation' || SQLERRM; DBMS_OUTPUT.put_line ( 'header sequence error' || v_error_h_msg ); END; BEGIN DBMS_OUTPUT.put_line ('HEADER IS GOING TO START'); INSERT INTO ap_invoices_interface (invoice_id, invoice_num, invoice_type_lookup_code, invoice_date, gl_date, vendor_id, vendor_site_id, invoice_amount, invoice_currency_code, terms_id, description, SOURCE, org_id, payment_method_lookup_code, pay_group_lookup_code, created_by, creation_date, last_update_date, last_updated_by, last_update_login ) VALUES (v_invoice_id, a_head.invoice_num, v_invoice_type, a_head.invoice_date, a_head.gl_date, v_vendor_id, v_vendor_site_id, v_inv_amount, v_inv_currc_code, v_term_id, a_head.description, v_source, v_org_id, v_pay_method_code, v_pay_group_code, 0, SYSDATE, SYSDATE, 0, 0 ); DBMS_OUTPUT.put_line ('HEADER INSERTION IS SUCCESSFULLY'); EXCEPTION WHEN OTHERS THEN v_error_h_flag := 1; v_error_h_msg := 'EXCEPTION AT AP INVOICE HEADER INSERTION' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num

|| '-' || a_head.vendor_num, 'HEADER INSERTION FAILED', 'AP INVOICE HEADER INSERTION', v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'AP INVOICE HEADER INSERTION ERROR' || v_error_h_msg ); END; BEGIN DBMS_OUTPUT.put_line ('LINE IS GOING TO START'); FOR a_line IN (SELECT * FROM invoice_staging_table WHERE invoice_num = a_head.invoice_num AND error_status = 'N') LOOP DBMS_OUTPUT.put_line ('IN LINE LOOP'); --linetype validation v_line_type_code := NULL; IF a_line.line_type_lookup_code IS NOT NULL THEN BEGIN SELECT lookup_code INTO v_line_type_code FROM fnd_lookup_values WHERE UPPER (meaning) = UPPER (a_line.line_type_lookup_code) AND UPPER (lookup_type) = UPPER ('INVOICE DISTRIBUTION TYPE') AND enabled_flag = 'Y' AND UPPER (source_lang) = UPPER ('US'); DBMS_OUTPUT.put_line ('line type code is valid'); EXCEPTION WHEN OTHERS THEN v_error_l_flag := 1; v_error_l_msg := 'line type code validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'LINE LEVEL', a_head.invoice_num || '-' || a_line.line_number || '-' || a_line.line_type_lookup_code, a_line.line_type_lookup_code, v_line_type_code, v_error_l_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'line type code error - '

|| v_error_l_msg ); END; ELSE v_error_l_flag := 1; v_error_l_msg := 'line type code is null - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'LINE LEVEL', a_head.invoice_num || '-' || a_line.line_number || '-' || a_line.line_type_lookup_code, 'LINE TYPE CODE IS NULL', v_line_type_code, v_error_l_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('line type code is null'); END IF; ---line amount validation v_amount := NULL; IF a_line.line_amount IS NOT NULL THEN v_amount := a_line.line_amount; ELSE v_error_l_flag := 1; v_error_l_msg := 'invoice line amount is null - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'LINE LEVEL', a_head.invoice_num || '-' || a_line.line_number || '-' || a_line.line_amount, 'INVOICE LINE AMOUNT IS NULL', v_amount, v_error_l_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('invoice line amount is null'); END IF; --code combination validation v_dist_code_id := NULL; IF a_line.dist_code_concatenated IS NOT NULL THEN BEGIN SELECT code_combination_id INTO v_dist_code_id FROM gl_code_combinations_kfv WHERE concatenated_segments = a_line.dist_code_concatenated AND enabled_flag = 'Y'

AND (

end_date_active IS NULL OR end_date_active >= SYSDATE );

DBMS_OUTPUT.put_line ('code combination is valid'); EXCEPTION WHEN OTHERS THEN v_error_l_flag := 1; v_error_l_msg := 'code combination validation error - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'LINE LEVEL', a_head.invoice_num || '-' || a_line.line_number || '-' || a_line.dist_code_concatenated , a_line.dist_code_concatenated, v_dist_code_id, v_error_l_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( END; END IF; IF v_error_l_flag = 0 THEN v_invoice_line_id := NULL; BEGIN SELECT ap_invoice_lines_interface_s.NEXTVAL INTO v_invoice_line_id FROM DUAL; EXCEPTION WHEN OTHERS THEN v_error_l_flag := 1; v_error_l_msg := 'line sequence validation' || SQLERRM; DBMS_OUTPUT.put_line ( 'line sequence error' || v_error_l_msg ); END; BEGIN DBMS_OUTPUT.put_line ('LINE IS GOING TO START'); INSERT INTO ap_invoice_lines_interface (invoice_id, invoice_line_id, line_number, line_type_lookup_code, amount, 'code combination error - ' || v_error_l_msg );

accounting_date, description, dist_code_combination_id, org_id, created_by, creation_date, last_update_date, last_updated_by, last_update_login ) VALUES (v_invoice_id, v_invoice_line_id, a_line.line_number, a_line.line_type_lookup_code, v_amount, a_line.invoice_date, a_line.line_description, v_dist_code_id, v_org_id, 0, SYSDATE, SYSDATE, 0, 0 ); DBMS_OUTPUT.put_line ('LINE INSERTION IS SUCCESSFULLY'); EXCEPTION WHEN OTHERS THEN v_error_l_flag := 1; v_error_l_msg := 'EXCEPTION AT AP INVOICE LINE INSERTION' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE LINE CONVERSION', 'LINE LEVEL', a_head.invoice_num || '-' || a_line.line_number, 'LINE INSERTION FAILED', 'AP INVOICE LINE INSERTION', v_error_l_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'AP INVOICE LINE INSERTION ERROR' || v_error_l_msg ); END; ELSE v_error_l_flag := 1; v_error_l_msg := 'line validation failed - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'LINE LEVEL', a_head.invoice_num, 'line validation failed', 'ERROR_FLAG ERROR AT AP INVOICE LINE INSERTION', v_error_l_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'line validation failed' || v_error_l_msg ); END IF; END LOOP;

EXCEPTION WHEN OTHERS THEN v_error_l_flag := 1; v_error_l_msg := 'EXCEPTION AT LINE BLOCK' || SQLERRM; DBMS_OUTPUT.put_line ('EXCEPTION AT LINE BLOCK'); END; ELSE v_error_h_flag := 1; v_error_h_msg := 'header validation failed - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num, 'header validation failed', 'ERROR_FLAG ERROR AT AP INVOICE HEADER INSERTION', v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ('header validation failed' || v_error_h_msg); END IF; ELSE v_error_h_flag := 1; v_error_h_msg := 'invoice number already exists - ' || SQLERRM; xx_apinvc_error_proc ('AP INVOICE CONVERSION', 'HEADER LEVEL', a_head.invoice_num || '-' || a_head.vendor_num, 'invoice num repeated', 'invoice number already exists', v_error_h_msg, SYSDATE, 'E' ); DBMS_OUTPUT.put_line ( 'invoice number already exists - ' || v_error_h_msg ); END IF; IF v_error_h_flag = 1 OR v_error_l_flag = 1 THEN ROLLBACK; UPDATE invoice_staging_table SET error_status = 'E' WHERE invoice_num = a_head.invoice_num; COMMIT; ELSE UPDATE invoice_staging_table SET error_status = 'S' WHERE invoice_num = a_head.invoice_num; COMMIT; END IF; END LOOP; END xxanb_apinvoice_conv_proc11; /

Anda mungkin juga menyukai