Sample Script
Sample Script
AS
V_ORG_ID NUMBER;
V_VENDOR_ID NUMBER;
V_VENDOR_SITE_ID NUMBER;
V_INV_TYPE_CODE VARCHAR2(100);
V_INV_COUNT NUMBER;
V_CURRENCY_CODE VARCHAR2(10);
v_liability_account VARCHAR2(500);
V_INV_ID NUMBER;
V_INV_LINE_ID NUMBER;
V_INVOICE_AMOUNT NUMBER;
v_terms_id NUMBER;
V_PAY_METHOD VARCHAR2(10);
v_source_code varchar2(10);
V_ACCT_CCID NUMBER;
V_STARTING_TIME VARCHAR2(100);
V_ENDING_TIME VARCHAR2(100);
V_SOURCE_COUNT NUMBER;
CURSOR C1
IS
SELECT * FROM XXAP_INVOICE_STG_LINE WHERE nvl(IFACE_STATUS,'E') in ('E','IE');
BEGIN
FOR I IN C1
LOOP
----------------variable null---------------------------------
V_ERR_FLAG := NULL;
V_ERR_MESG := NULL;
V_ORG_ID := NULL;
V_VENDOR_ID := NULL;
V_VENDOR_SITE_ID := NULL;
V_INV_COUNT := 0;
V_CURRENCY_CODE := NULL;
V_INV_TYPE_CODE := null;
V_INVOICE_AMOUNT :=0;
V_PAY_METHOD := NULL;
V_LIABILITY_ACCOUNT := NULL;
V_INV_LINE_ID := NULL;
-------------------------------------------startiing date update for staging
table----------------------------
V_STARTING_TIME := TO_CHAR (SYSDATE, 'DD-mm-YYYY');
BEGIN
UPDATE XXAP_INVOICE_STG_LINE
SET STARTING_TIME =V_STARTING_TIME,
USER_NAME = V_USER_NAME
WHERE 1=1
and ST_ID =I.ST_ID
AND INVOICE_NUM= I.INVOICE_NUM;
--- COMMIT;
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE (FND_FILE.LOG,'Unable to Update Start time '||SQLERRM);
END;
------------------------Operating unit----------------------------------
IF i.OU_NAME IS NULL THEN
v_err_flag :='Y';
V_ERR_MESG := 'Operating Unit Required';
ELSE
BEGIN
SELECT ORGANIZATION_ID
INTO V_ORG_ID
FROM HR_ALL_ORGANIZATION_UNITS
WHERE TRIM(name) = TRIM(i.OU_NAME);
EXCEPTION
WHEN OTHERS THEN
v_err_flag :='Y';
V_ERR_MESG := 'Invalid Operating Unit';
END;
END IF;
------------------------------------Liability Code
Combination-------------------------------
IF i.liability_account IS NULL THEN
v_err_flag :='Y';
V_ERR_MESG := 'Invalid Code Combination';
ELSE
BEGIN
SELECT CODE_COMBINATION_ID
INTO V_ACCT_CCID
FROM GL_CODE_COMBINATIONS
WHERE 1=1
AND SEGMENT1
||'.'
||SEGMENT2
||'.'
||SEGMENT3
||'.'
||SEGMENT4
||'.'
||SEGMENT5
||'.'
||SEGMENT6
||'.'
||SEGMENT7 =i.liability_account;
IF V_ACCT_CCID IS NULL THEN
v_err_flag :='Y';
V_ERR_MESG := ' Account Cross Vadidation Failed';
END IF;
END;
END IF;
---------------------------Supplier---------------------------
IF i.supplier IS NULL THEN
v_err_flag :='Y';
V_ERR_MESG := 'Supplier Required';
ELSE
BEGIN
SELECT VENDOR_ID
INTO v_vendor_id
FROM AP_SUPPLIERS
WHERE upper(vendor_name)=upper(i.supplier);
EXCEPTION
WHEN OTHERS THEN
v_err_flag :='Y';
V_ERR_MESG := 'Invalid Supplier';
END;
END IF;
---------------------------Supplier
site----------------------------------------------
IF v_vendor_id IS NOT NULL THEN
IF i.site IS NULL THEN
v_err_flag :='Y';
V_ERR_MESG := 'Invalid Supplier Site';
ELSE
BEGIN
SELECT VENDOR_SITE_ID
INTO v_vendor_site_id
FROM AP_SUPPLIER_SITES_ALL
WHERE VENDOR_ID =V_VENDOR_ID
AND ORG_ID =V_ORG_ID
AND UPPER(VENDOR_SITE_CODE)=UPPER(I.SITE);
EXCEPTION
WHEN OTHERS THEN
v_err_flag :='Y';
V_ERR_MESG := 'Invalid Supplier Site';
END;
END IF;
END IF;
--------------------------------Payment
method-----------------------------------------------
BEGIN
SELECT LOOKUP_CODE
INTO V_PAY_METHOD
FROM FND_LOOKUP_VALUES
WHERE LOOKUP_TYPE='PAYMENT METHOD'
AND trim(meaning)=trim(i.payment_method);
EXCEPTION
WHEN OTHERS THEN
v_err_flag :='Y';
V_ERR_MESG := 'Invalid Payment Method';
END;
---------------------------------Invoice
num----------------------------------------
IF i.invoice_num IS NULL THEN
V_ERR_FLAG :='Y';
V_ERR_MESG := 'Invoice Num Required';
ELSE
SELECT COUNT(*)
INTO V_INV_COUNT
FROM AP_INVOICES_ALL
WHERE ORG_ID =V_ORG_ID
AND VENDOR_ID =V_VENDOR_ID
AND VENDOR_SITE_ID =V_VENDOR_SITE_ID
AND trim(invoice_num)=trim(i.invoice_num);
END IF;
END IF;
--------------------Invoice
currency------------------------------------------------
IF i.invoice_currency IS NULL THEN
v_err_flag :='Y';
V_ERR_MESG := 'Invoice Currency Required';
ELSE
BEGIN
SELECT CURRENCY_CODE
INTO V_CURRENCY_CODE
FROM FND_CURRENCIES_TL
WHERE trim(currency_code)=trim(i.invoice_currency);
EXCEPTION
WHEN OTHERS THEN
v_err_flag :='Y';
--------------------------------Invoice
source-------------------------------------------
begin
select lookup_code
into v_source_code
from fnd_lookup_values
where lookup_type='SOURCE'
and meaning='EXTERNAL';
exception
when others
then
v_source_code :=null;
v_err_flag :='Y';
V_ERR_MESG :='Invalid Invoice Source';
end;
------------------------------Invoice
type-----------------------------------------------
IF i.type IS NOT NULL THEN
BEGIN
IF i.type='Mixed' AND i.INVOICE_AMOUNT LIKE '-%'
THEN
SELECT LOOKUP_CODE
INTO V_INV_TYPE_CODE
FROM FND_LOOKUP_VALUES
WHERE LOOKUP_TYPE ='INVOICE TYPE'
AND TRIM(MEANING) =TRIM('Credit Memo')
and VIEW_APPLICATION_ID=200;
elsif i.type ='Mixed' AND i.INVOICE_AMOUNT Not LIKE '-%'
THEN
SELECT LOOKUP_CODE
INTO V_INV_TYPE_CODE
FROM FND_LOOKUP_VALUES
WHERE LOOKUP_TYPE='INVOICE TYPE'
AND TRIM(MEANING)=TRIM('Standard')
and VIEW_APPLICATION_ID=200;
ELSE
SELECT LOOKUP_CODE
INTO V_INV_TYPE_CODE
FROM FND_LOOKUP_VALUES
WHERE LOOKUP_TYPE='INVOICE TYPE'
AND TRIM(MEANING)=TRIM(I.type)
and VIEW_APPLICATION_ID=200;
END IF;
EXCEPTION
WHEN OTHERS THEN
v_inv_type_code :=NULL;
v_err_flag :='Y';
V_ERR_MESG :='Invalid Invoice Type';
END;
END IF;
-------------
---if nvl(v_err_flag,'N')='N'
--- then
select AP_INVOICES_INTERFACE_S.NEXTVAL
into V_INV_ID
from DUAL;
-------------------------------AP invoice
interface-----------------------------------------------------
--------------Added Validate only condition--------------
if V_INV_ID is not null
then
INSERT
INTO AP_INVOICES_INTERFACE
(
org_id,
INVOICE_TYPE_LOOKUP_CODE,
VENDOR_ID,
vendor_site_id,
INVOICE_DATE,
INVOICE_NUM,
INVOICE_ID,
invoice_currency_code,
invoice_amount,
gl_date,
PAYMENT_METHOD_LOOKUP_CODE,
payment_method_code,
terms_id,
CREATED_BY,
CREATION_DATE,
LAST_UPDATE_DATE,
LAST_UPDATED_BY,
source
)
VALUES
(
v_org_id,
V_INV_TYPE_CODE,
V_VENDOR_ID,
v_vendor_site_id,
I.INVOICE_DATE,
I.INVOICE_NUM,
V_INV_ID,
i.invoice_currency,
i.INVOICE_AMOUNT,
I.GL_DATE,
V_PAY_METHOD,
v_pay_method,
v_terms_id,
X_USER_ID,
sysdate,
SYSDATE,
x_user_id,
v_source_code
);
--- COMMIT;
-------------------------inserting lines information---------------
SELECT ap_invoice_lines_interface_s.NEXTVAL
INTO v_inv_line_id
FROM DUAL;
-----------------------------AP invoice lines
interface-----------------------------------------------------
INSERT
INTO ap_invoice_lines_interface
(
invoice_id,
invoice_line_id,
line_number,
amount,
org_id,
CREATED_BY,
CREATION_DATE,
LAST_UPDATE_DATE,
DIST_CODE_COMBINATION_ID,
line_type_lookup_code,
accounting_date
)
VALUES
(
v_inv_id,
v_inv_line_id,
1,
i.invoice_amount,
v_org_id,
x_user_id,
sysdate,
SYSDATE,
V_ACCT_CCID,
'ITEM',
I.GL_DATE
);
--- COMMIT;
---------------STATUS UPPDATE FOR STAGING TABLE-------------------
BEGIN
UPDATE XXAP_INVOICE_STG_LINE
SET IFACE_STATUS ='I',
PROCESS_FLAG ='Y',
ERROR_MESSAGE =NULL,
IFACE_ID =V_INV_ID
WHERE TRIM(INVOICE_NUM) =TRIM(I.INVOICE_NUM)
AND TRIM(OU_NAME)=TRIM(I.OU_NAME)
AND ST_ID =I.ST_ID;
--- COMMIT;
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE (FND_FILE.LOG,'Unable to insert into interface table '||
SQLERRM);
END;
--------------Added Validate only condition--------------
else
BEGIN
UPDATE XXAP_INVOICE_STG_LINE
SET IFACE_STATUS ='E',
ERROR_MESSAGE =V_ERR_MESG,
IFACE_ID =V_INV_ID
WHERE TRIM(INVOICE_NUM) =TRIM(I.INVOICE_NUM)
AND trim(OU_NAME)=trim(i.OU_NAME)
AND ST_ID =I.ST_ID;
--- COMMIT;
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE (FND_FILE.LOG,'Unable to update validation errors '||
SQLERRM);
END;
END IF;
--end if ;
V_Ending_Time:= TO_CHAR (SYSDATE, 'DD-MON-YYYY HH:MI:SS');
-----------------ENDING DATE UPODATE------------------------------
BEGIN
UPDATE XXAP_INVOICE_STG_LINE
SET Ending_Time = V_Ending_Time
WHERE ST_ID = I.ST_ID
AND INVOICE_NUM=I.INVOICE_NUM;
--- COMMIT;
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE (FND_FILE.LOG,'Unable to Update End time '||SQLERRM);
END;
END LOOP;
dbms_output.put_line('**********************************');
FND_FILE.PUT_LINE (FND_FILE.OUTPUT,
'**************************************************');
---fnd_file.put_line (FND_FILE.OUTPUT, 'Concurrent Program Name : '||
v_conc_prog_name);
FND_FILE.PUT_LINE (FND_FILE.OUTPUT, 'Executed BY : '||
V_USER_NAME);
fnd_file.put_line (FND_FILE.OUTPUT, 'Executed DATE : '||
sysdate);
fnd_file.put_line (FND_FILE.OUTPUT, 'Total No of Records Extracted : '||
v_source_count);
fnd_file.put_line (FND_FILE.OUTPUT, 'Total No of Records Sucessfull : '||
v_target);
FND_FILE.PUT_LINE (FND_FILE.OUTPUT, 'Total No of Records Error Out : '||
V_TARGET_ERROR);
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, ' Error Records List For AP Open Invoices
Conversion');
FND_FILE.PUT_LINE (FND_FILE.OUTPUT,
'===================================================');
--------
END;