0% found this document useful (0 votes)
30 views

Page 4

The document describes creating tables and sequences, and inserting sample data in an Oracle database to store supplier, site, and contact staging data. Procedures are defined to map, validate, and process the staged data by calling APIs to populate corresponding production tables. Sample queries are also shown to retrieve newly created or updated supplier records from production tables.

Uploaded by

gufran.momin25
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)
30 views

Page 4

The document describes creating tables and sequences, and inserting sample data in an Oracle database to store supplier, site, and contact staging data. Procedures are defined to map, validate, and process the staged data by calling APIs to populate corresponding production tables. Sample queries are also shown to retrieve newly created or updated supplier records from production tables.

Uploaded by

gufran.momin25
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/ 17

CREATE TABLE select * from XXXX_SUP_SITE_CONT_STG

(
TRANSACTION_ID NUMBER,
OVER_ALL_STATUS_FLAG VARCHAR2(2),
VENDOR_STATUS_FLAG VARCHAR2(2 BYTE),
VENDOR_SITE_STATUS_FLAG VARCHAR2(2 BYTE),
VENDOR_CONTACT_STATUS_FLAG VARCHAR2(2),
ERROR_MESSAGE VARCHAR2(4000 BYTE),
VENDOR_NAME_LS VARCHAR2(240 BYTE),
SEGMENT1_LS VARCHAR2(30 BYTE),
VENDOR_SITE_CODE_LS VARCHAR2(15 BYTE),
VENDOR_SITE_COUNTRY VARCHAR2(40 BYTE),
VENDOR_SITE_ADDRESS_LINE1 VARCHAR2(40 BYTE),
VENDOR_SITE_CITY VARCHAR2(40 BYTE),
VENDOR_SITE_STATE VARCHAR2(40 BYTE),
VENDOR_TYPE_NAME_LS VARCHAR2(40 BYTE),
VENDOR_TYPE_LOOKUP_CODE VARCHAR2(30 BYTE),
PAYMENT_TERMS_LS VARCHAR2(50 BYTE),
TERMS_ID NUMBER,
PAY_GROUP_NAME_LS VARCHAR2(40 BYTE),
PAY_GROUP_LOOKUP_CODE VARCHAR2(25 BYTE),
INVOICE_CURRENCY_CODE_LS VARCHAR2(15 BYTE),
PAYMENT_CURRENCY_CODE_LS VARCHAR2(15 BYTE),
PAYMENT_METHOD_LOOKUP_NAME_LS VARCHAR2(40 BYTE),
PAYMENT_METHOD_LOOKUP_CODE VARCHAR2(25 BYTE),
SHIP_TO_ADDRESS_LINE_1_LS VARCHAR2(240 BYTE),
SHIP_TO_ADDRESS_LINE_2_LS VARCHAR2(240 BYTE),
SHIP_TO_ADDRESS_LINE_3_LS VARCHAR2(240 BYTE),
SHIP_TO_TOWN_OR_CITY_LS VARCHAR2(60 BYTE),
SHIP_TO_COUNTRY_LS VARCHAR2(30 BYTE),
SHIP_TO_POSTAL_CODE_LS VARCHAR2(60 BYTE),
SHIP_TO_LOCATION_ID NUMBER,
BILL_TO_ADDRESS_LINE_1_LS VARCHAR2(240 BYTE),
BILL_TO_ADDRESS_LINE_2_LS VARCHAR2(240 BYTE),
BILL_TO_ADDRESS_LINE_3_LS VARCHAR2(240 BYTE),
BILL_TO_TOWN_OR_CITY_LS VARCHAR2(60 BYTE),
BILL_TO_COUNTRY_LS VARCHAR2(30 BYTE),
BILL_TO_POSTAL_CODE_LS VARCHAR2(60 BYTE),
BILL_TO_LOCATION_ID NUMBER,
SHIP_VIA_LOOKUP_NAME_LS VARCHAR2(40 BYTE),
SHIP_VIA_LOOKUP_CODE VARCHAR2(25 BYTE),
FREIGHT_TERMS_LOOKUP_NAME_LS VARCHAR2(40 BYTE),
FREIGHT_TERMS_LOOKUP_CODE VARCHAR2(25 BYTE),
CONTACT_PERSON_NAME_LS VARCHAR2(240),
VENDOR_INTERFACE_ID NUMBER,
VENDOR_SITE_INTERFACE_ID NUMBER,
CREATION_DATE DATE,
CREATED_BY NUMBER,
LAST_UPDATE_DATE DATE,
LAST_UPDATED_BY NUMBER
);

CREATE SEQUENCE XXXX_SUP_SITE_CONT_S;

CREATE OR REPLACE TRIGGER XXXX_SUP_SITE_CONT_T


BEFORE INSERT ON APPS.XXXX_SUP_SITE_CONT_STG FOR EACH ROW
BEGIN
SELECT XXXX_SUP_SITE_CONT_S.NEXTVAL INTO :NEW.TRANSACTION_ID FROM DUAL;
END XXXX_SUP_SITE_CONT_T;
/

insert into
XXXX_SUP_SITE_CONT_STG(vendor_name_ls,segment1_ls,VENDOR_SITE_CODE_LS,CONTACT_PERSO
N_NAME_LS)
values('xyzvenr4',2201234,'SIT423','SRIN11234')

insert into
XXXX_SUP_SITE_CONT_STG(vendor_name_ls,segment1_ls,VENDOR_SITE_CODE_LS,CONTACT_PERSO
N_NAME_LS)
values('abcvenr4',8801234,'SIT423','SRIN21234')

insert into
XXXX_SUP_SITE_CONT_STG(vendor_name_ls,segment1_ls,VENDOR_SITE_CODE_LS,CONTACT_PERSO
N_NAME_LS)
values('vvvend4',8511234,'SITE23','SRINA31234')

insert into
XXXX_SUP_SITE_CONT_STG(vendor_name_ls,segment1_ls,VENDOR_SITE_CODE_LS,CONTACT_PERSO
N_NAME_LS)
values('vvvr34',851234,'SIT4123','SRINIVA234')

COMMIT;

SELECT * FROM XXXX_SUP_SITE_CONT_STG;

declare
v1 varchar2(90);
v2 number;
begin
XXXX_SUPP_SITE_CONT_PKG.map(v1,v2);
XXXX_supp_site_cont_pkg.validate(v1,v2);
end;

declare
v1 varchar2(90);
v2 number;
begin
XXXX_SUPP_SITE_CONT_PKG.CALL_ALLPROD(v1,v2);
end;

select * from ap_SUPPLIERS WHERE TRUNC(CREATION_DATE)=TRUNC(SYSDATE)

SELECT * FROM AP_SUPPLIER_SITES_ALL WHERE


TRUNC(CREATION_DATE)=TRUNC(SYSDATE)
;

SELECT * FROM AP_SUPPLIER_CONTACTS WHERE


TRUNC(CREATION_DATE)=TRUNC(SYSDATE)
;
CREATE OR REPLACE PACKAGE XXXX_supp_site_cont_pkg
IS
PROCEDURE MAP (errbuf OUT VARCHAR2, retcode OUT NUMBER);
PROCEDURE VALIDATE (errbuf OUT VARCHAR2, retcode OUT NUMBER);
PROCEDURE call_api (errbuf OUT VARCHAR2, retcode OUT NUMBER);
PROCEDURE error_report (errbuf OUT VARCHAR2, retcode OUT NUMBER);
PROCEDURE call_allprod (errbuf OUT VARCHAR2, retcode OUT NUMBER);
END XXXX_supp_site_cont_pkg;

CREATE OR REPLACE PACKAGE BODY XXXX_supp_site_cont_pkg


IS
PROCEDURE MAP (errbuf OUT VARCHAR2, retcode OUT NUMBER)
IS
BEGIN
/*************************** UPDATE STAGING TABLE STARTS HERE **************/
UPDATE XXXX_sup_site_cont_stg
SET over_all_status_flag = 'N',
vendor_status_flag = 'N',
vendor_site_status_flag = 'N',
vendor_contact_status_flag = 'N',
error_message = NULL,
terms_id = NULL,
vendor_type_lookup_code = NULL,
pay_group_lookup_code = NULL,
payment_method_lookup_code = NULL,
ship_to_location_id = NULL,
bill_to_location_id = NULL,
ship_via_lookup_code = NULL,
freight_terms_lookup_code = NULL,
vendor_interface_id = 102,
vendor_site_interface_id = 102,
creation_date = TRUNC (SYSDATE),
created_by = 1318,
last_update_date = TRUNC (SYSDATE),
last_updated_by = 1318;
UPDATE XXXX_sup_site_cont_stg
SET invoice_currency_code_ls = 'USD'
WHERE invoice_currency_code_ls IS NULL;
UPDATE XXXX_sup_site_cont_stg
SET payment_currency_code_ls = 'USD'
WHERE payment_currency_code_ls IS NULL;
UPDATE XXXX_sup_site_cont_stg
SET vendor_type_name_ls = 'VENDOR'
WHERE vendor_type_name_ls IS NULL;
UPDATE XXXX_sup_site_cont_stg
SET over_all_status_flag = 'MM',
error_message = 'Mandatory Column is missing'
WHERE vendor_name_ls IS NULL OR segment1_ls IS NULL;
UPDATE XXXX_sup_site_cont_stg
SET vendor_site_status_flag = 'MM',
error_message = 'Mandatory Column is missing'
WHERE vendor_site_code_ls IS NULL;
UPDATE XXXX_sup_site_cont_stg
SET vendor_contact_status_flag = 'MM',
error_message = 'Mandatory Column is missing'
WHERE contact_person_name_ls IS NULL;
/*************************** UPDATE STAGING TABLE ENDS HERE **************/
COMMIT;
END MAP;
PROCEDURE VALIDATE (errbuf OUT VARCHAR2, retcode OUT NUMBER)
IS
v_count NUMBER;
v_term_id NUMBER;
v_location_id NUMBER;
v_ven_lcode VARCHAR2 (40);
v_payg_lcode VARCHAR2 (40);
v_paym_lcode VARCHAR2 (40);
v_shipv_lcode VARCHAR2 (40);
v_freight_lcode VARCHAR2 (40);
CURSOR ven_cur
IS
SELECT vendor_name_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM');
CURSOR ven_no_cur
IS
SELECT vendor_name_ls, segment1_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM');
CURSOR ven_site_cur (p_vendor_name_ls VARCHAR2) ---
ven_site_cur
IS
SELECT vendor_name_ls, vendor_site_code_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_site_status_flag NOT IN ('X', 'MM')
AND vendor_name_ls IS NOT NULL
AND vendor_name_ls = p_vendor_name_ls;
CURSOR ven_type_cur
IS
SELECT vendor_type_name_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND vendor_type_name_ls IS NOT NULL;
CURSOR pay_term_cur
IS
SELECT payment_terms_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND payment_terms_ls IS NOT NULL;
CURSOR pay_group_cur
IS
SELECT pay_group_name_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND pay_group_name_ls IS NOT NULL;
CURSOR inv_curr_cur
IS
SELECT invoice_currency_code_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND invoice_currency_code_ls IS NOT NULL;
CURSOR pay_curr_cur
IS
SELECT payment_currency_code_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND payment_currency_code_ls IS NOT NULL;
CURSOR pay_meth_cur
IS
SELECT payment_method_lookup_name_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND payment_method_lookup_name_ls IS NOT NULL;
CURSOR ship_cur
IS
SELECT ship_to_address_line_1_ls, ship_to_address_line_2_ls,
ship_to_address_line_3_ls, ship_to_town_or_city_ls,
ship_to_country_ls, ship_to_postal_code_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND ship_to_address_line_1_ls IS NOT NULL;
CURSOR ship_via_cur
IS
SELECT ship_via_lookup_name_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND ship_via_lookup_name_ls IS NOT NULL;
CURSOR freight_cur
IS
SELECT freight_terms_lookup_name_ls, transaction_id
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag NOT IN ('X', 'MM')
AND freight_terms_lookup_name_ls IS NOT NULL;
BEGIN
/**********************DUPLICATE RECORD ELIMNATION STARTS
HERE**********************************/
BEGIN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'X',
error_message = 'Duplicate Record'
WHERE ROWID NOT IN (SELECT MAX (ROWID)
FROM XXXX_sup_site_cont_stg
GROUP BY vendor_name_ls);
UPDATE XXXX_sup_site_cont_stg
SET vendor_site_status_flag = 'X',
error_message = 'Duplicate Record'
WHERE ROWID NOT IN (SELECT MAX (ROWID)
FROM XXXX_sup_site_cont_stg
GROUP BY vendor_site_code_ls);
UPDATE XXXX_sup_site_cont_stg
SET vendor_contact_status_flag = 'X',
error_message = 'Duplicate Record'
WHERE ROWID NOT IN (SELECT MAX (ROWID)
FROM XXXX_sup_site_cont_stg
GROUP BY contact_person_name_ls);
UPDATE XXXX_sup_site_cont_stg
SET over_all_status_flag = 'MM',
error_message = 'Mandatory Column Missing'
WHERE vendor_name_ls IS NULL
OR segment1_ls IS NULL
OR vendor_site_code_ls IS NULL;
END;
/**********************DUPLICATE RECORD ELIMNATION ENDS
HERE**********************************/
/*************************** VENDOR NAME VALIDATION SARTS HERE ******************/
FOR ven_rec IN ven_cur
LOOP
BEGIN
SELECT COUNT (*)
INTO v_count
FROM ap_suppliers
WHERE UPPER (vendor_name) = UPPER (ven_rec.vendor_name_ls);
-- here count >0 means the vendor is present in base table then error
out other wise it is new vendor.
IF v_count > 0
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message = 'Vendor alredy Present'
WHERE transaction_id = ven_rec.transaction_id;
END IF;
END;
END LOOP;
/*************************** VENDOR NAME VALIDATION SARTS HERE ******************/
/*************************** VENDOR NUMBER (SEGMENT1) VALIDATION SARTS HERE
******************/
FOR ven_no_rec IN ven_no_cur
LOOP
BEGIN
SELECT COUNT (*)
INTO v_count
FROM ap_suppliers
WHERE UPPER (segment1) = UPPER (ven_no_rec.segment1_ls);
IF v_count > 0
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message
|| ', Vendor Number esist in base table '
WHERE transaction_id = ven_no_rec.transaction_id;
END IF;
END;
END LOOP;
/*************************** VENDOR NUMBER (SEGMENT1) VALIDATION ENDS HERE
******************/
/*************************** VENDOR SITE CODE VALIDATION STARTS HERE
******************/

for VEN_SITE_REC in VEN_SITE_CUR


loop
begin
select VENDOR_SITE_ID into V_VENDOR_SITE_ID from AP_SUPPLIER_SITES_ALL
where UPPER(vendor_site_code)=upper(VEN_SITE_REC.vendor_site_code_ls)
and vendor_id=VEN_SITE_REC.vendor_id;
update XXXX_SUP_SITE_CONT_STG set vendor_site_id=v_vendor_site_id where
transaction_id=VEN_SITE_REC.transaction_id;
exception
when no_data_found then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||', No Site found :'||
vendor_site_code_ls
where transaction_id=VEN_SITE_REC. transaction_id;
when too_many_rows then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||', No many Sites found :'||
vendor_site_code_ls
where transaction_id=VEN_SITE_REC. transaction_id;
when others then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||', UnExcepted error at :'||
vendor_site_code_ls
where transaction_id=VEN_SITE_REC. transaction_id;
end;
end loop;

/************* site is dependacy validation


***************/
FOR ven_rec IN ven_cur
LOOP
BEGIN
FOR ven_site_rec IN ven_site_cur (ven_rec.vendor_name_ls)
LOOP
BEGIN
SELECT COUNT (*)
INTO v_count
FROM ap_suppliers as1, ap_supplier_sites_all assa
WHERE as1.vendor_id = assa.vendor_id
AND as1.vendor_name = ven_site_rec.vendor_name_ls
AND assa.vendor_site_code =
ven_site_rec.vendor_site_code_ls;
IF v_count > 0
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_site_status_flag = 'VE',
error_message =
error_message
|| ',Same SITE is exists for this Vendor'
WHERE transaction_id = ven_site_rec.transaction_id;
END IF;
END;
END LOOP;
END;
END LOOP;
/*************************** VENDOR SITE CODE VALIDATION ENDS HERE
******************/
/*************************** VENDOR TYPE LOOKUP CODE VALIDATION STARTS HERE
******************/
FOR ven_type_rec IN ven_type_cur
LOOP
BEGIN
SELECT lookup_code
INTO v_ven_lcode
FROM fnd_lookup_values
WHERE 1 = 1
AND UPPER (lookup_type) =
UPPER ('vendor type')
--must be upper case
AND LANGUAGE = USERENV ('lang')
AND UPPER (meaning) = UPPER (ven_type_rec.vendor_type_name_ls);
UPDATE XXXX_sup_site_cont_stg
SET vendor_type_lookup_code = v_ven_lcode
WHERE transaction_id = ven_type_rec.transaction_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message || 'vendor type name is not exist '
WHERE transaction_id = ven_type_rec.transaction_id;
WHEN TOO_MANY_ROWS
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message || 'many vendor type name '
WHERE transaction_id = ven_type_rec.transaction_id;
WHEN OTHERS
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message || 'vendor type name is invalid '
WHERE transaction_id = ven_type_rec.transaction_id;
END;
END LOOP;
/*************************** VENDOR TYPE LOOKUP CODE VALIDATION ENDS HERE
******************/
/*************************** PAYMENT TERMS VLIDATION STARTS HERE
******************/
FOR pay_term_rec IN pay_term_cur
LOOP
BEGIN
SELECT term_id
INTO v_term_id
FROM ap_terms_tl
WHERE 1 = 1
AND LANGUAGE = USERENV ('lang')
AND UPPER (NAME) = UPPER (pay_term_rec.payment_terms_ls);
UPDATE XXXX_sup_site_cont_stg
SET terms_id = v_term_id
WHERE transaction_id = pay_term_rec.transaction_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message
|| payment_terms_ls
|| ' does not exsist. '
WHERE transaction_id = pay_term_rec.transaction_id;
WHEN TOO_MANY_ROWS
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message
|| payment_terms_ls
|| ' multiple are exsist. '
WHERE transaction_id = pay_term_rec.transaction_id;
WHEN OTHERS
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message
|| payment_terms_ls
|| ' is Unexpected error. '
WHERE transaction_id = pay_term_rec.transaction_id;
END;
END LOOP;
/*************************** PAYMENT TERMS VLIDATION ENDS HERE
******************/
/*************************** PAYMENT GROUP LOOKUP CODE VLIDATION STARTS HERE
******************/
FOR pay_group_rec IN pay_group_cur
LOOP
BEGIN
SELECT lookup_code
INTO v_payg_lcode
FROM fnd_lookup_values
WHERE 1 = 1
AND UPPER (lookup_type) =
UPPER ('pay group')
--must be upper case
AND LANGUAGE = USERENV ('lang')
AND UPPER (meaning) = UPPER (pay_group_rec.pay_group_name_ls);
UPDATE XXXX_sup_site_cont_stg
SET pay_group_lookup_code = v_payg_lcode
WHERE transaction_id = pay_group_rec.transaction_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message = error_message || 'invalied pay group '
WHERE transaction_id = pay_group_rec.transaction_id;
WHEN TOO_MANY_ROWS
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message = error_message || 'too many pay group '
WHERE transaction_id = pay_group_rec.transaction_id;
WHEN OTHERS
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message || 'un expected error at pay group '
WHERE transaction_id = pay_group_rec.transaction_id;
END;
END LOOP;
/*************************** PAYMENT GROUP LOOKUP CODE VLIDATION ENDS HERE
******************/
/*************************** INVOICE CURRENCY CODE VLIDATION STARTS HERE
******************/
FOR inv_curr_rec IN inv_curr_cur
LOOP
BEGIN
SELECT COUNT (*)
INTO v_count
FROM fnd_currencies
WHERE UPPER (currency_code) =
UPPER (inv_curr_rec.invoice_currency_code_ls);
IF v_count = 0
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message
|| ' , invoice currency code is not present '
WHERE transaction_id = inv_curr_rec.transaction_id;
END IF;
END;
END LOOP;
/*************************** INVOICE CURRENCY CODE VLIDATION ENDS HERE
******************/
/*************************** payment CURRENCY CODE VLIDATION STARTS HERE
******************/
FOR pay_curr_rec IN pay_curr_cur
LOOP
BEGIN
SELECT COUNT (*)
INTO v_count
FROM fnd_currencies
WHERE UPPER (currency_code) =
UPPER (pay_curr_rec.payment_currency_code_ls);
IF v_count = 0
THEN
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'VE',
error_message =
error_message
|| ' , payment currency code is not present '
WHERE transaction_id = pay_curr_rec.transaction_id;
END IF;
END;
END LOOP;
/*************************** payment CURRENCY CODE VLIDATION ENDS HERE
******************/
/*************************** payment method loop CODE VLIDATION STARTS HERE
******************/
/*
-- payment method shown as showtopper error by ORACLE FOUNDATION DEVELOPERS.
for PAY_METH_REC in PAY_METH_CUR
loop
begin
select LOOKUP_CODE INTO V_payM_LCODE from fnd_lookup_values where 1=1
and upper(lookup_type)=upper('PAYMENT METHOD')
and upper(meaning)=upper(PAY_METH_REC.PAYMENT_METHOD__NAME_LS);
update XXXX_SUP_SITE_CONT_STG set payment_mehthod_lookup_
execption
---PAYMENT_METHOD__NAME_LS
if v_count=0 then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||' , payment method lookup is
not present '
where transaction_id=PAY_METH_REC.transaction_id;
end if;
end;
end loop;
*/
/*************************** payment method loop CODE VLIDATION ENDS HERE
******************/
/*************************** ship to location VLIDATION STARTS HERE
******************/
/*
for SHIP_REC in SHIP_CUR
loop
begin
select LOCATION_ID into V_LOCATION_ID from HR_LOCATIONS where 1=1
and address_line_1=SHIP_REC.ship_to_address_line_1_ls
and address_line_2=SHIP_REC.ship_to_address_line_2_ls
and address_line_3=SHIP_REC.ship_to_address_line_3_ls
and town_or_city=SHIP_REC.ship_to_town_or_city_ls
and country=SHIP_REC.ship_to_country_ls
and postal_code=SHIP_REC.ship_to_postal_code_ls;
update XXXX_SUP_SITE_CONT_STG set SHIP_TO_LOCATION_ID=v_location_id
where transaction_id=SHIP_REC.transaction_id;
exception
when no_data_found then
update XXXX_SUP_SITE_CONT_STG set VENDOR_STATUS_FLAG='VE',
error_message=error_message||ship_to_address_line_1_ls|| ' address may not exsist.
'
where transaction_id=SHIP_REC.transaction_id;
when too_many_rows then
update XXXX_SUP_SITE_CONT_STG set VENDOR_STATUS_FLAG='VE',
error_message=error_message||ship_to_address_line_1_ls|| ' address may be multiple
are exsist. '
where transaction_id=SHIP_REC.transaction_id;
when others then
update XXXX_SUP_SITE_CONT_STG set VENDOR_STATUS_FLAG='VE',
error_message=error_message||ship_to_address_line_1_ls|| ' is Unexpected error. '
where transaction_id=SHIP_REC.transaction_id;
end;
end loop;
*/
/*************************** ship to location VLIDATION ENDS HERE
******************/
/*************************** ship via LOOKUP CODE VLIDATION STARTS HERE
******************/
/*
for SHIP_VIA_REC in SHIP_VIA_CUR
loop
begin
select LOOKUP_CODE into V_shipV_Lcode from fnd_lookup_values where 1=1
and upper(lookup_type)=upper('SHIP_VIA')
and upper(meaning)=upper(SHIP_VIA_REC.SHIP_VIA_LOOKUP_NAME_LS);
update XXXX_SUP_SITE_CONT_STG set SHIP_VIA_LOOKUP_CODE=V_shipV_Lcode
where transaction_id=SHIP_VIA_REC.transaction_id;
exception
when NO_DATA_FOUND then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||'No ship via lookup matching'
where transaction_id=SHIP_VIA_REC.transaction_id;
when TOO_MANY_ROWS then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||'TOO MANY ship via lookup'
where transaction_id=SHIP_VIA_REC.transaction_id;
when OTHERS then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||'UnExpected ship via lookup'
where transaction_id=SHIP_VIA_REC.transaction_id;
end;
end loop;
*/
/*************************** ship via LOOKUP CODE VLIDATION ENDS HERE
******************/
/*************************** FREIGHT TERMS LOOKUP CODE VLIDATION STARTS HERE
******************/
/*
for FREIGHT_REC in FREIGHT_CUR
loop
begin
select LOOKUP_CODE into V_FREIGHT_Lcode from fnd_lookup_values where
1=1
and upper(lookup_type)=upper('FREIGHT TERMS')
and upper(meaning)=upper(FREIGHT_REC.FREIGHT_TERMS_LOOKUP_NAME_LS);
update XXXX_SUP_SITE_CONT_STG set
FREIGHT_TERMS_LOOKUP_CODE=V_FREIGHT_Lcode
where transaction_id=FREIGHT_REC.transaction_id;

EXCEPTION
when NO_DATA_FOUND then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||',No freight code present'
where transaction_id=FREIGHT_REC.transaction_id;
when TOO_MANY_ROWS then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||', too many freight codes '
where transaction_id=FREIGHT_REC.transaction_id;
when OTHERS then
update XXXX_SUP_SITE_CONT_STG set
VENDOR_STATUS_FLAG='VE',error_message=error_message||'unexpected error at freight
code'
where transaction_id=FREIGHT_REC.transaction_id;
end;
end loop;
*/
UPDATE XXXX_sup_site_cont_stg
SET over_all_status_flag = 'V'
WHERE over_all_status_flag = 'N';
UPDATE XXXX_sup_site_cont_stg
SET vendor_status_flag = 'V'
WHERE vendor_status_flag = 'N';
UPDATE XXXX_sup_site_cont_stg
SET vendor_site_status_flag = 'V'
WHERE vendor_site_status_flag = 'N';
UPDATE XXXX_sup_site_cont_stg
SET vendor_contact_status_flag = 'V'
WHERE vendor_contact_status_flag = 'N';
/*************************** FREIGHT TERMS LOOKUP CODE VLIDATION ENDS HERE
******************/
COMMIT;
END VALIDATE;
PROCEDURE call_api(
errbuf OUT VARCHAR2,
retcode OUT NUMBER)
IS
x_return_status VARCHAR2 (90);
x_msg_count NUMBER;
x_msg_data VARCHAR2 (90);
p_vendor_rec ap_vendor_pub_pkg.r_vendor_rec_type;
x_vendor_id ap_suppliers.vendor_id%TYPE;
x_party_id hz_parties.party_id%TYPE;
p_vendor_site_rec ap_vendor_pub_pkg.r_vendor_site_rec_type;
x_vendor_site_id NUMBER;
x_party_site_id NUMBER;
x_location_id NUMBER;
p_vendor_contact_rec ap_vendor_pub_pkg.r_vendor_contact_rec_type;
x_vendor_contact_id NUMBER;
x_per_party_id NUMBER;
x_rel_party_id NUMBER;
x_rel_id NUMBER;
x_org_contact_id NUMBER;
x_msg_index_out NUMBER;
CURSOR sup_cur
IS
SELECT * FROM XXXX_sup_site_cont_stg WHERE vendor_status_flag = 'V';
CURSOR supp_site_cur (p_vendor_name_ls VARCHAR2)
IS
SELECT *
FROM XXXX_sup_site_cont_stg
WHERE vendor_name_ls = p_vendor_name_ls
AND vendor_site_status_flag = 'V';
CURSOR supp_cont_cur ( p_vendor_name_ls VARCHAR2, p_vendor_site_code_ls
VARCHAR2 )
IS
SELECT *
FROM XXXX_sup_site_cont_stg
WHERE vendor_name_ls = p_vendor_name_ls
AND vendor_site_code_ls = p_vendor_site_code_ls
AND vendor_contact_status_flag = 'V';
BEGIN
/******************* VENDOR LOOP STARTS FROM HERE
***************************************/
FOR sup_rec IN sup_cur
LOOP
BEGIN
p_vendor_rec.vendor_name := sup_rec.vendor_name_ls;
p_vendor_rec.segment1 := sup_rec.segment1_ls;
p_vendor_rec.vendor_type_lookup_code := UPPER
(sup_rec.vendor_type_lookup_code);
p_vendor_rec.terms_id := sup_rec.terms_id;
--
P_vendor_rec.PAY_GROUP_LOOKUP_CODE:=upper(SUP_REC.PAY_GROUP_LOOKUP_CODE);
p_vendor_rec.invoice_currency_code := UPPER
(sup_rec.invoice_currency_code_ls);
p_vendor_rec.payment_currency_code := UPPER
(sup_rec.payment_currency_code_ls);
-- P_vendor_rec.<NO PARAMETER>:=SUP_REC.PAYMENT_METHOD_LOOKUP_CODE;
-- show topper error (BUG.) but mandatory in MD 5O DOCUMENT
--
P_vendor_rec.SHIP_VIA_LOOKUP_CODE:=UPPER(SUP_REC.SHIP_VIA_LOOKUP_CODE);
--SITE LEVEL
--
P_vendor_rec.FREIGHT_TERMS_LOOKUP_CODE:=UPPER(SUP_REC.FREIGHT_TERMS_LOOKUP_CODE);
--SITE LEVEL
mo_global.set_policy_context ('S', 204);
ap_vendor_pub_pkg.create_vendor (p_api_version => 1.0, p_init_msg_list =>
fnd_api.g_true, p_commit => fnd_api.g_true, p_validation_level =>
fnd_api.g_valid_level_full, x_return_status => x_return_status, x_msg_count =>
x_msg_count, x_msg_data => x_msg_data, p_vendor_rec => p_vendor_rec, x_vendor_id =>
x_vendor_id, x_party_id => x_party_id );
fnd_file.put_line (fnd_file.output, ' vendor_NAME
' );
fnd_file.put_line (fnd_file.output, '
---------------- ' );
fnd_file.put_line (fnd_file.output, ' x_vendor_id : ' || x_vendor_id );
fnd_file.put_line (fnd_file.output, ' x_msg_count : ' || x_msg_count );
fnd_file.put_line (fnd_file.output, ' x_return_status :' ||
x_return_status );
fnd_file.put_line (fnd_file.output, ' x_msg_data : ' || x_msg_data );
/************************** vendor site loop starts form here
***************************/
FOR supp_site_rec IN supp_site_cur (sup_rec.vendor_name_ls)
LOOP
BEGIN
p_vendor_site_rec.vendor_id := x_vendor_id; --
p_vendor_site_rec.org_id := 204;
p_vendor_site_rec.vendor_site_code := supp_site_rec.vendor_site_code_ls;
p_vendor_site_rec.country := supp_site_rec.vendor_site_country;
p_vendor_site_rec.address_line1 :=
supp_site_rec.vendor_site_address_line1;
p_vendor_site_rec.city := supp_site_rec.vendor_site_city;
p_vendor_site_rec.state := supp_site_rec.vendor_site_state;
mo_global.set_policy_context ('S', 204);
ap_vendor_pub_pkg.create_vendor_site (p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true, p_commit => fnd_api.g_true, p_validation_level
=> fnd_api.g_valid_level_full, x_return_status => x_return_status, x_msg_count =>
x_msg_count, x_msg_data => x_msg_data, p_vendor_site_rec => p_vendor_site_rec,
x_vendor_site_id => x_vendor_site_id, x_party_site_id => x_party_site_id,
x_location_id => x_location_id );
/*************** ERROR AT SITE LEVEL ***************/
fnd_msg_pub.initialize;
FOR i IN 1 .. x_msg_count
LOOP
BEGIN
fnd_msg_pub.get (p_msg_index => i, p_encoded => 'F', p_data =>
x_msg_data, p_msg_index_out => x_msg_index_out );
fnd_file.put_line (fnd_file.output, 'X_MSG_DATA : ' ||
x_msg_data );
END;
END LOOP;
fnd_file.put_line (fnd_file.output, '
vendor_site ' );
fnd_file.put_line (fnd_file.output, '
------------- ' );
fnd_file.put_line (fnd_file.output, ' x_msg_count : ' || x_msg_count
);
fnd_file.put_line (fnd_file.output, ' x_return_status :' ||
x_return_status );
fnd_file.put_line (fnd_file.output, ' x_msg_data : ' || x_msg_data
);
fnd_file.put_line (fnd_file.output, ' x_party_site_id : ' ||
x_party_site_id );
fnd_file.put_line (fnd_file.output, ' x_location_id : ' ||
x_location_id );
/************************** vendor site CONTACT loop starts form here
***************************/
FOR supp_cont_rec IN supp_cont_cur (sup_rec.vendor_name_ls,
sup_rec.vendor_site_code_ls )
LOOP
BEGIN
p_vendor_contact_rec.vendor_id := x_vendor_id; --
p_vendor_contact_rec.org_id := 204;
p_vendor_contact_rec.org_party_site_id := x_party_site_id;
p_vendor_contact_rec.person_last_name :=
supp_cont_rec.contact_person_name_ls;
mo_global.set_policy_context ('S', 204);
ap_vendor_pub_pkg.create_vendor_contact (p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true, p_commit => fnd_api.g_true, p_validation_level
=> fnd_api.g_valid_level_full, x_return_status => x_return_status, x_msg_count =>
x_msg_count, x_msg_data => x_msg_data, p_vendor_contact_rec =>
p_vendor_contact_rec, x_vendor_contact_id => x_vendor_contact_id, x_per_party_id =>
x_per_party_id, x_rel_party_id => x_rel_party_id, x_rel_id => x_rel_id,
x_org_contact_id => x_org_contact_id, x_party_site_id => x_party_site_id );
fnd_file.put_line (fnd_file.output, ' vendor
CONTACTS.... ' );
fnd_file.put_line (fnd_file.output, '
----------***---------- ' );
fnd_file.put_line (fnd_file.output, ' x_msg_count : ' ||
x_msg_count );
fnd_file.put_line (fnd_file.output, ' x_return_status :' ||
x_return_status );
fnd_file.put_line (fnd_file.output, ' x_msg_data : ' ||
x_msg_data );
fnd_file.put_line (fnd_file.output, ' x_org_contact_id : ' ||
x_org_contact_id );
fnd_file.put_line (fnd_file.output, ' x_rel_party_id : ' ||
x_rel_party_id );
fnd_file.put_line (fnd_file.output, ' x_vendor_contact_id : ' ||
x_vendor_contact_id );
fnd_file.put_line (fnd_file.output, '');
fnd_file.put_line (fnd_file.output, '');
fnd_file.put_line (fnd_file.output, '');
END;
END LOOP;
/******************* VENDOR contacts loop ENDS FROM HERE
***************************************/
END;
END LOOP;
/************************** vendor site loop ends form here
***************************/
EXCEPTION
WHEN OTHERS THEN
UPDATE XXXX_sup_site_cont_stg
SET over_all_status_flag = 'LE',
error_message = error_message
|| 'Rejected By API..........'
WHERE transaction_id = sup_rec.transaction_id;
END;
END LOOP;
/******************* VENDOR LOOP STARTS FROM HERE
***************************************/
END call_api;

PROCEDURE error_report(
errbuf OUT VARCHAR2,
retcode OUT NUMBER)
IS
v_count NUMBER;
v_valied NUMBER;
v_failed NUMBER;
v_duplicate NUMBER;
CURSOR err_cur
IS
SELECT * FROM XXXX_sup_site_cont_stg WHERE error_message IS NOT NULL;
BEGIN
fnd_file.put_line (fnd_file.output, ' XXXX SUPPLIER
REPORT' );
fnd_file.put_line (fnd_file.output, '
------------------------' );
fnd_file.put_line (fnd_file.output, '');
fnd_file.put_line (fnd_file.output, RPAD ('Supplier No', 25, ' ') || RPAD
('Supplier Name', 30, ' ') || RPAD ('Supplier Site', 20, ' ') || RPAD ('Supplier
Contact', 40, ' ') || RPAD ('Error', 450, ' ') );
fnd_file.put_line (fnd_file.output, RPAD ('-----------', 25, ' ') || RPAD
('--------------', 30, ' ') || RPAD ('----------------', 20, ' ') || RPAD
('---------------------', 40, ' ') || RPAD ('------', 40, ' ') );
FOR err_rec IN err_cur
LOOP
BEGIN
fnd_file.put_line (fnd_file.output, RPAD (err_rec.segment1_ls, 25, ' ') ||
RPAD (err_rec.vendor_name_ls, 30, ' ') || RPAD (err_rec.vendor_site_code_ls, 20, '
') || RPAD (err_rec.contact_person_name_ls, 40, ' ' ) || RPAD
(err_rec.error_message, 450, ' ') );
END;
END LOOP;
fnd_file.put_line (fnd_file.output, '
----------' );
fnd_file.put_line (fnd_file.output, '
END OF DATA' );
fnd_file.put_line (fnd_file.output, '
----------' );
fnd_file.put_line (fnd_file.output, '');
fnd_file.put_line (fnd_file.output, '');
fnd_file.put_line (fnd_file.output, '');
fnd_file.put_line (fnd_file.output, ' -------');
fnd_file.put_line (fnd_file.output, ' SUMMARY');
fnd_file.put_line (fnd_file.output, ' -------');
SELECT COUNT (*) INTO v_count FROM XXXX_sup_site_cont_stg;
fnd_file.put_line (fnd_file.output, ' Total Number of Records
: ' || v_count );
SELECT COUNT (*)
INTO v_failed
FROM XXXX_sup_site_cont_stg
WHERE error_message IS NOT NULL;
fnd_file.put_line (fnd_file.output, ' Total Number of invalid
Records : ' || v_failed );
SELECT COUNT (*)
INTO v_duplicate
FROM XXXX_sup_site_cont_stg
WHERE vendor_status_flag = 'X'
AND error_message IS NOT NULL;
fnd_file.put_line (fnd_file.output, ' Total Number of duplicate
Records : ' || v_duplicate );
END error_report;

PROCEDURE call_allprod(
errbuf OUT VARCHAR2,
retcode OUT NUMBER)
IS
v1 VARCHAR2 (240);
v2 NUMBER;
BEGIN
XXXX_supp_site_cont_pkg.MAP (v1, v2);
XXXX_supp_site_cont_pkg.VALIDATE (v1, v2);
XXXX_supp_site_cont_pkg.call_api (v1, v2);
XXXX_supp_site_cont_pkg.error_report (v1, v2);
END call_allprod;
END XXXX_supp_site_cont_pkg;
/

You might also like