CREATE OR REPLACE PACKAGE MEW_PO_PRICE_COMPARE_PKG IS
PROCEDURE MAIN(RETCODE OUT NUMBER
,ERRBUF OUT VARCHAR2
,P_ORGANIZATION_ID VARCHAR2
,P_PERIOD_NAME_F VARCHAR2
,P_PERIOD_NAME_T VARCHAR2);
END;
/
CREATE OR REPLACE PACKAGE BODY MEW_PO_PRICE_COMPARE_PKG IS
PROCEDURE MAIN(RETCODE OUT NUMBER
,ERRBUF OUT VARCHAR2
,P_ORGANIZATION_ID VARCHAR2
,P_PERIOD_NAME_F VARCHAR2
,P_PERIOD_NAME_T VARCHAR2) IS
CURSOR C1 IS(
SELECT A.PERIOD_NAME
,C.SEGMENT1 ITEM_NUMBER
,C.DESCRIPTION ITEM_DESC
,FLV.MEANING ITEM_TYPE --用户物料类型
,APPS.MEW_ITEM_GROUP_F(A.ORGANIZATION_ID
,A.INVENTORY_ITEM_ID
,'MEW_ACCT'
,2) ITEM_AUX --部品分类
,A.CURRENCY_CODE --原币币种
,A.TRANSACTION_UOM --事务处理单位
,PVSA.VENDOR_SITE_CODE --供应商地点
,CIC.ITEM_COST --标准单价
,A.TOTAL_TRANSACTION_QUANTITY
,A.TOTAL_TRANSACTION_VALUE
,A.TOTAL_BASE_TRANSACTION_VALUE
,B.TOTAL_TRANSACTION_QUANTITY TOTAL_TRANSACTION_QUANTITY_E
,B.TOTAL_TRANSACTION_VALUE TOTAL_TRANSACTION_VALUE_E
,B.TOTAL_BASE_TRANSACTION_VALUE TOTAL_BASE_TRANSACTION_VALUE_E
FROM (SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM --事务处理单位
,MMT.CURRENCY_CODE --原币币种
,SUM(MMT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,-SUM(MTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE --原币金额
,-SUM(MTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE --本币金额
FROM APPS.MTL_MATERIAL_TRANSACTIONS MMT
,APPS.PO_HEADERS_ALL PHA
,APPS.ORG_ACCT_PERIODS_V OPV
,APPS.MTL_TRANSACTION_ACCOUNTS MTA
WHERE MMT.TRANSACTION_ID = MTA.TRANSACTION_ID
AND MTA.ACCOUNTING_LINE_TYPE = 5
AND MMT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND MMT.TRANSACTION_TYPE_ID IN (18
,36) --PO RECEIPT OR RETURN TO VENDOR
AND MMT.TRANSACTION_QUANTITY <> 0
AND MMT.TRANSACTION_SOURCE_ID = PHA.PO_HEADER_ID
AND MMT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND MMT.ORGANIZATION_ID = OPV.ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_F
AND OPV.REC_TYPE = 'ORG_PERIOD'
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM
,MMT.CURRENCY_CODE) A
,(SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM --事务处理单位
,MMT.CURRENCY_CODE --原币币种
,SUM(MMT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,-SUM(MTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE --原币金额
,-SUM(MTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE --本币金额
FROM APPS.MTL_MATERIAL_TRANSACTIONS MMT
,APPS.PO_HEADERS_ALL PHA
,APPS.ORG_ACCT_PERIODS_V OPV
,APPS.MTL_TRANSACTION_ACCOUNTS MTA
WHERE MMT.TRANSACTION_ID = MTA.TRANSACTION_ID
AND MTA.ACCOUNTING_LINE_TYPE = 5
AND MMT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND MMT.TRANSACTION_TYPE_ID IN (18
,36) --PO RECEIPT OR RETURN TO VENDOR
AND MMT.TRANSACTION_QUANTITY <> 0
AND MMT.TRANSACTION_SOURCE_ID = PHA.PO_HEADER_ID
AND MMT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND MMT.ORGANIZATION_ID = OPV.ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_T
AND OPV.REC_TYPE = 'ORG_PERIOD'
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM
,MMT.CURRENCY_CODE) B
,MTL_SYSTEM_ITEMS_B C
,APPS.FND_LOOKUP_VALUES_VL FLV
,APPS.PO_VENDOR_SITES_ALL PVSA
,APPS.CST_ITEM_COSTS CIC
WHERE A.VENDOR_SITE_ID = B.VENDOR_SITE_ID(+)
AND A.INVENTORY_ITEM_ID = B.INVENTORY_ITEM_ID(+)
AND A.TRANSACTION_UOM = B.TRANSACTION_UOM(+)
AND A.CURRENCY_CODE = B.CURRENCY_CODE(+)
AND A.ORGANIZATION_ID = C.ORGANIZATION_ID
AND A.INVENTORY_ITEM_ID = C.INVENTORY_ITEM_ID
AND A.VENDOR_SITE_ID = PVSA.VENDOR_SITE_ID
AND C.ITEM_TYPE = FLV.LOOKUP_CODE
AND FLV.LOOKUP_TYPE = 'ITEM_TYPE'
AND A.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID(+)
AND A.ORGANIZATION_ID = CIC.ORGANIZATION_ID(+)
AND CIC.COST_TYPE_ID(+) = 1 --Frozen
UNION ALL
SELECT A.PERIOD_NAME
,MSI.SEGMENT1 ITEM_NUMBER
,MSI.DESCRIPTION ITEM_DESC
,FLV.MEANING ITEM_TYPE --用户物料类型
,MEW_ITEM_GROUP_F(MSI.ORGANIZATION_ID
,MSI.INVENTORY_ITEM_ID
,'MEW_ACCT'
,2) ITEM_AUX --部品分类
,A.CURRENCY_CODE
,A.TRANSACTION_UOM
,PVSA.VENDOR_SITE_CODE
,(SELECT MAX(CRCC.RESOURCE_RATE)
FROM BOM_RESOURCES BRV
,CST_RESOURCE_COSTS CRCC
WHERE BRV.ORGANIZATION_ID = A.ORGANIZATION_ID
AND BRV.COST_CODE_TYPE IN (3
,4)
AND CRCC.COST_TYPE_ID = 1
AND (BRV.PURCHASE_ITEM_ID = A.ITEM_ID)
AND BRV.RESOURCE_ID = CRCC.RESOURCE_ID
AND BRV.ORGANIZATION_ID = CRCC.ORGANIZATION_ID) ITEM_COST
-- ,CRC.RESOURCE_RATE ITEM_COST
,A.TOTAL_TRANSACTION_QUANTITY
,A.TOTAL_TRANSACTION_VALUE
,A.TOTAL_BASE_TRANSACTION_VALUE
,B.TOTAL_TRANSACTION_QUANTITY TOTAL_TRANSACTION_QUANTITY_E
,B.TOTAL_TRANSACTION_VALUE TOTAL_TRANSACTION_VALUE_E
,B.TOTAL_BASE_TRANSACTION_VALUE TOTAL_BASE_TRANSACTION_VALUE_E
FROM (SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
-- ,WT.RESOURCE_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE
,SUM(WT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,SUM(WTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE
,SUM(WTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE
FROM WIP_TRANSACTIONS WT
,WIP_TRANSACTION_ACCOUNTS WTA
,PO_HEADERS_ALL PHA
,PO_LINES_ALL PLA
,ORG_ACCT_PERIODS_V OPV
WHERE WT.TRANSACTION_ID = WTA.TRANSACTION_ID
AND WT.PO_HEADER_ID = PHA.PO_HEADER_ID
AND WT.PO_LINE_ID = PLA.PO_LINE_ID
AND OPV.ORGANIZATION_ID = WT.ORGANIZATION_ID
AND OPV.ACCT_PERIOD_ID = WT.ACCT_PERIOD_ID
AND WT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND OPV.REC_TYPE = 'ORG_PERIOD'
AND WTA.ACCOUNTING_LINE_TYPE = 7 --WIP 估价
AND WT.TRANSACTION_TYPE = 3 --外协加工
AND WT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_F
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
-- ,WT.RESOURCE_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE) A
,(SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE
,SUM(WT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,SUM(WTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE
,SUM(WTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE
FROM WIP_TRANSACTIONS WT
,WIP_TRANSACTION_ACCOUNTS WTA
,PO_HEADERS_ALL PHA
,PO_LINES_ALL PLA
,ORG_ACCT_PERIODS_V OPV
WHERE WT.TRANSACTION_ID = WTA.TRANSACTION_ID
AND WT.PO_HEADER_ID = PHA.PO_HEADER_ID
AND WT.PO_LINE_ID = PLA.PO_LINE_ID
AND OPV.ORGANIZATION_ID = WT.ORGANIZATION_ID
AND OPV.ACCT_PERIOD_ID = WT.ACCT_PERIOD_ID
AND WT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND OPV.REC_TYPE = 'ORG_PERIOD'
AND WTA.ACCOUNTING_LINE_TYPE = 7 --WIP 估价
AND WT.TRANSACTION_TYPE = 3 --外协加工
AND WT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_T
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
-- ,WT.RESOURCE_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE) B
,MTL_SYSTEM_ITEMS_B MSI
,FND_LOOKUP_VALUES_VL FLV
-- ,CST_RESOURCE_COSTS CRC
,PO_VENDOR_SITES_ALL PVSA
WHERE A.VENDOR_SITE_ID = B.VENDOR_SITE_ID(+)
AND A.ITEM_ID = B.ITEM_ID(+)
AND A.TRANSACTION_UOM = B.TRANSACTION_UOM(+)
AND A.CURRENCY_CODE = B.CURRENCY_CODE(+)
AND A.ITEM_ID = MSI.INVENTORY_ITEM_ID
AND A.ORGANIZATION_ID = MSI.ORGANIZATION_ID
AND MSI.ITEM_TYPE = FLV.LOOKUP_CODE
AND FLV.LOOKUP_TYPE = 'ITEM_TYPE'
-- AND A.RESOURCE_ID = CRC.RESOURCE_ID
-- AND A.ORGANIZATION_ID = CRC.ORGANIZATION_ID
-- AND CRC.COST_TYPE_ID = 1 --Frozen
AND A.VENDOR_SITE_ID = PVSA.VENDOR_SITE_ID)
UNION
(SELECT A.PERIOD_NAME
,C.SEGMENT1 ITEM_NUMBER
,C.DESCRIPTION ITEM_DESC
,FLV.MEANING ITEM_TYPE --用户物料类型
,APPS.MEW_ITEM_GROUP_F(A.ORGANIZATION_ID
,A.INVENTORY_ITEM_ID
,'MEW_ACCT'
,2) ITEM_AUX --部品分类
,A.CURRENCY_CODE --原币币种
,A.TRANSACTION_UOM --事务处理单位
,PVSA.VENDOR_SITE_CODE --供应商地点
,CIC.ITEM_COST --标准单价
,A.TOTAL_TRANSACTION_QUANTITY
,A.TOTAL_TRANSACTION_VALUE
,A.TOTAL_BASE_TRANSACTION_VALUE
,B.TOTAL_TRANSACTION_QUANTITY TOTAL_TRANSACTION_QUANTITY_E
,B.TOTAL_TRANSACTION_VALUE TOTAL_TRANSACTION_VALUE_E
,B.TOTAL_BASE_TRANSACTION_VALUE TOTAL_BASE_TRANSACTION_VALUE_E
FROM (SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM --事务处理单位
,MMT.CURRENCY_CODE --原币币种
,SUM(MMT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,-SUM(MTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE --原币金额
,-SUM(MTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE --本币金额
FROM APPS.MTL_MATERIAL_TRANSACTIONS MMT
,APPS.PO_HEADERS_ALL PHA
,APPS.ORG_ACCT_PERIODS_V OPV
,APPS.MTL_TRANSACTION_ACCOUNTS MTA
WHERE MMT.TRANSACTION_ID = MTA.TRANSACTION_ID
AND MTA.ACCOUNTING_LINE_TYPE = 5
AND MMT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND MMT.TRANSACTION_TYPE_ID IN (18
,36) --PO RECEIPT OR RETURN TO VENDOR
AND MMT.TRANSACTION_QUANTITY <> 0
AND MMT.TRANSACTION_SOURCE_ID = PHA.PO_HEADER_ID
AND MMT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND MMT.ORGANIZATION_ID = OPV.ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_F
AND OPV.REC_TYPE = 'ORG_PERIOD'
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM
,MMT.CURRENCY_CODE) A
,(SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM --事务处理单位
,MMT.CURRENCY_CODE --原币币种
,SUM(MMT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,-SUM(MTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE --原币金额
,-SUM(MTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE --本币金额
FROM APPS.MTL_MATERIAL_TRANSACTIONS MMT
,APPS.PO_HEADERS_ALL PHA
,APPS.ORG_ACCT_PERIODS_V OPV
,APPS.MTL_TRANSACTION_ACCOUNTS MTA
WHERE MMT.TRANSACTION_ID = MTA.TRANSACTION_ID
AND MTA.ACCOUNTING_LINE_TYPE = 5
AND MMT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND MMT.TRANSACTION_TYPE_ID IN (18
,36) --PO RECEIPT OR RETURN TO VENDOR
AND MMT.TRANSACTION_QUANTITY <> 0
AND MMT.TRANSACTION_SOURCE_ID = PHA.PO_HEADER_ID
AND MMT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND MMT.ORGANIZATION_ID = OPV.ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_T
AND OPV.REC_TYPE = 'ORG_PERIOD'
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,MMT.TRANSACTION_UOM
,MMT.CURRENCY_CODE) B
,MTL_SYSTEM_ITEMS_B C
,APPS.FND_LOOKUP_VALUES_VL FLV
,APPS.PO_VENDOR_SITES_ALL PVSA
,APPS.CST_ITEM_COSTS CIC
WHERE A.VENDOR_SITE_ID(+) = B.VENDOR_SITE_ID
AND A.INVENTORY_ITEM_ID(+) = B.INVENTORY_ITEM_ID
AND A.TRANSACTION_UOM(+) = B.TRANSACTION_UOM
AND A.CURRENCY_CODE(+) = B.CURRENCY_CODE
AND B.ORGANIZATION_ID = C.ORGANIZATION_ID
AND B.INVENTORY_ITEM_ID = C.INVENTORY_ITEM_ID
AND B.VENDOR_SITE_ID = PVSA.VENDOR_SITE_ID
AND C.ITEM_TYPE = FLV.LOOKUP_CODE
AND FLV.LOOKUP_TYPE = 'ITEM_TYPE'
AND B.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID(+)
AND B.ORGANIZATION_ID = CIC.ORGANIZATION_ID(+)
AND CIC.COST_TYPE_ID(+) = 1 --Frozen
UNION ALL
SELECT A.PERIOD_NAME
,MSI.SEGMENT1 ITEM_NUMBER
,MSI.DESCRIPTION ITEM_DESC
,FLV.MEANING ITEM_TYPE --用户物料类型
,MEW_ITEM_GROUP_F(MSI.ORGANIZATION_ID
,MSI.INVENTORY_ITEM_ID
,'MEW_ACCT'
,2) ITEM_AUX --部品分类
,A.CURRENCY_CODE
,A.TRANSACTION_UOM
,PVSA.VENDOR_SITE_CODE
,(SELECT MAX(CRCC.RESOURCE_RATE)
FROM BOM_RESOURCES BRV
,CST_RESOURCE_COSTS CRCC
WHERE BRV.ORGANIZATION_ID = B.ORGANIZATION_ID
AND BRV.COST_CODE_TYPE IN (3
,4)
AND CRCC.COST_TYPE_ID = 1
AND (BRV.PURCHASE_ITEM_ID = B.ITEM_ID)
AND BRV.RESOURCE_ID = CRCC.RESOURCE_ID
AND BRV.ORGANIZATION_ID = CRCC.ORGANIZATION_ID) ITEM_COST
-- ,CRC.RESOURCE_RATE ITEM_COST
,A.TOTAL_TRANSACTION_QUANTITY
,A.TOTAL_TRANSACTION_VALUE
,A.TOTAL_BASE_TRANSACTION_VALUE
,B.TOTAL_TRANSACTION_QUANTITY TOTAL_TRANSACTION_QUANTITY_E
,B.TOTAL_TRANSACTION_VALUE TOTAL_TRANSACTION_VALUE_E
,B.TOTAL_BASE_TRANSACTION_VALUE TOTAL_BASE_TRANSACTION_VALUE_E
FROM (SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
-- ,WT.RESOURCE_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE
,SUM(WT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,SUM(WTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE
,SUM(WTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE
FROM WIP_TRANSACTIONS WT
,WIP_TRANSACTION_ACCOUNTS WTA
,PO_HEADERS_ALL PHA
,PO_LINES_ALL PLA
,ORG_ACCT_PERIODS_V OPV
WHERE WT.TRANSACTION_ID = WTA.TRANSACTION_ID
AND WT.PO_HEADER_ID = PHA.PO_HEADER_ID
AND WT.PO_LINE_ID = PLA.PO_LINE_ID
AND OPV.ORGANIZATION_ID = WT.ORGANIZATION_ID
AND OPV.ACCT_PERIOD_ID = WT.ACCT_PERIOD_ID
AND WT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND OPV.REC_TYPE = 'ORG_PERIOD'
AND WTA.ACCOUNTING_LINE_TYPE = 7 --WIP 估价
AND WT.TRANSACTION_TYPE = 3 --外协加工
AND WT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_F
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
-- ,WT.RESOURCE_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE) A
,(SELECT OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
-- ,WT.RESOURCE_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE
,SUM(WT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,SUM(WTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE
,SUM(WTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE
FROM WIP_TRANSACTIONS WT
,WIP_TRANSACTION_ACCOUNTS WTA
,PO_HEADERS_ALL PHA
,PO_LINES_ALL PLA
,ORG_ACCT_PERIODS_V OPV
WHERE WT.TRANSACTION_ID = WTA.TRANSACTION_ID
AND WT.PO_HEADER_ID = PHA.PO_HEADER_ID
AND WT.PO_LINE_ID = PLA.PO_LINE_ID
AND OPV.ORGANIZATION_ID = WT.ORGANIZATION_ID
AND OPV.ACCT_PERIOD_ID = WT.ACCT_PERIOD_ID
AND WT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND OPV.REC_TYPE = 'ORG_PERIOD'
AND WTA.ACCOUNTING_LINE_TYPE = 7 --WIP 估价
AND WT.TRANSACTION_TYPE = 3 --外协加工
AND WT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_T
GROUP BY OPV.PERIOD_NAME
,PHA.VENDOR_SITE_ID
,WT.ORGANIZATION_ID
,PLA.ITEM_ID
-- ,WT.RESOURCE_ID
-- ,WT.RESOURCE_ID
,WT.TRANSACTION_UOM
,WT.CURRENCY_CODE) B
,MTL_SYSTEM_ITEMS_B MSI
,FND_LOOKUP_VALUES_VL FLV
-- ,CST_RESOURCE_COSTS CRC
,PO_VENDOR_SITES_ALL PVSA
WHERE A.VENDOR_SITE_ID(+) = B.VENDOR_SITE_ID
AND A.ITEM_ID(+) = B.ITEM_ID
AND A.TRANSACTION_UOM(+) = B.TRANSACTION_UOM
AND A.CURRENCY_CODE(+) = B.CURRENCY_CODE
AND B.ITEM_ID = MSI.INVENTORY_ITEM_ID
AND B.ORGANIZATION_ID = MSI.ORGANIZATION_ID
AND MSI.ITEM_TYPE = FLV.LOOKUP_CODE
AND FLV.LOOKUP_TYPE = 'ITEM_TYPE'
-- AND B.RESOURCE_ID = CRC.RESOURCE_ID
-- AND B.ORGANIZATION_ID = CRC.ORGANIZATION_ID
-- AND CRC.COST_TYPE_ID = 1 --Frozen
AND B.VENDOR_SITE_ID = PVSA.VENDOR_SITE_ID);
CURSOR C2 IS
SELECT 1 DATA_TYPE
,OPV.PERIOD_NAME
,MSI.SEGMENT1 ITEM_NUMBER --品号
,MSI.DESCRIPTION ITEM_DESC --品名
,FLV.MEANING ITEM_TYPE --用户物料类型
,MMT.TRANSACTION_UOM --事务处理单位
,APPS.MEW_ITEM_GROUP_F(MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,'MEW_ACCT'
,2) ITEM_AUX --部品分类
,PVSA.VENDOR_SITE_CODE --供应商地点
,CIC.ITEM_COST --标准单价
,MMT.CURRENCY_CODE --原币币种
,SUM(MMT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,-SUM(MTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE --原币金额
,-SUM(MTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE --本币金额
FROM APPS.MTL_MATERIAL_TRANSACTIONS MMT
,APPS.MTL_SYSTEM_ITEMS_B MSI
,APPS.FND_LOOKUP_VALUES_VL FLV
,APPS.PO_HEADERS_ALL PHA
,APPS.PO_VENDOR_SITES_ALL PVSA
,APPS.CST_ITEM_COSTS CIC
,APPS.ORG_ACCT_PERIODS_V OPV
,APPS.MTL_TRANSACTION_ACCOUNTS MTA
WHERE MMT.ORGANIZATION_ID = MSI.ORGANIZATION_ID
AND MMT.INVENTORY_ITEM_ID = MSI.INVENTORY_ITEM_ID
AND MSI.ITEM_TYPE = FLV.LOOKUP_CODE
AND FLV.LOOKUP_TYPE = 'ITEM_TYPE'
AND MMT.TRANSACTION_SOURCE_ID = PHA.PO_HEADER_ID
AND PHA.VENDOR_SITE_ID = PVSA.VENDOR_SITE_ID
AND MMT.INVENTORY_ITEM_ID = CIC.INVENTORY_ITEM_ID
AND MMT.ORGANIZATION_ID = CIC.ORGANIZATION_ID
AND CIC.COST_TYPE_ID = 1 --Frozen
AND MMT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND MMT.ORGANIZATION_ID = OPV.ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_F
AND OPV.REC_TYPE = 'ORG_PERIOD'
AND MMT.TRANSACTION_ID = MTA.TRANSACTION_ID
AND MTA.ACCOUNTING_LINE_TYPE = 5
AND MMT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND MMT.TRANSACTION_TYPE_ID = 18
AND MMT.TRANSACTION_QUANTITY <> 0
GROUP BY OPV.PERIOD_NAME
,MSI.SEGMENT1
,MSI.DESCRIPTION
,FLV.MEANING
,MMT.TRANSACTION_UOM --事务处理单位
,APPS.MEW_ITEM_GROUP_F(MMT.ORGANIZATION_ID
,MMT.INVENTORY_ITEM_ID
,'MEW_ACCT'
,2)
,PVSA.VENDOR_SITE_CODE --供应商地点
,CIC.ITEM_COST --标准单价
,MMT.CURRENCY_CODE --原币币种
UNION ALL
SELECT 2 DATA_TYPE
,OPV.PERIOD_NAME
,MSI.SEGMENT1 ITEM_NUMBER
,MSI.DESCRIPTION ITEM_DESC
,FLV.MEANING ITEM_TYPE --用户物料类型
,WT.TRANSACTION_UOM
,MEW_ITEM_GROUP_F(PLA.ORG_ID
,PLA.ITEM_ID
,'MEW_ACCT'
,2) ITEM_AUX --部品分类
,PVSA.VENDOR_SITE_CODE
,CRC.RESOURCE_RATE ITEM_COST
,WT.CURRENCY_CODE
,SUM(WT.TRANSACTION_QUANTITY) TOTAL_TRANSACTION_QUANTITY
,SUM(WTA.TRANSACTION_VALUE) TOTAL_TRANSACTION_VALUE
,SUM(WTA.BASE_TRANSACTION_VALUE) TOTAL_BASE_TRANSACTION_VALUE
FROM WIP_TRANSACTIONS WT
,WIP_TRANSACTION_ACCOUNTS WTA
,PO_HEADERS_ALL PHA
,PO_LINES_ALL PLA
,PO_VENDOR_SITES_ALL PVSA
,MTL_SYSTEM_ITEMS_B MSI
,FND_LOOKUP_VALUES_VL FLV
,ORG_ACCT_PERIODS_V OPV
,CST_RESOURCE_COSTS CRC
WHERE WT.TRANSACTION_ID = WTA.TRANSACTION_ID
AND WT.PO_HEADER_ID = PHA.PO_HEADER_ID
AND PHA.VENDOR_SITE_ID = PVSA.VENDOR_SITE_ID
AND WT.PO_LINE_ID = PLA.PO_LINE_ID
AND PLA.ITEM_ID = MSI.INVENTORY_ITEM_ID
AND WT.ORGANIZATION_ID = MSI.ORGANIZATION_ID
AND MSI.ITEM_TYPE = FLV.LOOKUP_CODE
AND FLV.LOOKUP_TYPE = 'ITEM_TYPE'
AND OPV.ORGANIZATION_ID = WT.ORGANIZATION_ID
AND OPV.ACCT_PERIOD_ID = WT.ACCT_PERIOD_ID
AND WT.TRANSACTION_DATE BETWEEN OPV.START_DATE AND
OPV.END_DATE + 0.99999
AND OPV.REC_TYPE = 'ORG_PERIOD'
AND WTA.ACCOUNTING_LINE_TYPE = 7 --WIP 估价
AND WT.TRANSACTION_TYPE = 3 --外协加工
AND WT.RESOURCE_ID = CRC.RESOURCE_ID
AND WT.ORGANIZATION_ID = CRC.ORGANIZATION_ID
AND CRC.COST_TYPE_ID = 1 --Frozen
AND WT.ORGANIZATION_ID = P_ORGANIZATION_ID
AND OPV.PERIOD_NAME = P_PERIOD_NAME_F
GROUP BY OPV.PERIOD_NAME
,MSI.SEGMENT1
,MSI.DESCRIPTION
,FLV.MEANING
,WT.TRANSACTION_UOM
,MEW_ITEM_GROUP_F(PLA.ORG_ID
,PLA.ITEM_ID
,'MEW_ACCT'
,2)
,PVSA.VENDOR_SITE_CODE
,CRC.RESOURCE_RATE
,WT.CURRENCY_CODE;
V_SEP VARCHAR2(10);
V_LINE_STR VARCHAR2(4000);
V_TOTAL_TRANSACTION_QUANTITY NUMBER := 0;
V_TOTAL_TRANSACTION_VALUE NUMBER := 0;
V_TOTAL_BASE_TRANSACTION_VALUE NUMBER := 0;
V_PRICE_VARIANCE NUMBER := 0;
V_RATE_VARIANCE NUMBER := 0;
V_AMOUNT_VARIANCE_CNY_A NUMBER := 0;
V_AMOUNT_VARIANCE_CNY_B NUMBER := 0;
V_AMOUNT_VARIANCE_CNY_T NUMBER := 0;
V_AMOUNT_VARIANCE_CNY_AT NUMBER := 0;
V_AMOUNT_VARIANCE_CNY_BT NUMBER := 0;
V_AMOUNT_VARIANCE_CNY_TT NUMBER := 0;
V_PRICE_F NUMBER := 0;
V_PRICE_T NUMBER := 0;
V_RATE_T NUMBER := 0;
V_RATE_F NUMBER := 0;
BEGIN
--表示以文件形式进行输出,在开发HTML报表时,固定即可,不需修改
HTML_REPORT_PKG.V_REPORT_OUTPUT_MODE := 'F';
--为输出字符串的分隔符号赋值,分隔符号的值,在输出字段的值中不能包含,否则,会造成分隔错误。
V_SEP := '@';
--在HTML报表上输出导出EXCEL按钮
HTML_REPORT_PKG.OUTPUT_LINE('<SCRIPT LANGUAGE="javascript">
function method1(tableid) {
var curTbl = document.getElementById(tableid);
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
sel.select();
sel.execCommand("Copy");
oSheet.Paste();
oXL.Visible = true;
}
</script> <input type="submit" οnclick=method1("execl") value="导出到EXCEL"/>');
--输出标题
HTML_REPORT_PKG.HTML_TITLE(P_PROGRAM_TITLE => '报表'
,P_REPORT_TITLE => 'PEWWBBG材料采购价格对比表');
--输出参数值
HTML_REPORT_PKG.OUTPUT_LINE('打印时间:' ||
TO_CHAR(SYSDATE
,'yyyy-mm-dd hh24:mi'));
HTML_REPORT_PKG.OUTPUT_LINE('<BR>Organization Code:' ||
P_ORGANIZATION_ID);
HTML_REPORT_PKG.OUTPUT_LINE('<BR>基期:' || P_PERIOD_NAME_F);
HTML_REPORT_PKG.OUTPUT_LINE('<BR>当期:' || P_PERIOD_NAME_T);
--开始进行内容的输出,下行的width=1200,用于进行输出表格的宽度设置
--HTML导成EXCEL功能代码
HTML_REPORT_PKG.OUTPUT_LINE('<table width=150% style="border-collapse:collapse; border:none; font-family: 宋体; font-size: 10pt" border=1 bordercolor=#000000 cellspacing="0"id="execl" name="execl" >');
--将表格标题,用逗号分隔后,连接成一个字符串,注意:最后一个字段之后,也要有个逗号。
FND_FILE.PUT_LINE(FND_FILE.OUTPUT
, '<tr>
<td rowspan="2" >品号</td>
<td rowspan="2" >品名</td>
<td rowspan="2" >采购类型</td>
<td rowspan="2" >单位</td>
<td rowspan="2" >部品种类</td>
<td rowspan="2" >供应商地点</td>
<td rowspan="2" >标准单价</td>
<td rowspan="2" >币种</td>
<td colspan="4" align="center" >' || P_PERIOD_NAME_F ||
'</td>
<td colspan="4" align="center">' || P_PERIOD_NAME_T ||
'</td>
<td colspan="5" align="center">' || '差异额' || '</td>
</tr>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT
, '<tr>
<td>' || '数量' || '</td>
<td>' || '汇率' || '</td>
<td>' || '单价(原币)' || '</td>
<td>' || '金额(人民币)' || '</td>
<td>' || '数量' || '</td>
<td>' || '汇率' || '</td>
<td>' || '单价(原币)' || '</td>
<td>' || '金额(人民币)' || '</td>
<td>' || '价格差I' || '</td>
<td>' || '金额差A(人民币)' || '</td>
<td>' || '汇率差II' || '</td>
<td>' || '金额差B(人民币)' || '</td>
<td>' || '金额差合计C' || '</td>
</tr>');
--基期
FOR R1 IN C1
LOOP
--当期价格
IF NVL(R1.TOTAL_TRANSACTION_QUANTITY_E
,0) = 0
THEN
V_PRICE_T := 0;
ELSE
V_PRICE_T := NVL(ROUND(NVL(R1.TOTAL_TRANSACTION_VALUE_E
,R1.TOTAL_BASE_TRANSACTION_VALUE_E) /
R1.TOTAL_TRANSACTION_QUANTITY_E
,6) --当期价格
,0);
END IF;
--基期价格
IF /*R1.TOTAL_TRANSACTION_VALUE_E = 0 OR*/
NVL(R1.TOTAL_TRANSACTION_QUANTITY
,0) = 0
THEN
V_PRICE_F := 0;
ELSE
V_PRICE_F := NVL(ROUND(NVL(R1.TOTAL_TRANSACTION_VALUE
,R1.TOTAL_BASE_TRANSACTION_VALUE) /
R1.TOTAL_TRANSACTION_QUANTITY
,6) --当期价格
,0);
END IF;
--价格差
V_PRICE_VARIANCE := V_PRICE_T - V_PRICE_F; --当期价格-基期价格
--基期汇率
IF NVL(NVL(R1.TOTAL_TRANSACTION_VALUE
,R1.TOTAL_BASE_TRANSACTION_VALUE)
,0) = 0
THEN
V_RATE_F := 0;
ELSE
V_RATE_F := ROUND(NVL(R1.TOTAL_BASE_TRANSACTION_VALUE
,0) /
NVL(R1.TOTAL_TRANSACTION_VALUE
,R1.TOTAL_BASE_TRANSACTION_VALUE)
,6);
END IF;
--金额差(人民币)A
BEGIN
V_AMOUNT_VARIANCE_CNY_A := NVL(V_PRICE_VARIANCE *
R1.TOTAL_TRANSACTION_QUANTITY_E *
V_RATE_F
,0);
EXCEPTION
WHEN OTHERS THEN
V_AMOUNT_VARIANCE_CNY_A := 0;
END;
--当期汇率
IF NVL(NVL(R1.TOTAL_TRANSACTION_VALUE_E --原币金额
,R1.TOTAL_BASE_TRANSACTION_VALUE_E) --本币金额
,0) = 0
THEN
V_RATE_T := 0;
ELSE
V_RATE_T := NVL(ROUND(R1.TOTAL_BASE_TRANSACTION_VALUE_E /
NVL(R1.TOTAL_TRANSACTION_VALUE_E
,R1.TOTAL_BASE_TRANSACTION_VALUE_E)
,6)
,0);
END IF;
--汇率差
V_RATE_VARIANCE := V_RATE_T - V_RATE_F; --当期汇率-基期汇率
--金额差(人民币)B
V_AMOUNT_VARIANCE_CNY_B := V_RATE_VARIANCE * V_PRICE_T *
NVL(R1.TOTAL_TRANSACTION_QUANTITY_E
,0);
--金额差合计A+B
V_AMOUNT_VARIANCE_CNY_T := V_AMOUNT_VARIANCE_CNY_A +
V_AMOUNT_VARIANCE_CNY_B;
HTML_REPORT_PKG.LINE_TITLE(P_TITLE_STRING => R1.ITEM_NUMBER ||
V_SEP || R1.ITEM_DESC ||
V_SEP || R1.ITEM_TYPE ||
V_SEP ||
R1.TRANSACTION_UOM ||
V_SEP || R1.ITEM_AUX ||
V_SEP ||
R1.VENDOR_SITE_CODE ||
V_SEP ||
ROUND(R1.ITEM_COST
,6) || V_SEP ||
R1.CURRENCY_CODE ||
V_SEP ||
--基期 数量 汇率 单价(原币) 金额(人民币)
R1.TOTAL_TRANSACTION_QUANTITY ||
V_SEP || V_RATE_F ||
V_SEP || V_PRICE_F ||
V_SEP ||
R1.TOTAL_BASE_TRANSACTION_VALUE ||
--当期 数量 汇率 单价(原币) 金额(人民币)
V_SEP ||
NVL(R1.TOTAL_TRANSACTION_QUANTITY_E
,0) || V_SEP ||
V_RATE_T || V_SEP ||
V_PRICE_T || V_SEP ||
NVL(R1.TOTAL_BASE_TRANSACTION_VALUE_E
,0) || V_SEP ||
V_PRICE_VARIANCE ||
V_SEP ||
V_AMOUNT_VARIANCE_CNY_A ||
V_SEP ||
V_RATE_VARIANCE ||
V_SEP ||
V_AMOUNT_VARIANCE_CNY_B ||
V_SEP ||
V_AMOUNT_VARIANCE_CNY_T ||
V_SEP
,P_WITH_OTHER_ATTR => 'Y'
,P_ATTR_DELIMITER => '***'
,P_DELIMITER => V_SEP);
V_AMOUNT_VARIANCE_CNY_AT := V_AMOUNT_VARIANCE_CNY_AT +
V_AMOUNT_VARIANCE_CNY_A;
V_AMOUNT_VARIANCE_CNY_BT := V_AMOUNT_VARIANCE_CNY_BT +
V_AMOUNT_VARIANCE_CNY_B;
V_AMOUNT_VARIANCE_CNY_TT := V_AMOUNT_VARIANCE_CNY_TT +
V_AMOUNT_VARIANCE_CNY_T;
V_TOTAL_TRANSACTION_QUANTITY := 0;
V_TOTAL_TRANSACTION_VALUE := 0;
V_TOTAL_BASE_TRANSACTION_VALUE := 0;
V_PRICE_VARIANCE := 0;
V_AMOUNT_VARIANCE_CNY_A := 0;
V_RATE_VARIANCE := 0;
V_AMOUNT_VARIANCE_CNY_B := 0;
V_AMOUNT_VARIANCE_CNY_T := 0;
V_PRICE_F := 0;
V_PRICE_T := 0;
V_RATE_F := 0;
V_RATE_T := 0;
END LOOP;
HTML_REPORT_PKG.LINE_TITLE(P_TITLE_STRING => '' || V_SEP || '' ||
V_SEP || '' || V_SEP || '' ||
V_SEP || '' || V_SEP || '' ||
V_SEP || '' || V_SEP || '' ||
V_SEP || '' || V_SEP || '' ||
V_SEP || '' || V_SEP || '' ||
V_SEP || '' || V_SEP || '' ||
V_SEP || '' || V_SEP || '' ||
V_SEP || '合计:' || V_SEP ||
V_AMOUNT_VARIANCE_CNY_AT ||
V_SEP || '' || V_SEP ||
V_AMOUNT_VARIANCE_CNY_BT ||
V_SEP ||
V_AMOUNT_VARIANCE_CNY_TT ||
V_SEP
,P_WITH_OTHER_ATTR => 'Y'
,P_ATTR_DELIMITER => '***'
,P_DELIMITER => V_SEP);
--输出表格和网页结束时的标签符
HTML_REPORT_PKG.OUTPUT_LINE('</tr></table></html>');
END;
END;
/