You are on page 1of 5

CREATE OR REPLACE PROCEDURE XXSD_INV_CREAT_LINE

AS
V_ERR_FLAG VARCHAR2(100);
V_MESSAGE VARCHAR2(100);
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_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_STARTING_TIME VARCHAR2(100);
V_ENDING_TIME VARCHAR2(100);
V_SOURCE_COUNT NUMBER;
V_CODE_COMBINATION_ID NUMBER;
v_line_type VARCHAR2(400);
c_inv_numbers NUMBER;
CURSOR c_invoice
IS
SELECT *
FROM XXSD_STAG_AP_INV_TABLE
WHERE NVL(STATUS,'NEW') NOT IN ('PROCESSED');
BEGIN
FOR i IN c_invoice
LOOP
----------------variable null---------------------------------
V_ERR_FLAG := NULL;
V_MESSAGE := 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_CODE_COMBINATION_ID :=NULL;
V_INV_LINE_ID := NULL;
-------------------------------------------startiing date update for staging
table----------------------------
V_STARTING_TIME := TO_CHAR (SYSDATE, 'DD-mm-YYYY');

------------------------Operating unit----------------------------------
BEGIN
SELECT ORGANIZATION_ID
INTO V_ORG_ID
FROM HR_ALL_ORGANIZATION_UNITS
WHERE TRIM(name) = TRIM(i.OPERATING_UNIT);
EXCEPTION
WHEN OTHERS THEN
V_MESSAGE :=V_MESSAGE||'---'||'Invalid Operating Unit';
V_ERR_FLAG :='Y';
END;
---------------------------Supplier---------------------------
BEGIN
SELECT VENDOR_ID
INTO v_vendor_id
FROM AP_SUPPLIERS
WHERE upper(vendor_name)=upper(i.TRADING_PARTNER);
EXCEPTION
WHEN OTHERS THEN
V_ERR_FLAG :='Y';
V_MESSAGE :=V_MESSAGE||'---'||'Invalid Supplier';
END;
---------------------------Supplier
site---------------------------------------------
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.SUPPLIER_SITE_NAME);
EXCEPTION
WHEN OTHERS THEN
V_ERR_FLAG :='Y';
V_MESSAGE :=V_MESSAGE||'Invalid Supplier Site';
END;
--------------------------------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_MESSAGE :=V_MESSAGE|| 'Invalid Payment Method';
END;
---------------------------------Invoice
num----------------------------------------
BEGIN
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);
EXCEPTION
WHEN OTHERS THEN
V_ERR_FLAG :='Y';
V_MESSAGE :=V_MESSAGE|| 'Invalid Payment Method';
END;
--------------------Invoice
currency------------------------------------------------
BEGIN
SELECT CURRENCY_CODE
INTO V_CURRENCY_CODE
FROM FND_CURRENCIES_TL
WHERE trim(currency_code)=trim(i.PAYMENT_CURR);
EXCEPTION
WHEN OTHERS THEN
V_ERR_FLAG :='Y';
V_MESSAGE :=V_MESSAGE||'Invalid Invoice Currency';
END;
-------------------------------Terms
name------------------------------------------
BEGIN
SELECT TERM_ID
INTO V_TERMS_ID
FROM AP_TERMS_TL
WHERE upper(name)=upper(i.TERMS);
EXCEPTION
WHEN OTHERS THEN
V_ERR_FLAG :='Y';
V_MESSAGE :=V_MESSAGE|| 'Invalid Terms Name';
END;
--------------------------------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_ERR_FLAG :='Y';
V_MESSAGE :=V_MESSAGE||'Invalid invoice source';
END;
------------------------------Invoice
type-----------------------------------------------
BEGIN
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;
EXCEPTION
WHEN OTHERS THEN
v_inv_type_code :=NULL;
V_ERR_FLAG :='Y';
V_MESSAGE :='Invalid Invoice Type';
END;
---------------------------------------insert interface
number---------------------------------------------
IF NVL(V_ERR_FLAG,'NEW')='NEW' THEN
SELECT AP_INVOICES_INTERFACE_S.NEXTVAL INTO V_INV_ID FROM DUAL;
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,
CREATION_DATE,
LAST_UPDATE_DATE,
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,
sysdate,
SYSDATE,
v_source_code
);
--- COMMIT;
--------------------------INTERFACE LINE--------------------
INSERT
INTO ap_invoice_lines_interface
(
invoice_id,
invoice_line_id,
---line_number,
---amount,
org_id,
CREATION_DATE,
LAST_UPDATE_DATE,
DIST_CODE_COMBINATION_ID
---line_type_lookup_code
)
VALUES
(
v_inv_id,
v_inv_line_id,
--i.line_number,
--i.LINE_AMOUNT,
v_org_id,
sysdate,
SYSDATE,
V_CODE_COMBINATION_ID
--i.line_item
);
V_Ending_Time:= TO_CHAR (SYSDATE, 'DD-MON-YYYY HH:MI:SS');
UPDATE XXSD_STAG_AP_INV_TABLE
SET STATUS ='P',
----Ending_Time = V_Ending_Time,
MESSAGE = V_MESSAGE
WHERE invoice_num=i.invoice_num
AND SUPPLIER_NUM =i.SUPPLIER_NUM;
---and id =i.id;
ELSE
UPDATE XXSD_STAG_AP_INV_TABLE
SET STATUS ='E',
MESSAGE =V_MESSAGE
WHERE invoice_num=i.invoice_num
AND SUPPLIER_NUM =i.SUPPLIER_NUM;
--and id=i.id;
END IF;
END LOOP;
END;

EXEC XXSD_INV_CREAT_LINE;

You might also like