Blanket Purchase Agreement Conversion
Table....
-------------------------------------------------------------------------------------------
-- Table Name : XXAK_BPA_CONV_HDR_STG
-- Author's name : Srikanth Yarram
-- Date written :
-- RICE Object id : C4
-- Description : Staging table creation Script for Blanket PO's Data
-- Program Style :
--
-- Maintenance History :
--
-- Date Name Remarks
-- ----------- ---------------------- ------------------------------------------
-- 06-08-2013 Srikanth Yarram Initial version
-------------------------------------------------------------------------------------------
CREATE TABLE XXAK_BPA_CONV_HDR_STG
( BATCH_NAME VARCHAR2(100),
DOCUMENT_NUM VARCHAR2(20),
REVISION_NUM NUMBER,
VENDOR_NAME VARCHAR2(240),
VENDOR_SITE VARCHAR2(60),
VENDOR_CONTACT VARCHAR2(240),
SHIP_TO_LOCATION VARCHAR2(60),
BILL_TO_LOCATION VARCHAR2(60),
AGENT_BUYER_NAME VARCHAR2(240),
COMMENTS VARCHAR2(240),
FREIGHT_TERMS VARCHAR2(25),
FREIGHT_CARRIER VARCHAR2(60),
FOB VARCHAR2(50),
PAY_ON_RECEIPT VARCHAR2(1),
NOTE_TO_VENDOR VARCHAR2(480),
NOTE_TO_RECEIVER VARCHAR2(480),
START_DATE DATE,
END_DATE DATE,
AMT_LIMIT NUMBER,
CURRENCY VARCHAR2(10),
DOCUMENT_TYPE_CODE VARCHAR2(50),
VENDOR_ID NUMBER,
VENDOR_SITE_ID NUMBER,
VENDOR_CONTACT_ID NUMBER,
SHIP_TO_LOCATION_ID NUMBER,
BILL_TO_LOCATION_ID NUMBER,
AGENT_ID NUMBER,
FREIGHT_CODE VARCHAR2(20),
PAYMENT_TERMS VARCHAR2(50),
ORG_NAME VARCHAR2(20),
ORG_ID NUMBER,
TERM_ID VARCHAR2(50),
ACTION VARCHAR2(50),
TERMS_ID VARCHAR2(50),
REQUEST_ID NUMBER,
ERROR_CODE NUMBER,
ERROR_DESC VARCHAR2(1000),
PROCESS_CODE VARCHAR2(30),
CREATION_DATE DATE,
CREATED_BY NUMBER,
LAST_UPDATED_DATE DATE,
LAST_UPDATED_BY NUMBER,
LAST_UPDATE_LOGIN NUMBER
)
/
GRANT ALL ON xxak.XXAK_BPA_CONV_HDR_STG TO APPS
/
-------------------------------------------------------------------------------------------
-- Table Name : XXAK_BPA_CONV_LINE_STG
-- Author's name : Srikanth Yarram
-- Date written :
-- RICE Object id : C4
-- Description : Staging table creation Script for Blanket PO's Data
-- Program Style :
--
-- Maintenance History :
--
-- Date Name Remarks
-- ----------- ---------------------- ------------------------------------------
-- 06-08-2013 Srikanth Yarram Initial version
-------------------------------------------------------------------------------------------
CREATE TABLE XXAK_BPA_CONV_LINE_STG
(
BATCH_NAME VARCHAR2(100),
DOCUMENT_NUM VARCHAR2(20),
LINE_NUM NUMBER,
LINE_TYPE VARCHAR2(25),
ITEM VARCHAR2(40),
ITEM_DESCRIPTION VARCHAR2(400),
CATEGORY_SEGMENT VARCHAR2(40),
UOM_CODE VARCHAR2(3),
UNIT_PRICE NUMBER,
SUPPLIER_ITEM VARCHAR(50),
NOTE_TO_VENDOR VARCHAR2(480),
MIN_RELEASE_AMOUNT NUMBER,
QUANTITY_COMMITTED NUMBER,
COMMITTED_AMOUNT NUMBER,
PRICE_BREAK_SHIP_TO_ORG VARCHAR2(60),
PRICE_BREAK_SHIP_TO_LOCATION VARCHAR2(60),
PRICE_BREAK_QUANTITY NUMBER,
PRICE_BREAK_START_DATE DATE,
PRICE_BREAK_END_DATE DATE,
OVERRIDE_PRICE NUMBER,
PRICE_DISCOUNT NUMBER,
SHIPMENT_NUM NUMBER,
LINE_TYPE_ID NUMBER,
INVENTORY_ITEM_ID NUMBER,
PRICE_BREAK_SHIP_TO_ORG_ID NUMBER,
PRICE_BREAK_SHIP_TO_LOC_ID NUMBER,
UNIT_OF_MEASURE VARCHAR2(20),
CATEGORY_ID VARCHAR2(50),
ITEM_ID NUMBER,
FREIGHT_CARRIER VARCHAR2(30),
TERMS_ID VARCHAR2(50),
REQUEST_ID NUMBER,
ERROR_CODE NUMBER,
ERROR_DESC VARCHAR2(400),
PROCESS_CODE VARCHAR2(30),
CREATION_DATE DATE,
CREATED_BY NUMBER,
LAST_UPDATE_DATE DATE,
LAST_UPDATED_BY NUMBER,
LAST_UPDATE_LOGIN NUMBER
)
/
GRANT ALL ON xxak.XXAK_BPA_CONV_LINE_STG TO APPS
/
-------------------------------------------------------------------------------------------
-- Table Name : XXAK_BPA_CONV_HDR_ARCH
-- Author's name : Srikanth Yarram
-- Date written :
-- RICE Object id : C4
-- Description : Archive table creation Script for Blanket PO's Header and Contract PO's Header Data
-- Program Style :
--
-- Maintenance History :
--
-- Date Name Remarks
-- ----------- ---------------------- ------------------------------------------
-- 06-08-2013 Srikanth Yarram Initial version
-------------------------------------------------------------------------------------------
CREATE TABLE XXAK_BPA_CONV_HDR_ARCH
( BATCH_NAME VARCHAR2(100),
DOCUMENT_NUM VARCHAR2(20),
REVISION_NUM NUMBER,
VENDOR_NAME VARCHAR2(240),
VENDOR_SITE VARCHAR2(60),
VENDOR_CONTACT VARCHAR2(240),
SHIP_TO_LOCATION VARCHAR2(60),
BILL_TO_LOCATION VARCHAR2(60),
AGENT_BUYER_NAME VARCHAR2(240),
COMMENTS VARCHAR2(240),
FREIGHT_TERMS VARCHAR2(25),
FREIGHT_CARRIER VARCHAR2(60),
FOB VARCHAR2(50),
PAY_ON_RECEIPT VARCHAR2(1),
NOTE_TO_VENDOR VARCHAR2(480),
NOTE_TO_RECEIVER VARCHAR2(480),
START_DATE DATE,
END_DATE DATE,
AMT_LIMIT NUMBER,
CURRENCY VARCHAR2(10),
DOCUMENT_TYPE_CODE VARCHAR2(50),
VENDOR_ID NUMBER,
VENDOR_SITE_ID NUMBER,
VENDOR_CONTACT_ID NUMBER,
SHIP_TO_LOCATION_ID NUMBER,
BILL_TO_LOCATION_ID NUMBER,
AGENT_ID NUMBER,
FREIGHT_CODE VARCHAR2(20),
PAYMENT_TERMS VARCHAR2(50),
ORG_NAME VARCHAR2(20),
ORG_ID NUMBER,
TERM_ID VARCHAR2(50),
ACTION VARCHAR2(50),
TERMS_ID VARCHAR2(50),
REQUEST_ID NUMBER,
ERROR_CODE NUMBER,
ERROR_DESC VARCHAR2(1000),
PROCESS_CODE VARCHAR2(30),
CREATION_DATE DATE,
CREATED_BY NUMBER,
LAST_UPDATED_DATE DATE,
LAST_UPDATED_BY NUMBER,
LAST_UPDATE_LOGIN NUMBER
)
/
GRANT ALL ON xxak.XXAK_BPA_CONV_HDR_ARCH TO APPS
/
-------------------------------------------------------------------------------------------
-- Table Name : XXAK_BPA_CONV_LINE_ARCH
-- Author's name : Srikanth Yarram
-- Date written :
-- RICE Object id : C4
-- Description : Archive table creation Script for Blanket PO's Line Data
-- Program Style :
--
-- Maintenance History :
--
-- Date Name Remarks
-- ----------- ---------------------- ------------------------------------------
-- 06-08-2013 Srikanth Yarram Initial version
-------------------------------------------------------------------------------------------
CREATE TABLE XXAK_BPA_CONV_LINE_ARCH
(
BATCH_NAME VARCHAR2(100),
DOCUMENT_NUM VARCHAR2(20),
LINE_NUM NUMBER,
LINE_TYPE VARCHAR2(25),
ITEM VARCHAR2(40),
ITEM_DESCRIPTION VARCHAR2(400),
CATEGORY_SEGMENT VARCHAR2(40),
UOM_CODE VARCHAR2(3),
UNIT_PRICE NUMBER,
SUPPLIER_ITEM VARCHAR(50),
NOTE_TO_VENDOR VARCHAR2(480),
MIN_RELEASE_AMOUNT NUMBER,
QUANTITY_COMMITTED NUMBER,
COMMITTED_AMOUNT NUMBER,
PRICE_BREAK_SHIP_TO_ORG VARCHAR2(60),
PRICE_BREAK_SHIP_TO_LOCATION VARCHAR2(60),
PRICE_BREAK_QUANTITY NUMBER,
PRICE_BREAK_START_DATE DATE,
PRICE_BREAK_END_DATE DATE,
OVERRIDE_PRICE NUMBER,
PRICE_DISCOUNT NUMBER,
SHIPMENT_NUM NUMBER,
LINE_TYPE_ID NUMBER,
INVENTORY_ITEM_ID NUMBER,
PRICE_BREAK_SHIP_TO_ORG_ID NUMBER,
PRICE_BREAK_SHIP_TO_LOC_ID NUMBER,
UNIT_OF_MEASURE VARCHAR2(20),
CATEGORY_ID VARCHAR2(50),
ITEM_ID NUMBER,
FREIGHT_CARRIER VARCHAR2(30),
TERMS_ID VARCHAR2(50),
REQUEST_ID NUMBER,
ERROR_CODE NUMBER,
ERROR_DESC VARCHAR2(400),
PROCESS_CODE VARCHAR2(30),
CREATION_DATE DATE,
CREATED_BY NUMBER,
LAST_UPDATE_DATE DATE,
LAST_UPDATED_BY NUMBER,
LAST_UPDATE_LOGIN NUMBER
)
/
GRANT ALL ON xxak.XXAK_BPA_CONV_LINE_ARCH TO APPS
/
======================================
Control File...
Headers:
OPTIONS (SKIP=1)
LOAD DATA
INFILE '&1'
---TRUNCATE
REPLACE
INTO TABLE XXAK_BPA_CONV_HDR_STG
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
BATCH_NAME "TRIM(:BATCH_NAME)"
,DOCUMENT_NUM "TRIM(:DOCUMENT_NUM)"
,REVISION_NUM "TRIM(:REVISION_NUM)"
,VENDOR_NAME "TRIM(:VENDOR_NAME)"
,VENDOR_SITE "TRIM(:VENDOR_SITE)"
,VENDOR_CONTACT "TRIM(:VENDOR_CONTACT)"
,SHIP_TO_LOCATION "TRIM(:SHIP_TO_LOCATION)"
,BILL_TO_LOCATION "TRIM(:BILL_TO_LOCATION)"
,AGENT_BUYER_NAME "TRIM(:AGENT_BUYER_NAME)"
,COMMENTS "TRIM(:COMMENTS)"
,FREIGHT_TERMS "TRIM(:FREIGHT_TERMS)"
,FREIGHT_CARRIER "TRIM(:FREIGHT_CARRIER)"
,FOB "TRIM(:FOB)"
,PAY_ON_RECEIPT "TRIM(:PAY_ON_RECEIPT)"
,NOTE_TO_VENDOR "TRIM(:NOTE_TO_VENDOR)"
,NOTE_TO_RECEIVER "TRIM(:NOTE_TO_RECEIVER)"
,START_DATE "TO_DATE(TRIM(:START_DATE),'YYYY/MM/DD')"
,END_DATE "TO_DATE(TRIM(:END_DATE),'YYYY/MM/DD')"
,AMT_LIMIT "TRIM(:AMT_LIMIT)"
--,CURRENCY "TRIM(:CURRENCY)"
,DOCUMENT_TYPE_CODE CONSTANT 'BLANKET'
,CREATION_DATE SYSDATE
,CREATED_BY "FND_GLOBAL.USER_ID"
,LAST_UPDATED_DATE SYSDATE
,LAST_UPDATED_BY "FND_GLOBAL.USER_ID"
,LAST_UPDATE_LOGIN "FND_GLOBAL.USER_ID"
)
Lines:
OPTIONS (SKIP=1)
LOAD DATA
INFILE '&1'
---TRUNCATE
REPLACE
INTO TABLE XXAK_BPA_CONV_LINE_STG
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
BATCH_NAME "TRIM(:BATCH_NAME)"
,DOCUMENT_NUM "TRIM(:DOCUMENT_NUM)"
,LINE_NUM "TRIM(:LINE_NUM)"
,LINE_TYPE "TRIM(:LINE_TYPE)"
,ITEM "TRIM(:ITEM)"
,ITEM_DESCRIPTION "TRIM(:ITEM_DESCRIPTION)"
,CATEGORY_SEGMENT "TRIM(:CATEGORY_SEGMENT)"
,UOM_CODE "TRIM(:UOM_CODE)"
,UNIT_PRICE "TRIM(:UNIT_PRICE)"
,SUPPLIER_ITEM "TRIM(:SUPPLIER_ITEM)"
,NOTE_TO_VENDOR "TRIM(:NOTE_TO_VENDOR)"
,MIN_RELEASE_AMOUNT "TRIM(:MIN_RELEASE_AMOUNT)"
,QUANTITY_COMMITTED "TRIM(:QUANTITY_COMMITTED)"
,COMMITTED_AMOUNT "TRIM(:COMMITTED_AMOUNT)"
,PRICE_BREAK_SHIP_TO_ORG "TRIM(:PRICE_BREAK_SHIP_TO_ORG)"
,PRICE_BREAK_SHIP_TO_LOCATION "TRIM(:PRICE_BREAK_SHIP_TO_LOCATION)"
,PRICE_BREAK_QUANTITY "TRIM(:PRICE_BREAK_QUANTITY)"
,PRICE_BREAK_START_DATE "TO_DATE(TRIM(:PRICE_BREAK_START_DATE),'RRRR/MM/DD')"
,PRICE_BREAK_END_DATE "TO_DATE(TRIM(:PRICE_BREAK_END_DATE),'RRRR/MM/DD')"
,OVERRIDE_PRICE "TRIM(:OVERRIDE_PRICE)"
,PRICE_DISCOUNT "TRIM(:PRICE_DISCOUNT)"
,CREATION_DATE SYSDATE
,CREATED_BY "FND_GLOBAL.USER_ID"
,LAST_UPDATE_DATE SYSDATE
,LAST_UPDATED_BY "FND_GLOBAL.USER_ID"
,LAST_UPDATE_LOGIN "FND_GLOBAL.USER_ID"
)
Package:
create or replace
PACKAGE XXAK_PO_CNV_04_IMPORT_BPA_PKG
AS
g_stage VARCHAR2 (2000);
g_batch_name VARCHAR2 (20);
g_request_id NUMBER;
g_vendor_id NUMBER;
g_operating_unit NUMBER := 126;
c_freight_lookup_type CONSTANT VARCHAR2 (200) := 'FREIGHT TERMS';
c_std_doc_type_code CONSTANT VARCHAR2 (200) := 'STANDARD';
c_shipment_type CONSTANT VARCHAR2 (200) := 'PRICE BREAK';
c_enabled_flag CONSTANT VARCHAR2 (200) := 'Y';
c_fob CONSTANT VARCHAR2 (200) := 'FOB';
c_appl_short_name CONSTANT VARCHAR2 (200) := 'PO';
c_po_num_exist CONSTANT VARCHAR2 (200) := '~ PO Number Already Exists';
c_header_int_name CONSTANT VARCHAR2 (200) := 'PO_HEADERS_INTERFACE';
c_line_int_name CONSTANT VARCHAR2 (200) := 'PO_LINES_INTERFACE';
c_dist_int_name CONSTANT VARCHAR2 (200) := 'PO_DISTRIBUTIONS_INTERFACE';
c_reject_process_code CONSTANT VARCHAR2 (200) := 'REJECTED';
c_val_upl_flag CONSTANT VARCHAR2 (200) := 'U';
c_revision_number NUMBER := 0;
PROCEDURE mark_records_for_processing (
p_batch_name IN VARCHAR2);
PROCEDURE set_stage (
p_stage IN VARCHAR2);
FUNCTION pre_validations (
p_batch_name IN VARCHAR2)
RETURN NUMBER;
FUNCTION data_val_headers (
px_po_header_rec IN OUT xxak_bpa_conv_hdr_stg%ROWTYPE)
RETURN NUMBER;
PROCEDURE update_header_records (
p_po_header_tab IN xxak_bpa_conv_hdr_stg%ROWTYPE);
FUNCTION data_val_lines (
px_po_lines_rec IN OUT xxak_bpa_conv_line_stg%ROWTYPE)
RETURN NUMBER;
PROCEDURE update_lines_records (
p_po_lines_rec IN xxak_bpa_conv_line_stg%ROWTYPE
, p_line_no IN NUMBER);
/*FUNCTION data_val_distributions (
px_distributions_rec IN OUT xxpo_po_distributions_stg%ROWTYPE)
RETURN NUMBER;
PROCEDURE update_distribution_records (
p_distributions_rec IN xxpo_po_distributions_stg%ROWTYPE);*/
FUNCTION update_preval_stg_rec (
p_batch_name IN VARCHAR2
, p_status IN VARCHAR2)
RETURN NUMBER;
PROCEDURE update_header_status (
p_batch_name IN VARCHAR2);
FUNCTION process_data
RETURN VARCHAR2;
PROCEDURE mark_records_complete (
p_process_code IN VARCHAR2);
PROCEDURE data_stats_err_msg_report (
p_batch_name IN VARCHAR2
, p_val_upl_flag IN VARCHAR2);
PROCEDURE main (
p_errbuf OUT VARCHAR2
, p_retcode OUT VARCHAR2
, p_batch_name IN VARCHAR2
, p_val_upl_flag IN VARCHAR2);
/*FUNCTION delete_stg_tbl (
p_batch_name IN NUMBER)
RETURN VARCHAR2;
FUNCTION insert_arch_tbl (
p_batch_name IN NUMBER)
RETURN VARCHAR2;*/
TYPE po_headers_tbl IS TABLE OF xxak_bpa_conv_hdr_stg%ROWTYPE
INDEX BY BINARY_INTEGER;
TYPE po_lines_tbl IS TABLE OF xxak_bpa_conv_line_stg%ROWTYPE
INDEX BY BINARY_INTEGER;
END XXAK_PO_CNV_04_IMPORT_BPA_PKG;
/
Body:
create or replace
PACKAGE BODY XXAK_PO_CNV_04_IMPORT_BPA_PKG
AS
PROCEDURE main(
p_errbuf OUT VARCHAR2 ,
p_retcode OUT VARCHAR2 ,
p_batch_name IN VARCHAR2 ,
p_val_upl_flag IN VARCHAR2)
IS
-------------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : C4
-- File Name : XXAK_PO_CNV_04_IMPORT_BPA_PKG.pks
-- Description : This is the Main Wrapper Program
-- Latest Version : 1.0
-- Input Parameters description :
-- Batch Name : Batch Name
-- Revision History:
--====================================================================================
--Date Version# Name Remarks
--====================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
--------------------------------------------------------------------------------------
x_error_code VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
--------------------------------------------------
-- Cursor for Staging Table of Formula Conversion
--------------------------------------------------
CURSOR cur_xxak_bpa_headers ( cp_process_status VARCHAR2)
IS
SELECT *
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = g_batch_name
AND request_id = g_request_id
AND process_code = cp_process_status
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
ORDER BY document_num;
CURSOR cur_xxak_bpa_lines_staging ( cp_process_status VARCHAR2
--, cp_document_num NUMBER)
, cp_document_num VARCHAR2)
IS
SELECT *
FROM xxak_bpa_conv_line_stg
WHERE batch_name = g_batch_name
AND process_code = cp_process_status
AND request_id = g_request_id
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND document_num = cp_document_num -- need to add line num
ORDER BY document_num --header_record_number
, line_num;
--, shipment_num;
x_po_header_tab po_headers_tbl;
x_po_line_tab po_lines_tbl;
--x_po_distributions_tab po_distributions_tbl;
x_step NUMBER;
x_dist_qty NUMBER;
BEGIN
g_batch_name := p_batch_name;
g_request_id := fnd_global.conc_request_id;
---------------------------------------------------------------------------------------
-- Updates ERROR_CODE = null error_desc = null process_code = new in all staging tables
---------------------------------------------------------------------------------------
mark_records_for_processing (p_batch_name);
-------------------
-- Pre-Validations
-------------------
--------------------------
-- Set g_stage as Pre-Val
--------------------------
set_stage (xxak_cnv_common_pkg.c_preval);
x_error_code := pre_validations (p_batch_name);
x_error_code := update_preval_stg_rec (p_batch_name , g_stage);
----------------------------
-- Pre-Validations ends here
----------------------------
------------------------------------------
-- Data Validation/Derivations Starts here
------------------------------------------
set_stage (xxak_cnv_common_pkg.c_valid);
OPEN cur_xxak_bpa_headers (xxak_cnv_common_pkg.c_preval);
LOOP
FETCH cur_xxak_bpa_headers BULK COLLECT INTO x_po_header_tab LIMIT 500;
FOR i IN 1 .. x_po_header_tab.COUNT
LOOP
x_error_code := data_val_headers (x_po_header_tab (i) );
update_header_records (x_po_header_tab (i) );
OPEN cur_xxak_bpa_lines_staging (xxak_cnv_common_pkg.c_preval , x_po_header_tab (i).document_num);--record_number);
LOOP
FETCH cur_xxak_bpa_lines_staging BULK COLLECT INTO x_po_line_tab;
FOR i IN 1 .. x_po_line_tab.COUNT
LOOP
x_error_code := data_val_lines (x_po_line_tab (i) );
update_lines_records (x_po_line_tab (i) , i);
update_lines_records (x_po_line_tab (i) , i);
END LOOP; -- End loop for x_po_line_tab.COUNT
x_po_line_tab.DELETE;
EXIT
WHEN cur_xxak_bpa_lines_staging%NOTFOUND;
END LOOP; -- End loop for cur_xxpo_po_lines_staging
CLOSE cur_xxak_bpa_lines_staging;
END LOOP; -- End Loop for x_po_header_tab.COUNT
COMMIT;
x_po_header_tab.DELETE;
EXIT
WHEN cur_xxak_bpa_headers%NOTFOUND;
END LOOP; -- End loop for cur_xxpo_po_headers
CLOSE cur_xxak_bpa_headers;
x_error_code := update_preval_stg_rec (p_batch_name , g_stage);
update_header_status (g_batch_name);
fnd_file.put_line (fnd_file.LOG , 'Data Validation/Derivations ends here');
-------------------------------------------
-- Data Validation/Derivations Ends here...
-------------------------------------------
set_stage (xxak_cnv_common_pkg.c_process_data);
IF UPPER (p_val_upl_flag) = c_val_upl_flag THEN
x_error_code := process_data;
fnd_file.put_line (fnd_file.LOG , 'Process Data ends here');
x_error_code := update_preval_stg_rec (p_batch_name , g_stage);
fnd_file.put_line (fnd_file.LOG , 'Process Data Updated here');
mark_records_complete (xxak_cnv_common_pkg.c_process_data);
fnd_file.put_line (fnd_file.LOG , 'Mark Records ends here');
data_stats_err_msg_report (p_batch_name , p_val_upl_flag);
--x_error_code := insert_arch_tbl (p_batch_name);
--IF x_error_code = xxak_cnv_common_pkg.c_success THEN
--x_error_code := delete_stg_tbl (p_batch_name);
--END IF;
ELSE
data_stats_err_msg_report (p_batch_name , p_val_upl_flag);
END IF;
EXCEPTION
WHEN OTHERS THEN
p_errbuf := SQLERRM;
fnd_file.put_line (fnd_file.LOG , 'Error:' || SQLERRM);
END main;
PROCEDURE mark_records_for_processing(
p_batch_name VARCHAR2)
IS
-----------------------------------------------------------------------------------
-- Created By :
-- Creation Date :
-- RICE ID :
-- Description :
-- Latest Version : 1.0
-- Input Parameters description :
-- Batch ID : Batch ID
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--
------------------------------------------------------------------------------------
BEGIN
--DELETE FROM po_headers_interface;
--DELETE FROM po_lines_interface;
--DELETE FROM po_distributions_interface;
--DELETE FROM po_line_locations_interface;
--DELETE FROM po_interface_errors;
BEGIN
g_batch_name := p_batch_name;
UPDATE xxak_bpa_conv_hdr_stg
SET ERROR_CODE = xxak_cnv_common_pkg.c_null ,
error_desc = xxak_cnv_common_pkg.c_null ,
request_id = g_request_id ,
process_code = xxak_cnv_common_pkg.c_new
WHERE batch_name = g_batch_name;
UPDATE xxak_bpa_conv_line_stg
SET ERROR_CODE = xxak_cnv_common_pkg.c_null ,
error_desc = xxak_cnv_common_pkg.c_null ,
request_id = g_request_id ,
process_code = xxak_cnv_common_pkg.c_new
WHERE batch_name = g_batch_name;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Unhandled exception inside mark record for processing routine : ');
END;
END mark_records_for_processing;
PROCEDURE set_stage(
p_stage VARCHAR2)
IS
-----------------------------------------------------------------------------------
-- Created By :
-- Creation Date :
-- RICE ID :
-- Description :
-- Latest Version :
-- Input Parameters description :
-- Batch ID : Batch ID
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--
BEGIN
g_stage := p_stage;
END set_stage;
FUNCTION pre_validations(
p_batch_name VARCHAR2)
RETURN NUMBER
IS
x_error_code VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
x_dtl_cnt NUMBER := 0;
x_dtl_created_cnt NUMBER := 0;
x_error_code_temp NUMBER;
BEGIN
fnd_file.put_line (fnd_file.LOG , 'Inside pre_validations');
----------------------------
-- Header Level pre Validations
----------------------------
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc || '~PO Number Already Exists'
WHERE xphs.batch_name = p_batch_name
AND EXISTS
(SELECT 1
FROM po_headers_all pha ,
hr_operating_units hou
WHERE UPPER (hou.NAME) = UPPER (xphs.org_name)
AND TO_CHAR (xphs.document_num) = pha.segment1
AND pha.org_id = hou.organization_id
);
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Ship To Location is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.ship_to_location IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.error_desc = xphs.error_desc
||'~Duplicate Document Numbers in Header Staging Table' ,
ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
WHERE batch_name=p_batch_name
AND EXISTS
(SELECT 1
FROM xxak_bpa_conv_hdr_stg
WHERE document_num = xphs.document_num
AND batch_name =p_batch_name
AND ROWID < xphs.ROWID
);
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Bill To Location is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.bill_to_location IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Buyer is Null'
WHERE xphs.batch_name = p_batch_name
AND (xphs.agent_buyer_name IS NULL);
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Vendor SIte Code is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.vendor_site IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Dcoument Num is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.document_num IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Start Date is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.start_date IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~End Date is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.end_date IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Amt is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.amt_limit IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Revision Num is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.revision_num IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~FOB is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.fob IS NULL;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.process_code = xxak_cnv_common_pkg.c_preval ,
xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~FREIGHT CARRIER is Null'
WHERE xphs.batch_name = p_batch_name
AND xphs.freight_carrier IS NULL;
-----------------------------
-- Line Level pre Validations
-----------------------------
--------------------------------------
-- Check for Duplicate Line Records
--------------------------------------
UPDATE xxak_bpa_conv_line_stg xpl
SET xpl.process_code = g_stage ,
xpl.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpl.error_desc = '~Duplicate Line Records in Line staging table'
WHERE xpl.batch_name = p_batch_name
AND ROWID NOT IN
(SELECT MAX (ROWID)
FROM xxak_bpa_conv_line_stg xpls
WHERE xpls.batch_name = xpl.batch_name
--AND xpls.record_number = xpl.record_number
--AND xpls.header_record_number = xpl.header_record_number
AND xpls.document_num = xpl.document_num
AND xpls.line_num = xpl.line_num
);
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval ,
xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpls.error_desc = xpls.error_desc
|| '~No Header Records for the Line: '
||xpls.document_num
WHERE xpls.batch_name = p_batch_name
AND NOT EXISTS
(SELECT 1
FROM xxak_bpa_conv_hdr_stg xphs
WHERE xphs.batch_name = xpls.batch_name
AND xphs.document_num = xpls.document_num
);
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval ,
xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpls.error_desc = xpls.error_desc
|| '~Line Number is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.line_num IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval ,
xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpls.error_desc = xpls.error_desc
|| '~Line Type is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.line_type IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval ,
xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpls.error_desc = xpls.error_desc
|| '~Item Number and Item Category is Null but either of them should have a value '
WHERE xpls.batch_name = p_batch_name
AND xpls.item IS NULL
AND xpls.category_segment IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval ,
xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpls.error_desc = xpls.error_desc
|| '~Line Document Number is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.document_num IS NULL;
/*UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval
, xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
, xpls.error_desc = xpls.error_desc || '~Brice Break Ship to Organization is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.price_break_ship_to_org IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval
, xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
, xpls.error_desc = xpls.error_desc || '~Price Break Ship to Location is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.price_break_ship_to_location IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval
, xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
, xpls.error_desc = xpls.error_desc || '~Price Break Start Date is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.price_break_start_date IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval
, xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
, xpls.error_desc = xpls.error_desc || '~Price Break End Date is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.price_break_end_date IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval
, xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
, xpls.error_desc = xpls.error_desc || '~Override Price is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.override_price IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval
, xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
, xpls.error_desc = xpls.error_desc || '~Price Discount is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.price_discount IS NULL;*/
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval ,
xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpls.error_desc = xpls.error_desc
|| '~UOM is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.uom_code IS NULL;
UPDATE xxak_bpa_conv_line_stg xpls
SET xpls.process_code = xxak_cnv_common_pkg.c_preval ,
xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xpls.error_desc = xpls.error_desc
|| '~Unit Price is Null'
WHERE xpls.batch_name = p_batch_name
AND xpls.unit_price IS NULL;
COMMIT;
UPDATE xxak_bpa_conv_hdr_stg sfg
SET sfg.process_code = xxak_cnv_common_pkg.c_preval ,
sfg.ERROR_CODE = NVL (sfg.ERROR_CODE , xxak_cnv_common_pkg.c_success)
WHERE sfg.batch_name = p_batch_name
AND sfg.process_code = xxak_cnv_common_pkg.c_new;
COMMIT;
UPDATE xxak_bpa_conv_line_stg sfg
SET sfg.process_code = xxak_cnv_common_pkg.c_preval ,
sfg.ERROR_CODE = NVL (sfg.ERROR_CODE , xxak_cnv_common_pkg.c_success)
WHERE sfg.batch_name = p_batch_name
AND sfg.process_code = xxak_cnv_common_pkg.c_new;
COMMIT;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Inside Unhandlede Exception Pre-Validations PO Conversion...');
RETURN xxak_cnv_common_pkg.c_prc_err;
END pre_validations;
FUNCTION data_val_headers(
px_po_header_rec IN OUT xxak_bpa_conv_hdr_stg%ROWTYPE)
RETURN NUMBER
IS
-----------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : 109
-- Description : Header Record validations
-- Latest Version : 1.0
-- Input Parameters description :
-- px_po_header_rec : Recode with the same structure of xxak_bpa_conv_hdr_stg
-- Output Parameters Description
-- Return : Returns the Error code
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
------------------------------------------------------------------------------------
x_error_code VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
x_error_code_temp VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
x_org_id NUMBER;
x_error_message VARCHAR2 (4000);
x_inventory_item_no VARCHAR2 (150);
x_inv_org_id NUMBER;
x_agent_id NUMBER;
x_vendor_id NUMBER;
X_Vname VARCHAR2(200);
x_vendor_site_id NUMBER;
x_ref_vendor_site VARCHAR2(200);
x_ship_location_id NUMBER;
x_bill_location_id NUMBER;
--x_term_id NUMBER;
x_freight_code VARCHAR2 (40);
x_fob_lookup_code VARCHAR2 (50);
x_ref_fob VARCHAR2 (50);
x_freight_term VARCHAR2 (20);
x_ref_freight_terms VARCHAR2 (50);
x_ref_freight_carrier VARCHAR2 (100);
x_person_id NUMBER;
x_ref_person VARCHAR2 (200);
x_vendor_contact_id NUMBER;
x_vendor_contact VARCHAR2 (240);
x_freight_lookup_code VARCHAR2 (240);
x_ou_code VARCHAR2 (240);
x_term_id VARCHAR2 (50);
x_currency_code VARCHAR2 (10);
BEGIN
x_term_id := NULL;
x_org_id := NULL;
x_ship_location_id := NULL;
x_bill_location_id := NULL;
x_agent_id := NULL;
x_vendor_id := NULL;
x_vendor_site_id := NULL;
x_freight_code := NULL;
x_person_id := NULL;
x_freight_lookup_code := NULL;
x_ou_code := NULL;
--
-- Derivation of Org ID
BEGIN
SELECT fnd_profile.value('org_id') INTO x_org_id FROM dual;
IF x_org_id IS NOT NULL THEN
px_po_header_rec.org_id := x_org_id;
g_operating_unit := x_org_id;
END IF;
END;
-- Currency
x_error_code_temp := xxak_cnv_common_pkg.get_currency_code(px_po_header_rec.currency);
-- Derivation of Agent Id
--
IF px_po_header_rec.agent_buyer_name IS NOT NULL THEN
BEGIN
SELECT first_name
||' '
||last_name
INTO x_ref_person
FROM xxak_xref_buyers
WHERE buyer_id = px_po_header_rec.agent_buyer_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Buyer number : ' || px_po_header_rec.agent_buyer_name || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Buyer number : ' || px_po_header_rec.agent_buyer_name || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
IF x_ref_person IS NOT NULL THEN
BEGIN
SELECT ppf.person_id ,
pa.agent_id
INTO x_person_id ,
x_agent_id
FROM per_all_people_f ppf ,
po_agents pa
WHERE 1 =1
--AND ppf.full_name = px_po_header_rec.agent_buyer_name
AND ppf.first_name
||' '
||last_name = x_ref_person
AND ppf.business_group_id =
(SELECT business_group_id
FROM org_organization_definitions
WHERE operating_unit = g_operating_unit
AND ROWNUM < 2
)
AND ppf.person_id = pa.agent_id;
IF (x_person_id = x_agent_id) THEN
px_po_header_rec.agent_id := x_agent_id;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Buyer: ' || x_ref_person || ' is invalid';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Buyer name: ' || x_ref_person || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Buyer name: ' || x_ref_person || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
-- Derivation of Vendor ID
--
IF px_po_header_rec.vendor_name IS NOT NULL THEN
BEGIN
x_error_code_temp := xxak_cnv_common_pkg.get_vendor_id_frm_num (NULL , px_po_header_rec.vendor_name , x_vendor_id);
IF x_error_code_temp = xxak_cnv_common_pkg.c_success THEN
px_po_header_rec.vendor_id := x_vendor_id;
g_vendor_id := x_vendor_id;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Vendor Name: ' || px_po_header_rec.vendor_name || ' is invalid';
END IF;
EXCEPTION
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor Name: ' || px_po_header_rec.vendor_name || ' Exception: ' || SQLERRM;
END;
ELSE ------ USING CROSS RFERENCE TABLES
BEGIN
SELECT av.vendor_id
INTO x_vendor_id
FROM xxak_xref_sup_sites xsusit,
ap_suppliers av
WHERE xsusit.LEGACY_SITE_CODE = px_po_header_rec.vendor_site
AND xsusit.vendor =av.vendor_name;
SELECT xsusit.vendor
INTO x_vname
FROM xxak_xref_sup_sites xsusit
WHERE xsusit.LEGACY_SITE_CODE = px_po_header_rec.vendor_site;
IF x_vendor_id IS NOT NULL THEN
x_error_code_temp := xxak_cnv_common_pkg.c_success;
px_po_header_rec.vendor_id := x_vendor_id;
g_vendor_id := x_vendor_id;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Vendor Name: ' || x_vname || ' is invalid';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor Name: ' || x_vname || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor Name: ' || x_vname || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
-- Derivation of vendor site id
--
IF px_po_header_rec.vendor_site IS NOT NULL THEN
BEGIN
SELECT vendor_site
INTO x_ref_vendor_site
FROM xxak_xref_sup_sites
WHERE legacy_site_code = px_po_header_rec.vendor_site;
IF x_ref_vendor_site IS NOT NULL THEN
x_error_code_temp := xxak_cnv_common_pkg.c_success;
--px_po_header_rec.vendor_site_id := x_vendor_site_id;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor site code : ' || px_po_header_rec.vendor_site || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor site code : ' || px_po_header_rec.vendor_site || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
IF x_ref_vendor_site IS NOT NULL THEN
BEGIN
SELECT vendor_site_id
INTO x_vendor_site_id
FROM ap_suppliers pv ,
ap_supplier_sites_all pvs
WHERE pv.vendor_id = pvs.vendor_id
AND pvs.org_id = px_po_header_rec.org_id --126 x_org_id
AND pv.vendor_id = x_vendor_id
AND pvs.vendor_site_code = x_ref_vendor_site --px_po_header_rec.vendor_site
AND (pvs.inactive_date IS NULL
OR pvs.inactive_date > SYSDATE);
IF x_vendor_site_id IS NOT NULL THEN
x_error_code_temp := xxak_cnv_common_pkg.c_success;
px_po_header_rec.vendor_site_id := x_vendor_site_id;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor site code: ' || px_po_header_rec.vendor_site || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor site code: ' || px_po_header_rec.vendor_site || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
-- -- Derivation of payment term id
IF (x_vendor_site_id) IS NOT NULL AND x_vendor_id IS NOT NULL THEN
BEGIN
SELECT DISTINCT term_id
INTO x_term_id
FROM ap_terms term,
ap_suppliers apsup,
ap_supplier_sites_all apsits
WHERE apsup.vendor_id = x_vendor_id
AND term.term_id = apsits.terms_id
AND apsits.vendor_site_id = x_vendor_site_id;
px_po_header_rec.terms_id := x_term_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~payment term: ' || px_po_header_rec.terms_id || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~payment term: ' || px_po_header_rec.terms_id || ' Exception: ' || SQLERRM;
END;
END IF;
-- Derivation of vendor contact
--
IF (x_vendor_site_id IS NOT NULL AND x_vendor_id IS NOT NULL AND px_po_header_rec.vendor_contact IS NOT NULL) THEN
BEGIN
SELECT vendor_contact_id ,
first_name
|| ' '
|| last_name
INTO x_vendor_contact_id ,
x_vendor_contact
FROM ap_supplier_contacts
WHERE 1 = 1 --vendor_id = x_vendor_id
AND vendor_site_id = x_vendor_site_id
AND ROWNUM < 2;
px_po_header_rec.vendor_contact_id := x_vendor_contact_id;
px_po_header_rec.vendor_contact := x_vendor_contact;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor Contact: ' || px_po_header_rec.vendor_contact || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~vendor Contact: ' || px_po_header_rec.vendor_contact || ' Exception: ' || SQLERRM;
END;
END IF;
--
-- Derivation of ship to location ID
--
IF px_po_header_rec.ship_to_location IS NOT NULL THEN
BEGIN
SELECT location_id
INTO x_ship_location_id
FROM hr_locations
WHERE location_code = px_po_header_rec.ship_to_location
AND ship_to_site_flag = 'Y'
AND NVL (inactive_date , SYSDATE + 1) > SYSDATE;
px_po_header_rec.ship_to_location_id := x_ship_location_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Ship to Location: ' || px_po_header_rec.ship_to_location || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Ship to Location: ' || px_po_header_rec.ship_to_location || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
-- Derivation of bill_to_location_id ID
--
IF px_po_header_rec.bill_to_location IS NOT NULL THEN
BEGIN
SELECT location_id
INTO x_bill_location_id
FROM hr_locations
WHERE location_code = px_po_header_rec.bill_to_location
AND bill_to_site_flag = 'Y'
AND NVL (inactive_date , SYSDATE + 1) > SYSDATE;
px_po_header_rec.bill_to_location_id := x_bill_location_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Bill to Location: ' || px_po_header_rec.bill_to_location || ' is Invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Bill to Location: ' || px_po_header_rec.bill_to_location || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
IF px_po_header_rec.freight_carrier IS NOT NULL THEN
BEGIN
SELECT oracle_code
INTO x_ref_freight_carrier
FROM xxak_xref_ft_carriers
WHERE orig_code = px_po_header_rec.freight_carrier;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Freight Carrier : ' || px_po_header_rec.freight_carrier || ' is invalid in Ref Table :xxak_xref_ft_carriers ';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~freight carrier : ' || px_po_header_rec.freight_carrier || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
IF x_ref_freight_carrier IS NOT NULL THEN
BEGIN
SELECT freight_code
INTO x_freight_code
FROM wsh_carriers
WHERE freight_code = x_ref_freight_carrier; --px_po_header_rec.freight_carrier;
px_po_header_rec.freight_carrier := x_freight_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Freight Carrier: ' || px_po_header_rec.freight_carrier || ' is invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~freight carrier: ' || px_po_header_rec.freight_carrier || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
-- Validation for Freight Terms
IF px_po_header_rec.freight_terms IS NOT NULL THEN
BEGIN
SELECT oracle_code
INTO x_ref_freight_terms
FROM xxak_xref_ft_terms
WHERE orig_code = px_po_header_rec.freight_terms;
--px_po_header_rec.freight_terms := x_ref_freight_terms;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Freight Terms: ' || px_po_header_rec.freight_terms || ' is invalid in Ref Table : xxak_xref_ft_terms ';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Freight Terms: ' || px_po_header_rec.freight_terms || ' Exception: ' || SQLERRM;
END;
END IF;
IF x_ref_freight_terms IS NOT NULL THEN
BEGIN
SELECT lookup_code
INTO x_freight_term
FROM po_lookup_codes
WHERE lookup_type = c_freight_lookup_type --'FREIGHT TERMS'
AND lookup_code = x_ref_freight_terms;
px_po_header_rec.freight_terms := x_freight_term;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Freight Terms: ' || px_po_header_rec.freight_terms || ' is invalid ';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Freight Terms: ' || px_po_header_rec.freight_terms || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
-- Validation for FOB
IF px_po_header_rec.fob IS NOT NULL THEN
BEGIN
SELECT oracle_code
INTO x_ref_fob
FROM xxak_xref_fobs
WHERE orig_code = px_po_header_rec.fob;
--px_po_header_rec.fob := x_ref_fob;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~FOB: ' || px_po_header_rec.fob || ' is invalid in Ref Table : xxak_xref_fobs ';
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Unhandled exception' || SQLERRM);
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~FOB: ' || px_po_header_rec.fob || ' Exception: ' || SQLERRM;
END;
END IF;
IF x_ref_fob IS NOT NULL THEN
BEGIN
SELECT lookup_code
INTO x_fob_lookup_code
FROM po_lookup_codes
WHERE lookup_type = c_fob
AND lookup_code = x_ref_fob;
px_po_header_rec.fob := x_fob_lookup_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~FOB: ' || px_po_header_rec.fob || ' is invalid';
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Unhandled exception' || SQLERRM);
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~FOB: ' || px_po_header_rec.fob || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
px_po_header_rec.ERROR_CODE := x_error_code;
px_po_header_rec.error_desc := x_error_message;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
x_error_message := ' Unhandled Exceiption in data_val_for_headers: ' || x_error_message || ' ' || SQLERRM;
RETURN x_error_code;
END data_val_headers;
PROCEDURE update_header_records(
p_po_header_tab IN xxak_bpa_conv_hdr_stg%ROWTYPE)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
-----------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : C4
-- Description : Update the header staging fields with derived values
-- Latest Version : 1.0
-- Input Parameters description :
-- p_po_header_rec : Recode with the same structure of xxak_bpa_conv_hdr_stg
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
------------------------------------------------------------------------------------
BEGIN
UPDATE xxak_bpa_conv_hdr_stg
SET org_id = p_po_header_tab.org_id ,
agent_id = p_po_header_tab.agent_id ,
vendor_id = p_po_header_tab.vendor_id ,
vendor_site_id = p_po_header_tab.vendor_site_id ,
bill_to_location_id = p_po_header_tab.bill_to_location_id ,
vendor_contact = p_po_header_tab.vendor_contact ,
terms_id = p_po_header_tab.terms_id ,
currency = p_po_header_tab.currency ,
ship_to_location_id = p_po_header_tab.ship_to_location_id ,
ERROR_CODE = p_po_header_tab.ERROR_CODE ,
error_desc = p_po_header_tab.error_desc ,
process_code = g_stage
WHERE document_num = p_po_header_tab.document_num; --record_number = p_po_header_tab.record_number;
COMMIT;
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.DOCUMENT_TYPE_CODE = 'CONTRACT'
WHERE 1 =1
AND NOT EXISTS
(SELECT 1
FROM xxak_bpa_conv_line_stg xpls
WHERE xpls.batch_name = xphs.batch_name
AND xpls.document_num = xphs.document_num
);
COMMIT;
END update_header_records;
FUNCTION data_val_lines(
px_po_lines_rec IN OUT xxak_bpa_conv_line_stg%ROWTYPE)
RETURN NUMBER
IS
-----------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : c4
-- Description : Line Record validations
-- Latest Version : 1.0
-- Input Parameters description :
-- px_po_header_rec : Recode with the same structure of xxak_bpa_conv_line_stg
-- Output Parameters Description
-- Return : Returns the Error code
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
------------------------------------------------------------------------------------
x_error_code VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
x_error_code_temp VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
x_org_id NUMBER;
x_error_message VARCHAR2 (4000);
x_inventory_item_no VARCHAR2 (150);
x_inv_org_id NUMBER;
x_ship_to_loc_id NUMBER;
x_ship_location_id NUMBER;
x_term_id NUMBER;
x_item_id NUMBER;
x_category_id VARCHAR2 (50);
x_ref_category_segment VARCHAR2 (50);
x_item_desc VARCHAR2 (4000);
x_asl_count NUMBER;
x_ship_cnt NUMBER;
x_item_uom_class VARCHAR2 (50);
x_uom_class VARCHAR2 (50);
x_item_uom_code VARCHAR2 (50);
x_ship_to_org_id NUMBER;
x_receive_routing_id NUMBER;
x_line_type_id NUMBER;
x_uom_code VARCHAR2 (50);
x_outside_operation NUMBER;
x_purchase_enabled NUMBER;
x_units_of_measure VARCHAR2 (50);
x_xuom_code VARCHAR2 (50);
BEGIN
x_term_id := NULL;
x_org_id := NULL;
x_item_id := NULL;
x_ship_to_loc_id := NULL;
x_asl_count := NULL;
x_ship_cnt := NULL;
x_line_type_id := NULL;
x_uom_code := NULL;
x_outside_operation := NULL;
x_purchase_enabled := NULL;
x_units_of_measure := NULL;
x_xuom_code := NULL;
--
-- Derivation of Line Type Id
--
IF px_po_lines_rec.line_type IS NOT NULL THEN
BEGIN
SELECT line_type_id
INTO x_line_type_id
FROM po_line_types_tl
WHERE LANGUAGE = USERENV ('LANG')
AND line_type = px_po_lines_rec.line_type;
IF x_line_type_id IS NOT NULL THEN
x_error_code_temp := xxak_cnv_common_pkg.c_success;
px_po_lines_rec.line_type_id := x_line_type_id;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Line Type: ' || px_po_lines_rec.line_type || ' is invalid';
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , ' Unhandled exception' || SQLERRM);
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Line Type: ' || px_po_lines_rec.line_type || ' Exception: ' || SQLERRM;
END;
END IF;
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
-- Derivation of Ship to location id
--
IF px_po_lines_rec.price_break_ship_to_location IS NOT NULL THEN
BEGIN
x_error_code_temp := xxak_cnv_common_pkg.get_location_id (px_po_lines_rec.price_break_ship_to_location , x_ship_to_loc_id);
IF x_error_code_temp = xxak_cnv_common_pkg.c_success THEN
px_po_lines_rec.price_break_ship_to_loc_id := x_ship_to_loc_id;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Price Break Ship To Location: ' || px_po_lines_rec.price_break_ship_to_location || ' is invalid';
END IF;
EXCEPTION
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Price Break Ship To Location: ' || px_po_lines_rec.price_break_ship_to_location || ' Exception: ' || SQLERRM;
END;
END IF;
--
-- Validation of Price Break Ship to organization
--
/*IF px_po_lines_rec.price_break_ship_to_org IS NOT NULL THEN
BEGIN
SELECT od.organization_id
INTO x_ship_to_org_id
FROM org_organization_definitions od
, hr_operating_units hou
WHERE hou.organization_id = g_operating_unit
AND od.organization_code = px_po_lines_rec.price_break_ship_to_org
AND od.operating_unit = hou.organization_id;
IF x_ship_to_org_id IS NULL THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message :=
x_error_message || '~Price Break Ship To Organization : ' || px_po_lines_rec.price_break_ship_to_org
|| ' is not defined for the operating unit ' || g_operating_unit;
ELSE
px_po_lines_rec.price_break_ship_to_org_id := x_ship_to_org_id;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message :=
x_error_message || '~Price Break Ship To Organization Code: ' || px_po_lines_rec.price_break_ship_to_org
|| ' is invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message :=
x_error_message || '~Price Break Ship To Organization Code: ' || px_po_lines_rec.price_break_ship_to_org
|| ' Exception' || SQLERRM;
END;
END IF;
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code
, x_error_code_temp);*/
--
-- Derivation of item id
--
IF px_po_lines_rec.item IS NOT NULL THEN
BEGIN
SELECT DISTINCT msi.inventory_item_id
INTO x_item_id
FROM mtl_system_items_b msi
WHERE msi.segment1 = px_po_lines_rec.item;
--AND msi.organization_id = x_ship_to_org_id;
IF x_item_id IS NOT NULL THEN
SELECT COUNT (1)
INTO x_purchase_enabled
FROM mtl_system_items_b msi
WHERE msi.purchasing_enabled_flag = 'Y'
AND msi.inventory_item_id = x_item_id;
--AND msi.organization_id = x_ship_to_org_id;
IF x_purchase_enabled > 0 THEN
x_error_code_temp := xxak_cnv_common_pkg.c_success;
px_po_lines_rec.item_id := x_item_id;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Item: ' || px_po_lines_rec.item || ' is not a Purchasable Item';
END IF;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Item: ' || px_po_lines_rec.item ||' is invalid';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Item: ' || px_po_lines_rec.item || ' is invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Item: ' || px_po_lines_rec.item || ' Exception: ' || SQLERRM;
END;
END IF;
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
-- Item category
IF px_po_lines_rec.category_segment IS NOT NULL THEN
BEGIN
IF px_po_lines_rec.batch_name LIKE '%PMIS%' THEN
SELECT DISTINCT ORACLE_CATEGORY
INTO x_ref_category_segment
FROM XXAK_XREF_CATEGORTY_SEG
WHERE ORIG_CODE=px_po_lines_rec.category_segment;
ELSE
x_ref_category_segment := px_po_lines_rec.category_segment;
END IF;
SELECT DISTINCT mcb.category_id
INTO x_category_id
FROM mtl_categories_b mcb
WHERE mcb.segment1 = x_ref_category_segment;
IF x_category_id IS NOT NULL THEN
px_po_lines_rec.category_id := x_category_id;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Category: ' || px_po_lines_rec.category_segment || ' is invalid';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~category: ' || px_po_lines_rec.category_segment || ' is invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Category: ' || px_po_lines_rec.category_segment || ' Exception: ' || SQLERRM;
END;
END IF;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
-- If Line Type equal to 'Goods', then Item should not be have outside Processing flag as 'Y'
--
IF px_po_lines_rec.line_type = 'Goods' AND x_item_id IS NOT NULL THEN
SELECT COUNT (1)
INTO x_outside_operation
FROM mtl_system_items_b msi
WHERE msi.outside_operation_flag = 'N'
AND msi.inventory_item_id = x_item_id;
--AND msi.organization_id = x_ship_to_org_id;
IF x_outside_operation > 0 THEN
x_error_code_temp := xxak_cnv_common_pkg.c_success;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Item :' || px_po_lines_rec.item || ' is OSP Enabled';
END IF;
END IF;
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
-- If Line Type equal to 'Outside processing', then Item should be have outside operation flag as 'Y'
--
IF px_po_lines_rec.line_type = 'Outside processing' AND x_item_id IS NOT NULL THEN
SELECT COUNT (1)
INTO x_outside_operation
FROM mtl_system_items_b msi
WHERE msi.outside_operation_flag = 'Y'
AND msi.inventory_item_id = x_item_id;
--AND msi.organization_id = x_ship_to_org_id;
IF x_outside_operation > 0 THEN
x_error_code_temp := xxak_cnv_common_pkg.c_success;
ELSE
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~Item :' || px_po_lines_rec.item || ' is not OSP Enabled';
END IF;
END IF;
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
-- Validation for UOM
--
IF x_item_id IS NOT NULL THEN
--AND x_ship_to_org_id IS NOT NULL) THEN
BEGIN
SELECT DISTINCT unit_of_measure
INTO x_units_of_measure
FROM mtl_units_of_measure
WHERE uom_code = px_po_lines_rec.uom_code;
px_po_lines_rec.unit_of_measure := x_units_of_measure;
--END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~UOM: ' || px_po_lines_rec.uom_code || ' is invalid';
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
x_error_message := x_error_message || '~UOM: ' || px_po_lines_rec.uom_code || SQLERRM;
END;
END IF;
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
px_po_lines_rec.ERROR_CODE := x_error_code;
px_po_lines_rec.error_desc := x_error_message;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
x_error_code_temp := xxak_cnv_common_pkg.c_rec_err;
-- Find Out Max Error Code
x_error_code := xxak_cnv_common_pkg.find_max (x_error_code , x_error_code_temp);
--
x_error_message := ' Unhandled Exception in data_val_for_lines: ' || x_error_message || ' ' || SQLERRM;
RETURN x_error_code;
END data_val_lines;
PROCEDURE update_lines_records(
p_po_lines_rec IN xxak_bpa_conv_line_stg%ROWTYPE ,
p_line_no IN NUMBER)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
-----------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : 109
-- Description : Update the line staging fields with derived values
-- Latest Version : 1.0
-- Input Parameters description :
-- p_po_lines_rec : Update the header staging fields with derived values
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
BEGIN
UPDATE xxak_bpa_conv_line_stg
SET item_id = p_po_lines_rec.item_id ,
price_break_ship_to_org_id = p_po_lines_rec.price_break_ship_to_org_id ,
terms_id = p_po_lines_rec.terms_id ,
price_break_ship_to_loc_id = p_po_lines_rec.price_break_ship_to_loc_id ,
freight_carrier = p_po_lines_rec.freight_carrier,
line_type_id = p_po_lines_rec.line_type_id ,
unit_of_measure = p_po_lines_rec.unit_of_measure ,
ERROR_CODE = p_po_lines_rec.ERROR_CODE ,
error_desc = p_po_lines_rec.error_desc ,
process_code = g_stage
WHERE document_num = p_po_lines_rec.document_num
AND line_num = p_po_lines_rec.line_num;
COMMIT;
END update_lines_records;
FUNCTION update_preval_stg_rec(
p_batch_name VARCHAR2 ,
p_status VARCHAR2)
RETURN NUMBER
IS
x_error_code NUMBER;
BEGIN
UPDATE xxak_bpa_conv_hdr_stg xphs
SET xphs.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
xphs.error_desc = xphs.error_desc
|| '~Error in line record' ,
xphs.process_code = p_status
WHERE EXISTS
(SELECT 1
FROM xxak_bpa_conv_line_stg xpls
WHERE xpls.batch_name = xphs.batch_name
--AND xpls.header_record_number = xphs.record_number
AND xpls.Document_num = xphs.document_num
AND xpls.ERROR_CODE = xxak_cnv_common_pkg.c_rec_err
AND xpls.process_code = p_status
AND xpls.batch_name = p_batch_name
);
COMMIT;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Unhandled Exception In update_preval_stg_rec PO Conversion...' || SQLERRM);
RETURN xxak_cnv_common_pkg.c_prc_err;
END;
PROCEDURE update_header_status(
p_batch_name IN VARCHAR2)
IS
CURSOR cur_header
IS
SELECT xph.document_num
FROM xxak_bpa_conv_hdr_stg xph
WHERE xph.batch_name = p_batch_name
AND RTRIM (LTRIM (xph.error_desc) ) = c_po_num_exist
ORDER BY xph.document_num;
CURSOR cur_line (
--cp_hdr_num NUMBER)
cp_doc_num NUMBER)
IS
SELECT
xpl.line_num ,
xpl.document_num
FROM xxak_bpa_conv_line_stg xpl
WHERE xpl.document_num = cp_doc_num --xpl.header_record_number = cp_hdr_num
AND xpl.batch_name = p_batch_name
AND xpl.error_desc IS NULL
ORDER BY document_num;
x_status VARCHAR2 (10);
BEGIN
FOR fetch_header IN cur_header
LOOP
x_status := NULL;
FOR fetch_line IN cur_line (fetch_header.document_num) --fetch_header.record_number)
LOOP
BEGIN
x_status := 'UPDATE';
END;
END LOOP;
IF x_status IS NOT NULL THEN
UPDATE xxak_bpa_conv_hdr_stg xph
SET xph.action = x_status ,
xph.ERROR_CODE = xxak_cnv_common_pkg.c_success ,
xph.process_code = g_stage
WHERE xph.batch_name = p_batch_name
--AND xph.record_number = fetch_header.record_number;
AND xph.document_num = fetch_header.document_num;
END IF;
END LOOP;
COMMIT;
END update_header_status;
FUNCTION process_data
RETURN VARCHAR2
IS
-----------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : C4
-- Description : MProcessing data and load the data into base table using API
-- Latest Version : 1.0
-- Input Parameters description :
-- NONE
-- Output Parameters Description
-- Return : Returns the Error code
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
------------------------------------------------------------------------------------
CURSOR cur_get_header_err_mess
IS
SELECT phi.attribute8 ,
phi.document_num ,
pie.error_message
FROM po_headers_interface phi ,
po_interface_errors pie
WHERE phi.interface_header_id = pie.interface_header_id
AND pie.table_name IN (c_header_int_name)
AND process_code = c_reject_process_code;
CURSOR cur_get_lines_err_mess
IS
SELECT pl.line_attribute8 ,
pl.document_num ,
pl.line_num ,
pie.error_message
FROM po_lines_interface pl ,
po_interface_errors pie
WHERE pl.interface_line_id = pie.interface_line_id
AND pie.table_name IN (c_line_int_name)
AND process_code = c_reject_process_code;
CURSOR cur_po_header_dtl_Con
IS
SELECT *
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = g_batch_name
AND request_id = g_request_id
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND process_code = xxak_cnv_common_pkg.c_valid
AND DOCUMENT_TYPE_CODE = 'CONTRACT';
CURSOR cur_po_header_dtl
IS
SELECT *
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = g_batch_name
AND request_id = g_request_id
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND process_code = xxak_cnv_common_pkg.c_valid
AND DOCUMENT_TYPE_CODE = 'BLANKET';
CURSOR cur_po_lines_dtl (
cp_po_doc_num IN VARCHAR2)
IS
SELECT *
FROM xxak_bpa_conv_line_stg
WHERE batch_name = g_batch_name
AND request_id = g_request_id
--AND header_record_number = cp_po_hdr_rec
AND document_num = cp_po_doc_num
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND process_code = xxak_cnv_common_pkg.c_valid;
x_error_code VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
x_request_id NUMBER;
x_wait BOOLEAN;
x_phase VARCHAR2 (50);
x_dex_phase VARCHAR2 (50);
x_interval NUMBER := 30;
x_max_wait NUMBER := 1800;
x_status VARCHAR2 (2000) := '';
x_del_status VARCHAR2 (2000) := '';
x_message VARCHAR2 (2000) := '';
x_val NUMBER;
x_val_line NUMBER;
x_step NUMBER;
x_org_id NUMBER;
x_header_id NUMBER;
x_rowid NUMBER;
x_summary_flag VARCHAR2(1) :='N';----- These are common flag's for loading data
x_enabled_flag VARCHAR2(1) :='Y';
x_approved_flag VARCHAR2(1) :='Y';
x_confirming_order_flag VARCHAR2(1) :='N';
x_acceptance_required_flag VARCHAR2(1) :='N';
x_cancel_flag VARCHAR2(1) :='N';
x_firm_status_lookup_code VARCHAR2(1) :='N';
x_frozen_flag VARCHAR2(1) :='N';
x_supply_agreement_flag VARCHAR2(1) :='N';
x_print_count NUMBER :=0;
X_return_status VARCHAR2(10);
X_error_msg VARCHAR2(200);
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
DELETE
FROM po_headers_interface;
DELETE FROM po_lines_interface;
DELETE FROM po_interface_errors;
COMMIT;
FOR fetch_hdr_rec_Con IN cur_po_header_dtl_Con
LOOP
BEGIN
PO_HEADERS_SV11.INSERT_PO(
X_ROWID => x_header_id ,
X_PO_HEADER_ID => x_rowid ,
X_AGENT_ID =>fetch_hdr_rec_Con.AGENT_ID,
X_TYPE_LOOKUP_CODE => fetch_hdr_rec_Con.DOCUMENT_TYPE_CODE ,
X_LAST_UPDATE_DATE =>fetch_hdr_rec_Con.LAST_UPDATED_DATE,
X_LAST_UPDATED_BY =>fetch_hdr_rec_Con.LAST_UPDATED_BY ,
X_SEGMENT1 => fetch_hdr_rec_Con.DOCUMENT_NUM ,
X_SUMMARY_FLAG => x_summary_flag ,
X_ENABLED_FLAG => x_enabled_flag,
X_SEGMENT2 => NULL ,
X_SEGMENT3 => NULL,
X_SEGMENT4 => NULL,
X_SEGMENT5 => NULL,
X_START_DATE_ACTIVE => NULL,
X_END_DATE_ACTIVE => NULL,
X_LAST_UPDATE_LOGIN =>fetch_hdr_rec_Con.LAST_UPDATE_LOGIN ,
X_CREATION_DATE => fetch_hdr_rec_Con.CREATION_DATE,
X_CREATED_BY => fetch_hdr_rec_Con.CREATED_BY ,
X_VENDOR_ID => fetch_hdr_rec_Con.VENDOR_ID,
X_VENDOR_SITE_ID => fetch_hdr_rec_Con.VENDOR_SITE_ID,
X_VENDOR_CONTACT_ID => NULL,
X_SHIP_TO_LOCATION_ID => fetch_hdr_rec_Con.SHIP_TO_LOCATION_ID,
X_BILL_TO_LOCATION_ID => fetch_hdr_rec_Con.BILL_TO_LOCATION_ID ,
X_TERMS_ID => fetch_hdr_rec_Con.TERMS_ID ,
X_SHIP_VIA_LOOKUP_CODE => NULL,
X_FOB_LOOKUP_CODE => NULL,
X_PAY_ON_CODE => NULL,
X_FREIGHT_TERMS_LOOKUP_CODE => NULL,
X_STATUS_LOOKUP_CODE => NULL,
X_CURRENCY_CODE => fetch_hdr_rec_Con.currency ,
X_RATE_TYPE => NULL,
X_RATE_DATE => NULL,
X_RATE => NULL,
X_FROM_HEADER_ID => NULL,
X_FROM_TYPE_LOOKUP_CODE => NULL,
X_START_DATE => fetch_hdr_rec_Con.START_DATE,
X_END_DATE => fetch_hdr_rec_Con.END_DATE,
X_BLANKET_TOTAL_AMOUNT => fetch_hdr_rec_Con.AMT_LIMIT ,
X_AUTHORIZATION_STATUS => 'APPROVED',
X_REVISION_NUM => fetch_hdr_rec_Con.REVISION_NUM,
X_REVISED_DATE => NULL,
X_APPROVED_FLAG => x_approved_flag ,
X_APPROVED_DATE => NULL,
X_AMOUNT_LIMIT => fetch_hdr_rec_Con.AMT_LIMIT,
X_MIN_RELEASE_AMOUNT => NULL,
X_NOTE_TO_AUTHORIZER => NULL,
X_NOTE_TO_VENDOR => fetch_hdr_rec_Con.NOTE_TO_VENDOR,
X_NOTE_TO_RECEIVER => fetch_hdr_rec_Con.NOTE_TO_RECEIVER ,
X_PRINT_COUNT => x_print_count,
X_PRINTED_DATE => NULL,
X_VENDOR_ORDER_NUM => NULL,
X_CONFIRMING_ORDER_FLAG => x_confirming_order_flag ,
X_COMMENTS => fetch_hdr_rec_Con.COMMENTS,
X_REPLY_DATE => NULL,
X_REPLY_METHOD_LOOKUP_CODE => NULL,
X_RFQ_CLOSE_DATE => NULL,
X_QUOTE_TYPE_LOOKUP_CODE => NULL,
X_QUOTATION_CLASS_CODE => NULL,
X_QUOTE_WARNING_DELAY_UNIT => NULL,
X_QUOTE_WARNING_DELAY => NULL,
X_QUOTE_VENDOR_QUOTE_NUMBER => NULL,
X_ACCEPTANCE_REQUIRED_FLAG => x_acceptance_required_flag,
X_ACCEPTANCE_DUE_DATE => NULL,
X_CLOSED_DATE => NULL,
X_USER_HOLD_FLAG => NULL,
X_APPROVAL_REQUIRED_FLAG => NULL,
X_CANCEL_FLAG => x_cancel_flag,
X_FIRM_STATUS_LOOKUP_CODE => x_firm_status_lookup_code ,
X_FIRM_DATE => NULL,
X_FROZEN_FLAG => x_frozen_flag ,
X_SUPPLY_AGREEMENT_FLAG => x_supply_agreement_flag ,
X_GLOBAL_AGREEMENT_FLAG => NULL,
X_ATTRIBUTE_CATEGORY => NULL,
X_ATTRIBUTE1 => NULL,
X_ATTRIBUTE2 => NULL,
X_ATTRIBUTE3 => NULL,
X_ATTRIBUTE4 => NULL,
X_ATTRIBUTE5 => NULL,
X_ATTRIBUTE6 => NULL,
X_ATTRIBUTE7 => NULL,
X_ATTRIBUTE8 => NULL,
X_ATTRIBUTE9 => NULL,
X_ATTRIBUTE10 => NULL,
X_ATTRIBUTE11 => NULL,
X_ATTRIBUTE12 => NULL,
X_ATTRIBUTE13 => NULL,
X_ATTRIBUTE14 => NULL,
X_ATTRIBUTE15 => NULL,
X_CLOSED_CODE => NULL,
X_USSGL_TRANSACTION_CODE => NULL,
X_GOVERNMENT_CONTEXT => NULL,
X_GLOBAL_ATTRIBUTE_CATEGORY => NULL,
X_GLOBAL_ATTRIBUTE1 => NULL,
X_GLOBAL_ATTRIBUTE2 => NULL,
X_GLOBAL_ATTRIBUTE3 => NULL,
X_GLOBAL_ATTRIBUTE4 => NULL,
X_GLOBAL_ATTRIBUTE5 => NULL,
X_GLOBAL_ATTRIBUTE6 => NULL,
X_GLOBAL_ATTRIBUTE7 => NULL,
X_GLOBAL_ATTRIBUTE8 => NULL,
X_GLOBAL_ATTRIBUTE9 => NULL,
X_GLOBAL_ATTRIBUTE10 => NULL,
X_GLOBAL_ATTRIBUTE11 => NULL,
X_GLOBAL_ATTRIBUTE12 => NULL,
X_GLOBAL_ATTRIBUTE13 => NULL,
X_GLOBAL_ATTRIBUTE14 => NULL,
X_GLOBAL_ATTRIBUTE15 => NULL,
X_GLOBAL_ATTRIBUTE16 => NULL,
X_GLOBAL_ATTRIBUTE17 => NULL,
X_GLOBAL_ATTRIBUTE18 => NULL,
X_GLOBAL_ATTRIBUTE19 => NULL,
X_GLOBAL_ATTRIBUTE20 => NULL,
X_MANUAL => NULL,
X_PRICE_UPDATE_TOLERANCE => NULL,
P_SHIPPING_CONTROL => NULL,
P_ENCUMBRANCE_REQUIRED_FLAG => NULL,
P_ORG_ID => fetch_hdr_rec_Con.ORG_ID, -- p_org_id
p_enable_all_sites => NULL --p_enable_all_sites
);
EXCEPTION
WHEN OTHERS THEN
X_return_status :='E';
X_error_msg := X_error_msg || 'ERROR during Insert in PO_HEADERS.'||CHR(10)||SQLERRM;
fnd_file.put_line (fnd_file.LOG , 'Error in process data in Contract header record insert : ' || SQLERRM);
END;
COMMIT;
END LOOP;
FOR fetch_hdr_rec IN cur_po_header_dtl
LOOP
BEGIN
INSERT
INTO po_headers_interface
(
interface_header_id,
action ,
org_id ,
document_type_code,
document_num ,
currency_code ,
agent_id ,
vendor_id ,
vendor_site_id ,
vendor_contact_id ,
ship_to_location_id ,
bill_to_location_id ,
terms_id ,
freight_terms ,
approval_status ,
revision_num ,
note_to_vendor ,
note_to_receiver ,
comments,
creation_date ,
created_by ,
last_update_date ,
last_updated_by ,
last_update_login ,
attribute8,
attribute10 ,
amount_limit ,
effective_date ,
expiration_date ,
amount_agreed
)
VALUES
(
po_headers_interface_s.NEXTVAL,
'ORIGINAL' ,--fetch_hdr_rec.action
fetch_hdr_rec.org_id ,
fetch_hdr_rec.DOCUMENT_TYPE_CODE, --'BLANKET' --fetch_hdr_rec.document_type_code
TO_CHAR (fetch_hdr_rec.document_num) ,
fetch_hdr_rec.currency ,
fetch_hdr_rec.agent_id ,
fetch_hdr_rec.vendor_id ,
fetch_hdr_rec.vendor_site_id ,
fetch_hdr_rec.vendor_contact_id ,
fetch_hdr_rec.ship_to_location_id ,
fetch_hdr_rec.bill_to_location_id ,
fetch_hdr_rec.terms_id ,
fetch_hdr_rec.freight_terms ,
'APPROVED' ,-- fetch_hdr_rec.approval_status
c_revision_number , -----fetch_hdr_rec.revision_num
fetch_hdr_rec.note_to_vendor ,
fetch_hdr_rec.note_to_receiver ,
fetch_hdr_rec.comments ,
SYSDATE ,
fnd_global.user_id ,
SYSDATE ,
fnd_global.user_id ,
fnd_global.user_id , --, fnd_global.login_id
fetch_hdr_rec.batch_name,
fetch_hdr_rec.batch_name ,
fetch_hdr_rec.amt_limit ,
fetch_hdr_rec.start_date ,
fetch_hdr_rec.end_date ,
fetch_hdr_rec.amt_limit
);
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Error in process data in header record insert : ' || SQLERRM);
END;
x_step := 10;
x_step := 20;
SELECT po_headers_interface_s.CURRVAL
INTO x_val
FROM DUAL;
FOR fetch_po_line_rec IN cur_po_lines_dtl (fetch_hdr_rec.document_num) --(fetch_hdr_rec.record_number)
LOOP
BEGIN
INSERT
INTO po_lines_interface
(
interface_header_id ,
interface_line_id ,
line_num ,
document_num ,
line_type ,
item ,
unit_of_measure ,
unit_price ,
note_to_vendor ,
terms_id ,
line_type_id ,
ship_to_organization_id ,
ship_to_location_id ,
freight_carrier ,
creation_date ,
created_by ,
last_update_date ,
last_updated_by ,
last_update_login ,
line_attribute8 ,
line_attribute10 ,
item_id ,
item_description ,
Category
)
VALUES
(
x_val ,
po_lines_interface_s.NEXTVAL ,
fetch_po_line_rec.line_num ,
fetch_po_line_rec.document_num ,
fetch_po_line_rec.line_type ,
fetch_po_line_rec.item ,
fetch_po_line_rec.unit_of_measure ,
fetch_po_line_rec.unit_price ,
fetch_po_line_rec.note_to_vendor ,
fetch_po_line_rec.terms_id ,
fetch_po_line_rec.line_type_id ,
fetch_po_line_rec.price_break_ship_to_org_id ,
fetch_po_line_rec.price_break_ship_to_loc_id ,
fetch_po_line_rec.freight_carrier ,
SYSDATE ,
fnd_global.user_id ,
SYSDATE ,
fnd_global.user_id ,
fnd_global.user_id , --, fnd_global.login_id
fetch_po_line_rec.batch_name ,
fetch_po_line_rec.batch_name ,
fetch_po_line_rec.item_id ,
fetch_po_line_rec.item_description ,
fetch_po_line_rec.category_segment
);
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Error while inserting into po_lines_interface insert: ' || SQLERRM);
END;
END LOOP;
END LOOP;
COMMIT;
BEGIN
/*FOR fetch_get_org_id IN cur_get_org_id----- The standard concurrent program submitted separately
LOOP
fnd_file.put_line (fnd_file.LOG
, 'Submitting Po Interface Program for Org id: ' || x_org_id);
x_request_id :=
fnd_request.submit_request (application => c_appl_short_name
, program => 'POXPOPDOI'
, description => NULL
, start_time => SYSDATE
, sub_request => FALSE
, argument1 => NULL
, argument2 => c_blanket_doc_type_code
, argument3 => NULL
, argument4 => 'N'
, argument5 => 'N'
, argument6 => 'APPROVED'
, argument7 => NULL
, argument8 => fetch_get_org_id.batch_name
, argument9 => fetch_get_org_id.org_id
, argument10 => 'N'
, argument11 => NULL
, argument12 => NULL
, argument13 => NULL
, argument14 => NULL);
COMMIT;
END LOOP;
-- Wait till the concurrent program is complete
x_phase := 'START';
x_dex_phase := 'START';
WHILE x_dex_phase <> 'COMPLETE'
LOOP
x_wait :=
fnd_concurrent.wait_for_request (x_request_id
, x_interval
, x_max_wait
, x_phase
, x_status
, x_dex_phase
, x_del_status
, x_message);
END LOOP;*/
FOR fetch_err_hdr IN cur_get_header_err_mess
LOOP
UPDATE xxak_bpa_conv_hdr_stg
SET error_desc = error_desc
|| fetch_err_hdr.error_message ,
ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
process_code = xxak_cnv_common_pkg.c_process_data
WHERE batch_name = g_batch_name
--AND record_number = fetch_err_hdr.attribute9
AND document_num = fetch_err_hdr.document_num
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn);
COMMIT;
END LOOP;
FOR fetch_err_lin IN cur_get_lines_err_mess
LOOP
UPDATE xxak_bpa_conv_line_stg
SET error_desc = error_desc
|| fetch_err_lin.error_message ,
ERROR_CODE = xxak_cnv_common_pkg.c_rec_err ,
process_code = xxak_cnv_common_pkg.c_process_data
WHERE batch_name = g_batch_name
--AND header_record_number || '~' || record_number = fetch_err_lin.line_attribute9
AND document_num = fetch_err_lin.document_num
AND line_num = fetch_err_lin.line_num
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn);
COMMIT;
END LOOP;
END;
COMMIT;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG , 'Unhandeled Exception in process data section ' || SQLERRM || x_step);
END process_data;
PROCEDURE mark_records_complete(
p_process_code IN VARCHAR2)
IS
-----------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : C4
-- Description : This procedure procedure is not applicable for data lodding through API
-- Latest Version : 1.0
-- Input Parameters description :
-- NO input Parameter
-- Output Parameters description :
-- NO output Parameter
-- Revision History:
--==================================================================================
--Date Version# Name Remarks
--==================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
------------------------------------------------------------------------------------
x_last_update_date DATE := SYSDATE;
x_last_update_by NUMBER := fnd_global.user_id;
x_last_updated_login NUMBER := fnd_global.login_id;
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE xxak_bpa_conv_hdr_stg
SET process_code = p_process_code ,
ERROR_CODE = NVL (ERROR_CODE , xxak_cnv_common_pkg.c_success) ,
last_updated_by = x_last_update_by ,
last_updated_date = x_last_update_date ,
last_update_login = x_last_updated_login
WHERE batch_name = g_batch_name
AND request_id = g_request_id
AND process_code = DECODE (g_stage , xxak_cnv_common_pkg.c_process_data, xxak_cnv_common_pkg.c_valid , xxak_cnv_common_pkg.c_valid)
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn);
UPDATE xxak_bpa_conv_line_stg
SET process_code = p_process_code ,
ERROR_CODE = NVL (ERROR_CODE , xxak_cnv_common_pkg.c_success) ,
last_updated_by = x_last_update_by ,
last_update_date = x_last_update_date ,
last_update_login = x_last_updated_login
WHERE batch_name = g_batch_name
AND request_id = g_request_id
AND process_code = DECODE (g_stage , xxak_cnv_common_pkg.c_process_data, xxak_cnv_common_pkg.c_valid , xxak_cnv_common_pkg.c_valid)
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn);
COMMIT;
END mark_records_complete;
PROCEDURE data_stats_err_msg_report(
p_batch_name IN VARCHAR2 ,
p_val_upl_flag IN VARCHAR2)
IS
-------------------------------------------------------------------------------------
-- Created By : Srikanth Yarram
-- Creation Date : 06-AUG-2013
-- RICE ID : C4
-- File Name : XXAKBPACNV.pks
-- Description : Summary of the whole process and the failed records details.
-- Latest Version : 1.0
-- Input Parameters description :
-- Batch ID : Batch ID
-- Revision History:
--====================================================================================
--Date Version# Name Remarks
--====================================================================================
--06-AUG-2013 1.0 Srikanth Yarram Initial development.
--------------------------------------------------------------------------------------
x_status CHAR (18);
x_record_number CHAR (15);
x_formula_no CHAR (17);
x_dist_no NUMBER;
x_line_no NUMBER;
x_dsp VARCHAR2 (4000);
x_dsp_Con VARCHAR2 (4000);
x_total_rec NUMBER := 0;
x_total_rec_BPA NUMBER := 0;
x_success_rec NUMBER := 0;
x_failed_rec NUMBER := 0;
x_total_rec_Con NUMBER := 0;
x_success_rec_Con NUMBER := 0;
x_failed_rec_Con NUMBER := 0;
CURSOR cur_header
IS
SELECT DISTINCT xphs.process_code status ,
xphs.batch_name ,
xphs.document_num ,
REPLACE (SUBSTR (NVL (xphs.error_desc , '~Failed to pick by Process Data routine') , 2 , LENGTH (NVL (xphs.error_desc , '~Failed to pick by Process Data routine') ) ) , '~' , CHR (10)
|| RPAD (' ' , 66 , ' ') ) error_desc
FROM xxak_bpa_conv_hdr_stg xphs
WHERE 1 = 1
AND xphs.batch_name = p_batch_name
AND xphs.request_id = g_request_id
AND xphs.error_desc IS NOT NULL
AND xphs.DOCUMENT_TYPE_CODE = 'BLANKET'
ORDER BY document_num;
CURSOR cur_header_Con
IS
SELECT DISTINCT xphs.process_code status ,
xphs.batch_name
--, xphs.record_number
,
xphs.document_num ,
REPLACE (SUBSTR (NVL (xphs.error_desc , '~Failed to pick by Process Data routine') , 2 , LENGTH (NVL (xphs.error_desc , '~Failed to pick by Process Data routine') ) ) , '~' , CHR (10)
|| RPAD (' ' , 66 , ' ') ) error_desc
FROM xxak_bpa_conv_hdr_stg xphs
WHERE 1 = 1
AND xphs.batch_name = p_batch_name
AND xphs.request_id = g_request_id
AND xphs.error_desc IS NOT NULL
AND xphs.DOCUMENT_TYPE_CODE = 'CONTRACT'
ORDER BY document_num;
CURSOR cur_line(p_document_num VARCHAR2)
IS
SELECT DISTINCT xpls.process_code status ,
xpls.batch_name
--, xpls.record_number
--, xpls.header_record_number
,
xpls.document_num ,
xpls.line_num ,
REPLACE (LPAD (SUBSTR (xpls.error_desc , 2) , (LENGTH (xpls.error_desc) ) , ' ') , '~' , CHR (10)
|| RPAD (' ' , 81 , ' ') ) error_desc
FROM xxak_bpa_conv_line_stg xpls
WHERE 1 = 1
AND xpls.batch_name = p_batch_name
AND xpls.request_id = g_request_id
AND xpls.document_num = p_document_num
AND xpls.error_desc IS NOT NULL
--ORDER BY record_number;
ORDER BY document_num,
line_num;
BEGIN
SELECT COUNT (1)
INTO x_total_rec
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = p_batch_name;
SELECT COUNT (1)
INTO x_total_rec_BPA
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = p_batch_name
AND DOCUMENT_TYPE_CODE= 'BLANKET';
SELECT COUNT (1)
INTO x_success_rec
FROM xxak_bpa_conv_hdr_stg
WHERE 1 = 1
AND request_id = g_request_id
AND process_code = DECODE (p_val_upl_flag , c_val_upl_flag, xxak_cnv_common_pkg.c_process_data , xxak_cnv_common_pkg.c_valid)
AND ERROR_CODE = xxak_cnv_common_pkg.c_success
AND DOCUMENT_TYPE_CODE= 'BLANKET';
SELECT COUNT (1)
INTO x_failed_rec
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = p_batch_name
AND request_id = g_request_id
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_rec_err, xxak_cnv_common_pkg.c_rec_warn)
AND DOCUMENT_TYPE_CODE= 'BLANKET';
SELECT COUNT (1)
INTO x_total_rec_Con
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = p_batch_name
AND DOCUMENT_TYPE_CODE= 'CONTRACT';
SELECT COUNT (1)
INTO x_success_rec_Con
FROM xxak_bpa_conv_hdr_stg
WHERE 1 = 1
AND request_id = g_request_id
AND process_code = DECODE (p_val_upl_flag , c_val_upl_flag, xxak_cnv_common_pkg.c_process_data , xxak_cnv_common_pkg.c_valid)
AND ERROR_CODE = xxak_cnv_common_pkg.c_success
AND DOCUMENT_TYPE_CODE= 'CONTRACT';
SELECT COUNT (1)
INTO x_failed_rec_Con
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = p_batch_name
AND request_id = g_request_id
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_rec_err, xxak_cnv_common_pkg.c_rec_warn)
AND DOCUMENT_TYPE_CODE= 'CONTRACT';
fnd_file.put_line (fnd_file.output , 'Total Number Of Records :=>' || x_total_rec);
fnd_file.put_line (fnd_file.output , 'Total Number Of BPA Records :=>' || x_total_rec_BPA);
fnd_file.put_line (fnd_file.output , 'Total Number of BPA Successful Records :=>' || x_success_rec);
fnd_file.put_line (fnd_file.output , 'Total Number of BPA Failed Records :=>' || x_failed_rec);
fnd_file.put_line (fnd_file.output , 'Total Number Of CPA Records :=>' || x_total_rec_Con);
fnd_file.put_line (fnd_file.output , 'Total Number of CPA Successful Records :=>' || x_success_rec_Con);
fnd_file.put_line (fnd_file.output , 'Total Number of CPA Failed Records :=>' || x_failed_rec_Con);
fnd_file.put_line (fnd_file.output , ' ');
fnd_file.put_line (fnd_file.output , ' ***** Purchase Order Validation Status *****');
FOR fetch_header_rec IN cur_header
LOOP
SELECT RPAD (fetch_header_rec.status , 16)
|| RPAD (fetch_header_rec.batch_name , 22)
|| RPAD (fetch_header_rec.document_num , 24)
|| fetch_header_rec.error_desc
INTO x_dsp
FROM DUAL;
fnd_file.put_line (fnd_file.output , ' ');
fnd_file.put_line (fnd_file.output , 'BPA Header Level Error Details : ');
fnd_file.put_line (fnd_file.output , '----------------------------------');
fnd_file.put_line (fnd_file.output , 'Stage Batch Document Number Error Description ');
fnd_file.put_line (fnd_file.output , '----------- ------------------- ------------------ ------------------------');
fnd_file.put_line (fnd_file.output , '' || x_dsp);
fnd_file.put_line (fnd_file.output , ' ');
fnd_file.put_line (fnd_file.output , ' ');
fnd_file.put_line (fnd_file.output , 'Line Level Error Details : ');
fnd_file.put_line (fnd_file.output , '----------------------------------');
fnd_file.put_line (fnd_file.output , 'Stage Batch Document Number Line number Error Description ');
fnd_file.put_line (fnd_file.output , '--------- -------------------- ----------------- ------------- ------------------');
--open cur_line(fetch_header_rec.document_num);
FOR fetch_lin_rec IN cur_line (fetch_header_rec.document_num)
LOOP
SELECT RPAD (fetch_lin_rec.status , 14)
|| RPAD (fetch_lin_rec.batch_name , 25)
|| RPAD (fetch_lin_rec.document_num , 26)
|| RPAD (fetch_lin_rec.line_num , 16)
|| fetch_lin_rec.error_desc
INTO x_dsp
FROM DUAL;
fnd_file.put_line (fnd_file.output , '' || x_dsp);
END LOOP;
END LOOP; -- Hdr loop
--close cur_line;
FOR fetch_header_rec IN cur_header_Con
LOOP
SELECT RPAD (fetch_header_rec.status , 16)
|| RPAD (fetch_header_rec.batch_name , 22)
|| RPAD (fetch_header_rec.document_num , 24)
|| fetch_header_rec.error_desc
INTO x_dsp_Con
FROM DUAL;
fnd_file.put_line (fnd_file.output , ' ');
fnd_file.put_line (fnd_file.output , 'CPA Error Details : ');
fnd_file.put_line (fnd_file.output , '----------------------------------');
fnd_file.put_line (fnd_file.output , 'Stage Batch Document Number Error Description ');
fnd_file.put_line (fnd_file.output , '----------- ------------------- ------------------ ------------------------');
fnd_file.put_line (fnd_file.output , '' || x_dsp_Con);
fnd_file.put_line (fnd_file.output , ' ');
fnd_file.put_line (fnd_file.output , ' ');
END LOOP;
--------------------------------
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 , ' ***** End of PO Conversion Error Report *****');
END data_stats_err_msg_report;
/*FUNCTION insert_arch_tbl (
p_batch_name NUMBER)
RETURN VARCHAR2
IS
PRAGMA AUTONOMOUS_TRANSACTION;
x_err_code VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
BEGIN
INSERT INTO xxak_bpa_conv_hdr_arch
SELECT *
FROM xxak_bpa_conv_hdr_stg
WHERE batch_name = p_batch_name
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND process_code = xxak_cnv_common_pkg.c_process_data
AND request_id = g_request_id;
INSERT INTO xxak_bpa_conv_line_arch
SELECT *
FROM xxak_bpa_conv_line_stg
WHERE batch_name = p_batch_name
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND process_code = xxak_cnv_common_pkg.c_process_data
AND request_id = g_request_id;
COMMIT;
RETURN x_err_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.output
, 'Unexpected Error in Inserting data into Archive Tables ' || SQLERRM);
RETURN xxak_cnv_common_pkg.c_rec_err;
END insert_arch_tbl;*/
/*FUNCTION delete_stg_tbl (
p_batch_name NUMBER)
RETURN VARCHAR2
IS
PRAGMA AUTONOMOUS_TRANSACTION;
x_err_code VARCHAR2 (1) := xxak_cnv_common_pkg.c_success;
BEGIN
DELETE xxak_bpa_conv_hdr_stg
WHERE batch_name = p_batch_name
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND process_code = xxak_cnv_common_pkg.c_process_data
AND request_id = g_request_id;
DELETE xxak_bpa_conv_line_stg
WHERE batch_name = p_batch_name
AND ERROR_CODE IN (xxak_cnv_common_pkg.c_success, xxak_cnv_common_pkg.c_rec_warn)
AND process_code = xxak_cnv_common_pkg.c_process_data
AND request_id = g_request_id;
COMMIT;
RETURN x_err_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Unexpected Error in Deleting data from staging Tables ' || SQLERRM);
RETURN xxak_cnv_common_pkg.c_rec_err;
END delete_stg_tbl;*/
END XXAK_PO_CNV_04_IMPORT_BPA_PKG;
/
Common Package:
CREATE OR REPLACE PACKAGE xxak_cnv_common_pkg
AS
-- Moved from common constant package
c_success CONSTANT VARCHAR2 (1) := '0';
c_rec_warn CONSTANT VARCHAR2 (1) := '1';
c_rec_err CONSTANT VARCHAR2 (1) := '2';
c_prc_err CONSTANT VARCHAR2 (1) := '3';
c_exp_unhand CONSTANT VARCHAR2 (42) := 'Unhandled exception in procedure/function ';
c_high CONSTANT NUMBER := 3;
c_medium CONSTANT NUMBER := 2;
c_low CONSTANT NUMBER := 1;
c_new CONSTANT VARCHAR2 (200) := 'New';
c_preval CONSTANT VARCHAR2 (200) := 'Pre-Val';
c_batchval CONSTANT VARCHAR2 (200) := 'Batch Val';
c_valid CONSTANT VARCHAR2 (200) := 'Data Val';
c_batchder CONSTANT VARCHAR2 (200) := 'Batch Derive';
c_derive CONSTANT VARCHAR2 (200) := 'Data Derive';
c_postval CONSTANT VARCHAR2 (200) := 'Post Val';
c_api CONSTANT VARCHAR2 (200) := 'API';
c_process_data CONSTANT VARCHAR2 (200) := 'Process Data';
c_null CONSTANT VARCHAR2 (200) := NULL;
c_yes VARCHAR2 (2) := 'Y';
c_no VARCHAR2 (2) := 'N';
FUNCTION find_max (
p_error_code1 VARCHAR2
, p_error_code2 VARCHAR2)
RETURN VARCHAR2;
FUNCTION get_new_operating_unit (
p_legacy_operating_unit_name IN VARCHAR2
, x_new_org_id OUT NUMBER)
RETURN NUMBER;
FUNCTION get_new_uom (
p_inventory_item_no IN mtl_system_items_b.segment1%TYPE DEFAULT NULL
, p_organization_id IN mtl_system_items_b.organization_id%TYPE DEFAULT NULL
, x_new_uom_code OUT VARCHAR2)
RETURN NUMBER;
FUNCTION get_inventory_item_id (
p_item_no IN VARCHAR2 DEFAULT NULL
, p_organization_id IN mtl_system_items_b.organization_id%TYPE DEFAULT NULL
, x_inventory_item_id OUT mtl_system_items_b.inventory_item_id%TYPE)
RETURN NUMBER;
FUNCTION get_vendor_id (
p_vendor_num IN VARCHAR2 DEFAULT NULL
, x_vendor_id OUT po_vendors.vendor_id%TYPE)
RETURN NUMBER;
FUNCTION get_location_id (
p_location IN VARCHAR2 DEFAULT NULL
, x_location_id OUT NUMBER)
RETURN NUMBER;
FUNCTION get_vendor_id_frm_num (
p_vendor_num IN VARCHAR2 DEFAULT NULL
, p_vendor_name IN VARCHAR2 DEFAULT NULL
, x_vendor_id OUT NUMBER)
RETURN NUMBER;
FUNCTION get_emp_id_frm_nt_id (
p_nt_id IN VARCHAR2 DEFAULT NULL
, p_orgn_code IN VARCHAR2
, x_person_id OUT NUMBER)
RETURN NUMBER;
FUNCTION get_organization_code (
p_organization_id IN org_organization_definitions.organization_id%TYPE
, x_organization_code OUT org_organization_definitions.organization_code%TYPE)
RETURN NUMBER;
FUNCTION get_organization_id (
p_organization_code IN org_organization_definitions.organization_code%TYPE
, x_organization_id OUT org_organization_definitions.organization_id%TYPE)
RETURN NUMBER;
FUNCTION get_operatingunit_code (
p_operatingunit_code IN fnd_lookup_values.meaning%TYPE
, x_operatingunit_code OUT fnd_lookup_values.description%TYPE)
RETURN NUMBER;
FUNCTION get_uom_code (
p_uom_code IN fnd_lookup_values.meaning%TYPE
, x_uom_code OUT fnd_lookup_values.description%TYPE)
RETURN NUMBER;
FUNCTION get_customer_num (
p_customer_num IN fnd_lookup_values.meaning%TYPE
, x_customer_num OUT fnd_lookup_values.description%TYPE)
RETURN NUMBER;
FUNCTION get_customer_name (
p_customer_num IN fnd_lookup_values.meaning%TYPE
, x_customer_name OUT VARCHAR2)
RETURN NUMBER;
FUNCTION get_customer_billto (
p_legacy_custno IN VARCHAR2
, p_legacy_custbillto IN VARCHAR2 DEFAULT NULL
, p_legacy_org_id IN NUMBER
, x_cust_num OUT VARCHAR2
, x_cust_billto OUT VARCHAR2)
RETURN NUMBER;
END xxak_cnv_common_pkg;
/
Body:
CREATE OR REPLACE PACKAGE BODY xxak_cnv_common_pkg
AS
FUNCTION find_max (
p_error_code1 VARCHAR2
, p_error_code2 VARCHAR2)
RETURN VARCHAR2
IS
x_return_value VARCHAR2 (100);
BEGIN
SELECT MAX (ERROR_CODE)
INTO x_return_value
FROM (SELECT p_error_code1 ERROR_CODE
FROM DUAL
UNION
SELECT p_error_code2 ERROR_CODE
FROM DUAL);
RETURN x_return_value;
END find_max;
/*********************************************************************************
-- This function will return the new org id based on the either input parameters
-- provided(Org_id or operating name)
**********************************************************************************/
FUNCTION get_new_operating_unit (
p_legacy_operating_unit_name IN VARCHAR2
, x_new_org_id OUT NUMBER)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
--recinfo c_operating_unit%ROWTYPE;
x_org_id hr_operating_units.organization_id%TYPE;
BEGIN
SELECT organization_id org_id
INTO x_new_org_id
FROM hr_operating_units
WHERE NAME = p_legacy_operating_unit_name;
RETURN x_error_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fnd_file.put_line (fnd_file.LOG
, 'Operating Unit Name is not valid ' || p_legacy_operating_unit_name);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving the new operating unit');
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_new_operating_unit;
FUNCTION get_new_uom (
p_inventory_item_no IN mtl_system_items_b.segment1%TYPE DEFAULT NULL
, p_organization_id IN mtl_system_items_b.organization_id%TYPE DEFAULT NULL
, x_new_uom_code OUT VARCHAR2)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
--p_new_uom_code mtl_system_items_b.primary_uom_code%TYPE;
BEGIN
SELECT primary_uom_code
INTO x_new_uom_code
FROM mtl_system_items_b
WHERE segment1 = p_inventory_item_no
AND organization_id = p_organization_id;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Exception while deriving UOM of Item ' || SQLCODE || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_new_uom;
--
-- get inventory_item_id
--
FUNCTION get_inventory_item_id (
p_item_no IN VARCHAR2 DEFAULT NULL
, p_organization_id IN mtl_system_items_b.organization_id%TYPE DEFAULT NULL
, x_inventory_item_id OUT mtl_system_items_b.inventory_item_id%TYPE)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
--x_inventory_item_id mtl_system_items_b.inventory_item_id%TYPE;
BEGIN
SELECT inventory_item_id
INTO x_inventory_item_id
FROM mtl_system_items_b
WHERE segment1 = p_item_no
AND organization_id = p_organization_id;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving Inventory Item id ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_inventory_item_id;
FUNCTION get_vendor_id (
p_vendor_num IN VARCHAR2 DEFAULT NULL
, x_vendor_id OUT po_vendors.vendor_id%TYPE)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
--x_vendor_id po_vendors.vendor_id%TYPE;
BEGIN
SELECT vendor_id
INTO x_vendor_id
FROM AP_SUPPLIERS ----po_vendors
WHERE segment1 = p_vendor_num
AND enabled_flag = xxak_cnv_common_pkg.c_yes
AND (end_date_active IS NULL
OR end_date_active > SYSDATE);
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving vendor_id ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_vendor_id;
FUNCTION get_location_id (
p_location IN VARCHAR2 DEFAULT NULL
, x_location_id OUT NUMBER)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
--x_location_id hr_locations.location_id%TYPE;
BEGIN
SELECT location_id
INTO x_location_id
FROM hr_locations
WHERE location_code = p_location
AND NVL (inactive_date
, SYSDATE + 1) > SYSDATE;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving location_id ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_location_id;
FUNCTION get_vendor_id_frm_num (
p_vendor_num IN VARCHAR2 DEFAULT NULL
, p_vendor_name IN VARCHAR2 DEFAULT NULL
, x_vendor_id OUT NUMBER)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
x_vendr_id po_vendors.vendor_id%TYPE;
BEGIN
SELECT vendor_id
INTO x_vendor_id
FROM AP_SUPPLIERS ---po_vendors
WHERE segment1 = NVL (p_vendor_num
, segment1)
AND vendor_name = NVL (p_vendor_name
, vendor_name)
AND enabled_flag = xxak_cnv_common_pkg.c_yes
AND (end_date_active IS NULL
OR end_date_active > SYSDATE);
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving location_id ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_vendor_id_frm_num;
FUNCTION get_emp_id_frm_nt_id (
p_nt_id IN VARCHAR2 DEFAULT NULL
, p_orgn_code IN VARCHAR2
, x_person_id OUT NUMBER)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
--l_person_id per_all_people_f.person_id%TYPE;
x_business_group_id NUMBER;
BEGIN
SELECT business_group_id
INTO x_business_group_id
FROM hr_organization_units
WHERE organization_id = (SELECT organization_id
FROM mtl_parameters
WHERE organization_code = p_orgn_code);
SELECT person_id
INTO x_person_id
FROM per_all_people_f
WHERE employee_number = p_nt_id
AND business_group_id = x_business_group_id
AND TRUNC (NVL (effective_end_date
, SYSDATE) ) >= TRUNC (SYSDATE);
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving person_id ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_emp_id_frm_nt_id;
FUNCTION get_organization_code (
p_organization_id IN org_organization_definitions.organization_id%TYPE
, x_organization_code OUT org_organization_definitions.organization_code%TYPE)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
BEGIN
SELECT organization_code
INTO x_organization_code
FROM org_organization_definitions
WHERE organization_id = p_organization_id;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving organization_id ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_organization_code;
FUNCTION get_organization_id (
p_organization_code IN org_organization_definitions.organization_code%TYPE
, x_organization_id OUT org_organization_definitions.organization_id%TYPE)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
BEGIN
SELECT organization_id
INTO x_organization_id
FROM org_organization_definitions
WHERE organization_code = p_organization_code;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving organization_id ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_organization_id;
FUNCTION get_operatingunit_code (
p_operatingunit_code IN fnd_lookup_values.meaning%TYPE
, x_operatingunit_code OUT fnd_lookup_values.description%TYPE)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
x_ou_cunt NUMBER := 0;
BEGIN
SELECT flv.description
INTO x_operatingunit_code
FROM fnd_lookup_values flv
WHERE flv.lookup_type = 'XXLSS_OU_XREF'
AND flv.LANGUAGE = USERENV ('LANG')
AND flv.meaning = p_operatingunit_code;
SELECT COUNT (1)
INTO x_ou_cunt
FROM hr_operating_units hou
WHERE hou.NAME = x_operatingunit_code
AND NVL (TRUNC (date_to)
, SYSDATE) >= TRUNC (SYSDATE);
IF x_ou_cunt <> 0 THEN
x_error_code := xxak_cnv_common_pkg.c_success;
ELSE
x_error_code := xxak_cnv_common_pkg.c_rec_err;
x_operatingunit_code := NULL;
END IF;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving Operating Unit ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_operatingunit_code;
FUNCTION get_uom_code (
p_uom_code IN fnd_lookup_values.meaning%TYPE
, x_uom_code OUT fnd_lookup_values.description%TYPE)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
x_uom_cunt NUMBER := 0;
x_uom_value VARCHAR2 (10) := NULL;
BEGIN
SELECT COUNT (1)
INTO x_uom_cunt
FROM fnd_lookup_values flv
WHERE flv.lookup_type = 'XXLSS_UOM_XREFERENCE'
AND flv.LANGUAGE = USERENV ('LANG')
AND flv.meaning = p_uom_code;
IF x_uom_cunt <> 0 THEN
SELECT flv.description
INTO x_uom_value
FROM fnd_lookup_values flv
WHERE flv.lookup_type = 'XXLSS_UOM_XREFERENCE'
AND flv.LANGUAGE = USERENV ('LANG')
AND flv.meaning = p_uom_code;
ELSE
SELECT uom_code
INTO x_uom_value
FROM mtl_units_of_measure muo
WHERE muo.LANGUAGE = USERENV ('LANG')
AND muo.uom_code = p_uom_code
AND NVL (TRUNC (disable_date)
, SYSDATE) >= TRUNC (SYSDATE);
END IF;
IF x_uom_value IS NOT NULL THEN
x_error_code := xxak_cnv_common_pkg.c_success;
x_uom_code := x_uom_value;
ELSE
x_error_code := xxak_cnv_common_pkg.c_rec_err;
x_uom_code := NULL;
END IF;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving UOM ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_uom_code;
FUNCTION get_customer_num (
p_customer_num IN fnd_lookup_values.meaning%TYPE
, x_customer_num OUT fnd_lookup_values.description%TYPE)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
x_party_cunt NUMBER := 0;
x_cust_cunt NUMBER := 0;
BEGIN
SELECT COUNT (1)
INTO x_cust_cunt
FROM hz_cust_accounts_all
WHERE account_number = p_customer_num;
IF x_cust_cunt <> 0 THEN
x_error_code := xxak_cnv_common_pkg.c_success;
x_customer_num := p_customer_num;
ELSE
SELECT NVL (flv.description
, flv.meaning)
INTO x_customer_num
FROM fnd_lookup_values flv
WHERE flv.lookup_type = 'XXLSS_CUSTOMER_XREF'
AND flv.LANGUAGE = USERENV ('LANG')
AND flv.meaning = p_customer_num;
SELECT COUNT (1)
INTO x_party_cunt
FROM hz_cust_accounts_all
WHERE account_number = x_customer_num;
IF x_party_cunt <> 0 THEN
x_error_code := xxak_cnv_common_pkg.c_success;
ELSE
x_error_code := xxak_cnv_common_pkg.c_rec_err;
x_customer_num := NULL;
END IF;
END IF;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving R12 Customer Number' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_customer_num;
FUNCTION get_customer_name (
p_customer_num IN fnd_lookup_values.meaning%TYPE
, x_customer_name OUT VARCHAR2)
RETURN NUMBER
IS
x_customer_num VARCHAR2 (2000) := NULL;
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
BEGIN
x_error_code := xxak_cnv_common_pkg.get_customer_num (p_customer_num
, x_customer_num);
IF x_error_code = xxak_cnv_common_pkg.c_success THEN
SELECT hp.party_name
INTO x_customer_name
FROM hz_parties hp
, hz_cust_accounts_all hca
WHERE hp.party_id = hca.party_id
AND hca.account_number = x_customer_num;
ELSE
x_customer_name := NULL;
x_error_code := xxak_cnv_common_pkg.c_rec_err;
END IF;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving R12 Customer Name ' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_customer_name;
FUNCTION get_customer_billto (
p_legacy_custno IN VARCHAR2
, p_legacy_custbillto IN VARCHAR2 DEFAULT NULL
, p_legacy_org_id IN NUMBER
, x_cust_num OUT VARCHAR2
, x_cust_billto OUT VARCHAR2)
RETURN NUMBER
IS
x_error_code NUMBER := xxak_cnv_common_pkg.c_success;
x_cust_number VARCHAR2 (200) := NULL;
BEGIN
x_error_code := xxak_cnv_common_pkg.get_customer_num (p_legacy_custno
, x_cust_number);
IF x_error_code = xxak_cnv_common_pkg.c_success THEN
x_cust_num := x_cust_number;
SELECT hcs.LOCATION
INTO x_cust_billto
FROM hz_cust_accounts_all hca
, hz_cust_acct_sites_all hcas
, hz_cust_site_uses_all hcs
, hr_organization_units hou
WHERE hca.cust_account_id = hcas.cust_account_id
AND hcas.cust_acct_site_id = hcs.cust_acct_site_id
AND hcas.org_id = hou.organization_id
AND NVL (hou.date_to
, SYSDATE + 1) >= SYSDATE
AND hcs.site_use_code = 'BILL_TO'
AND hcs.primary_flag = 'Y'
AND account_number = x_cust_number
AND hcs.org_id = p_legacy_org_id;
ELSE
x_error_code := xxak_cnv_common_pkg.c_rec_err;
x_cust_billto := NULL;
x_cust_num := NULL;
END IF;
RETURN x_error_code;
EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line (fnd_file.LOG
, 'Error Occured while deriving R12 Bill to' || SQLERRM);
x_error_code := xxak_cnv_common_pkg.c_rec_err;
RETURN x_error_code;
END get_customer_billto;
END xxak_cnv_common_pkg;
/