CREATE OR REPLACE PROCEDURE XX_PR_REQUISITION_PROC (
P_ORGANIZATION_ID NUMBER,
P_ITEM_ID NUMBER,
P_ITEM_DESC VARCHAR2,
P_QTY NUMBER,
P_USER_ID NUMBER,
P_ORG_ID NUMBER,
P_ITEM_CODE VARCHAR2,
P_LOCATION_ID NUMBER,
P_NEED_BY_DATE DATE,
P_PROJECT_ID NUMBER,
P_TASK_ID NUMBER,
P_EXPENDITURE_TYPE VARCHAR2,
P_EST_BUDGET NUMBER,
P_RATE NUMBER,
P_PROJECT NUMBER,
P_LINE_NUM NUMBER,
P_REQ_NUMBER VARCHAR2
)
IS
V_CNT NUMBER;
V_EMPLOYEE_ID NUMBER;
V_PRIMARY_UOM VARCHAR2 (20);
V_PROJECT_START_DATE DATE;
V_ITEM_LEAD_DAYS NUMBER;
V_NEED_BY_DATE DATE;
V_UNIT_PRICE NUMBER;
V_RATE NUMBER;
L_REQ_NUMBER VARCHAR2 (200);
L_NEW_NUM NUMBER;
L_REQ_NUMBER2 VARCHAR2 (200);
L_NEW_COU NUMBER;
L_DOC_SEQ_TYPE VARCHAR2 (150);
v_request_id number;
v_finished BOOLEAN;
v_phase varchar2(100);
v_status varchar2(100);
v_request_phase varchar2(100);
v_request_status varchar2(100);
v_message varchar2(4000);
BEGIN
BEGIN
SELECT EMPLOYEE_ID
INTO V_EMPLOYEE_ID
FROM FND_USER
WHERE USER_ID = P_USER_ID;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
V_EMPLOYEE_ID := NULL;
END;
BEGIN
SELECT PRIMARY_UOM_CODE,
( NVL (PREPROCESSING_LEAD_TIME, 0)
+ NVL (FULL_LEAD_TIME, 0)
+ NVL (POSTPROCESSING_LEAD_TIME, 0)
),
NVL (LIST_PRICE_PER_UNIT, 1)
INTO V_PRIMARY_UOM,
V_ITEM_LEAD_DAYS,
V_UNIT_PRICE
FROM MTL_SYSTEM_ITEMS_B MIS
WHERE INVENTORY_ITEM_ID = P_ITEM_ID
AND ORGANIZATION_ID = P_ORGANIZATION_ID;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RAISE_APPLICATION_ERROR (-20000,
'Primary UOM for Item : '
|| P_ITEM_CODE
|| ' not fouund.'
);
END;
V_NEED_BY_DATE := P_NEED_BY_DATE;
V_RATE := P_RATE;
INSERT INTO PO_REQUISITIONS_INTERFACE_ALL
(TRANSACTION_ID, INTERFACE_SOURCE_CODE, SOURCE_TYPE_CODE,
REQUISITION_TYPE, DESTINATION_TYPE_CODE, ITEM_ID,
ITEM_DESCRIPTION, QUANTITY, AUTHORIZATION_STATUS,
PREPARER_ID, AUTOSOURCE_FLAG, UOM_CODE,
DESTINATION_ORGANIZATION_ID, DESTINATION_SUBINVENTORY,
DELIVER_TO_LOCATION_ID, DELIVER_TO_REQUESTOR_ID,
NEED_BY_DATE, GL_DATE, CHARGE_ACCOUNT_ID,
ACCRUAL_ACCOUNT_ID, VARIANCE_ACCOUNT_ID, ORG_ID,
SUGGESTED_VENDOR_ID, SUGGESTED_VENDOR_SITE_ID, UNIT_PRICE,
CREATION_DATE, CREATED_BY, LAST_UPDATE_DATE,
LAST_UPDATED_BY,
PROJECT_ID, TASK_ID, EXPENDITURE_ITEM_DATE,
EXPENDITURE_ORGANIZATION_ID, EXPENDITURE_TYPE,
PROJECT_ACCOUNTING_CONTEXT,
REQ_NUMBER_SEGMENT1, LINE_NUM
)
VALUES (PO_REQUISITIONS_INTERFACE_S.NEXTVAL, 'INV', 'VENDOR',
'PURCHASE', 'EXPENSE', P_ITEM_ID,
P_ITEM_DESC, P_QTY, 'INCOMPLETE',
V_EMPLOYEE_ID, 'P', V_PRIMARY_UOM,
P_ORGANIZATION_ID, NULL,
P_LOCATION_ID, V_EMPLOYEE_ID,
V_NEED_BY_DATE, V_NEED_BY_DATE, NULL,
NULL, NULL, P_ORG_ID,
NULL, NULL, V_RATE,
SYSDATE, P_USER_ID, SYSDATE,
P_USER_ID,
P_PROJECT_ID, P_TASK_ID, V_NEED_BY_DATE,
P_ORGANIZATION_ID, P_EXPENDITURE_TYPE,
'Y',
P_REQ_NUMBER, P_LINE_NUM
);
COMMIT;
-------------
-- Run import program
------------
v_request_id := fnd_request.submit_request (application => 'PO' ,
program => 'REQIMPORT' ,
argument1 => 'INV' ,
argument2 => '' ,
argument3 => 'ALL',
argument4 => '',
argument5 => '',
argument6 => 'Y'
);
COMMIT;
IF v_request_id > 0
THEN
v_finished :=
fnd_concurrent.wait_for_request (request_id => v_request_id,
INTERVAL => 0,
max_wait => 0,
phase => v_phase,
status => v_status,
dev_phase => v_request_phase,
dev_status => v_request_status,
MESSAGE => v_message
);
IF (UPPER (v_request_status) = 'NORMAL')
THEN
dbms_output.put_line('Run Successfully');
END IF;
END IF;
END XX_PR_REQUISITION_PROC;
Note: If not using Project costing then leave the mentioned values blank:
1.PROJECT_ACCOUNTING_CONTEXT
2.PROJECT_ID
3.TASK_ID
4.EXPENDITURE_ITEM_DATE
5.EXPENDITURE_ORGANIZATION_ID
6.EXPENDITURE_TYPE
P_ORGANIZATION_ID NUMBER,
P_ITEM_ID NUMBER,
P_ITEM_DESC VARCHAR2,
P_QTY NUMBER,
P_USER_ID NUMBER,
P_ORG_ID NUMBER,
P_ITEM_CODE VARCHAR2,
P_LOCATION_ID NUMBER,
P_NEED_BY_DATE DATE,
P_PROJECT_ID NUMBER,
P_TASK_ID NUMBER,
P_EXPENDITURE_TYPE VARCHAR2,
P_EST_BUDGET NUMBER,
P_RATE NUMBER,
P_PROJECT NUMBER,
P_LINE_NUM NUMBER,
P_REQ_NUMBER VARCHAR2
)
IS
V_CNT NUMBER;
V_EMPLOYEE_ID NUMBER;
V_PRIMARY_UOM VARCHAR2 (20);
V_PROJECT_START_DATE DATE;
V_ITEM_LEAD_DAYS NUMBER;
V_NEED_BY_DATE DATE;
V_UNIT_PRICE NUMBER;
V_RATE NUMBER;
L_REQ_NUMBER VARCHAR2 (200);
L_NEW_NUM NUMBER;
L_REQ_NUMBER2 VARCHAR2 (200);
L_NEW_COU NUMBER;
L_DOC_SEQ_TYPE VARCHAR2 (150);
v_request_id number;
v_finished BOOLEAN;
v_phase varchar2(100);
v_status varchar2(100);
v_request_phase varchar2(100);
v_request_status varchar2(100);
v_message varchar2(4000);
BEGIN
BEGIN
SELECT EMPLOYEE_ID
INTO V_EMPLOYEE_ID
FROM FND_USER
WHERE USER_ID = P_USER_ID;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
V_EMPLOYEE_ID := NULL;
END;
BEGIN
SELECT PRIMARY_UOM_CODE,
( NVL (PREPROCESSING_LEAD_TIME, 0)
+ NVL (FULL_LEAD_TIME, 0)
+ NVL (POSTPROCESSING_LEAD_TIME, 0)
),
NVL (LIST_PRICE_PER_UNIT, 1)
INTO V_PRIMARY_UOM,
V_ITEM_LEAD_DAYS,
V_UNIT_PRICE
FROM MTL_SYSTEM_ITEMS_B MIS
WHERE INVENTORY_ITEM_ID = P_ITEM_ID
AND ORGANIZATION_ID = P_ORGANIZATION_ID;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RAISE_APPLICATION_ERROR (-20000,
'Primary UOM for Item : '
|| P_ITEM_CODE
|| ' not fouund.'
);
END;
V_NEED_BY_DATE := P_NEED_BY_DATE;
V_RATE := P_RATE;
INSERT INTO PO_REQUISITIONS_INTERFACE_ALL
(TRANSACTION_ID, INTERFACE_SOURCE_CODE, SOURCE_TYPE_CODE,
REQUISITION_TYPE, DESTINATION_TYPE_CODE, ITEM_ID,
ITEM_DESCRIPTION, QUANTITY, AUTHORIZATION_STATUS,
PREPARER_ID, AUTOSOURCE_FLAG, UOM_CODE,
DESTINATION_ORGANIZATION_ID, DESTINATION_SUBINVENTORY,
DELIVER_TO_LOCATION_ID, DELIVER_TO_REQUESTOR_ID,
NEED_BY_DATE, GL_DATE, CHARGE_ACCOUNT_ID,
ACCRUAL_ACCOUNT_ID, VARIANCE_ACCOUNT_ID, ORG_ID,
SUGGESTED_VENDOR_ID, SUGGESTED_VENDOR_SITE_ID, UNIT_PRICE,
CREATION_DATE, CREATED_BY, LAST_UPDATE_DATE,
LAST_UPDATED_BY,
PROJECT_ID, TASK_ID, EXPENDITURE_ITEM_DATE,
EXPENDITURE_ORGANIZATION_ID, EXPENDITURE_TYPE,
PROJECT_ACCOUNTING_CONTEXT,
REQ_NUMBER_SEGMENT1, LINE_NUM
)
VALUES (PO_REQUISITIONS_INTERFACE_S.NEXTVAL, 'INV', 'VENDOR',
'PURCHASE', 'EXPENSE', P_ITEM_ID,
P_ITEM_DESC, P_QTY, 'INCOMPLETE',
V_EMPLOYEE_ID, 'P', V_PRIMARY_UOM,
P_ORGANIZATION_ID, NULL,
P_LOCATION_ID, V_EMPLOYEE_ID,
V_NEED_BY_DATE, V_NEED_BY_DATE, NULL,
NULL, NULL, P_ORG_ID,
NULL, NULL, V_RATE,
SYSDATE, P_USER_ID, SYSDATE,
P_USER_ID,
P_PROJECT_ID, P_TASK_ID, V_NEED_BY_DATE,
P_ORGANIZATION_ID, P_EXPENDITURE_TYPE,
'Y',
P_REQ_NUMBER, P_LINE_NUM
);
COMMIT;
-------------
-- Run import program
------------
v_request_id := fnd_request.submit_request (application => 'PO' ,
program => 'REQIMPORT' ,
argument1 => 'INV' ,
argument2 => '' ,
argument3 => 'ALL',
argument4 => '',
argument5 => '',
argument6 => 'Y'
);
COMMIT;
IF v_request_id > 0
THEN
v_finished :=
fnd_concurrent.wait_for_request (request_id => v_request_id,
INTERVAL => 0,
max_wait => 0,
phase => v_phase,
status => v_status,
dev_phase => v_request_phase,
dev_status => v_request_status,
MESSAGE => v_message
);
IF (UPPER (v_request_status) = 'NORMAL')
THEN
dbms_output.put_line('Run Successfully');
END IF;
END IF;
END XX_PR_REQUISITION_PROC;
Note: If not using Project costing then leave the mentioned values blank:
1.PROJECT_ACCOUNTING_CONTEXT
2.PROJECT_ID
3.TASK_ID
4.EXPENDITURE_ITEM_DATE
5.EXPENDITURE_ORGANIZATION_ID
6.EXPENDITURE_TYPE
No comments:
Post a Comment