Add: create Customer_Specific_Report.sql for generating detailed customer-specific reports with inventory and order information
parent
b343184028
commit
4e5154792b
@ -0,0 +1,364 @@
|
||||
Select *
|
||||
from (Select Customer_No,
|
||||
"Customer Name",
|
||||
Company,
|
||||
Site,
|
||||
E1.Part_No,
|
||||
Label_1,
|
||||
Label_2,
|
||||
Description,
|
||||
Status,
|
||||
Cat1,
|
||||
Cat2,
|
||||
Decoration,
|
||||
Inventory,
|
||||
Incoming_Qty,
|
||||
"Oldest Lot",
|
||||
"Open Order",
|
||||
Safety,
|
||||
"SO Qty",
|
||||
Qty_Not_Reserved "Qty Not Reserved",
|
||||
Remaining_Issue "Rem_Issue",
|
||||
PO "PO Qty",
|
||||
Next_Receipt_Date "PO Next Receipt Date",
|
||||
X_Ref,
|
||||
"X Ref Description",
|
||||
E1.Supersedes,
|
||||
E1.Superseded_By,
|
||||
Related_Supersedes,
|
||||
Related_Superseded
|
||||
from (Select D.Customer_No,
|
||||
CI.Name "Customer Name",
|
||||
D.Contract Site,
|
||||
D.Company,
|
||||
D.Part_No,
|
||||
pc.Description,
|
||||
Inventory_Part_Status_Par_API.Get_Description(i.part_status) Status,
|
||||
D.Cat1,
|
||||
Cat2.Cat2,
|
||||
Deco.Decoration,
|
||||
X.X_Ref,
|
||||
X.CATALOG_DESC "X Ref Description",
|
||||
Q.QTY Inventory,
|
||||
Q.Qty - Q.Qty_Reserved Qty_Not_Reserved,
|
||||
Incoming_Qty,
|
||||
i.supersedes,
|
||||
INVENTORY_PART_API.Get_Superseded_By(i.CONTRACT,
|
||||
i.PART_NO) Superseded_By,
|
||||
Q.Last_Receipt_Date "Oldest Lot",
|
||||
CO.Open_Order "Open Order",
|
||||
IPP.Safety_Stock Safety,
|
||||
WO.QTY "SO Qty",
|
||||
Remaining_Issue,
|
||||
D.Label_1,
|
||||
D.Label_2,
|
||||
PO.PO,
|
||||
PO.Next_Receipt_Date,
|
||||
D.Parent,
|
||||
ROW_NUMBER() over(Partition by D.Contract, D.Part_No Order By D.Cat1) as Row_Num
|
||||
From (Select C.Company,
|
||||
i.Contract,
|
||||
i.Part_No Parent,
|
||||
i.Part_No,
|
||||
C6.Label_1,
|
||||
C6.Label_2,
|
||||
ID.Customer_No,
|
||||
'FG' as Cat1
|
||||
From Inventory_Part i
|
||||
inner join COMPANY_SITE CS
|
||||
on i.Contract = CS.Contract
|
||||
inner join Company_Finance C
|
||||
on C.Company = CS.Company
|
||||
inner join (Select PART_NO,
|
||||
CONTRACT,
|
||||
ATTR_VALUE_ALPHA Customer_No
|
||||
from INVENTORY_PART_CHAR_ALL
|
||||
where CHARACTERISTIC_CODE = '00032'
|
||||
and ATTR_VALUE_ALPHA = '&Customer_ID') ID
|
||||
on i.Contract = ID.Contract
|
||||
and i.Part_No = ID.Part_No
|
||||
|
||||
left join (Select ms.Part_No,
|
||||
ms.Contract,
|
||||
Min(COMPONENT_PART) Label_1,
|
||||
Decode(Min(COMPONENT_PART),
|
||||
Max(Component_Part),
|
||||
'',
|
||||
Max(Component_Part)) Label_2
|
||||
From MANUF_STRUCTURE MS
|
||||
inner join INVENTORY_PART_CHAR_ALL c
|
||||
on ms.contract = c.contract
|
||||
and ms.component_part = c.part_no
|
||||
|
||||
where MANUF_STRUCT_ALTERNATE_API.Get_State(ms.contract,
|
||||
ms.part_no,
|
||||
ms.eng_chg_level,
|
||||
ms.bom_type,
|
||||
ms.alternative_no) =
|
||||
'Buildable'
|
||||
and ms.ALTERNATIVE_NO = '*'
|
||||
and ms.EFF_PHASE_OUT_DATE is null
|
||||
and ms.BOM_TYPE_DB = 'M'
|
||||
and c.CHARACTERISTIC_CODE = '00006'
|
||||
and c.ATTR_VALUE_ALPHA in
|
||||
('IML',
|
||||
'PAPER INSERT',
|
||||
'HEAT TRANSFER',
|
||||
'PSL')
|
||||
group by ms.Part_No, ms.Contract) C6
|
||||
on i.contract = c6.contract
|
||||
and i.part_no = c6.part_no
|
||||
|
||||
Where i.ENG_ATTRIBUTE in ('00008', '00010')
|
||||
and i.PART_STATUS in ('A', 'D', 'Q')
|
||||
|
||||
UNION
|
||||
|
||||
Select A.Company,
|
||||
A.Contract,
|
||||
B.Part_No Parent,
|
||||
B.Component_Part Part_No,
|
||||
B.Component_Part Label_1,
|
||||
'' as Label_2,
|
||||
A.Customer_No,
|
||||
'RM' as Cat1
|
||||
from (Select C.Company,
|
||||
i.Contract,
|
||||
i.Part_No,
|
||||
ID.Customer_No,
|
||||
'FG' as Cat1
|
||||
From Inventory_Part i
|
||||
inner join COMPANY_SITE CS
|
||||
on i.Contract = CS.Contract
|
||||
inner join Company_Finance C
|
||||
on C.Company = CS.Company
|
||||
inner join (Select PART_NO,
|
||||
CONTRACT,
|
||||
ATTR_VALUE_ALPHA Customer_No
|
||||
from INVENTORY_PART_CHAR_ALL
|
||||
where CHARACTERISTIC_CODE =
|
||||
'00032'
|
||||
and ATTR_VALUE_ALPHA =
|
||||
'&Customer_ID') ID
|
||||
on i.Contract = ID.Contract
|
||||
and i.Part_No = ID.Part_No
|
||||
|
||||
Where i.ENG_ATTRIBUTE in ('00008', '00010')
|
||||
and i.PART_STATUS in ('A', 'D', 'Q')) A
|
||||
|
||||
inner join (Select Contract, Part_No, COMPONENT_PART
|
||||
from MANUF_STRUCTURE M
|
||||
Where M.BOM_TYPE_db = 'M'
|
||||
and M.ALTERNATIVE_NO = '*'
|
||||
and M.EFF_PHASE_OUT_DATE is null
|
||||
and OPERATION_NO = '10'
|
||||
and MANUF_STRUCT_ALTERNATE_API.Get_State(M.contract,
|
||||
M.part_no,
|
||||
M.eng_chg_level,
|
||||
M.bom_type,
|
||||
M.alternative_no) =
|
||||
'Buildable') B
|
||||
on A.Company = B.Contract
|
||||
and A.Part_No = B.Part_No
|
||||
|
||||
inner join (Select Contract, PART_NO, ATTR_VALUE_ALPHA
|
||||
from INVENTORY_PART_CHAR_ALL
|
||||
where CHARACTERISTIC_CODE = '00006'
|
||||
and ATTR_VALUE_ALPHA in
|
||||
('IML',
|
||||
'PAPER INSERT',
|
||||
'HEAT TRANSFER',
|
||||
'PSL')) C
|
||||
on B.Contract = C.Contract
|
||||
and B.Component_Part = C.Part_No
|
||||
|
||||
UNION
|
||||
Select ic.Contract Company,
|
||||
ic.Contract,
|
||||
ic.Part_No Parent,
|
||||
ic.Part_No,
|
||||
'' as Label_1,
|
||||
'' as Label_2,
|
||||
ic.ATTR_VALUE_ALPHA Customer_No,
|
||||
'XX' as Cat1
|
||||
from INVENTORY_PART_CHAR_ALL ic
|
||||
inner join Inventory_Part i
|
||||
on ic.Contract = i.Contract
|
||||
and ic.Part_No = i.Part_No
|
||||
where CHARACTERISTIC_CODE = '00032'
|
||||
and ATTR_VALUE_ALPHA = '&Customer_ID'
|
||||
and i.Part_Status in ('A', 'D', 'Q')
|
||||
|
||||
) D
|
||||
|
||||
inner join CUSTOMER_INFO CI
|
||||
on D.Customer_No = CI.Customer_ID
|
||||
inner join Inventory_part i
|
||||
on D.Contract = i.Contract
|
||||
and D.Part_No = i.Part_No
|
||||
inner join Part_Catalog pc
|
||||
on D.Part_No = pc.Part_No
|
||||
inner join Inventory_Part_Planning IPP
|
||||
on D.Contract = IPP.Contract
|
||||
and D.Part_NO = IPP.Part_No
|
||||
|
||||
left join (Select Contract,
|
||||
Catalog_No,
|
||||
CUSTOMER_PART_NO X_Ref,
|
||||
CATALOG_DESC
|
||||
from SALES_PART_CROSS_REFERENCE) x
|
||||
on D.Contract = X.Contract
|
||||
and D.Part_No = X.Catalog_No
|
||||
|
||||
left join (Select C.Part_No,
|
||||
C.Contract,
|
||||
sum(C.BUY_QTY_DUE - C.QTY_SHIPPED) Open_Order
|
||||
From customer_order_join_cfv C
|
||||
Where C.objstate in
|
||||
('Released',
|
||||
'Blocked',
|
||||
'Reserved',
|
||||
'Picked',
|
||||
'PartiallyDelivered')
|
||||
and C.Customer_No not like ('W%')
|
||||
Group By C.Part_No, C.Contract) CO
|
||||
on D.Part_No = CO.Part_No
|
||||
and D.Contract = CO.Contract
|
||||
|
||||
left join (Select S.Contract,
|
||||
S.Part_No,
|
||||
sum(S.QTY_ONHAND) QTY,
|
||||
sum(S.QTY_RESERVED) Qty_Reserved,
|
||||
TO_CHAR(min(S.RECEIPT_DATE), 'yyyy-mm-dd') Last_Receipt_Date
|
||||
From Inventory_part_in_stock_UIV S
|
||||
inner join Inventory_Part i
|
||||
on S.Contract = i.Contract
|
||||
and S.Part_No = i.Part_No
|
||||
Where S.QTY_ONHAND > 0
|
||||
Group by S.Contract, S.Part_No) Q
|
||||
on D.Part_NO = Q.Part_NO
|
||||
and D.Contract = Q.Contract
|
||||
|
||||
left join (Select SOURCE_PART_NO,
|
||||
CONTRACT,
|
||||
sum(DISPATCH_SOURCE_QTY) Incoming_Qty
|
||||
From RECEIVABLE_DISPATCH_ADV_LINE
|
||||
Where STATE = 'Created'
|
||||
Group by SOURCE_PART_NO, CONTRACT) r
|
||||
on r.contract = d.contract
|
||||
and r.SOURCE_PART_NO = d.part_no
|
||||
|
||||
left join (Select Contract,
|
||||
Part_No,
|
||||
sum(REMAINING_NET_SUPPLY_QTY) QTY
|
||||
from Shop_Ord
|
||||
where State in ('Released',
|
||||
'Started',
|
||||
'Parked',
|
||||
'Reserved')
|
||||
and order_code_db = 'M'
|
||||
Group By Contract, Part_No) WO
|
||||
on D.Contract = WO.Contract
|
||||
and D.Part_No = WO.Part_No
|
||||
|
||||
left join (Select Contract,
|
||||
Part_No,
|
||||
sum(qty_remain_to_issue) Remaining_Issue
|
||||
from SHOP_MATERIAL_ALLOC_UIV
|
||||
where SOSTATE in ('Released',
|
||||
'Started',
|
||||
'Parked',
|
||||
'Reserved')
|
||||
and order_code_db = 'M'
|
||||
Group By Contract, Part_No) SM
|
||||
on D.Contract = SM.Contract
|
||||
and D.Part_No = SM.Part_No
|
||||
|
||||
left join (Select distinct Contract,
|
||||
Part_No,
|
||||
CHARACTERISTIC_TEMPLATE_API.GET_DESCRIPTION(INVENTORY_PART_API.Get_Eng_Attribute(contract,
|
||||
PART_NO)) Cat2
|
||||
from INVENTORY_PART_CHAR_ALL) Cat2
|
||||
on Cat2.Contract = D.Contract
|
||||
and Cat2.Part_No = D.Part_No
|
||||
|
||||
left join (Select distinct Contract,
|
||||
Part_No,
|
||||
ATTR_VALUE_ALPHA Decoration
|
||||
from INVENTORY_PART_CHAR_ALL
|
||||
where CHARACTERISTIC_CODE = '00034') Deco
|
||||
on Deco.Contract = D.Contract
|
||||
and Deco.Part_No = D.Part_No
|
||||
|
||||
left join (SELECT Contract,
|
||||
part_No,
|
||||
sum(CF$_REM_QTY_RECEIVE) PO,
|
||||
TO_CHAR(min(PLANNED_RECEIPT_DATE),
|
||||
'yyyy-mm-dd') Next_Receipt_Date
|
||||
FROM purchase_order_line_all_cfv
|
||||
WHERE state in ('Released', 'Confirmed')
|
||||
GROUP BY Contract, Part_No) PO
|
||||
on PO.Contract = D.Contract
|
||||
and PO.Part_No = D.Part_No
|
||||
|
||||
) E1
|
||||
|
||||
left join (Select Q1.*, PS2.Part_No Related_Supersedes
|
||||
from (Select PS.Contract,
|
||||
PS.Part_No,
|
||||
PS.COMPONENT_PART,
|
||||
IP.SUPERSEDES,
|
||||
INVENTORY_PART_API.Get_Superseded_By(IP.CONTRACT,
|
||||
IP.PART_NO) Superseded_By_Comp
|
||||
From PROD_STRUCTURE PS
|
||||
inner join Inventory_part_cfv IP
|
||||
on PS.Contract = IP.Contract
|
||||
and PS.COMPONENT_PART = IP.Part_No
|
||||
Where PS.EFF_PHASE_OUT_DATE is null
|
||||
and PS.BOM_TYPE_db = 'M'
|
||||
and IP.CF$_PURCHASE_CAT2 in
|
||||
('RM07A - IML Label',
|
||||
'RM04P - CARDBOARD INSERT - NO COST',
|
||||
'RM07B - PSL Label')) Q1
|
||||
|
||||
inner join PROD_STRUCTURE PS2
|
||||
on Q1.Contract = PS2.Contract
|
||||
and Q1.Superseded_By_Comp = PS2.Component_Part
|
||||
|
||||
where PS2.EFF_PHASE_OUT_DATE is null
|
||||
and PS2.BOM_TYPE_db = 'M') S1
|
||||
on E1.Part_No = S1.Part_No
|
||||
and E1.Site = S1.Contract
|
||||
|
||||
left join (Select Q1.*, PS2.Part_No Related_Superseded
|
||||
from (Select PS.Contract,
|
||||
PS.Part_No,
|
||||
PS.COMPONENT_PART,
|
||||
IP.SUPERSEDES,
|
||||
INVENTORY_PART_API.Get_Superseded_By(IP.CONTRACT,
|
||||
IP.PART_NO) Superseded_By_Comp
|
||||
|
||||
from PROD_STRUCTURE PS
|
||||
inner join Inventory_part_cfv IP
|
||||
on PS.Contract = IP.Contract
|
||||
and PS.COMPONENT_PART = IP.Part_No
|
||||
|
||||
Where PS.EFF_PHASE_OUT_DATE is null
|
||||
and PS.BOM_TYPE_db = 'M'
|
||||
and IP.CF$_PURCHASE_CAT2 in
|
||||
('RM07A - IML Label',
|
||||
'RM04P - CARDBOARD INSERT - NO COST',
|
||||
'RM07B - PSL Label')) Q1
|
||||
inner join PROD_STRUCTURE PS2
|
||||
on Q1.Contract = PS2.Contract
|
||||
and Q1.Supersedes = PS2.Component_Part
|
||||
where PS2.EFF_PHASE_OUT_DATE is null
|
||||
and PS2.BOM_TYPE_db = 'M') S2
|
||||
on E1.Part_No = S2.Part_No
|
||||
and E1.Site = S2.Contract
|
||||
|
||||
Where Row_Num = 1
|
||||
and COMPANY LIKE NVL('&COMPANY', '%')
|
||||
Order By Parent, Label_1, Cat1, Site)
|
||||
|
||||
-- Lov reference is removed due to limitations in IFS cloud
|
||||
Loading…
Reference in New Issue