Professional Documents
Culture Documents
PKG Body Import 21082019
PKG Body Import 21082019
XXTLN_I2_REQU_IMPORT_PKG
/* $LastChangedRevision: 25581 $ $LastChangedDate: 2018-09-06 09:14:58 +0000 (Thu,
06 Sep 2018) $ $LastChangedBy: T899276 $ */
/
*==================================================================================
=+
|VOYSOL-5- CHG0032736- SOLAR PROJECT
|
===================================================================================
=|
|
|
|FILENAME
|
| XXTLN_REQUISITION_IMPORT_PKG.sql
|
|
|DESCRIPTION
|
| Package for SOLAR REQISITION INBOUND INTERFACE
|
|
|
|
|
|
|Modification History
|
|
|
| Ver Date Author Modification
|
| 1.0 30-MAR-2018 Amit Sharma Initial Version /
/ 1.1 23-Oct-2018 Amit Sharma Added distribution Attribute13 = SOLAR
|
===================================================================================
==*/
AS
lv_err_msg CLOB := NULL;
lv_err_flag VARCHAR2 (1);
lv_order_source VARCHAR2 (15);
lv_source_order VARCHAR2 (30);
lv_org_id NUMBER;
l_interface_id xxtln.xxtln_i2_interface_logs.interface_id%TYPE;
COMMIT;
END insert_i2_interface_logs;
COMMIT; -- this commit is required so that errors are saved in case of issues
END update_i2_interface_logs;
PROCEDURE AUTHENTICATE_ACCESS (
p_le IN xxtln.xxtln_i2_interface_logs.le_code%TYPE,
p_module IN xxtln.xxtln_i2_interface_logs.app_module%TYPE,
p_username IN fnd_user.user_name%TYPE DEFAULT 'I2')
IS
l_user fnd_user.user_id%TYPE;
l_resp_id fnd_responsibility.responsibility_id%TYPE;
l_resp_app_id fnd_responsibility.application_id%TYPE;
BEGIN
SELECT user_id
INTO l_user
FROM fnd_user
WHERE user_name = p_username;
/*********************Local
Variables************************************************/
V_REQ_HEADER_ID NUMBER;
V_REQ_HEADER_ID_1 NUMBER;
V_REQ_HEADER_ID_2 NUMBER;
v_count_supsource NUMBER;
v_count_invsource NUMBER;
lv_parameter_list wf_parameter_list_t;
T_REQ_INTR PO_REQUISITIONS_INTERFACE_ALL%ROWTYPE;
/*************************** Main Block
*************************************************/
BEGIN
/******** INITIALIZE LOCAL VARIABLE *********/
V_REQ_HEADER_ID_1 := NULL;
V_REQ_HEADER_ID_2 := NULL;
v_count_invsource := 0;
v_count_supsource := 0;
lv_err_msg := NULL;
FOR i IN 1 .. p_req_intr_tbl.COUNT
LOOP
-------------------------
--INITIALIZE ERROR FLAG--
-------------------------
lv_err_flag := 'N';
-----------------------
--INITIALIZE VARIABLE--
-----------------------
lv_order_source := p_req_intr_tbl (1).interface_source_code;
lv_source_order := p_req_intr_tbl (1).HEADER_ATTRIBUTE1;
DBMS_OUTPUT.PUT_LINE (
p_req_intr_tbl (i).PROJECT_NUM
|| p_req_intr_tbl (i).item_description
|| ' '
|| lv_order_source);
v_count_invsource := 1;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Error While Generating Sequence Number.'
|| '<br>'
|| CHR (10);
x_return_status :='RJECTED';
update_i2_interface_logs (l_interface_id,
x_return_status,
lv_err_msg,
NULL);
END;
END IF;
V_REQ_HEADER_ID := V_REQ_HEADER_ID_1;
ELSE
IF v_count_supsource = 0
THEN
BEGIN
SELECT apps.po_requisition_headers_s.NEXTVAL
INTO V_REQ_HEADER_ID_2
FROM DUAL;
v_count_supsource := 1;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Error While Generating Sequence Number.'
|| '<br>'
|| CHR (10);
END;
END IF;
V_REQ_HEADER_ID := V_REQ_HEADER_ID_2;
END IF;
END IF;
--COMMIT;
COMMIT;
END IF;
END LOOP;
/* END LOOP;
CLOSE TEST_REQUISITION;*/
UPDATE PO_REQUISITIONS_INTERFACE_ALL
SET PROCESS_FLAG = 'ERROR'
WHERE PROCESS_FLAG IS NULL
AND interface_source_code = lv_order_source
AND requisition_header_id IN
(V_REQ_HEADER_ID_1, V_REQ_HEADER_ID_2);
COMMIT;
lv_parameter_list :=
wf_parameter_list_t (
wf_parameter_t ('INT NAME', 'REQUISITION IMPORT'),
wf_parameter_t ('SOURCE NAME', lv_order_source),
wf_parameter_t ('SEND DATE',
fnd_date.date_to_canonical (SYSDATE)),
wf_parameter_t ('STATUS CODE', 'ERROR'),
wf_parameter_t ('SOLAR ORDER NUMBER', lv_source_order));
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => lv_err_msg,
p_parameters => lv_parameter_list);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'The following error occured in raising Business event for
Error details'
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
END IF;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Error - while calling the insert procedure'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
--errbuf := 'Error message'|| SQLERRM;
-- retcode:= 'Error Code' || SQLCODE;
END XXTLN_REQU_INSERT;
/***************************END OF INSERT
PROCEDURE**********************************************************/
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
/***************************START OF UPDATE
PROCEDURE********************************************************/
PROCEDURE XXTLN_REQU_UPDATE (p_req_intr_tbl IN REQ_INTR_TBL)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
--v_org_id NUMBER;
v_count_epo NUMBER;
v_emergency_po_num VARCHAR2 (30);
v_table_name VARCHAR2 (50);
lv_parameter_list wf_parameter_list_t;
--XXTLN_UPDATE_EXCEPTION EXCEPTION;
BEGIN
IF lv_err_msg IS NULL
THEN
FOR i IN 1 .. p_req_intr_tbl.COUNT
LOOP
/*******************************Assigning Order Number and Source to
local Variable*********************/
/**************************************OBTAINING ORGANIZATION
ID****************************************/
IF p_req_intr_tbl (i).OPERATING_UNIT IS NOT NULL
THEN
BEGIN
SELECT DISTINCT organization_id
INTO lv_org_id
FROM apps.hr_operating_units
WHERE NAME = p_req_intr_tbl (i).OPERATING_UNIT;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Organization:'
|| ' '
|| p_req_intr_tbl (i).OPERATING_UNIT
|| ' '
|| 'is not present in R12'
|| '<br>'
|| CHR (10);
END;
ELSE
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Organization is not provided.'
|| '<br>'
|| CHR (10);
END IF;
BEGIN
SELECT COUNT (DISTINCT suggested_vendor_id)
INTO v_count_epo
FROM apps.PO_REQUISITIONS_INTERFACE_ALL
WHERE 1 = 1
AND interface_source_code =
p_req_intr_tbl (i).interface_source_code
AND org_id = lv_org_id
AND AUTOSOURCE_FLAG = 'N'
AND SUGGESTED_BUYER_NAME IS NOT NULL
AND EMERGENCY_PO_NUM IS NULL
AND PROCESS_FLAG IS NULL
AND DISTRIBUTION_ATTRIBUTE14 =
p_req_intr_tbl (i).HEADER_ATTRIBUTE1
AND requisition_type = 'PURCHASE';
IF v_count_epo = 1
THEN
v_table_name := 'PO_HEADERS';
BEGIN
MO_GLOBAL.set_policy_context ('S', lv_org_id);
v_emergency_po_num :=
APPS.POR_UTIL_PKG.get_document_number (v_table_name);
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while deriving Emergency Po Number'
|| ' '
|| '<br>'
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
UPDATE apps.PO_REQUISITIONS_INTERFACE_ALL
SET EMERGENCY_PO_NUM = v_emergency_po_num
WHERE interface_source_code =
p_req_intr_tbl (i).interface_source_code
AND org_id = lv_org_id
AND AUTOSOURCE_FLAG = 'N'
AND EMERGENCY_PO_NUM IS NULL
AND PROCESS_FLAG IS NULL
AND SUGGESTED_BUYER_NAME IS NOT NULL
AND DISTRIBUTION_ATTRIBUTE14 =
p_req_intr_tbl (i).HEADER_ATTRIBUTE1
AND requisition_type = 'PURCHASE';
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while assigning Emergency Po Number'
|| ' '
|| '<br>'
|| SQLERRM
|| '<br>'
|| CHR (10);
-- fnd_file.put_line (fnd_file.LOG, 'Error while assigning emergency
PO.');
END;
COMMIT;
/****************************** Code end for Emergency PO Number Extract
and Update ***************************/
END LOOP;
END IF;
COMMIT;
EXCEPTION
/*WHEN XXTLN_UPDATE_EXCEPTION
THEN
lv_parameter_list :=
wf_parameter_list_t (
wf_parameter_t ('INT NAME', 'REQUISITION IMPORT'),
wf_parameter_t ('SOURCE NAME', v_source_name),
wf_parameter_t ('SEND DATE',
fnd_date.date_to_canonical (SYSDATE)),
wf_parameter_t ('STATUS CODE', 'ERROR'),
wf_parameter_t ('SOLAR ORDER NUMBER', v_order_number));
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => lv_err_msg,
p_parameters => lv_parameter_list);
COMMIT;
RAISE;*/
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while updating record'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
lv_parameter_list :=
wf_parameter_list_t (
wf_parameter_t ('INT NAME', 'REQUISITION IMPORT'),
wf_parameter_t ('SOURCE NAME', v_source_name),
wf_parameter_t ('SEND DATE',
fnd_date.date_to_canonical (SYSDATE)),
wf_parameter_t ('STATUS CODE', 'ERROR'),
wf_parameter_t ('SOLAR ORDER NUMBER', v_order_number));
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => lv_err_msg,
p_parameters => lv_parameter_list);
COMMIT;
END XXTLN_REQU_UPDATE;
/***************************END OF UPDATE
PROCEDURE********************************************************/
/***************************START OF VALIDATION
FUNCTION**************************************************/
FUNCTION XXTLN_REQ_VALIDATION (
p_req_intr IN XXTLN_I2_REQU_IMPORT_PKG.REQ_INTR_REC)
RETURN PO_REQUISITIONS_INTERFACE_ALL%ROWTYPE
IS
v_val_rec PO_REQUISITIONS_INTERFACE_ALL%ROWTYPE;
lv_parameter_list wf_parameter_list_t;
lv_buyer_count NUMBER;
lv_solar_ord_count NUMBER;
lv_mas_orgid NUMBER;
lv_unit_price NUMBER;
lv_currency_code VARCHAR2 (5);
--VALIDATION_EXCEPTION EXCEPTION;
/*************************** Main Block
*************************************************/
BEGIN
apps.fnd_file.put_line (apps.FND_FILE.LOG, ': Validation Procedure :');
--lv_err_msg := NULL;
IF p_req_intr.SOURCE_TYPE_CODE = 'INVENTORY'
AND p_req_intr.source_organization_code IS NOT NULL
THEN
BEGIN
SELECT ORGANIZATION_ID
INTO v_val_rec.source_organization_id
FROM apps.org_organization_definitions
WHERE UPPER (organization_code) =
UPPER (p_req_intr.source_organization_code)
AND SYSDATE <= NVL (DISABLE_DATE, SYSDATE);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Source Organization Code'
|| ' '
|| p_req_intr.source_organization_code
|| ' '
|| 'is invalid'
|| '<br>'
|| CHR (10);
END;
ELSIF p_req_intr.SOURCE_TYPE_CODE = 'INVENTORY'
AND p_req_intr.source_organization_code IS NULL
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'SOURCE ORGANIZATION CANNOT BE NULL FOR INTERNAL ORDER.'
|| '<br>'
|| CHR (10);
END IF;
IF p_req_intr.PROJECT_ACCOUNTING_CONTEXT = 'Y'
THEN
v_val_rec.PROJECT_ACCOUNTING_CONTEXT :=
p_req_intr.PROJECT_ACCOUNTING_CONTEXT;
v_val_rec.EXPENDITURE_ITEM_DATE := p_req_intr.EXPENDITURE_ITEM_DATE;
-- v_val_rec.EXPENDITURE_TYPE := p_req_intr.EXPENDITURE_TYPE;
BEGIN
SELECT EXPENDITURE_TYPE --, hrorg.name, hrorg.date_from, hrorg.date_to
INTO v_val_rec.EXPENDITURE_TYPE
FROM apps.PA_EXPENDITURE_TYPES et
WHERE UPPER (EXPENDITURE_TYPE) =
UPPER (p_req_intr.EXPENDITURE_TYPE)
AND (TRUNC (SYSDATE) BETWEEN et.START_DATE_ACTIVE
AND NVL (et.END_DATE_ACTIVE,
TRUNC (SYSDATE + 1)));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'EXPENDITURE_TYPE:'
|| ' '
|| p_req_intr.EXPENDITURE_TYPE
|| ' '
|| 'not exist.'
|| '<br>'
|| CHR (10);
END;
BEGIN
SELECT hrorg.organization_id --, hrorg.name, hrorg.date_from,
hrorg.date_to
INTO v_val_rec.EXPENDITURE_ORGANIZATION_ID
FROM apps.hr_organization_units hrorg,
apps.pa_all_organizations paorg
WHERE paorg.organization_id = hrorg.organization_id
AND paorg.pa_org_use_type = 'EXPENDITURES'
AND paorg.inactive_date IS NULL
AND UPPER (hrorg.name) =
UPPER (p_req_intr.EXPENDITURE_ORG);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Expenditure Org:'
|| ' '
|| p_req_intr.EXPENDITURE_ORG
|| ' '
|| 'not exist.'
|| '<br>'
|| CHR (10);
END;
ELSE
v_val_rec.PROJECT_ACCOUNTING_CONTEXT := NULL;
v_val_rec.EXPENDITURE_ITEM_DATE := NULL;
v_val_rec.EXPENDITURE_TYPE := NULL;
END IF;
IF p_req_intr.CATEGORY_SEGMENT6 IS NULL
AND p_req_intr.CATEGORY_SEGMENT7 IS NULL
AND p_req_intr.SOURCE_TYPE_CODE = 'INVENTORY'
AND p_req_intr.ITEM_SEGMENT1 IS NOT NULL
THEN
BEGIN
SELECT DISTINCT mic.category_id
INTO v_val_rec.category_id
FROM apps.mtl_item_categories mic,
apps.mtl_system_items_b msi,
apps.mtl_category_sets_tl mcst
WHERE mic.INVENTORY_ITEM_ID = msi.INVENTORY_ITEM_ID
AND mcst.category_set_id = mic.category_set_id
AND mcst.CATEGORY_SET_NAME = 'Purchasing'
AND msi.segment1 = p_req_intr.ITEM_SEGMENT1
AND mic.organization_id = v_val_rec.source_organization_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Category not setup for Inventory Item:'
|| ' '
|| p_req_intr.ITEM_SEGMENT1
|| ' '
|| 'in'
|| ' '
|| p_req_intr.source_organization_code
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg := lv_err_msg || SQLERRM;
END;
ELSIF p_req_intr.CATEGORY_SEGMENT6 IS NULL
AND p_req_intr.CATEGORY_SEGMENT7 IS NULL
AND p_req_intr.SOURCE_TYPE_CODE = 'VENDOR'
AND p_req_intr.ITEM_SEGMENT1 IS NOT NULL
THEN
BEGIN
SELECT DISTINCT mic.category_id
INTO v_val_rec.category_id
FROM apps.mtl_item_categories mic,
apps.mtl_system_items_b msi,
apps.mtl_category_sets_tl mcst
WHERE mic.INVENTORY_ITEM_ID = msi.INVENTORY_ITEM_ID
AND mcst.category_set_id = mic.category_set_id
AND mcst.CATEGORY_SET_NAME = 'Purchasing'
AND msi.segment1 = p_req_intr.ITEM_SEGMENT1
AND msi.organization_id = mic.organization_id
AND msi.INVENTORY_ITEM_FLAG = 'N';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Category not setup for Expense Item:'
|| ' '
|| p_req_intr.ITEM_SEGMENT1
|| ' '
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg := lv_err_msg || SQLERRM || '<br>' || CHR (10);
END;
ELSIF p_req_intr.CATEGORY_SEGMENT6 IS NOT NULL
AND p_req_intr.CATEGORY_SEGMENT7 IS NOT NULL
THEN
BEGIN
SELECT DISTINCT mic.category_id
INTO v_val_rec.category_id
FROM apps.mtl_categories_b mic
WHERE SEGMENT6 = p_req_intr.CATEGORY_SEGMENT6
AND SEGMENT7 = p_req_intr.CATEGORY_SEGMENT7
AND ENABLED_FLAG = 'Y'
AND SYSDATE <= NVL (END_DATE_ACTIVE, SYSDATE);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Category:'
|| ' '
|| p_req_intr.CATEGORY_SEGMENT6
|| '-'
|| p_req_intr.CATEGORY_SEGMENT7
|| ' '
|| 'not setup in system.'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error in Item Category Validation'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
ELSE
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'CATEGORY IS MANDATORY WHEN ITEM NUMBER IS NOT PROVIDED'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END IF;
BEGIN
SELECT A.LOCATION_CODE
INTO lv_manual_loc
FROM APPS.HR_lOCATIONS A,
apps.FND_PROFILE_OPTIONS B,
apps.FND_PROFILE_OPTION_VALUES C
WHERE B.PROFILE_OPTION_ID = C.PROFILE_OPTION_ID
AND C.PROFILE_OPTION_VALUE = A.LOCATION_CODE
AND B.profile_option_name = 'XXTLN_MANUAL_ADDRESS';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Manual Address profile not setup'
|| '<br>'
|| CHR (10);
END;
BEGIN
SELECT DISTINCT location_id
INTO v_val_rec.deliver_to_location_id
FROM apps.hr_locations_all_tl
WHERE 1 = 1
AND location_code = p_req_intr.deliver_to_location_code;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Deliver To Location:'
|| ' '
|| p_req_intr.deliver_to_location_code
|| ' '
|| 'is not present'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error for deliver to location'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
IF p_req_intr.DELIVER_TO_LOCATION_CODE = lv_one_time_loc
AND p_req_intr.SOURCE_TYPE_CODE = 'VENDOR'
THEN
lv_one_time_add :=
p_req_intr.header_attribute5
|| ' '
|| p_req_intr.header_attribute6
|| CHR (10)
|| p_req_intr.header_attribute7
|| CHR (10)
|| p_req_intr.header_attribute8
|| CHR (10)
|| p_req_intr.header_attribute9
|| CHR (10)
|| p_req_intr.header_attribute10;
v_val_rec.line_attribute5 := p_req_intr.header_attribute5;
v_val_rec.line_attribute6 := p_req_intr.header_attribute6;
v_val_rec.line_attribute7 := p_req_intr.header_attribute7;
v_val_rec.line_attribute8 := p_req_intr.header_attribute8;
v_val_rec.line_attribute9 := p_req_intr.header_attribute9;
v_val_rec.line_attribute10 := p_req_intr.header_attribute10;
ELSIF p_req_intr.DELIVER_TO_LOCATION_CODE = lv_manual_loc
AND p_req_intr.SOURCE_TYPE_CODE = 'INVENTORY'
THEN
v_val_rec.HEADER_DESCRIPTION :=
p_req_intr.note_to_receiver -- New
change after GO-LIVE
||';'
|| p_req_intr.header_attribute5
|| ';'
|| p_req_intr.header_attribute6
|| ';'
|| p_req_intr.header_attribute7
|| ';'
|| p_req_intr.header_attribute8
|| ';'
|| p_req_intr.header_attribute9
|| ';'
|| p_req_intr.header_attribute10;
v_val_rec.note1_id := NULL;
ELSE
v_val_rec.note1_id := NULL;
END IF;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error in Deliver to location'
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
ELSE
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'DELIVER TO LOCATION CANNOT BE NULL.'
|| '<br>'
|| CHR (10);
END IF;
SELECT MASTER_ORGANIZATION_ID
INTO lv_mas_orgid
FROM APPS.OE_SYSTEM_PARAMETERS;
IF p_req_intr.DELIVER_TO_REQUESTOR_NAME IS NULL
THEN
IF p_req_intr.preparer_name IS NOT NULL
THEN
BEGIN
SELECT fu.employee_id
INTO v_val_rec.DELIVER_TO_REQUESTOR_ID
FROM apps.per_all_people_f papf, apps.fnd_user fu
WHERE SYSDATE BETWEEN papf.effective_start_date
AND NVL (papf.effective_end_date,
SYSDATE + 1)
AND SYSDATE BETWEEN fu.start_date
AND NVL (fu.end_date, SYSDATE + 1)
AND fu.employee_id = papf.person_id
AND fu.user_name = p_req_intr.preparer_name;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Requestor Name:'
|| ' '
|| p_req_intr.preparer_name
|| ' '
|| 'is not present or inactive in system'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error in Deliver to requestor'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
ELSE
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'REQUESTOR CANNOT BE NULL.'
|| '<br>'
|| CHR (10);
END IF;
ELSE
BEGIN
SELECT fu.employee_id
INTO v_val_rec.DELIVER_TO_REQUESTOR_ID
FROM apps.per_all_people_f papf, apps.fnd_user fu
WHERE SYSDATE BETWEEN papf.effective_start_date
AND NVL (papf.effective_end_date,
SYSDATE + 1)
AND SYSDATE BETWEEN fu.start_date
AND NVL (fu.end_date, SYSDATE + 1)
AND fu.employee_id = papf.person_id
AND fu.user_name = p_req_intr.DELIVER_TO_REQUESTOR_NAME;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Requestor Name:'
|| ' '
|| p_req_intr.preparer_name
|| ' '
|| 'is not present or inactive in system'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error in Deliver to requestor'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
END IF;
IF lv_buyer_count = 1
THEN
/****************Identify Buyer Name***********************/
BEGIN
SELECT GLOBAL_NAME
INTO v_val_rec.SUGGESTED_BUYER_NAME
FROM APPS.PER_ALL_PEOPLE_F
WHERE PERSON_ID = v_val_rec.SUGGESTED_BUYER_ID
AND SYSDATE BETWEEN EFFECTIVE_START_DATE
AND EFFECTIVE_END_DATE;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error for suggested buyer'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Order not eligible for autocreate as no valid source document
in system'
|| '<br>'
|| CHR (10);
WHEN TOO_MANY_ROWS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Order is not eligible for auto-create as multiple source
document in system'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error in finding Source document for Item'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
ELSE
v_val_rec.SUGGESTED_BUYER_NAME := NULL;
END IF;
IF lv_currency_code = v_val_rec.currency_code
THEN
v_val_rec.unit_price := lv_unit_price;
v_val_rec.CURRENCY_UNIT_PRICE := NULL;
ELSE
v_val_rec.unit_price := NULL;
v_val_rec.CURRENCY_UNIT_PRICE := lv_unit_price;
BEGIN
SELECT CONVERSION_DATE
INTO v_val_rec.RATE_DATE
FROM apps.gl_daily_rates
WHERE from_currency = v_val_rec.currency_code
AND to_currency = lv_currency_code
AND conversion_type = v_val_rec.RATE_TYPE
AND CONVERSION_DATE =
TO_DATE (SYSDATE, 'DD/MM/RRRR');
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Conversion Rate not defined for'
|| ' '
|| SYSDATE
|| ' '
|| 'in system'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while finding conversion rate'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
END IF;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error for Currency Code'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
ELSIF p_req_intr.SOURCE_TYPE_CODE = 'INVENTORY'
THEN
BEGIN
SELECT NVL (ITEM_COST, 0)
INTO v_val_rec.unit_price
FROM apps.cst_item_costs
WHERE inventory_item_id = v_val_rec.item_id
AND ORGANIZATION_ID = v_val_rec.source_organization_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Item not available in'
|| ' '
|| p_req_intr.source_organization_code
|| ' '
|| 'Inventory Org'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while deriving unit price for item'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
ELSE
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg || 'UNIT PRICE CANNOT BE NULL.' || '<br>' || CHR (10);
END IF;
IF p_req_intr.SOURCE_TYPE_CODE = 'VENDOR'
AND p_req_intr.interface_source_code = 'SOLAR'
THEN
BEGIN
/*SELECT EMPLOYEE_ID
INTO v_val_rec.approver_id
FROM apps.fnd_user
WHERE user_name = 'T531232';*/
SELECT fu.employee_id
INTO v_val_rec.approver_id
FROM apps.fnd_user fu,
apps.fnd_profile_options fpo,
apps.fnd_profile_option_values fpov
WHERE 1 = 1
AND fpo.profile_option_id = fpov.profile_option_id
AND fpov.profile_option_value = fu.user_name
AND sysdate < nvl(fu.end_date,sysdate+1)
AND fpo.profile_option_name = 'XXTLN_PR_APPROVER' -- PROFILE
OPTION FOR PR APPROVER SET AT ORG LEVEL
AND fpov.level_id = 10006
and fpov.level_value = v_val_rec.org_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Approver for Purchase requisition'
|| ' '
|| SYSDATE
|| ' '
|| 'not in system'
|| '<br>'
|| CHR (10);
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while finding approver'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
END IF;
IF lv_solar_ord_count > 0
THEN
lv_err_msg :=
lv_err_msg
|| 'Duplicate Solar Ordaer Number'
|| ',';
END IF;
END IF;
WHEN OTHERS
THEN
lv_err_msg :=
lv_err_msg || 'Unexpected Error for Duplicate Solar
Order check' || SQLERRM || ',';
END;
/****************************** Raise Business Event for Validation Failure
*****************************/
--v_val_rec.category_id := 30026;
--v_val_rec.item_id := 697068;
RETURN v_val_rec;
EXCEPTION
/*WHEN VALIDATION_EXCEPTION
THEN
lv_parameter_list :=
wf_parameter_list_t (
wf_parameter_t ('INT NAME', 'REQUISITION IMPORT'),
wf_parameter_t ('SOURCE NAME', p_req_intr.interface_source_code),
wf_parameter_t ('SEND DATE',
fnd_date.date_to_canonical (SYSDATE)),
wf_parameter_t ('STATUS CODE', 'ERROR'),
wf_parameter_t ('SOLAR ORDER NUMBER',
p_req_intr.HEADER_ATTRIBUTE1));
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => lv_err_msg,
p_parameters => lv_parameter_list);
COMMIT;
RAISE;*/
WHEN OTHERS
THEN
lv_err_flag := 'Y';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while validating record'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
lv_parameter_list :=
wf_parameter_list_t (
wf_parameter_t ('INT NAME', 'REQUISITION IMPORT'),
wf_parameter_t ('SOURCE NAME',
p_req_intr.interface_source_code),
wf_parameter_t ('SEND DATE',
fnd_date.date_to_canonical (SYSDATE)),
wf_parameter_t ('STATUS CODE', 'ERROR'),
wf_parameter_t ('SOLAR ORDER NUMBER',
p_req_intr.HEADER_ATTRIBUTE1));
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => lv_err_msg,
p_parameters => lv_parameter_list);
COMMIT;
END XXTLN_REQ_VALIDATION;
/***************************END OF VALIDATION
FUNCTION***************************************************/
lv_doc_id := NULL;
lv_media_id := NULL;
lv_row_id := NULL;
fnd_documents_pkg.insert_row (
x_rowid => lv_row_id,
x_document_id => lv_doc_id,
x_creation_date => SYSDATE,
x_created_by => -1,
x_last_update_date => SYSDATE,
x_last_updated_by => -1,
x_last_update_login => -1,
x_datatype_id => 2,
x_publish_flag => 'Y',
x_category_id => 33,
x_security_type => 4,
x_usage_type => 'O',
x_language => 'US',
x_description => 'POR:One Time Location',
x_file_name => NULL,
x_media_id => lv_media_id);
INSERT
INTO fnd_documents_long_text (media_id, long_text, app_source_version)
VALUES (lv_media_id, p_one_time_add, NULL);
COMMIT;
SELECT document_id
INTO lv_doc_id
FROM apps.fnd_documents
WHERE media_id = lv_media_id;
RETURN lv_doc_id;
EXCEPTION
WHEN OTHERS
THEN
apps.fnd_file.put_line (
apps.FND_FILE.LOG,
'Error in XXTLN_ONE_TIME_ADDRESS procedure' || SQLERRM);
END XXTLN_ONE_TIME_ADDRESS;
/***************************START OF IMPORT
PROCEDURE****************************************************/
PROCEDURE launch_reqimport_program
IS
PRAGMA AUTONOMOUS_TRANSACTION;
-------------------------------
--Local Variables Declaration--
-------------------------------
l_request_id NUMBER;
l_short_code VARCHAR2 (15);
l_user_id NUMBER;
l_resp_id NUMBER;
l_rcv_num VARCHAR2 (100);
l_app_id NUMBER;
l_org_id NUMBER;
l_return_status BOOLEAN;
l_phase VARCHAR2 (100);
l_status VARCHAR2 (100);
l_dev_phase VARCHAR2 (100);
l_dev_status VARCHAR2 (100);
l_processing_status VARCHAR2 (100);
l_errbuf CLOB;
l_batch_id NUMBER;
l_message CLOB;
l_column_name VARCHAR2 (200);
lv_parameter_list wf_parameter_list_t;
CURSOR cur_import_batch (
P_ORG_ID IN NUMBER)
IS
SELECT DISTINCT BATCH_ID
FROM apps.po_requisitions_interface_all
WHERE interface_source_code = lv_order_source
AND PROCESS_FLAG IS NULL
AND ORG_ID = P_ORG_ID;
error_details_tbl cur_req_error%ROWTYPE;
l_counter NUMBER := 0;
BEGIN
l_user_id := NULL;
l_resp_id := NULL;
l_app_id := NULL;
------------------------
--Fetch Org Short Code--
------------------------
BEGIN
SELECT NVL (hou.attribute10, hu.short_code) Short_code
INTO l_short_code
FROM hr_organization_units hou, hr_operating_units hu
WHERE hou.organization_id = hu.organization_id
AND hu.organization_id = lv_org_id;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Unexpected Error while validate Organization Short code'
|| ' '
|| SQLERRM
|| '<br>'
|| CHR (10);
/*lv_parameter_list :=
wf_parameter_list_t (
wf_parameter_t ('INT NAME', 'REQUISITION IMPORT'),
wf_parameter_t ('SOURCE NAME', lv_order_source),
wf_parameter_t ('SEND DATE',
fnd_date.date_to_canonical (SYSDATE)),
wf_parameter_t ('STATUS CODE', 'ERROR'),
wf_parameter_t ('SOLAR ORDER NUMBER', lv_source_order));
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => lv_err_msg,
p_parameters => lv_parameter_list);*/
COMMIT;
END;
---------------------------
--Fetch Resp id and Appl id-
---------------------------
--------------------
--Initialize Apps-
-------------------
---------------------------------------
-- Submitting standard program--
----------------------------------------
IF lv_err_flag = 'N'
THEN
l_batch_id := i.BATCH_ID;
------------------------------------------------------
---- Submitting the Program for Requisition Import----
------------------------------------------------------
l_request_id :=
apps.fnd_request.submit_request (
application => 'PO', -- Application
program => 'REQIMPORT', -- Program
description => 'Requisition Import', -- Program Description
argument1 => lv_order_source, -- Source
argument2 => l_batch_id, -- Argument1
argument3 => 'LOCATION',
--'ALL',LOCATION,
argument4 => NULL,
argument5 => 'N', --multi distirbutions
argument6 => 'Y');
COMMIT;
IF l_request_id = 0
THEN
------------------------------------------------
--- Program failed
-----------------------------------------------
l_errbuf := fnd_message.get;
lv_err_msg := lv_err_msg || l_errbuf;
ELSE
LOOP
l_return_status :=
fnd_concurrent.wait_for_request (l_request_id,
10,
0,
l_phase,
l_status,
l_dev_phase,
l_dev_status,
l_message);
BEGIN
SELECT COUNT (*)
INTO l_counter
FROM po_requisition_lines_all
WHERE request_id = l_request_id;
IF l_counter > 0
THEN
FOR k IN cur_req_update (l_request_id)
LOOP
BEGIN
UPDATE po_requisition_lines_all
SET Note_to_vendor = k.note_to_receiver ||
CHR(10)||'Deliver to : '||
k.attribute5
|| ' '
|| k.attribute6
|| ' '
|| k.attribute7
|| ' '
|| k.attribute8
|| ' '
|| k.attribute9
|| ' '
|| k.attribute10,
attribute5 = NULL,
attribute6 = NULL,
attribute7 = NULL,
attribute8 = NULL,
attribute9 = NULL,
attribute10 = NULL
WHERE REQUISITION_LINE_ID = k.REQUISITION_LINE_ID;
EXCEPTION
WHEN OTHERS
THEN
apps.fnd_file.put_line (
apps.FND_FILE.LOG,
'Error while update Note to Vendor, Please check'
|| SQLERRM);
END;
END LOOP;
END IF;
END;
BEGIN
BEGIN
SELECT PROCESS_FLAG
INTO l_processing_status
FROM apps.po_requisitions_interface_all
WHERE batch_id = l_batch_id;
EXCEPTION
WHEN OTHERS
THEN
l_processing_status := '';
END;
IF l_processing_status = 'ERROR'
THEN
BEGIN
FOR error_details_tbl IN cur_req_error (l_batch_id)
LOOP
l_message :=
l_message
|| error_details_tbl.column_name
|| ' : --> '
|| error_details_tbl.error_message
|| '<br>'
|| CHR (10);
END LOOP;
END;
l_message :=
'Solar Order: '
|| lv_source_order
|| ' succesfully processed in ATLAS';
END IF;
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => l_message,
p_parameters => lv_parameter_list);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Error in checking requisition import details'
|| ''
|| SQLERRM
|| '<br>'
|| CHR (10);
END;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
lv_err_flag := 'E';
lv_err_msg :=
lv_err_msg
|| 'Error in launch program for requisition import'
|| ''
|| SQLERRM
|| '<br>'
|| CHR (10);
END launch_reqimport_program;
/***************************END OF IMPORT
PROCEDURE****************************************************/
/***************************START OF MAIN
PROCEDURE******************************************************/
lv_parameter_list wf_parameter_list_t;
p_req_intr_tbl REQ_INTR_TBL;
l_request_id number;
ln_index number :=1;
--lv_org_id number;
BEGIN
BEGIN
SELECT xxtln.xxtln_i2_interface_logs_s.NEXTVAL
INTO l_interface_id
FROM DUAL;
EXCEPTION
WHEN OTHERS
THEN
x_interface_id := l_interface_id;
x_return_status := 'REJECTED';
x_msg_data :=
'xxtln_i2_req.main: error while inserting data into Log table '
|| SUBSTR (SQLERRM, 1, 250);
update_i2_interface_logs (l_interface_id,
x_return_status,
x_msg_data,
l_request_id);
RETURN;
END;
for req_rec in (
SELECT
EXTRACTVALUE (VALUE (p), '/row/ TRANSACTION_ID/text()') AS TRANSACTION_ID,
EXTRACTVALUE (VALUE (p), '/row/ PROCESS_FLAG/text()') AS PROCESS_FLAG,
EXTRACTVALUE (VALUE (p), '/row/ REQUEST_ID/text()') AS REQUEST_ID,
EXTRACTVALUE (VALUE (p), '/row/ PROGRAM_ID/text()') AS PROGRAM_ID,
EXTRACTVALUE (VALUE (p), '/row/ PROGRAM_APPLICATION_ID/text()') AS
PROGRAM_APPLICATION_ID,
EXTRACTVALUE (VALUE (p), '/row/ PROGRAM_UPDATE_DATE/text()') AS
PROGRAM_UPDATE_DATE,
EXTRACTVALUE (VALUE (p), '/row/ LAST_UPDATED_BY/text()') AS
LAST_UPDATED_BY,
EXTRACTVALUE (VALUE (p), '/row/ LAST_UPDATE_DATE/text()') AS
LAST_UPDATE_DATE,
EXTRACTVALUE (VALUE (p), '/row/ LAST_UPDATE_LOGIN/text()') AS
LAST_UPDATE_LOGIN,
EXTRACTVALUE (VALUE (p), '/row/ CREATION_DATE/text()') AS
CREATION_DATE,
EXTRACTVALUE (VALUE (p), '/row/ CREATED_BY/text()') AS CREATED_BY,
EXTRACTVALUE (VALUE (p), '/row/ INTERFACE_SOURCE_CODE/text()') AS
INTERFACE_SOURCE_CODE,
EXTRACTVALUE (VALUE (p), '/row/ SOURCE_TYPE_CODE/text()') AS
SOURCE_TYPE_CODE,
EXTRACTVALUE (VALUE (p), '/row/ REQUISITION_LINE_ID/text()') AS
REQUISITION_LINE_ID,
EXTRACTVALUE (VALUE (p), '/row/ REQ_DISTRIBUTION_ID/text()') AS
REQ_DISTRIBUTION_ID,
EXTRACTVALUE (VALUE (p), '/row/ REQUISITION_TYPE/text()') AS
REQUISITION_TYPE,
EXTRACTVALUE (VALUE (p), '/row/ DESTINATION_TYPE_CODE/text()') AS
DESTINATION_TYPE_CODE,
EXTRACTVALUE (VALUE (p), '/row/ ITEM_DESCRIPTION/text()') AS
ITEM_DESCRIPTION,
EXTRACTVALUE (VALUE (p), '/row/ QUANTITY /text()') AS QUANTITY ,
EXTRACTVALUE (VALUE (p), '/row/ UNIT_PRICE /text()') AS UNIT_PRICE ,
EXTRACTVALUE (VALUE (p), '/row/ AUTHORIZATION_STATUS /text()') AS
AUTHORIZATION_STATUS ,
EXTRACTVALUE (VALUE (p), '/row/ BATCH_ID /text()') AS BATCH_ID ,
EXTRACTVALUE (VALUE (p), '/row/ APPROVER_ID /text()') AS APPROVER_ID ,
EXTRACTVALUE (VALUE (p), '/row/ PREPARER_ID /text()') AS PREPARER_ID ,
EXTRACTVALUE (VALUE (p), '/row/ AUTOSOURCE_FLAG /text()') AS
AUTOSOURCE_FLAG ,
EXTRACTVALUE (VALUE (p), '/row/ HEADER_DESCRIPTION /text()') AS
HEADER_DESCRIPTION ,
EXTRACTVALUE (VALUE (p), '/row/ RFQ_REQUIRED_FLAG /text()') AS
RFQ_REQUIRED_FLAG ,
EXTRACTVALUE (VALUE (p), '/row/ ITEM_ID /text()') AS ITEM_ID ,
EXTRACTVALUE (VALUE (p), '/row/ CATEGORY_ID /text()') AS CATEGORY_ID ,
EXTRACTVALUE (VALUE (p), '/row/ UNIT_OF_MEASURE /text()') AS
UNIT_OF_MEASURE ,
EXTRACTVALUE (VALUE (p), '/row/ UOM_CODE /text()') AS UOM_CODE ,
EXTRACTVALUE (VALUE (p), '/row/ LINE_TYPE_ID /text()') AS
LINE_TYPE_ID ,
EXTRACTVALUE (VALUE (p), '/row/ PROJECT_NUM /text()') AS PROJECT_NUM ,
EXTRACTVALUE (VALUE (p), '/row/ TASK_NUM /text()') AS TASK_NUM ,
EXTRACTVALUE (VALUE (p), '/row/ EXPENDITURE_TYPE /text()') AS
EXPENDITURE_TYPE ,
EXTRACTVALUE (VALUE (p), '/row/ DESTINATION_ORGANIZATION_ID /text()') AS
DESTINATION_ORGANIZATION_ID ,
EXTRACTVALUE (VALUE (p), '/row/ DELIVER_TO_LOCATION_ID /text()') AS
DELIVER_TO_LOCATION_ID ,
EXTRACTVALUE (VALUE (p), '/row/ DELIVER_TO_REQUESTOR_ID /text()') AS
DELIVER_TO_REQUESTOR_ID ,
EXTRACTVALUE (VALUE (p), '/row/ SUGGESTED_BUYER_ID /text()') AS
SUGGESTED_BUYER_ID ,
EXTRACTVALUE (VALUE (p), '/row/ SUGGESTED_BUYER_NAME /text()') AS
SUGGESTED_BUYER_NAME ,
EXTRACTVALUE (VALUE (p), '/row/ SUGGESTED_VENDOR_NAME /text()') AS
SUGGESTED_VENDOR_NAME ,
EXTRACTVALUE (VALUE (p), '/row/ SUGGESTED_VENDOR_ID /text()') AS
SUGGESTED_VENDOR_ID ,
EXTRACTVALUE (VALUE (p), '/row/ SUGGESTED_VENDOR_SITE /text()') AS
SUGGESTED_VENDOR_SITE ,
EXTRACTVALUE (VALUE (p), '/row/ SUGGESTED_VENDOR_SITE_ID /text()') AS
SUGGESTED_VENDOR_SITE_ID ,
EXTRACTVALUE (VALUE (p), '/row/ SUGGESTED_VENDOR_ITEM_NUM /text()') AS
SUGGESTED_VENDOR_ITEM_NUM ,
EXTRACTVALUE (VALUE (p), '/row/ LINE_ATTRIBUTE5 /text()') AS
LINE_ATTRIBUTE5 ,
EXTRACTVALUE (VALUE (p), '/row/ LINE_ATTRIBUTE6 /text()') AS
LINE_ATTRIBUTE6 ,
EXTRACTVALUE (VALUE (p), '/row/ LINE_ATTRIBUTE7 /text()') AS
LINE_ATTRIBUTE7 ,
EXTRACTVALUE (VALUE (p), '/row/ LINE_ATTRIBUTE8 /text()') AS
LINE_ATTRIBUTE8 ,
EXTRACTVALUE (VALUE (p), '/row/ LINE_ATTRIBUTE9 /text()') AS
LINE_ATTRIBUTE9 ,
EXTRACTVALUE (VALUE (p), '/row/ NEED_BY_DATE /text()') AS
NEED_BY_DATE ,
EXTRACTVALUE (VALUE (p), '/row/ NOTE1_ID /text()') AS NOTE1_ID ,
EXTRACTVALUE (VALUE (p), '/row/ DISTRIBUTION_ATTRIBUTE14 /text()') AS
DISTRIBUTION_ATTRIBUTE14 ,
EXTRACTVALUE (VALUE (p), '/row/ DISTRIBUTION_ATTRIBUTE15 /text()') AS
DISTRIBUTION_ATTRIBUTE15 ,
EXTRACTVALUE (VALUE (p), '/row/ ACCRUAL_ACCOUNT_ID /text()') AS
ACCRUAL_ACCOUNT_ID ,
EXTRACTVALUE (VALUE (p), '/row/ CURRENCY_CODE /text()') AS
CURRENCY_CODE ,
EXTRACTVALUE (VALUE (p), '/row/ CURRENCY_UNIT_PRICE /text()') AS
CURRENCY_UNIT_PRICE ,
EXTRACTVALUE (VALUE (p), '/row/ RATE /text()') AS RATE ,
EXTRACTVALUE (VALUE (p), '/row/ RATE_DATE /text()') AS RATE_DATE ,
EXTRACTVALUE (VALUE (p), '/row/ RATE_TYPE /text()') AS RATE_TYPE ,
EXTRACTVALUE (VALUE (p), '/row/ AUTOSOURCE_DOC_HEADER_ID /text()') AS
AUTOSOURCE_DOC_HEADER_ID ,
EXTRACTVALUE (VALUE (p), '/row/ AUTOSOURCE_DOC_LINE_NUM /text()') AS
AUTOSOURCE_DOC_LINE_NUM ,
EXTRACTVALUE (VALUE (p), '/row/ PROJECT_ACCOUNTING_CONTEXT /text()') AS
PROJECT_ACCOUNTING_CONTEXT ,
EXTRACTVALUE (VALUE (p), '/row/ EXPENDITURE_ORGANIZATION_ID /text()') AS
EXPENDITURE_ORGANIZATION_ID ,
EXTRACTVALUE (VALUE (p), '/row/ PROJECT_ID /text()') AS PROJECT_ID ,
EXTRACTVALUE (VALUE (p), '/row/ TASK_ID /text()') AS TASK_ID ,
EXTRACTVALUE (VALUE (p), '/row/ EXPENDITURE_ITEM_DATE /text()') AS
EXPENDITURE_ITEM_DATE ,
EXTRACTVALUE (VALUE (p), '/row/ DOCUMENT_TYPE_CODE /text()') AS
DOCUMENT_TYPE_CODE ,
EXTRACTVALUE (VALUE (p), '/row/ ORG_ID /text()') AS ORG_ID ,
EXTRACTVALUE (VALUE (p), '/row/ EMERGENCY_PO_NUM /text()') AS
EMERGENCY_PO_NUM
FROM TABLE(XMLSEQUENCE(EXTRACT(p_xml, '/ReqImport/row'))) p )
loop
--p_req_intr_tbl(ln_index).TRANSACTION_ID:= req_rec.TRANSACTION_ID;
p_req_intr_tbl(ln_index).PROCESS_FLAG:= req_rec.PROCESS_FLAG;
--p_req_intr_tbl(ln_index).REQUEST_ID:= req_rec.REQUEST_ID;
--p_req_intr_tbl(ln_index).PROGRAM_ID:= req_rec.PROGRAM_ID;
--p_req_intr_tbl(ln_index).PROGRAM_APPLICATION_ID:=
req_rec.PROGRAM_APPLICATION_ID;
--p_req_intr_tbl(ln_index).PROGRAM_UPDATE_DATE:=
req_rec.PROGRAM_UPDATE_DATE;
--p_req_intr_tbl(ln_index).LAST_UPDATED_BY:= req_rec.LAST_UPDATED_BY;
--p_req_intr_tbl(ln_index).LAST_UPDATE_DATE:= req_rec.LAST_UPDATE_DATE;
--p_req_intr_tbl(ln_index).LAST_UPDATE_LOGIN:=
req_rec.LAST_UPDATE_LOGIN;
--p_req_intr_tbl(ln_index).CREATION_DATE:= req_rec.CREATION_DATE;
--p_req_intr_tbl(ln_index).CREATED_BY:= req_rec.CREATED_BY;
p_req_intr_tbl(ln_index).INTERFACE_SOURCE_CODE:=
req_rec.INTERFACE_SOURCE_CODE;
p_req_intr_tbl(ln_index).SOURCE_TYPE_CODE:= req_rec.SOURCE_TYPE_CODE;
--p_req_intr_tbl(ln_index).REQUISITION_LINE_ID:=
req_rec.REQUISITION_LINE_ID;
--p_req_intr_tbl(ln_index).REQ_DISTRIBUTION_ID:=
req_rec.REQ_DISTRIBUTION_ID;
p_req_intr_tbl(ln_index).REQUISITION_TYPE:= req_rec.REQUISITION_TYPE;
p_req_intr_tbl(ln_index).DESTINATION_TYPE_CODE:=
req_rec.DESTINATION_TYPE_CODE;
p_req_intr_tbl(ln_index).ITEM_DESCRIPTION:= req_rec.ITEM_DESCRIPTION;
p_req_intr_tbl(ln_index).QUANTITY:= req_rec.QUANTITY;
p_req_intr_tbl(ln_index).UNIT_PRICE:= req_rec.UNIT_PRICE;
p_req_intr_tbl(ln_index).AUTHORIZATION_STATUS:=
req_rec.AUTHORIZATION_STATUS;
--p_req_intr_tbl(ln_index).BATCH_ID:= req_rec.BATCH_ID;
--p_req_intr_tbl(ln_index).APPROVER_ID:= req_rec.APPROVER_ID;
--p_req_intr_tbl(ln_index).PREPARER_ID:= req_rec.PREPARER_ID;
p_req_intr_tbl(ln_index).AUTOSOURCE_FLAG:= req_rec.AUTOSOURCE_FLAG;
p_req_intr_tbl(ln_index).HEADER_DESCRIPTION:=
req_rec.HEADER_DESCRIPTION;
p_req_intr_tbl(ln_index).RFQ_REQUIRED_FLAG:= req_rec.RFQ_REQUIRED_FLAG;
--p_req_intr_tbl(ln_index).ITEM_ID:= req_rec.ITEM_ID;
--p_req_intr_tbl(ln_index).CATEGORY_ID:= req_rec.CATEGORY_ID;
--p_req_intr_tbl(ln_index).UNIT_OF_MEASURE:= req_rec.UNIT_OF_MEASURE;
p_req_intr_tbl(ln_index).UOM_CODE:= req_rec.UOM_CODE;
--p_req_intr_tbl(ln_index).LINE_TYPE_ID:= req_rec.LINE_TYPE_ID;
p_req_intr_tbl(ln_index).PROJECT_NUM:= req_rec.PROJECT_NUM;
p_req_intr_tbl(ln_index).TASK_NUM:= req_rec.TASK_NUM;
p_req_intr_tbl(ln_index).EXPENDITURE_TYPE:= req_rec.EXPENDITURE_TYPE;
--p_req_intr_tbl(ln_index).DESTINATION_ORGANIZATION_ID:=
req_rec.DESTINATION_ORGANIZATION_ID;
--p_req_intr_tbl(ln_index).DELIVER_TO_LOCATION_ID:=
req_rec.DELIVER_TO_LOCATION_ID;
--p_req_intr_tbl(ln_index).DELIVER_TO_REQUESTOR_ID:=
req_rec.DELIVER_TO_REQUESTOR_ID;
--p_req_intr_tbl(ln_index).SUGGESTED_BUYER_ID:=
req_rec.SUGGESTED_BUYER_ID;
p_req_intr_tbl(ln_index).SUGGESTED_BUYER_NAME:=
req_rec.SUGGESTED_BUYER_NAME;
p_req_intr_tbl(ln_index).SUGGESTED_VENDOR_NAME:=
req_rec.SUGGESTED_VENDOR_NAME;
--p_req_intr_tbl(ln_index).SUGGESTED_VENDOR_ID:=
req_rec.SUGGESTED_VENDOR_ID;
p_req_intr_tbl(ln_index).SUGGESTED_VENDOR_SITE:=
req_rec.SUGGESTED_VENDOR_SITE;
--p_req_intr_tbl(ln_index).SUGGESTED_VENDOR_SITE_ID:=
req_rec.SUGGESTED_VENDOR_SITE_ID;
p_req_intr_tbl(ln_index).SUGGESTED_VENDOR_ITEM_NUM:=
req_rec.SUGGESTED_VENDOR_ITEM_NUM;
p_req_intr_tbl(ln_index).LINE_ATTRIBUTE5:= req_rec.LINE_ATTRIBUTE5;
p_req_intr_tbl(ln_index).LINE_ATTRIBUTE6:= req_rec.LINE_ATTRIBUTE6;
p_req_intr_tbl(ln_index).LINE_ATTRIBUTE7:= req_rec.LINE_ATTRIBUTE7;
p_req_intr_tbl(ln_index).LINE_ATTRIBUTE8:= req_rec.LINE_ATTRIBUTE8;
p_req_intr_tbl(ln_index).LINE_ATTRIBUTE9:= req_rec.LINE_ATTRIBUTE9;
p_req_intr_tbl(ln_index).NEED_BY_DATE:= req_rec.NEED_BY_DATE;
--p_req_intr_tbl(ln_index).NOTE1_ID:= req_rec.NOTE1_ID;
--p_req_intr_tbl(ln_index).DISTRIBUTION_ATTRIBUTE14:=
req_rec.DISTRIBUTION_ATTRIBUTE14;
--p_req_intr_tbl(ln_index).DISTRIBUTION_ATTRIBUTE15:=
req_rec.DISTRIBUTION_ATTRIBUTE15;
--p_req_intr_tbl(ln_index).ACCRUAL_ACCOUNT_ID:=
req_rec.ACCRUAL_ACCOUNT_ID;
p_req_intr_tbl(ln_index).CURRENCY_CODE:= req_rec.CURRENCY_CODE;
p_req_intr_tbl(ln_index).CURRENCY_UNIT_PRICE:=
req_rec.CURRENCY_UNIT_PRICE;
p_req_intr_tbl(ln_index).RATE:= req_rec.RATE;
p_req_intr_tbl(ln_index).RATE_DATE:= req_rec.RATE_DATE;
p_req_intr_tbl(ln_index).RATE_TYPE:= req_rec.RATE_TYPE;
--p_req_intr_tbl(ln_index).AUTOSOURCE_DOC_HEADER_ID:=
req_rec.AUTOSOURCE_DOC_HEADER_ID;
p_req_intr_tbl(ln_index).AUTOSOURCE_DOC_LINE_NUM:=
req_rec.AUTOSOURCE_DOC_LINE_NUM;
p_req_intr_tbl(ln_index).PROJECT_ACCOUNTING_CONTEXT:=
req_rec.PROJECT_ACCOUNTING_CONTEXT;
--p_req_intr_tbl(ln_index).EXPENDITURE_ORGANIZATION_ID:=
req_rec.EXPENDITURE_ORGANIZATION_ID;
--p_req_intr_tbl(ln_index).PROJECT_ID:= req_rec.PROJECT_ID;
--p_req_intr_tbl(ln_index).TASK_ID:= req_rec.TASK_ID;
p_req_intr_tbl(ln_index).EXPENDITURE_ITEM_DATE:=
req_rec.EXPENDITURE_ITEM_DATE;
--p_req_intr_tbl(ln_index).DOCUMENT_TYPE_CODE:=
req_rec.DOCUMENT_TYPE_CODE;
--p_req_intr_tbl(ln_index).ORG_ID:= req_rec.ORG_ID;
--p_req_intr_tbl(ln_index).EMERGENCY_PO_NUM:= req_rec.EMERGENCY_PO_NUM;
end loop;
-----------------------
--INITIALIZE VARIABLE--
-----------------------
lv_err_flag := 'N';
-------------------------
--CALL INSERT PROCEDURE--
-------------------------
XXTLN_REQU_INSERT (p_req_intr_tbl, X_RETURN_STATUS);
--COMMIT;
--------------------------
--CALL UPDATE PROCEDURE--
--------------------------
IF lv_err_flag = 'N'
THEN
XXTLN_REQU_UPDATE (p_req_intr_tbl);
--COMMIT;
END IF;
---------------------------------------
----CALL REQUISITION IMPORT PROGRAM----
---------------------------------------
IF lv_err_flag = 'N'
THEN
launch_reqimport_program;
END IF;
---------------------------------------
----RAISE BUSINESS EVENT FOR ERROR-----
---------------------------------------
wf_event.raise (
p_event_name => 'xxtln.oracle.apps.generic.error.inbound',
p_event_key => SYS_GUID (),
p_event_data => lv_err_msg,
p_parameters => lv_parameter_list);
--COMMIT;
END IF;
x_msg_data := 'PROCESSED';
--p_retcode := 1;
lv_err_msg := NULL;
lv_err_flag := 'N';
END;
/***************************END OF MAIN
PROCEDURE******************************************************/
END XXTLN_I2_REQU_IMPORT_PKG;
/