Improved all pending pos query
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,153 +1 @@
|
|||||||
select * from mpe.get_prototype_po_dashboard_data(array['34487','35355','37111','25502','27985']::text[])
|
select * from mpe.get_prototype_po_dashboard_data(array['34487','35355','37111','25502','27985','35313']::text[])
|
||||||
|
|
||||||
UNION ALL
|
|
||||||
|
|
||||||
SELECT
|
|
||||||
datay.*,
|
|
||||||
ARRAY_TO_STRING(dataz.wo_item_number, ',') AS wo_item,
|
|
||||||
ARRAY_TO_STRING(dataz.work_orders, ',') AS wo_demanding,
|
|
||||||
dataz.total_demand AS wo_total_demand,
|
|
||||||
uom_name AS uom
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
item_number AS matl,
|
|
||||||
classcode_code AS matl_classcode,
|
|
||||||
item_descrip1 AS matl_desc,
|
|
||||||
item_descrip2 AS matl_spec,
|
|
||||||
itemsite_qtyonhand AS qoh,
|
|
||||||
SUM(CASE poh.pohead_status WHEN 'O' THEN 1 ELSE 0 END) AS po_released,
|
|
||||||
SUM(CASE poh.pohead_status WHEN 'U' THEN 1 ELSE 0 END) AS po_opened,
|
|
||||||
SUM(CASE poh.pohead_status WHEN 'C' THEN 1 ELSE 0 END) AS po_closed,
|
|
||||||
datax.poitem_duedate AS poitem_due
|
|
||||||
FROM item
|
|
||||||
JOIN itemsite
|
|
||||||
ON item.item_id = itemsite.itemsite_item_id
|
|
||||||
AND itemsite_warehous_id = 35
|
|
||||||
JOIN classcode
|
|
||||||
ON item.item_classcode_id = classcode.classcode_id
|
|
||||||
JOIN LATERAL (
|
|
||||||
SELECT DISTINCT
|
|
||||||
itemsite_id AS pohc_itemsite_id,
|
|
||||||
pohead_number,
|
|
||||||
pohead_status
|
|
||||||
FROM poitem
|
|
||||||
JOIN pohead
|
|
||||||
ON pohead.pohead_id = poitem.poitem_pohead_id
|
|
||||||
WHERE poitem_itemsite_id = itemsite.itemsite_id
|
|
||||||
) AS poh
|
|
||||||
ON poh.pohc_itemsite_id = itemsite.itemsite_id
|
|
||||||
LEFT JOIN LATERAL (
|
|
||||||
SELECT DISTINCT
|
|
||||||
itemsite_id,
|
|
||||||
poitem_duedate
|
|
||||||
FROM poitem
|
|
||||||
JOIN pohead
|
|
||||||
ON poitem.poitem_pohead_id = pohead.pohead_id
|
|
||||||
AND pohead.pohead_status = 'O'
|
|
||||||
WHERE poitem_itemsite_id = itemsite.itemsite_id
|
|
||||||
ORDER BY poitem_duedate
|
|
||||||
LIMIT 1
|
|
||||||
) AS datax
|
|
||||||
ON datax.itemsite_id = itemsite.itemsite_id
|
|
||||||
|
|
||||||
WHERE item_id IN (
|
|
||||||
SELECT DISTINCT wmtlit.item_id
|
|
||||||
FROM item
|
|
||||||
JOIN mpe.itemext
|
|
||||||
ON item.item_id = itemext.itemext_item_id
|
|
||||||
JOIN bomhead
|
|
||||||
ON bomhead_item_id = item.item_id
|
|
||||||
JOIN rev
|
|
||||||
ON bomhead_rev_id = rev_id
|
|
||||||
AND rev_status = 'P'
|
|
||||||
JOIN itemsite
|
|
||||||
ON item.item_id = itemsite.itemsite_item_id
|
|
||||||
AND itemsite_warehous_id = 35
|
|
||||||
JOIN wo
|
|
||||||
ON wo_status IN ('E','R','I')
|
|
||||||
AND wo_itemsite_id = itemsite.itemsite_id
|
|
||||||
AND wo_bom_rev_id = bomhead_rev_id
|
|
||||||
JOIN womatl
|
|
||||||
ON wo_id = womatl_wo_id
|
|
||||||
JOIN itemsite AS wmtlits
|
|
||||||
ON womatl_itemsite_id = wmtlits.itemsite_id
|
|
||||||
JOIN item AS wmtlit
|
|
||||||
ON wmtlits.itemsite_item_id = wmtlit.item_id
|
|
||||||
AND wmtlit.item_type = 'P'
|
|
||||||
WHERE array['35313']::text[] && itemext.itemext_root_bom
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT itemsite.itemsite_item_id
|
|
||||||
FROM poitem
|
|
||||||
JOIN itemsite
|
|
||||||
ON poitem.poitem_itemsite_id = itemsite.itemsite_id
|
|
||||||
WHERE poitem.poitem_expcat_id = 29
|
|
||||||
)
|
|
||||||
GROUP BY
|
|
||||||
item_number,
|
|
||||||
classcode_code,
|
|
||||||
item_descrip1,
|
|
||||||
item_descrip2,
|
|
||||||
itemsite_qtyonhand,
|
|
||||||
datax.poitem_duedate
|
|
||||||
) AS datay
|
|
||||||
|
|
||||||
LEFT JOIN (
|
|
||||||
SELECT DISTINCT ON (wmtlit.item_id)
|
|
||||||
ARRAY[(item.item_number || 'R' || rev.rev_number)]::text[] AS wo_item_number,
|
|
||||||
ARRAY[formatwonumber(womatl_wo_id)] AS work_orders,
|
|
||||||
wmtlit.item_number,
|
|
||||||
ROUND(
|
|
||||||
SUM(womatl_qtyreq - womatl_qtyiss)
|
|
||||||
* itemuomtouomratio(
|
|
||||||
wmtlit.item_id,
|
|
||||||
womatl_uom_id,
|
|
||||||
wmtlit.item_inv_uom_id
|
|
||||||
),
|
|
||||||
2
|
|
||||||
) AS total_demand
|
|
||||||
FROM item
|
|
||||||
JOIN mpe.itemext
|
|
||||||
ON item.item_id = itemext.itemext_item_id
|
|
||||||
JOIN bomhead
|
|
||||||
ON bomhead_item_id = item.item_id
|
|
||||||
JOIN rev
|
|
||||||
ON bomhead_rev_id = rev_id
|
|
||||||
AND rev_status = 'P'
|
|
||||||
JOIN itemsite
|
|
||||||
ON item.item_id = itemsite.itemsite_item_id
|
|
||||||
AND itemsite_warehous_id = 35
|
|
||||||
JOIN wo
|
|
||||||
ON wo_status IN ('E','R','I')
|
|
||||||
AND wo_itemsite_id = itemsite.itemsite_id
|
|
||||||
AND wo_bom_rev_id = bomhead_rev_id
|
|
||||||
JOIN womatl
|
|
||||||
ON wo_id = womatl_wo_id
|
|
||||||
JOIN itemsite AS wmtlits
|
|
||||||
ON womatl_itemsite_id = wmtlits.itemsite_id
|
|
||||||
JOIN item AS wmtlit
|
|
||||||
ON wmtlits.itemsite_item_id = wmtlit.item_id
|
|
||||||
AND wmtlit.item_type = 'P'
|
|
||||||
WHERE array['35313']::text[] && itemext.itemext_root_bom
|
|
||||||
GROUP BY
|
|
||||||
item.item_number,
|
|
||||||
rev.rev_number,
|
|
||||||
womatl_wo_id,
|
|
||||||
wmtlit.item_id,
|
|
||||||
wmtlit.item_number,
|
|
||||||
womatl_uom_id,
|
|
||||||
wmtlit.item_inv_uom_id
|
|
||||||
) AS dataz
|
|
||||||
ON datay.matl = dataz.item_number
|
|
||||||
|
|
||||||
JOIN item AS wmtlitem
|
|
||||||
ON datay.matl = wmtlitem.item_number
|
|
||||||
JOIN uom
|
|
||||||
ON wmtlitem.item_inv_uom_id = uom.uom_id
|
|
||||||
|
|
||||||
WHERE
|
|
||||||
(dataz.total_demand IS NULL)
|
|
||||||
OR (datay.qoh < 2.0 * dataz.total_demand)
|
|
||||||
|
|
||||||
ORDER BY datay.matl
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,149 +1 @@
|
|||||||
SELECT
|
select * from mpe.get_prototype_po_dashboard_data(array['35313']::text[])
|
||||||
datay.*,
|
|
||||||
ARRAY_TO_STRING(dataz.wo_item_number, ',') AS wo_item,
|
|
||||||
ARRAY_TO_STRING(dataz.work_orders, ',') AS wo_demanding,
|
|
||||||
dataz.total_demand AS wo_total_demand,
|
|
||||||
uom_name AS uom
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
item_number AS matl,
|
|
||||||
classcode_code AS matl_classcode,
|
|
||||||
item_descrip1 AS matl_desc,
|
|
||||||
item_descrip2 AS matl_spec,
|
|
||||||
itemsite_qtyonhand AS qoh,
|
|
||||||
SUM(CASE poh.pohead_status WHEN 'O' THEN 1 ELSE 0 END) AS po_released,
|
|
||||||
SUM(CASE poh.pohead_status WHEN 'U' THEN 1 ELSE 0 END) AS po_opened,
|
|
||||||
SUM(CASE poh.pohead_status WHEN 'C' THEN 1 ELSE 0 END) AS po_closed,
|
|
||||||
datax.poitem_duedate AS poitem_due
|
|
||||||
FROM item
|
|
||||||
JOIN itemsite
|
|
||||||
ON item.item_id = itemsite.itemsite_item_id
|
|
||||||
AND itemsite_warehous_id = 35
|
|
||||||
JOIN classcode
|
|
||||||
ON item.item_classcode_id = classcode.classcode_id
|
|
||||||
JOIN LATERAL (
|
|
||||||
SELECT DISTINCT
|
|
||||||
itemsite_id AS pohc_itemsite_id,
|
|
||||||
pohead_number,
|
|
||||||
pohead_status
|
|
||||||
FROM poitem
|
|
||||||
JOIN pohead
|
|
||||||
ON pohead.pohead_id = poitem.poitem_pohead_id
|
|
||||||
WHERE poitem_itemsite_id = itemsite.itemsite_id
|
|
||||||
) AS poh
|
|
||||||
ON poh.pohc_itemsite_id = itemsite.itemsite_id
|
|
||||||
LEFT JOIN LATERAL (
|
|
||||||
SELECT DISTINCT
|
|
||||||
itemsite_id,
|
|
||||||
poitem_duedate
|
|
||||||
FROM poitem
|
|
||||||
JOIN pohead
|
|
||||||
ON poitem.poitem_pohead_id = pohead.pohead_id
|
|
||||||
AND pohead.pohead_status = 'O'
|
|
||||||
WHERE poitem_itemsite_id = itemsite.itemsite_id
|
|
||||||
ORDER BY poitem_duedate
|
|
||||||
LIMIT 1
|
|
||||||
) AS datax
|
|
||||||
ON datax.itemsite_id = itemsite.itemsite_id
|
|
||||||
|
|
||||||
WHERE item_id IN (
|
|
||||||
SELECT DISTINCT wmtlit.item_id
|
|
||||||
FROM item
|
|
||||||
JOIN mpe.itemext
|
|
||||||
ON item.item_id = itemext.itemext_item_id
|
|
||||||
JOIN bomhead
|
|
||||||
ON bomhead_item_id = item.item_id
|
|
||||||
JOIN rev
|
|
||||||
ON bomhead_rev_id = rev_id
|
|
||||||
AND rev_status = 'P'
|
|
||||||
JOIN itemsite
|
|
||||||
ON item.item_id = itemsite.itemsite_item_id
|
|
||||||
AND itemsite_warehous_id = 35
|
|
||||||
JOIN wo
|
|
||||||
ON wo_status IN ('E','R','I')
|
|
||||||
AND wo_itemsite_id = itemsite.itemsite_id
|
|
||||||
AND wo_bom_rev_id = bomhead_rev_id
|
|
||||||
JOIN womatl
|
|
||||||
ON wo_id = womatl_wo_id
|
|
||||||
JOIN itemsite AS wmtlits
|
|
||||||
ON womatl_itemsite_id = wmtlits.itemsite_id
|
|
||||||
JOIN item AS wmtlit
|
|
||||||
ON wmtlits.itemsite_item_id = wmtlit.item_id
|
|
||||||
AND wmtlit.item_type = 'P'
|
|
||||||
WHERE array['35313']::text[] && itemext.itemext_root_bom
|
|
||||||
|
|
||||||
UNION
|
|
||||||
|
|
||||||
SELECT itemsite.itemsite_item_id
|
|
||||||
FROM poitem
|
|
||||||
JOIN itemsite
|
|
||||||
ON poitem.poitem_itemsite_id = itemsite.itemsite_id
|
|
||||||
WHERE poitem.poitem_expcat_id = 29
|
|
||||||
)
|
|
||||||
GROUP BY
|
|
||||||
item_number,
|
|
||||||
classcode_code,
|
|
||||||
item_descrip1,
|
|
||||||
item_descrip2,
|
|
||||||
itemsite_qtyonhand,
|
|
||||||
datax.poitem_duedate
|
|
||||||
) AS datay
|
|
||||||
|
|
||||||
LEFT JOIN (
|
|
||||||
SELECT DISTINCT ON (wmtlit.item_id)
|
|
||||||
ARRAY[(item.item_number || 'R' || rev.rev_number)]::text[] AS wo_item_number,
|
|
||||||
ARRAY[formatwonumber(womatl_wo_id)] AS work_orders,
|
|
||||||
wmtlit.item_number,
|
|
||||||
ROUND(
|
|
||||||
SUM(womatl_qtyreq - womatl_qtyiss)
|
|
||||||
* itemuomtouomratio(
|
|
||||||
wmtlit.item_id,
|
|
||||||
womatl_uom_id,
|
|
||||||
wmtlit.item_inv_uom_id
|
|
||||||
),
|
|
||||||
2
|
|
||||||
) AS total_demand
|
|
||||||
FROM item
|
|
||||||
JOIN mpe.itemext
|
|
||||||
ON item.item_id = itemext.itemext_item_id
|
|
||||||
JOIN bomhead
|
|
||||||
ON bomhead_item_id = item.item_id
|
|
||||||
JOIN rev
|
|
||||||
ON bomhead_rev_id = rev_id
|
|
||||||
AND rev_status = 'P'
|
|
||||||
JOIN itemsite
|
|
||||||
ON item.item_id = itemsite.itemsite_item_id
|
|
||||||
AND itemsite_warehous_id = 35
|
|
||||||
JOIN wo
|
|
||||||
ON wo_status IN ('E','R','I')
|
|
||||||
AND wo_itemsite_id = itemsite.itemsite_id
|
|
||||||
AND wo_bom_rev_id = bomhead_rev_id
|
|
||||||
JOIN womatl
|
|
||||||
ON wo_id = womatl_wo_id
|
|
||||||
JOIN itemsite AS wmtlits
|
|
||||||
ON womatl_itemsite_id = wmtlits.itemsite_id
|
|
||||||
JOIN item AS wmtlit
|
|
||||||
ON wmtlits.itemsite_item_id = wmtlit.item_id
|
|
||||||
AND wmtlit.item_type = 'P'
|
|
||||||
WHERE array['35313']::text[] && itemext.itemext_root_bom
|
|
||||||
GROUP BY
|
|
||||||
item.item_number,
|
|
||||||
rev.rev_number,
|
|
||||||
womatl_wo_id,
|
|
||||||
wmtlit.item_id,
|
|
||||||
wmtlit.item_number,
|
|
||||||
womatl_uom_id,
|
|
||||||
wmtlit.item_inv_uom_id
|
|
||||||
) AS dataz
|
|
||||||
ON datay.matl = dataz.item_number
|
|
||||||
|
|
||||||
JOIN item AS wmtlitem
|
|
||||||
ON datay.matl = wmtlitem.item_number
|
|
||||||
JOIN uom
|
|
||||||
ON wmtlitem.item_inv_uom_id = uom.uom_id
|
|
||||||
|
|
||||||
WHERE
|
|
||||||
(dataz.total_demand IS NULL)
|
|
||||||
OR (datay.qoh < 2.0 * dataz.total_demand)
|
|
||||||
|
|
||||||
ORDER BY datay.matl
|
|
||||||
|
|||||||
Reference in New Issue
Block a user