PO interface based on project, Task, Expenditure type
Staging.sql
CREATE TABLE APPS.XX_NEW_PO
(
ROWNUMBER NUMBER,
SUPPLIER_NUMBER VARCHAR2(30 BYTE),
SUPPLIER_SITE VARCHAR2(30 BYTE),
SUPPLIER_NAME VARCHAR2(240 BYTE),
PO_NUMBER VARCHAR2(30 BYTE),
SHIP_TO_LOCATION VARCHAR2(100 BYTE),
CURRENCY_CODE VARCHAR2(30 BYTE),
BILL_TO_LOCATION VARCHAR2(100 BYTE),
PO_DESCRIPTION VARCHAR2(500 BYTE),
PO_DATE DATE,
APPROVAL_STATUS VARCHAR2(30 BYTE),
BUYER_ID NUMBER,
PO_LINE_NO NUMBER,
LINE_TYPE VARCHAR2(30 BYTE),
PROJECT_CODE VARCHAR2(30 BYTE),
TASK_CODE VARCHAR2(240 BYTE),
EXPENDITURE_TYPE VARCHAR2(30 BYTE),
RECEIPT_NO VARCHAR2(30 BYTE),
RECEIPT_DATE DATE,
ITEM_CODE VARCHAR2(30 BYTE),
ORACLE_ITEM_CODE VARCHAR2(30 BYTE),
ITEM_NAME VARCHAR2(240 BYTE),
UOM VARCHAR2(30 BYTE),
QUANTITY NUMBER,
RATE NUMBER,
NEED_BY_DATE DATE,
SHIP_TO_ORG_CODE VARCHAR2(240 BYTE),
CHARGE_ACCOUNT VARCHAR2(240 BYTE),
DESTINATION_TYPE VARCHAR2(30 BYTE),
GL_DATE DATE,
OU_NAME VARCHAR2(240 BYTE),
ERR_FLAG CHAR(2 BYTE),
ERR_MSG VARCHAR2(1000 BYTE),
STATUS VARCHAR2(150 BYTE),
ORG_CODE VARCHAR2(50 BYTE),
BUYER VARCHAR2(250 BYTE),
ACCRUAL_ACCOUNT VARCHAR2(240 BYTE)
)
Package Spec
CREATE OR REPLACE PACKAGE APPS.XX_OPENPO_PKG
IS
PROCEDURE dopo_validation;
PROCEDURE XX_OPEN_GRN_PO (ERRBUF OUT VARCHAR2, RETCODE OUT NUMBER);
END XX_OPENPO_PKG;
/
Package Body
CREATE OR REPLACE PACKAGE BODY APPS.XX_OPENPO_PKG
IS
PROCEDURE DOPO_VALIDATION
IS
—
CURSOR C_AP_CUR
IS
SELECT *
FROM XX_NEW_PO A
WHERE 1 = 1 AND NVL (A.STATUS, ‘N’) = ‘N’;
— AND A.PO_NUMBER=’TEC/IT/233/19′;
—
L_VENDOR_ID NUMBER;
L_VENDOR_SITE_ID NUMBER;
L_LIAB_CC_ID NUMBER;
L_ERR_MSG VARCHAR2 (1000);
L_ORGANIZATION_ID NUMBER;
L_OU_ID NUMBER;
L_BILL_LOC_ID NUMBER;
L_SHIP_LOC_ID NUMBER;
L_PROJECT_ID NUMBER;
L_TASK_ID NUMBER;
L_ITEM_ID NUMBER;
L_CURRENCY_CODE VARCHAR2 (50);
L_BUYER_ID NUMBER;
L_EXPENDITURE_TYPE VARCHAR2 (200);
L_UOM_CODE VARCHAR2 (100);
L_ACCR_CC_ID NUMBER;
—
BEGIN
—
FOR C_AP_REC IN C_AP_CUR
LOOP
—
L_ERR_MSG := NULL;
— OU
—
BEGIN
SELECT ORGANIZATION_ID
INTO L_OU_ID
FROM HR_OPERATING_UNITS
WHERE NAME = C_AP_REC.OU_NAME;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘Org is not Exist’;
—
END;
—
— VENDOR
BEGIN
—
SELECT VENDOR_ID
INTO L_VENDOR_ID
FROM AP_SUPPLIERS
WHERE SEGMENT1 = C_AP_REC.SUPPLIER_NUMBER;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘Vendor Number is not Exist’;
END;
—
— VENDOR SITES
BEGIN
—
SELECT SS.VENDOR_SITE_ID
INTO L_VENDOR_SITE_ID
FROM AP_SUPPLIERS S, AP_SUPPLIER_SITES_ALL SS
WHERE SS.VENDOR_ID = S.VENDOR_ID
AND SS.VENDOR_SITE_CODE = C_AP_REC.SUPPLIER_SITE
AND SEGMENT1 = C_AP_REC.SUPPLIER_NUMBER
AND PURCHASING_SITE_FLAG = ‘Y’
AND ORG_ID = L_OU_ID;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG :=
L_ERR_MSG || ‘, ‘ || ‘Vendor Site/Site Org is not Exist’;
—
END;
— SHIP TO LOCATION
—
BEGIN
SELECT LOCATION_ID
INTO L_SHIP_LOC_ID
FROM HR_LOCATIONS
WHERE LOCATION_CODE = C_AP_REC.SHIP_TO_LOCATION;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG :=
L_ERR_MSG || ‘, ‘ || ‘Ship To Location is not Exist’;
—
END;
— CURRENCY
BEGIN
SELECT CURRENCY_CODE
INTO L_CURRENCY_CODE
FROM FND_CURRENCIES
WHERE CURRENCY_CODE = C_AP_REC.CURRENCY_CODE;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘Currency is not Exist’;
—
END;
— BILL TO LOCATION
—
BEGIN
SELECT LOCATION_ID
INTO L_BILL_LOC_ID
FROM HR_LOCATIONS
WHERE LOCATION_CODE = C_AP_REC.BILL_TO_LOCATION;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG :=
L_ERR_MSG || ‘, ‘ || ‘Bill To Location is not Exist’;
—
END;
— BUYER
—
BEGIN
SELECT AGENT_ID
INTO L_BUYER_ID
FROM PER_ALL_PEOPLE_F PPF, PO_AGENTS PA
WHERE FULL_NAME = C_AP_REC.BUYER
AND SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE
AND PPF.PERSON_ID = PA.AGENT_ID;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘Buyer is not Exist’;
—
END;
— PROJECT
—
BEGIN
IF C_AP_REC.PROJECT_CODE IS NULL
THEN
L_PROJECT_ID := NULL;
ELSE
SELECT PROJECT_ID
INTO L_PROJECT_ID
FROM PA_PROJECTS_ALL
WHERE SEGMENT1 = C_AP_REC.PROJECT_CODE AND ORG_ID = L_OU_ID;
END IF; —
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘Project is not Exist’;
—
END;
— TASK
—
BEGIN
IF C_AP_REC.PROJECT_CODE IS NULL AND C_AP_REC.TASK_CODE IS NULL
THEN
L_TASK_ID := NULL;
ELSE
SELECT TASK_ID
INTO L_TASK_ID
FROM PA_PROJECTS_ALL PA, PA_TASKS PT
WHERE SEGMENT1 = C_AP_REC.PROJECT_CODE
AND PT.PROJECT_ID = PA.PROJECT_ID
AND ROWNUM = 1
AND PT.TASK_NUMBER = C_AP_REC.TASK_CODE
AND PA.ORG_ID = L_OU_ID;
END IF;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘Task is not Exist’;
—
END;
— EXPENDITURE TYPE
—
BEGIN
IF C_AP_REC.EXPENDITURE_TYPE IS NULL
THEN
L_EXPENDITURE_TYPE := NULL;
ELSE
SELECT EXPENDITURE_TYPE
INTO L_EXPENDITURE_TYPE
FROM PA_EXPENDITURE_TYPES PET
WHERE PET.EXPENDITURE_TYPE = C_AP_REC.EXPENDITURE_TYPE;
END IF;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG :=
L_ERR_MSG || ‘, ‘ || ‘Expenditure Type is not Exist’;
—
END;
— SHIP TO ORG CODE
—
BEGIN
SELECT ORGANIZATION_ID
INTO L_ORGANIZATION_ID
FROM HR_ALL_ORGANIZATION_UNITS
WHERE NAME = TRIM (C_AP_REC.SHIP_TO_ORG_CODE);
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘Ship To Org is not Exist’;
—
END;
— ITEM
BEGIN
—
SELECT INVENTORY_ITEM_ID
INTO L_ITEM_ID
FROM MTL_SYSTEM_ITEMS_B
WHERE UPPER (SEGMENT1) = UPPER (C_AP_REC.ITEM_CODE)
AND ORGANIZATION_ID = L_ORGANIZATION_ID
AND INVENTORY_ITEM_STATUS_CODE = ‘Active’;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘Item is not Exist’;
END;
— UOM
BEGIN
—
SELECT UOM_CODE
INTO L_UOM_CODE
FROM MTL_UNITS_OF_MEASURE_TL
WHERE UOM_CODE = C_AP_REC.UOM;
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG := L_ERR_MSG || ‘, ‘ || ‘UOM is not Exist’;
END;
— CHARGE ACCOUNT
BEGIN
—
SELECT CC.CODE_COMBINATION_ID
INTO L_LIAB_CC_ID
FROM GL_CODE_COMBINATIONS_KFV CC
WHERE ENABLED_FLAG = ‘Y’
AND CC.CONCATENATED_SEGMENTS = C_AP_REC.CHARGE_ACCOUNT
AND EXISTS (
SELECT 1
FROM HR_OPERATING_UNITS OU, GL_LEDGERS L
WHERE OU.SET_OF_BOOKS_ID = L.LEDGER_ID
AND L.CHART_OF_ACCOUNTS_ID = CC.CHART_OF_ACCOUNTS_ID
AND OU.ORGANIZATION_ID = L_OU_ID);
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG :=
L_ERR_MSG || ‘, ‘ || ‘Charge Account is not Exist’;
END;
–/
— ACCRUAL ACCOUNT
—
IF C_AP_REC.PROJECT_CODE IS NOT NULL THEN
—
BEGIN
SELECT CC.CODE_COMBINATION_ID
INTO L_ACCR_CC_ID
FROM GL_CODE_COMBINATIONS_KFV CC
WHERE ENABLED_FLAG=’Y’
AND CC.CONCATENATED_SEGMENTS = C_AP_REC.ACCRUAL_ACCOUNT
AND EXISTS (
SELECT 1
FROM HR_OPERATING_UNITS OU, GL_LEDGERS L
WHERE OU.SET_OF_BOOKS_ID = L.LEDGER_ID
AND L.CHART_OF_ACCOUNTS_ID = CC.CHART_OF_ACCOUNTS_ID
AND OU.ORGANIZATION_ID = L_OU_ID);
—
EXCEPTION
WHEN OTHERS
THEN
L_ERR_MSG :=
L_ERR_MSG || ‘, ‘ || ‘Accrual Account Is Not Exist’;
END;
END IF;
—
—
L_ERR_MSG := LTRIM (L_ERR_MSG, ‘, ‘);
—
IF (L_ERR_MSG IS NOT NULL)
THEN
—
UPDATE XX_NEW_PO
SET STATUS = ‘E’,
ERR_MSG = L_ERR_MSG
WHERE ROWNUMBER = C_AP_REC.ROWNUMBER;
—
END IF;
—
END LOOP;
—
COMMIT;
—
END DOPO_VALIDATION;
PROCEDURE XX_OPEN_GRN_PO (ERRBUF OUT VARCHAR2, RETCODE OUT NUMBER)
IS
L_HEADER_ID NUMBER;
L_LINE_ID NUMBER;
L_DIST_ID NUMBER;
L_ORGANIZATION_ID NUMBER;
L_LOCATION_ID NUMBER;
L_CATEGORY_ID NUMBER;
L_BUYER_ID NUMBER;
L_TERM_ID NUMBER;
L_EXCH_RATE_TYPE VARCHAR2 (30);
L_EXCH_RATE NUMBER;
L_EXCH_RATE_DATE DATE;
L_LINE_NO NUMBER;
L_CHARGE_ACCOUNT_ID NUMBER;
L_REQUEST_ID NUMBER;
L_REVISION_NO NUMBER;
L_PO_NUMBER VARCHAR2 (30);
L_PO_HEADER_ID NUMBER;
L_PO_LINE_ID NUMBER;
L_ADD_CTR NUMBER;
L_UPDATE_CTR NUMBER;
LV_RESULT NUMBER;
LV_API_ERRORS PO_API_ERRORS_REC_TYPE;
LV_USER_ID NUMBER := FND_PROFILE.VALUE (‘USER_ID’);
LV_RESP_ID NUMBER := FND_PROFILE.VALUE (‘RESP_ID’);
LV_RESP_APPL_ID NUMBER := FND_PROFILE.VALUE (‘RESP_APPL_ID’);
LV_MSG_OUT VARCHAR2 (4000);
LV_REVISION_NUM NUMBER;
LV_PO_NUMBER VARCHAR2 (30);
LV_ORG_ID NUMBER;
LV_LINE_NO NUMBER;
LN_TASK_ID NUMBER;
LV_ERR_FLAG VARCHAR2 (100);
LV_ERR_MSG VARCHAR2 (5000);
LN_ERR_CNT NUMBER := 0;
LN_PO_NUM VARCHAR2 (50);
L_DESC VARCHAR2 (480);
L_LINE_CNT NUMBER;
CURSOR C1
IS
SELECT DISTINCT TRIM (A.PO_NUMBER) PO_NUMBER, A.PO_DATE,
A.CURRENCY_CODE, A.BUYER,
SUBSTR (A.PO_DESCRIPTION,1,240) PO_DESCRIPTION,
PV.VENDOR_ID, PVS.VENDOR_SITE_ID, PVS.ORG_ID,
BILL_LOC.LOCATION_ID BILL_LOCATION_ID,
SHIP_LOC.LOCATION_ID SHIP_LOCATION_ID,
NVL (A.STATUS, ‘N’) STATUS
FROM XX_NEW_PO A,
PO_VENDORS PV,
HR_OPERATING_UNITS HOU,
PO_VENDOR_SITES_ALL PVS,
HR_LOCATIONS BILL_LOC,
HR_LOCATIONS SHIP_LOC
WHERE PV.SEGMENT1 = TRIM (A.SUPPLIER_NUMBER)
AND PVS.VENDOR_ID = PV.VENDOR_ID
AND PVS.VENDOR_SITE_CODE = TRIM (A.SUPPLIER_SITE)
AND PVS.ORG_ID = HOU.ORGANIZATION_ID
AND HOU.NAME = TRIM (REPLACE (A.OU_NAME, CHR (13), ‘ ‘))
AND NVL (A.STATUS, ‘N’) = ‘N’
AND OU_NAME = ‘XXXX’
— AND po_number=’TEC/IT/245/19′
–and po_number =’TEC/IT/199/19-MOG’
AND BILL_LOC.LOCATION_CODE = TRIM (A.BILL_TO_LOCATION)
AND SHIP_LOC.LOCATION_CODE = TRIM (A.SHIP_TO_LOCATION)
AND PO_LINE_NO = 1;
WC1 C1%ROWTYPE;
CURSOR C2
IS
SELECT A.ROWNUMBER, A.SUPPLIER_NUMBER, A.SUPPLIER_SITE, A.PO_NUMBER,
A.PO_DESCRIPTION, A.PO_DATE, A.PO_LINE_NO, A.PROJECT_CODE,
A.RECEIPT_NO, A.RECEIPT_DATE, A.ITEM_CODE, A.ORACLE_ITEM_CODE,
A.QUANTITY, A.RATE, PV.VENDOR_ID, PVS.VENDOR_SITE_ID,
MSI.INVENTORY_ITEM_ID, PVS.ORG_ID, MSI.DESCRIPTION,
MSI.PRIMARY_UOM_CODE, OOD.ORGANIZATION_ID, A.SHIP_TO_ORG_CODE,
GCC.CODE_COMBINATION_ID CHARGE_ACCOUNT_ID,
GCC1.CODE_COMBINATION_ID ACCRUAL_ACCOUNT_ID, A.TASK_CODE,
A.EXPENDITURE_TYPE, A.NEED_BY_DATE, A.GL_DATE,
(SELECT PA.PROJECT_ID
FROM PA_PROJECTS_ALL PA
WHERE PA.SEGMENT1(+) = TRIM (A.PROJECT_CODE)
AND ROWNUM = 1
AND PA.ORG_ID = HOU.ORGANIZATION_ID) PROJECT_ID,
(SELECT PT.TASK_ID
FROM PA_PROJECTS_ALL PA, PA_TASKS PT
WHERE PA.SEGMENT1 = TRIM (A.PROJECT_CODE)
AND PT.PROJECT_ID = PA.PROJECT_ID
AND PA.ORG_ID = HOU.ORGANIZATION_ID
AND PT.TASK_NUMBER(+) = A.TASK_CODE
AND ROWNUM = 1
— SUBSTR (A.EXPENDITURE_TYPE, 1, 3)
— || ’00’
) TASK_ID
FROM XX_NEW_PO A,
PO_VENDORS PV,
PO_VENDOR_SITES_ALL PVS,
MTL_SYSTEM_ITEMS_B MSI,
–ORG_ORGANIZATION_DEFINITIONS OOD,
HR_ALL_ORGANIZATION_UNITS OOD,
GL_CODE_COMBINATIONS_KFV GCC,
GL_CODE_COMBINATIONS_KFV GCC1,
HR_OPERATING_UNITS HOU
WHERE TRIM (A.PO_NUMBER) = WC1.PO_NUMBER
AND PV.SEGMENT1 = TRIM (A.SUPPLIER_NUMBER)
AND PVS.VENDOR_ID = PV.VENDOR_ID
AND PVS.VENDOR_SITE_CODE = TRIM (A.SUPPLIER_SITE)
AND OOD.NAME = TRIM (A.SHIP_TO_ORG_CODE)
— AND OOD.ORGANIZATION_CODE = A.ORG_CODE
AND PVS.ORG_ID = HOU.ORGANIZATION_ID
AND HOU.NAME = TRIM (REPLACE (A.OU_NAME, CHR (13), ‘ ‘))
AND GCC.CONCATENATED_SEGMENTS = TRIM (A.CHARGE_ACCOUNT)
AND GCC1.CONCATENATED_SEGMENTS(+) = TRIM (A.ACCRUAL_ACCOUNT)
AND MSI.ORGANIZATION_ID = OOD.ORGANIZATION_ID
AND MSI.SEGMENT1 = TRIM (A.ITEM_CODE);
CURSOR C3
IS
SELECT *
FROM XX_NEW_PO A
WHERE NVL (A.STATUS, ‘N’) = ‘N’;
CURSOR C4
IS
SELECT COUNT (*)
FROM XX_NEW_PO A
WHERE 1 = 1
AND NVL (A.STATUS, ‘N’) = ‘N’
AND NVL (TRIM (ERR_FLAG), ‘N’) = ‘Y’;
BEGIN
/*BEGIN
UPDATE XX_NEW_PO TG
SET ORG_CODE = (SELECT ORGANIZATION_CODE
FROM ORG_ORGANIZATION_DEFINITIONS D
WHERE D.ORGANIZATION_NAME = TRIM(TG.SHIP_TO_ORG_CODE));
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, ‘ERROR IN ORG CODE’);
END;
*/
/* FOR T IN C3
LOOP
LV_ERR_FLAG := NULL;
LV_ERR_MSG := NULL;
BEGIN
IF T.PROJECT_CODE IS NULL
THEN
LV_ERR_FLAG:=NULL;
ELSE
SELECT ‘N’
INTO LV_ERR_FLAG
FROM PA_TASKS PT, PA_PROJECTS_ALL PA
WHERE PT.TASK_NUMBER = T.TASK_CODE
AND PA.PROJECT_ID = PT.PROJECT_ID
AND PA.SEGMENT1 = T.PROJECT_CODE;
END IF;
EXCEPTION
WHEN OTHERS
THEN
–LN_TASK_ID:=-9999;
LV_ERR_FLAG := ‘Y’;
LV_ERR_MSG := ‘INVALID PROJECT TASK’ || ‘,’ || SQLERRM;
END;
BEGIN
SELECT PERSON_ID
INTO L_BUYER_ID
FROM PER_ALL_PEOPLE_F
WHERE FULL_NAME = T.BUYER;
EXCEPTION
WHEN OTHERS
THEN
–LN_TASK_ID:=-9999;
LV_ERR_FLAG := ‘Y’;
LV_ERR_MSG := ‘BUYER INVALID’ || ‘,’ || SQLERRM;
END;
UPDATE XX_NEW_PO
SET ERR_FLAG = LV_ERR_FLAG,
ERR_MSG = LV_ERR_MSG
WHERE PO_NUMBER = T.PO_NUMBER AND ROWNUMBER = T.ROWNUMBER;
END LOOP;
COMMIT;
*/
LN_ERR_CNT := 0;
OPEN C4;
FETCH C4
INTO LN_ERR_CNT;
FND_FILE.PUT_LINE (FND_FILE.LOG, ‘Count:’ || LN_ERR_CNT);
CLOSE C4;
IF LN_ERR_CNT = 0
THEN
— L_BUYER_ID := 2519; — 2519;
OPEN C1;
FND_FILE.PUT_LINE (FND_FILE.LOG, ‘Cursor C1 Open’);
LOOP
FETCH C1
INTO WC1;
EXIT WHEN C1%NOTFOUND;
L_EXCH_RATE_TYPE := ”;
L_EXCH_RATE := ”;
L_EXCH_RATE_DATE := ”;
IF WC1.CURRENCY_CODE != ‘AED’
THEN
BEGIN
SELECT CONVERSION_RATE
INTO L_EXCH_RATE
FROM GL_DAILY_RATES
WHERE CONVERSION_DATE = ’31-AUG-2019′
AND TO_CURRENCY = ‘AED’
AND CONVERSION_TYPE = ‘Corporate’
AND FROM_CURRENCY = WC1.CURRENCY_CODE;
EXCEPTION
WHEN OTHERS
THEN
LV_ERR_MSG :=
LV_ERR_MSG
|| ‘, ‘
|| ‘Currency Conversion Rate is not exists’;
END;
L_EXCH_RATE_TYPE := ‘Corporate’;
L_EXCH_RATE_DATE := ’31-AUG-2019′;
END IF;
BEGIN
SELECT AGENT_ID
INTO L_BUYER_ID
FROM PER_ALL_PEOPLE_F PPF,PO_AGENTS PA
WHERE FULL_NAME = WC1.BUYER
AND PPF.PERSON_ID=PA.AGENT_ID
AND SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE;
EXCEPTION
WHEN OTHERS
THEN
–LN_TASK_ID:=-9999;
LV_ERR_FLAG := ‘Y’;
LV_ERR_MSG := ‘Buyer Invalid’ || ‘,’ || SQLERRM;
END;
SELECT PO_HEADERS_INTERFACE_S.NEXTVAL
INTO L_HEADER_ID
FROM DUAL;
FND_FILE.PUT_LINE (FND_FILE.LOG,
‘Enter Into PO Headers Interface’);
INSERT INTO PO_HEADERS_INTERFACE
(INTERFACE_HEADER_ID, DOCUMENT_TYPE_CODE, VENDOR_ID,
VENDOR_SITE_ID, CURRENCY_CODE,
APPROVAL_REQUIRED_FLAG, COMMENTS, ORG_ID, AGENT_ID,
SHIP_TO_LOCATION_ID, BILL_TO_LOCATION_ID,
INTERFACE_SOURCE_CODE, BATCH_ID, APPROVAL_STATUS,
RATE_TYPE, RATE_DATE, RATE,
ACTION, CREATION_DATE, DOCUMENT_NUM, CREATED_BY,
LAST_UPDATE_DATE, LAST_UPDATED_BY,
ATTRIBUTE15 — DATA MIGRATION REFERENCE
)
VALUES (L_HEADER_ID, ‘STANDARD’, WC1.VENDOR_ID,
WC1.VENDOR_SITE_ID, WC1.CURRENCY_CODE, –‘AED’,
‘N’, WC1.PO_DESCRIPTION, WC1.ORG_ID, L_BUYER_ID,
WC1.SHIP_LOCATION_ID, WC1.BILL_LOCATION_ID,
‘TARGETOPENPO’, 131201, ‘APPROVED’,
L_EXCH_RATE_TYPE, L_EXCH_RATE_DATE, L_EXCH_RATE,
‘ORIGINAL’, WC1.PO_DATE, WC1.PO_NUMBER, LV_USER_ID,
SYSDATE, LV_USER_ID,
‘Open PO Migration’
);
FND_FILE.PUT_LINE (FND_FILE.LOG,
‘PO Number:’ || WC1.PO_NUMBER || ‘.’
);
FND_FILE.PUT_LINE (FND_FILE.LOG, ‘Open Cursor C2’);
BEGIN
SELECT TRIM (A.SHIP_TO_ORG_CODE)
INTO LN_PO_NUM
FROM XX_NEW_PO A,
PO_VENDORS PV,
PO_VENDOR_SITES_ALL PVS,
MTL_SYSTEM_ITEMS_B MSI,
— ORG_ORGANIZATION_DEFINITIONS OOD,
HR_ALL_ORGANIZATION_UNITS OOD,
GL_CODE_COMBINATIONS_KFV GCC,
HR_OPERATING_UNITS HOU
WHERE TRIM (A.PO_NUMBER) = WC1.PO_NUMBER
AND PV.SEGMENT1 = TRIM (A.SUPPLIER_NUMBER)
AND PVS.VENDOR_ID = PV.VENDOR_ID
AND PVS.VENDOR_SITE_CODE = TRIM (A.SUPPLIER_SITE)
AND ROWNUM = 1
AND OOD.NAME = TRIM (A.SHIP_TO_ORG_CODE)
AND PVS.ORG_ID = HOU.ORGANIZATION_ID
AND HOU.NAME = TRIM (REPLACE (A.OU_NAME, CHR (13), ‘ ‘))
AND GCC.CONCATENATED_SEGMENTS = TRIM (A.CHARGE_ACCOUNT)
AND MSI.ORGANIZATION_ID = OOD.ORGANIZATION_ID
AND MSI.SEGMENT1 = TRIM (A.ITEM_CODE);
FND_FILE.PUT_LINE (FND_FILE.LOG, ‘PONUM:’ || LN_PO_NUM);
EXCEPTION
WHEN OTHERS
THEN
/*FND_FILE.PUT_LINE (FND_FILE.LOG,
‘PONUM:’||TRIM (A.PO_NUMBER)
||’,SUPPLIER:’||TRIM (A.SUPPLIER_NUMBER)
||’,SUPPLIERSITE:’||TRIM (A.SUPPLIER_SITE)||’,ORGCODE:’|| TRIM (A.SHIP_TO_ORG_CODE)
||’,OU:’|| TRIM (REPLACE (A.OU_NAME, CHR (13), ‘ ‘))
||’,CGACCT:’|| TRIM (A.CHARGE_ACCOUNT)
||’,ITEM:’|| TRIM (A.ITEM_CODE)
);*/
FND_FILE.PUT_LINE (FND_FILE.LOG, ‘Error’ || SQLERRM);
END;
FOR I IN C2
LOOP
L_LINE_NO := NVL (L_LINE_NO, 0) + 1;
—
L_LINE_CNT := 0;
L_DESC := NULL;
—
BEGIN
SELECT COUNT (*)
INTO L_LINE_CNT
FROM XX_NEW_PO NP, HR_OPERATING_UNITS ORG
WHERE ORG.NAME = NP.OU_NAME
AND TRIM (NP.PO_NUMBER) = WC1.PO_NUMBER;
EXCEPTION
WHEN OTHERS
THEN
L_LINE_CNT := 0;
END;
—
IF (L_LINE_CNT = 1)
THEN
L_DESC := NULL;
ELSIF (L_LINE_CNT > 1)
THEN
L_DESC := I.PO_DESCRIPTION;
END IF;
—
SELECT PO_LINES_INTERFACE_S.NEXTVAL
INTO L_LINE_ID
FROM DUAL;
SELECT PO_DISTRIBUTIONS_INTERFACE_S.NEXTVAL
INTO L_DIST_ID
FROM DUAL;
FND_FILE.PUT_LINE (FND_FILE.LOG,
‘Enter Into PO Lines Interface’
);
INSERT INTO PO_LINES_INTERFACE
(INTERFACE_LINE_ID, INTERFACE_HEADER_ID,
LINE_TYPE_ID, ITEM_ID, ITEM_DESCRIPTION,
UNIT_PRICE, UOM_CODE, QUANTITY,
SHIP_TO_LOCATION_ID, SHIPMENT_NUM, NEED_BY_DATE,
–PROMISED_DATE,
LINE_NUM, SHIP_TO_ORGANIZATION_ID,
LINE_ATTRIBUTE15, ACCRUE_ON_RECEIPT_FLAG,
TAXABLE_FLAG, LINE_ATTRIBUTE14, CREATION_DATE,
CREATED_BY, LAST_UPDATE_DATE, LAST_UPDATED_BY,
NOTE_TO_VENDOR
)
VALUES (L_LINE_ID, L_HEADER_ID,
1, I.INVENTORY_ITEM_ID, I.DESCRIPTION,
I.RATE, I.PRIMARY_UOM_CODE, I.QUANTITY,
WC1.SHIP_LOCATION_ID, 1, I.NEED_BY_DATE,
I.PO_LINE_NO,
–L_LINE_NO,
I.ORGANIZATION_ID,
I.ROWNUMBER, ‘Y’,
‘Y’, ‘TARGETOPENPO’, SYSDATE,
LV_USER_ID, SYSDATE, LV_USER_ID,
L_DESC
–I.PO_DESCRIPTION
);
FND_FILE.PUT_LINE (FND_FILE.LOG,
‘Enter Into PO Distributions Interface’
);
IF NVL (I.PROJECT_CODE, ‘X’) = ‘X’
THEN
BEGIN
FND_FILE.PUT_LINE
(FND_FILE.LOG,
‘Enter Into PO Distributions Interface->1’
);
INSERT INTO PO_DISTRIBUTIONS_INTERFACE
(INTERFACE_LINE_ID, INTERFACE_HEADER_ID,
INTERFACE_DISTRIBUTION_ID,
DISTRIBUTION_NUM, QUANTITY_ORDERED, ORG_ID,
CHARGE_ACCOUNT_ID,
ACCRUAL_ACCOUNT_ID,
DELIVER_TO_PERSON_ID,
ATTRIBUTE15, ACCRUE_ON_RECEIPT_FLAG,
ACCRUED_FLAG, GL_ENCUMBERED_DATE,
CREATION_DATE, CREATED_BY,
LAST_UPDATE_DATE, LAST_UPDATED_BY
)
VALUES (L_LINE_ID, L_HEADER_ID,
L_DIST_ID,
1, I.QUANTITY, I.ORG_ID,
I.CHARGE_ACCOUNT_ID,
I.ACCRUAL_ACCOUNT_ID,
L_BUYER_ID,
I.ROWNUMBER, ‘Y’,
‘N’, I.GL_DATE,
SYSDATE, LV_USER_ID,
SYSDATE, LV_USER_ID
);
EXCEPTION
WHEN OTHERS
THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, SQLERRM);
END;
ELSE
FND_FILE.PUT_LINE
(FND_FILE.LOG,
‘Enter Into PO Distributions Interface->2’
);
BEGIN
INSERT INTO PO_DISTRIBUTIONS_INTERFACE
(INTERFACE_LINE_ID, INTERFACE_HEADER_ID,
INTERFACE_DISTRIBUTION_ID,
DISTRIBUTION_NUM, QUANTITY_ORDERED,
ORG_ID, CHARGE_ACCOUNT_ID,
ACCRUAL_ACCOUNT_ID, DELIVER_TO_PERSON_ID,
ATTRIBUTE15, ACCRUE_ON_RECEIPT_FLAG,
ACCRUED_FLAG, GL_ENCUMBERED_DATE,
PROJECT_ID, TASK_ID,
EXPENDITURE_TYPE,
EXPENDITURE_ORGANIZATION_ID,
EXPENDITURE_ITEM_DATE,
PROJECT_ACCOUNTING_CONTEXT, CREATION_DATE,
CREATED_BY, LAST_UPDATE_DATE,
LAST_UPDATED_BY
)
VALUES (L_LINE_ID, L_HEADER_ID,
L_DIST_ID,
1, I.QUANTITY,
I.ORG_ID, I.CHARGE_ACCOUNT_ID,
I.ACCRUAL_ACCOUNT_ID, L_BUYER_ID,
I.ROWNUMBER, ‘Y’,
‘N’, I.GL_DATE,
I.PROJECT_ID, I.TASK_ID,
I.EXPENDITURE_TYPE,
I.ORG_ID,
I.GL_DATE,
‘Y’, SYSDATE,
LV_USER_ID, SYSDATE,
LV_USER_ID
);
EXCEPTION
WHEN OTHERS
THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, SQLERRM);
END;
END IF;
UPDATE XX_NEW_PO
SET STATUS = ‘Sucess’
WHERE PO_NUMBER = I.PO_NUMBER AND ROWNUMBER = I.ROWNUMBER;
COMMIT;
END LOOP;
END LOOP;
CLOSE C1;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, ‘Validation Error’);
END IF;
EXCEPTION
WHEN OTHERS
THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, SQLERRM);
COMMIT;
END XX_OPEN_GRN_PO;
END XX_OPENPO_PKG;
/