Query To Get Inventory Material Aging at Oracle Cloud
Query To Get Inventory Material Aging at Oracle Cloud
SELECT
HRO.Org_Code Org_Code,
--HRO.name Store,
REPLACE (HRO.name,''مخزن,NULL) Store,
QTY.subinventory_code,
ITEMS.item_number Item_Code,
ITEMS.description Item_Description,
ITEMS.Category_Code,
ITEMS.Category_Name,
ITEMS.CAT_Level1,
ITEMS.CAT_Level2,
ITEMS.CAT_Level3,
QTY.total_quantity Quantity,
COST.uom_code UOM,
ROUND (COST.unit_cost,2) Unit_Cost,
ROUND ((QTY.total_quantity * COST.unit_cost),2) Amount,
SYSDATE Report_Date,
RECEIVING.Last_Receiving_Date,
RECEIVING.Last_Receiving_Source,
TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date)
Last_Receiving_Age,
MOVE.Last_Transaction_Date Last_Movement_Date,
TRUNC (SYSDATE) - TRUNC (MOVE.Last_Transaction_Date)
Last_Transaction_Age,
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 90
THEN QTY.total_quantity
ELSE NULL
END QtyLess90, --Less90
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
90 AND TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 180
THEN QTY.total_quantity
ELSE NULL
END QtyLess180, --90+
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
180 AND TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 270
THEN QTY.total_quantity
ELSE NULL
END QtyLess270, --180+
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
270 AND TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 360
THEN QTY.total_quantity
ELSE NULL
END QtyLess360, --270+
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
360
THEN QTY.total_quantity
ELSE NULL
END QtyMore360, --360+
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 90
THEN ROUND ((QTY.total_quantity * COST.unit_cost),2)
ELSE NULL
END AmountLess90, --Less90
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
90 AND TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 180
THEN ROUND ((QTY.total_quantity * COST.unit_cost),2)
ELSE NULL
END AmountLess180, --90
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
180 AND TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 270
THEN ROUND ((QTY.total_quantity * COST.unit_cost),2)
ELSE NULL
END AmountLess270, --180
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
270 AND TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) < 360
THEN ROUND ((QTY.total_quantity * COST.unit_cost),2)
ELSE NULL
END AmountLess360, --270
CASE
WHEN TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date) >=
360
THEN ROUND ((QTY.total_quantity * COST.unit_cost),2)
ELSE NULL
END AmountMore360 --360
FROM
(SELECT OP.organization_id, --HRO
OP.legal_entity_id legal_entity,
--REPLACE (HOU.name,''مخزن,NULL) name,
HOU.name name,
OP.organization_code Org_Code
--LOC.location_code
FROM
HR_ALL_ORGANIZATION_UNITS_X HOU,
INV_ORG_PARAMETERS OP
--HR_LOCATIONS_ALL_F_VL LOC
WHERE
OP.organization_id = HOU.organization_id)
--AND HOU.location_id = LOC.location_id
HRO,
(SELECT -- COST
cost_org_id,
cost_book_id,
val_unit_id,
inventory_item_id,
cost_element_id,
SUM (onhand_value) onhand_value,
DECODE (MAX (cost_method_code),'STANDARD', SUM (unit_cost),
MAX (unit_cost)) unit_cost,
MAX (uom_code) uom_code,
MAX (currency_code) currency_code,
MAX (cost_method_code) cost_method_code,
MAX (snapshot_date) snapshot_date
FROM
CST_COSTED_VU_COSTS_V
WHERE
(SYSDATE) BETWEEN snapshot_date AND (eff_to_date - 1)
AND cost_book_id = 300000002539593
GROUP BY
cost_org_id,
cost_book_id,
val_unit_id,
inventory_item_id,
cost_element_id)
COST,
(SELECT --QTY
cost_org_id,
cost_book_id,
val_unit_id,
inventory_item_id,
inventory_org_id,
subinventory_code,
SUM (quantity) total_quantity,
SUM (CTLQUANTITY) - SUM (quantity) non_intra_vu_txns_qty,
--It will indicate non_intra_vu_txns_qty when ignore_intravu_flag is 'Y'
MAX (vu_quantity) vu_quantity
FROM
CST_COSTED_ATTR_ONHAND_V
WHERE
(SYSDATE) BETWEEN snapshot_date AND (eff_to_date - 1)
AND cost_book_id = 300000002539593
GROUP BY
cost_org_id,
cost_book_id,
val_unit_id,
inventory_item_id,
inventory_org_id,
subinventory_code)
QTY
LEFT JOIN --RECEIVING
(SELECT
IMT.INVENTORY_ITEM_ID,
IMT.ORGANIZATION_ID,
IMT.SUBINVENTORY_CODE,
CASE
WHEN PO_REC.PO_Count > 0 THEN PO_REC.PO_Last_Date
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count > 0
THEN INTER_REC.Inter_Last_Date
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count > 0 Then OPEN_REC.Open_Last_Date
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count > 0 THEN
SUB_REC.PO_Org_Last_Date
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count > 0 THEN SUB_REC.Inter_Org_Last_Date
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count IS NULL AND SUB_REC.Open_Org_Count > 0 THEN
SUB_REC.Open_Org_Last_Date
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count IS NULL AND SUB_REC.Open_Org_Count IS NULL AND
MISC_REC.Misc_Count > 0 THEN MISC_REC.Misc_Last_Date
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count IS NULL AND SUB_REC.Open_Org_Count IS NULL AND
MISC_REC.Misc_Count IS NULL AND SUB_REC.Misc_Org_Count > 0 THEN
SUB_REC.Misc_Org_Last_Date
END Last_Receiving_Date,
CASE
WHEN PO_REC.PO_Count > 0 THEN 'PO_Receiving'
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count > 0
THEN 'Inventory_Transfer'
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count > 0 THEN 'Opening_Balance'
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count > 0 THEN
'Outside_PO_Receiving'
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count > 0 THEN 'Outside_Inventory_Transfer'
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count IS NULL AND SUB_REC.Open_Org_Count > 0 THEN
'Outside_Opening_Balance'
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count IS NULL AND SUB_REC.Open_Org_Count IS NULL AND
MISC_REC.Misc_Count > 0 THEN 'Return_From_Project'
WHEN PO_REC.PO_Count IS NULL AND INTER_REC.Inter_Count IS
NULL AND OPEN_REC.Open_Count IS NULL AND SUB_REC.PO_Org_Count IS NULL AND
SUB_REC.Inter_Org_Count IS NULL AND SUB_REC.Open_Org_Count IS NULL AND
MISC_REC.Misc_Count IS NULL AND SUB_REC.Misc_Org_Count > 0 THEN
'Outside_Return_From_Project'
END Last_Receiving_Source
FROM
(SELECT DISTINCT --IMT Sub Query
IMT.ORGANIZATION_ID,
IMT.SUBINVENTORY_CODE,
IMT.INVENTORY_ITEM_ID
FROM
INV_MATERIAL_TXNS IMT)
IMT
LEFT JOIN --PO_REC Sub Query
(SELECT
IMT1.INVENTORY_ITEM_ID,
IMT1.ORGANIZATION_ID,
IMT1.SUBINVENTORY_CODE,
COUNT (IMT1.TRANSACTION_TYPE_ID) PO_Count,
MAX (TRUNC (IMT1.TRANSACTION_DATE)) PO_Last_Date
FROM
INV_MATERIAL_TXNS IMT1
WHERE
IMT1.TRANSACTION_TYPE_ID = 18
AND IMT1.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT1.INVENTORY_ITEM_ID,
IMT1.ORGANIZATION_ID,
IMT1.SUBINVENTORY_CODE)
PO_REC
ON IMT.ORGANIZATION_ID = PO_REC.ORGANIZATION_ID
AND IMT.SUBINVENTORY_CODE = PO_REC.SUBINVENTORY_CODE
AND IMT.INVENTORY_ITEM_ID = PO_REC.INVENTORY_ITEM_ID
LEFT JOIN --INTER_REC Sub Query
(SELECT
IMT2.INVENTORY_ITEM_ID,
IMT2.ORGANIZATION_ID,
IMT2.SUBINVENTORY_CODE,
COUNT (IMT2.TRANSACTION_TYPE_ID) Inter_Count,
MAX (TRUNC (IMT2.TRANSACTION_DATE)) Inter_Last_Date
FROM
INV_MATERIAL_TXNS IMT2
WHERE
IMT2.TRANSACTION_TYPE_ID = 12
AND IMT2.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT2.INVENTORY_ITEM_ID,
IMT2.ORGANIZATION_ID,
IMT2.SUBINVENTORY_CODE)
INTER_REC
ON IMT.ORGANIZATION_ID = INTER_REC.ORGANIZATION_ID
AND IMT.SUBINVENTORY_CODE = INTER_REC.SUBINVENTORY_CODE
AND IMT.INVENTORY_ITEM_ID = INTER_REC.INVENTORY_ITEM_ID
LEFT JOIN --OPEN_REC Sub Query
(SELECT
IMT3.INVENTORY_ITEM_ID,
IMT3.ORGANIZATION_ID,
IMT3.SUBINVENTORY_CODE,
COUNT (IMT3.TRANSACTION_TYPE_ID) Open_Count,
MAX (TRUNC (IMT3.TRANSACTION_DATE)) Open_Last_Date
FROM
INV_MATERIAL_TXNS IMT3
WHERE
IMT3.TRANSACTION_TYPE_ID = 300000002539895
AND IMT3.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT3.INVENTORY_ITEM_ID,
IMT3.ORGANIZATION_ID,
IMT3.SUBINVENTORY_CODE)
OPEN_REC
ON IMT.ORGANIZATION_ID = OPEN_REC.ORGANIZATION_ID
AND IMT.SUBINVENTORY_CODE = OPEN_REC.SUBINVENTORY_CODE
AND IMT.INVENTORY_ITEM_ID = OPEN_REC.INVENTORY_ITEM_ID
LEFT JOIN --MISC_REC Sub Query
(SELECT
IMT4.INVENTORY_ITEM_ID,
IMT4.ORGANIZATION_ID,
IMT4.SUBINVENTORY_CODE,
COUNT (IMT4.TRANSACTION_TYPE_ID) Misc_Count,
MAX (TRUNC (IMT4.TRANSACTION_DATE)) Misc_Last_Date
FROM
INV_MATERIAL_TXNS IMT4
WHERE
IMT4.TRANSACTION_SOURCE_TYPE_ID = 6
AND IMT4.TRANSACTION_ACTION_ID = 27
AND IMT4.TRANSACTION_TYPE_ID <> 300000002539895
AND IMT4.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT4.INVENTORY_ITEM_ID,
IMT4.ORGANIZATION_ID,
IMT4.SUBINVENTORY_CODE)
MISC_REC
ON IMT.ORGANIZATION_ID = MISC_REC.ORGANIZATION_ID
AND IMT.SUBINVENTORY_CODE = MISC_REC.SUBINVENTORY_CODE
AND IMT.INVENTORY_ITEM_ID = MISC_REC.INVENTORY_ITEM_ID
LEFT JOIN --SUB_REC Sub Query
(SELECT
SUB_TFR.ORGANIZATION_ID,
SUB_TFR.SUBINVENTORY_CODE,
SUB_TFR.INVENTORY_ITEM_ID,
SUB_TFR.SUB_Count,
SUB_TFR.SUB_Last_Date,
PO_Org_REC.PO_Org_Count,
PO_Org_REC.PO_Org_Last_Date,
INTER_Org_REC.Inter_Org_Count,
INTER_Org_REC.Inter_Org_Last_Date,
OPEN_Org_REC.Open_Org_Count,
OPEN_Org_REC.Open_Org_Last_Date,
MISC_Org_REC.Misc_Org_Count,
MISC_Org_REC.Misc_Org_Last_Date
FROM
(SELECT --SUB_TFR Sub Query from SUB_REC
IMT5.ORGANIZATION_ID,
IMT5.SUBINVENTORY_CODE,
IMT5.INVENTORY_ITEM_ID,
COUNT (IMT5.TRANSACTION_TYPE_ID) SUB_Count,
MAX (TRUNC (IMT5.TRANSACTION_DATE))
SUB_Last_Date
FROM
INV_MATERIAL_TXNS IMT5
WHERE
IMT5.TRANSACTION_TYPE_ID = 2
AND IMT5.TRANSACTION_QUANTITY > 0
AND IMT5.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT5.ORGANIZATION_ID,
IMT5.SUBINVENTORY_CODE,
IMT5.INVENTORY_ITEM_ID)
SUB_TFR
LEFT JOIN -- PO_Org_REC Sub Query from SUB_REC
(SELECT
IMT6.INVENTORY_ITEM_ID,
IMT6.ORGANIZATION_ID,
COUNT (IMT6.TRANSACTION_TYPE_ID) PO_Org_Count,
MAX (TRUNC (IMT6.TRANSACTION_DATE))
PO_Org_Last_Date
FROM
INV_MATERIAL_TXNS IMT6
WHERE
IMT6.TRANSACTION_TYPE_ID = 18
AND IMT6.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT6.INVENTORY_ITEM_ID,
IMT6.ORGANIZATION_ID)
PO_Org_REC
ON SUB_TFR.ORGANIZATION_ID =
PO_Org_REC.ORGANIZATION_ID
AND SUB_TFR.INVENTORY_ITEM_ID =
PO_Org_REC.INVENTORY_ITEM_ID
LEFT JOIN -- INTER_Org_REC Sub Query from SUB_REC
(SELECT
IMT7.INVENTORY_ITEM_ID,
IMT7.ORGANIZATION_ID,
COUNT (IMT7.TRANSACTION_TYPE_ID)
Inter_Org_Count,
MAX (TRUNC (IMT7.TRANSACTION_DATE))
Inter_Org_Last_Date
FROM
INV_MATERIAL_TXNS IMT7
WHERE
IMT7.TRANSACTION_TYPE_ID = 12
AND IMT7.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT7.INVENTORY_ITEM_ID,
IMT7.ORGANIZATION_ID)
INTER_Org_REC
ON SUB_TFR.ORGANIZATION_ID =
INTER_Org_REC.ORGANIZATION_ID
AND SUB_TFR.INVENTORY_ITEM_ID =
INTER_Org_REC.INVENTORY_ITEM_ID
LEFT JOIN -- OPEN_REC Sub Query from SUB_REC
(SELECT
IMT8.INVENTORY_ITEM_ID,
IMT8.ORGANIZATION_ID,
COUNT (IMT8.TRANSACTION_TYPE_ID)
Open_Org_Count,
MAX (TRUNC (IMT8.TRANSACTION_DATE))
Open_Org_Last_Date
FROM
INV_MATERIAL_TXNS IMT8
WHERE
IMT8.TRANSACTION_TYPE_ID = 300000002539895
AND IMT8.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT8.INVENTORY_ITEM_ID,
IMT8.ORGANIZATION_ID)
OPEN_Org_REC
ON SUB_TFR.ORGANIZATION_ID =
OPEN_Org_REC.ORGANIZATION_ID
AND SUB_TFR.INVENTORY_ITEM_ID =
OPEN_Org_REC.INVENTORY_ITEM_ID
LEFT JOIN -- MISC_Org_REC Sub Query from SUB_REC
(SELECT
IMT9.INVENTORY_ITEM_ID,
IMT9.ORGANIZATION_ID,
COUNT (IMT9.TRANSACTION_TYPE_ID)
Misc_Org_Count,
MAX (TRUNC (IMT9.TRANSACTION_DATE))
Misc_Org_Last_Date
FROM
INV_MATERIAL_TXNS IMT9
WHERE
IMT9.TRANSACTION_SOURCE_TYPE_ID = 6
AND IMT9.TRANSACTION_ACTION_ID = 27
AND IMT9.TRANSACTION_TYPE_ID <> 300000002539895
AND IMT9.TRANSACTION_DATE <= SYSDATE
GROUP BY
IMT9.INVENTORY_ITEM_ID,
IMT9.ORGANIZATION_ID)
MISC_Org_REC
ON SUB_TFR.ORGANIZATION_ID =
MISC_Org_REC.ORGANIZATION_ID
AND SUB_TFR.INVENTORY_ITEM_ID =
MISC_Org_REC.INVENTORY_ITEM_ID)
SUB_REC
ON IMT.ORGANIZATION_ID = SUB_REC.ORGANIZATION_ID
AND IMT.SUBINVENTORY_CODE = SUB_REC.SUBINVENTORY_CODE
AND IMT.INVENTORY_ITEM_ID = SUB_REC.INVENTORY_ITEM_ID)
RECEIVING
ON QTY.inventory_org_id = RECEIVING.organization_id
AND QTY.subinventory_code = RECEIVING.subinventory_code
AND QTY.inventory_item_id = RECEIVING.inventory_item_id
LEFT JOIN -- ITEMS
(SELECT
ESIT.inventory_item_id,
ESIT.organization_id,
ESIB.item_number,
Replace (ESIT.description,CHR(10),' ') Description,
ECB.category_code Category_Code,
ECT.category_name Category_Name,
SUBSTR(ECT.category_name,1,INSTR(ECT.category_name,'>>',1)-
1) CAT_Level1,
SUBSTR((REGEXP_SUBSTR(ECT.category_name,'>>[^>>]+')),3)
CAT_Level2,
SUBSTR (ECT.category_name, INSTR (ECT.category_name,
'>>',1,2)+2) CAT_Level3
FROM
EGP_SYSTEM_ITEMS_TL ESIT,
EGP_SYSTEM_ITEMS_B ESIB,
EGP_CATEGORIES_B ECB,
EGP_CATEGORIES_TL ECT,
EGP_ITEM_CAT_ASSIGNMENTS EICA
WHERE
1 = 1
AND ESIT.inventory_item_id = ESIB.inventory_item_id
AND ESIT.organization_id = ESIB.organization_id
AND ESIT.LANGUAGE = 'US'
AND ESIB.organization_id = 300000002519184
AND ECB.CATEGORY_ID = ECT.CATEGORY_ID
AND ECT.LANGUAGE = 'US'
AND ESIB.INVENTORY_ITEM_ID = EICA.INVENTORY_ITEM_ID
AND EICA.CATEGORY_ID = ECB.CATEGORY_ID)
ITEMS
ON QTY.inventory_item_id = ITEMS.inventory_item_id
--AND QTY.inventory_org_id = ITEMS.organization_id
LEFT JOIN --MOVE
(SELECT
INVENTORY_ITEM_ID,
ORGANIZATION_ID,
SUBINVENTORY_CODE,
MAX (TRUNC (TRANSACTION_DATE)) Last_Transaction_Date
FROM
INV_MATERIAL_TXNS IMT
WHERE
TRUNC (TRANSACTION_DATE) <= SYSDATE
GROUP BY
INVENTORY_ITEM_ID,
ORGANIZATION_ID,
SUBINVENTORY_CODE)
MOVE
ON QTY.inventory_item_id = MOVE.inventory_item_id
AND QTY.inventory_org_id = MOVE.organization_id
AND QTY.subinventory_code = MOVE.SUBINVENTORY_CODE
WHERE
HRO.organization_id = QTY.inventory_org_id
--AND HRO.organization_id = QTY.cost_org_id
--AND HRO.organization_id = COST.cost_org_id
--AND HRO.organization_id = ITEMS.organization_id
AND QTY.cost_org_id = COST.cost_org_id
AND QTY.inventory_item_id = COST.inventory_item_id
--AND COST.cost_org_id = ITEMS.organization_id
AND COST.inventory_item_id = ITEMS.inventory_item_id
AND QTY.total_quantity <> 0
AND ('ALL' IN (:P_Store || 'ALL') OR HRO.name IN (:P_Store))
AND ('ALL' IN (:P_Category || 'ALL') OR ITEMS.Category_Name IN (:P_Category))
AND ('ALL' IN (:P_Major_Category || 'ALL') OR ITEMS.CAT_Level1 IN
(:P_Major_Category))
AND ('ALL' IN (:P_Minor_Category || 'ALL') OR ITEMS.CAT_Level2 IN
(:P_Minor_Category))
AND ('ALL' IN (:P_Sub_Minor_Category || 'ALL') OR ITEMS.CAT_Level3 IN
(:P_Sub_Minor_Category))
--AND (TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date)) >= 90
AND (TRUNC (SYSDATE) - TRUNC (RECEIVING.Last_Receiving_Date)) > :P_MIN_AGE
ORDER BY 1,3,6,4