CREATE TABLE APPS.
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)
)
CREATE TABLE APPS.KROSS_SO_LINES_STG
(
LEGACY_SO_NUM VARCHAR2(15 BYTE),
LINE_NUM NUMBER,
ITEM_CODE VARCHAR2(50 BYTE),
UOM VARCHAR2(10 BYTE),
LINE_TYPE VARCHAR2(30 BYTE),
QTY NUMBER(10),
PRICE_UNIT NUMBER(10,2),
REQUEST_DATE DATE,
SCHEDULED_SHIP_DATE DATE,
VERIFY_FLAG CHAR(1 BYTE),
ERROR_MESSAGE VARCHAR2(3000 BYTE),
NO_HEADER VARCHAR2(1 BYTE)
)
Procedure for open sales order
CREATE OR REPLACE PROCEDURE APPS.KROSS_OPEN_SO_API
IS
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' ;
CURSOR C_LINES(P_LEGACY_SO_NUM VARCHAR2)
IS SELECT *
FROM KROSS_SO_LINES_STG
WHERE LEGACY_SO_NUM = P_LEGACY_SO_NUM
AND NVL(VERIFY_FLAG,'N') = 'N';
BEGIN
FOR H1 IN C_HEADER LOOP
L_ERROR_MESSAGE := NULL;
L_VERIFY_FLAG := 'Y';
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 /* ORDER TYPE */
SELECT TRANSACTION_TYPE_ID
INTO L_ORDER_TYPE
FROM OE_TRANSACTION_TYPES_TL
WHERE UPPER(NAME) = TRIM(UPPER(H1.TRANSACTION_TYPE));
EXCEPTION
WHEN OTHERS THEN
L_VERIFY_FLAG := 'N';
L_ERROR_MESSAGE := L_ERROR_MESSAGE||'ORDER TRANSACTION TYPE 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;
IF L_VERIFY_FLAG <> 'N' THEN
BEGIN
INSERT INTO OE_HEADERS_IFACE_ALL
(
ORDER_SOURCE_ID
,ORIG_SYS_DOCUMENT_REF
,ORG_ID
,SOLD_FROM_ORG_ID
,SHIP_FROM_ORG_ID
,ORDERED_DATE
,ORDER_TYPE_ID
,SOLD_TO_ORG_ID
,PAYMENT_TERM_ID
,OPERATION_CODE
,CREATED_BY
,CREATION_DATE
,LAST_UPDATED_BY
,LAST_UPDATE_DATE
,CUSTOMER_PO_NUMBER
,PRICE_LIST_ID
,CONTEXT
,ATTRIBUTE19
,SHIP_TO_ORG_ID
,INVOICE_TO_ORG_ID
)
VALUES
(
L_ORDER_SOURCE_ID --ORDER_SOURCE_ID
,OE_ORDER_HEADERS_S.NEXTVAL --ORIG_SYS_DOCUMENT_REF
,L_ORG_ID --ORG_ID
,L_ORG_ID --SOLD_FROM_ORG_ID
,L_ORGANIZATION_ID --SHIP_FROM_ORG_ID
,TRIM(H1.ORDER_DATE) --ORDERED_DATE
,L_ORDER_TYPE --ORDER_TYPE_ID
,L_CUSTOMER_ID --SOLD_TO_ORG_ID
,L_TERM_ID --PAYMENT_TERM_ID
,'CREATE' --OPERATION_CODE
,L_USER_ID --CREATED_BY
,SYSDATE --CREATION_DATE
,L_USER_ID --LAST_UPDATED_BY
,SYSDATE --LAST_UPDATE_DATE
,NULL --CUSTOMER_PO_NUMBER
,L_PRICE_LIST --PRICE_LIST_ID
,'LEGACY SO NUMBER'
,TRIM(H1.LEGACY_SO_NUM)
,L_SHIP_TO_ORG_ID
,L_BILL_TO_ORG_ID
);
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;
------------------LINE DETAILS ---------------------
FOR L1 IN C_LINES (H1.LEGACY_SO_NUM)LOOP
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;
IF L_VERIFY_FLAG <> 'N' THEN
BEGIN
INSERT INTO OE_LINES_IFACE_ALL
(
ORDER_SOURCE_ID
,ORIG_SYS_DOCUMENT_REF
,ORIG_SYS_LINE_REF
,LINE_NUMBER
,INVENTORY_ITEM_ID
,ORDERED_QUANTITY
,SHIP_FROM_ORG_ID
,ORG_ID
,PRICING_QUANTITY
,UNIT_SELLING_PRICE
,UNIT_LIST_PRICE
,PRICE_LIST_ID
,PAYMENT_TERM_ID
,SCHEDULE_SHIP_DATE
,REQUEST_DATE
,CREATED_BY
,CREATION_DATE
,LAST_UPDATED_BY
,LAST_UPDATE_DATE
,LINE_TYPE_ID
,CALCULATE_PRICE_FLAG
)
VALUES
(
L_ORDER_SOURCE_ID --ORDER_SOURCE_ID
,OE_ORDER_HEADERS_S.CURRVAL --ORIG_SYS_DOCUMENT_REF
,OE_ORDER_LINES_S.NEXTVAL --ORIG_SYS_LINE_REF
,TRIM(L1.LINE_NUM) --LINE_NUMBER
,L_INVENTORY_ITEM_ID --INVENTORY_ITEM_ID
,TRIM(L1.QTY) --ORDERED_QUANTITY
,L_ORGANIZATION_ID --SHIP_FROM_ORG_ID
,L_ORG_ID --SHIP_FROM_ORG_ID
,TRIM(L1.QTY) --PRICING_QUANTITY
,TRIM(L1.PRICE_UNIT) --UNIT_SELLING_PRICE
,TRIM(L1.PRICE_UNIT) --UNIT_LIST_PRICE
,L_PRICE_LIST --PRICE_LIST_ID
,L_TERM_ID --PAYMENT_TERM_ID
,TO_DATE(L1.SCHEDULED_SHIP_DATE,'DD-MON-RRRR') --SCHEDULE_SHIP_DATE
,TO_DATE(L1.REQUEST_DATE,'DD-MON-RRRR') --REQUEST_DATE
,L_USER_ID --CREATED_BY
,SYSDATE --CREATION_DATE
,L_USER_ID --LAST_UPDATED_BY
,SYSDATE --LAST_UPDATE_DATE
,L_LINE_TYPE_ID --LINE_TYPE_ID
,'N'
);
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;
/