select * from mpe.get_prototype_po_dashboard_data(array['34487','35355','37111','25502','27985']::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