Procedure For Open Sales Order
Procedure For Open Sales Order
KROSS_SO_HEADER_STG
(
LEGACY_SO_NUM VARCHAR2(15 BYTE),
CUSTOMER_NAME VARCHAR2(150 BYTE),
CUSTOMER_NO VARCHAR2(10 BYTE),
BILL_TO VARCHAR2(5 BYTE),
SHIP_TO VARCHAR2(5 BYTE),
TRANSACTION_TYPE VARCHAR2(30 BYTE),
CUSTOMER_PO_NO VARCHAR2(100 BYTE),
ORDER_DATE DATE,
PRICE_LIST VARCHAR2(20 BYTE),
PAYMENT_TERMS VARCHAR2(50 BYTE),
WAREHOUSE VARCHAR2(5 BYTE),
VERIFY_FLAG CHAR(1 BYTE),
ERROR_MESSAGE VARCHAR2(3000 BYTE),
NO_LINES VARCHAR2(1 BYTE)
)
L_PRICE_LIST QP_LIST_HEADERS_TL.LIST_HEADER_ID%TYPE;
L_VERIFY_FLAG CHAR(1);
L_ERROR_MESSAGE VARCHAR2(3000);
L_TERM_ID RA_TERMS_TL.TERM_ID%TYPE;
L_ORDER_TYPE OE_TRANSACTION_TYPES_TL.TRANSACTION_TYPE_ID%TYPE;
L_ORDER_SOURCE_ID OE_ORDER_SOURCES.ORDER_SOURCE_ID%TYPE;
L_INVENTORY_ITEM_ID MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID%TYPE;
L_ORGANIZATION_ID ORG_ORGANIZATION_DEFINITIONS.ORGANIZATION_ID%TYPE;
L_UOM_CODE MTL_UNITS_OF_MEASURE_VL.UOM_CODE%TYPE;
L_LINE_TYPE_ID OE_TRANSACTION_TYPES_TL.TRANSACTION_TYPE_ID%TYPE;
L_CURRENCY_CODE FND_CURRENCIES_VL.CURRENCY_CODE%TYPE;
L_CUSTOMER_ID RA_CUSTOMERS.CUSTOMER_ID%TYPE;
L_INVOICE_TO_ORGID OE_INVOICE_TO_ORGS_V.ORGANIZATION_ID%TYPE;
L_SHIPTO_ORG_ID OE_SHIP_TO_ORGS_V.ORGANIZATION_ID%TYPE;
L_ORG_ID HR_OPERATING_UNITS.ORGANIZATION_ID%TYPE;
L_USER_ID FND_USER.USER_ID%TYPE;
L_SHIP_TO_ORG_ID NUMBER(10);
L_BILL_TO_ORG_ID NUMBER(10);
CURSOR C_HEADER
IS
SELECT *
FROM KROSS_SO_HEADER_STG
WHERE NVL(VERIFY_FLAG,'N') = 'N' ;
BEGIN
BEGIN
SELECT ORGANIZATION_ID
INTO L_ORG_ID
FROM HR_OPERATING_UNITS
WHERE NAME = 'KMPL - PHASE VI';
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := 'OPERATING UNIT IS INVALID';
END;
BEGIN
SELECT LIST_HEADER_ID
INTO L_PRICE_LIST
FROM QP_LIST_HEADERS_TL
WHERE UPPER(NAME) = UPPER('Kross_Domestic');
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'PRICE LIST IS NOT VALID';
END;
BEGIN
SELECT TERM_ID
INTO L_TERM_ID
FROM RA_TERMS_TL
WHERE UPPER(NAME) = UPPER(TRIM(H1.PAYMENT_TERMS));
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'PAYMENT TERM ID IS NOT VALID';
END;
BEGIN
SELECT ORDER_SOURCE_ID
INTO L_ORDER_SOURCE_ID
FROM OE_ORDER_SOURCES
WHERE NAME = 'ONLINE' ;
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'ORDER SOURCE IS NOT VALID';
END;
BEGIN
SELECT ORGANIZATION_ID
INTO L_ORGANIZATION_ID
FROM ORG_ORGANIZATION_DEFINITIONS
WHERE ORGANIZATION_CODE = TRIM(H1.WAREHOUSE);
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||' ORGANIZATION_ID IS NOT VALID';
END;
BEGIN
SELECT CUSTOMER_ID
INTO L_CUSTOMER_ID --SOLD TO ORGID
FROM RA_CUSTOMERS
WHERE UPPER(CUSTOMER_NAME) = TRIM(UPPER(H1.CUSTOMER_NAME))
AND STATUS = 'A';
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'CUSTOMER NAME NOT VALID';
END;
BEGIN
SELECT USER_ID
INTO L_USER_ID
FROM FND_USER
WHERE USER_NAME = 'CONACENT' ;
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'USER NAME IS INVALID';
END;
BEGIN
SELECT SHIP_SU.SITE_USE_ID
INTO L_SHIP_TO_ORG_ID
FROM HZ_CUST_SITE_USES_ALL SHIP_SU,
HZ_CUST_ACCT_SITES_ALL SHIP_CAS,
HZ_PARTY_SITES SHIP_PS
WHERE SHIP_SU.ORG_ID = L_ORG_ID
AND SHIP_SU.ORG_ID = SHIP_CAS.ORG_ID
AND SHIP_SU.LOCATION = TRIM(H1.SHIP_TO)
AND SHIP_SU.CUST_ACCT_SITE_ID = SHIP_CAS.CUST_ACCT_SITE_ID(+)
AND SHIP_CAS.PARTY_SITE_ID = SHIP_PS.PARTY_SITE_ID(+)
AND SHIP_PS.PARTY_SITE_ID IN (SELECT PARTY_SITE_ID
FROM HZ_PARTY_SITES
WHERE PARTY_ID = (SELECT PARTY_ID
FROM hz_parties
WHERE PARTY_ID = L_CUSTOMER_ID
AND STATUS = 'A'));
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'INVALID SHIP TO';
END;
BEGIN
SELECT SHIP_SU.SITE_USE_ID
INTO L_BILL_TO_ORG_ID
FROM HZ_CUST_SITE_USES_ALL SHIP_SU,
HZ_CUST_ACCT_SITES_ALL SHIP_CAS,
HZ_PARTY_SITES SHIP_PS
WHERE SHIP_SU.ORG_ID = L_ORG_ID
AND SHIP_SU.ORG_ID = SHIP_CAS.ORG_ID
AND SHIP_SU.LOCATION = TRIM(H1.BILL_TO)
AND SHIP_SU.CUST_ACCT_SITE_ID = SHIP_CAS.CUST_ACCT_SITE_ID(+)
AND SHIP_CAS.PARTY_SITE_ID = SHIP_PS.PARTY_SITE_ID(+)
AND SHIP_PS.PARTY_SITE_ID IN (SELECT PARTY_SITE_ID
FROM HZ_PARTY_SITES
WHERE PARTY_ID = (SELECT PARTY_ID
FROM HZ_PARTIES
WHERE PARTY_ID = L_CUSTOMER_ID
AND STATUS = 'A'));
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'INVALID BILL TO';
END;
BEGIN
UPDATE KROSS_SO_HEADER_STG
SET VERIFY_FLAG = 'Y'
WHERE CUSTOMER_NAME = H1.CUSTOMER_NAME
AND LEGACY_SO_NUM = H1.LEGACY_SO_NUM;
EXCEPTION
WHEN OTHERS THEN
L_ERROR_MESSAGE := SQLERRM;
L_VERIFY_FLAG := 'N';
UPDATE KROSS_SO_HEADER_STG
SET VERIFY_FLAG = 'N',
ERROR_MESSAGE = 'HEADER ERROR'||L_ERROR_MESSAGE
WHERE CUSTOMER_NAME = H1.CUSTOMER_NAME
AND LEGACY_SO_NUM = H1.LEGACY_SO_NUM;
--GOTO NEXT_SO;
END;
BEGIN
SELECT INVENTORY_ITEM_ID
INTO L_INVENTORY_ITEM_ID
FROM MTL_SYSTEM_ITEMS_B
WHERE UPPER(SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4) =
TRIM(UPPER(L1.ITEM_CODE))
AND ORGANIZATION_ID = L_ORGANIZATION_ID ;
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'ITEM NAME IS NOT EXISTING';
END;
BEGIN
SELECT UOM_CODE
INTO L_UOM_CODE
FROM MTL_UNITS_OF_MEASURE_VL
WHERE UOM_CODE = TRIM(UPPER(L1.UOM));
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'UOM IS NOT VALID';
END;
BEGIN
SELECT TRANSACTION_TYPE_ID
INTO L_LINE_TYPE_ID
FROM OE_TRANSACTION_TYPES_TL
WHERE NAME = TRIM(UPPER(L1.LINE_TYPE));
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N' ;
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'LINE TYPE IS NOT VALID';
END;
BEGIN
UPDATE KROSS_SO_LINES_STG
SET VERIFY_FLAG = 'Y'
WHERE LEGACY_SO_NUM = L1.LEGACY_SO_NUM
AND ITEM_CODE = L1.ITEM_CODE;
EXCEPTION
WHEN OTHERS THEN
--ROLLBACK TO A;
L_ERROR_MESSAGE := SQLERRM;
UPDATE KROSS_SO_LINES_STG
SET VERIFY_FLAG = 'N',
ERROR_MESSAGE = 'LINE ERROR'||L_ERROR_MESSAGE
WHERE LEGACY_SO_NUM = L1.LEGACY_SO_NUM
AND ITEM_CODE = L1.ITEM_CODE;
UPDATE KROSS_SO_HEADER_STG
SET VERIFY_FLAG = 'N'
WHERE LEGACY_SO_NUM = L1.LEGACY_SO_NUM;
--GOTO NEXT_SO;
END;
ELSE
UPDATE KROSS_SO_LINES_STG
SET VERIFY_FLAG = 'N',
ERROR_MESSAGE = L_ERROR_MESSAGE
WHERE LEGACY_SO_NUM = L1.LEGACY_SO_NUM
AND ITEM_CODE = L1.ITEM_CODE;
UPDATE KROSS_SO_HEADER_STG
SET VERIFY_FLAG = 'N'
WHERE LEGACY_SO_NUM = L1.LEGACY_SO_NUM;
END IF;
END LOOP ;
ELSE
UPDATE KROSS_SO_HEADER_STG
SET VERIFY_FLAG = 'N',
ERROR_MESSAGE = L_ERROR_MESSAGE
WHERE LEGACY_SO_NUM = H1.LEGACY_SO_NUM;
END IF;
COMMIT;
END LOOP;
END;
/