share
unknown
sql
2 years ago
5.0 kB
4
Indexable
WITH NET AS ( SELECT inv.PRODUCT_ID, inv.QUANTITY, inv.RESERVED_QUANTITY, inv.WAREHOUSE_ID, loc.STOCK_LOCATION_ID FROM BIZ.DBT_STG.STG_ODOO_PROD__STOCK_QUANT inv INNER JOIN BIZ.DBT_ODOO.LOCATIONS loc ON LOC.STOCK_LOCATION_ID = inv.LOCATION_ID WHERE loc.PARENT_PATH LIKE '%1/3571/5925/%' OR loc.PARENT_PATH LIKE '%1/3571/5894/%' OR loc.PARENT_PATH LIKE '%1/6216/6217/%' ), NETSUM AS ( SELECT x.PRODUCT_ID, SUM(x.QUANTITY) AS what, SUM(x.reserved_quantity) AS how, MAX(x.warehouse_id) AS WH FROM NET x GROUP BY X.PRODUCT_ID ), Final AS( Select so.CREATE_DATE AS Requested_Date, so.COMMITMENT_DATE, --- benson's changes -------------------- ----- added case statements for SOs in pending, draft or cancel CASE WHEN so.state IN ('pending','draft','cancel') THEN so.NAME ELSE sm.ORIGIN END AS SO, CASE WHEN so.state IN ('pending','draft','cancel') THEN CONCAT('[',prod2.DEFAULT_CODE,']',' ',prod2.PRODUCT_NAME) ELSE CONCAT('[',prod.DEFAULT_CODE,']',' ',prod.PRODUCT_NAME) END AS PART, CASE WHEN so.state IN ('pending','draft','cancel') THEN sol.PRODUCT_UOM_QTY ELSE sm.PRODUCT_QTY END AS QTY, CASE WHEN so.state IN ('pending','draft','cancel') THEN rp2.display_name ELSE rp.display_name END AS Requesting_Nest, ---- end of change -------------------- so.STATE, CASE When so.STATE = 'pending' then 'waiting approval' ------ added 'sale' and 'draft' in case statements---- when so.state in ('done','sale') then 'approved' when so.state = 'draft' then 'not submitted' ---- end of change -------------------- when so.state = 'cancel' then 'cancelled' End as Approval , CASE WHEN sp.PICKING_TYPE_ID IN ('289', '302', '123', '301') AND sp.STATE = 'confirmed' AND WH != so.ID THEN 'Incorrect release warehouse' WHEN sp.STATE = 'confirmed' AND sp.PICKING_TYPE_ID IN ('289', '302', '123', '301') AND what IS NULL THEN 'Out of Stock' WHEN sp.STATE = 'confirmed' AND sp.PICKING_TYPE_ID IN ('289', '302', '123', '301') AND what = 0 THEN 'Out of Stock' WHEN sp.PICKING_TYPE_ID IN ('289', '302', '123', '301') AND sp.STATE = 'confirmed' AND what != 0 AND what = how AND Wh = So.id THEN 'Unavailable to Reserve' WHEN sp.STATE = 'assigned' AND sp.PICKING_TYPE_ID IN ('289', '302', '123', '301') THEN 'Ready to Pick' WHEN sp.STATE = 'assigned' AND prc.name = 'United States' AND sp.PICKING_TYPE_ID IN ('474') THEN 'Pending Conformity' WHEN sp.STATE = 'waiting' AND sp.PICKING_TYPE_ID IN ('289', '302', '123', '301') THEN 'ODOO Error' WHEN sp.STATE = 'partially_available' AND sp.PICKING_TYPE_ID IN ('289', '302', '123', '301') THEN 'Ready to Pick' WHEN sp.STATE = 'assigned' AND sp.PICKING_TYPE_ID = 124 THEN 'Ready to Pack' WHEN sp.STATE = 'waiting' AND sp.PICKING_TYPE_ID = 124 THEN 'Awaiting Pick' WHEN sp.STATE = 'confirmed' AND sp.PICKING_TYPE_ID = 124 THEN 'ODOO Error' WHEN sp.STATE = 'partially_available' AND sp.PICKING_TYPE_ID = 124 THEN 'Ready to Pack' WHEN sp.STATE = 'assigned' AND sp.PICKING_TYPE_ID = '122' THEN 'Ready to Ship' WHEN sp.STATE = 'waiting' AND sp.PICKING_TYPE_ID = 122 THEN 'Awaiting Pack' WHEN sp.STATE = 'confirmed' AND sp.PICKING_TYPE_ID = 122 THEN 'ODOO Error' WHEN sp.STATE = 'partially_available' AND sp.PICKING_TYPE_ID = 122 THEN 'Ready to Ship' WHEN sp.state ='done' And sp.PICKING_TYPE_ID =122 Then 'Delivered' END AS STATUS FROM BIZ.DBT_STG.STG_ODOO_PROD__SALE_ORDER so --- benson's changes -------------------- --- added new joins to show data for orders that are not yet confirmed JOIN BIZ.DBT_STG.STG_ODOO_PROD__SALE_ORDER_LINE sol ON so.id = sol.ORDER_ID JOIN BIZ.DBT_ODOO.PRODUCTS Prod2 ON prod2.PRODUCT_ID = sol.product_id JOIN BIZ.DBT_STG.STG_ODOO_PROD__RES_PARTNER rp2 ON rp2.id = so.PARTNER_ID --- changed joins from INNER to LEFT JOINS, because stock_move records dont exist if order is draft or submitted LEFT Join BIZ.DBT_STG.STG_ODOO_PROD__STOCK_MOVE sm on sm.SALE_ID = so.ID LEFT JOIN BIZ.DBT_STG.STG_ODOO_PROD__STOCK_PICKING sp ON sp.ID = sm.PICKING_ID --inner join BIZ.DBT_STG.STG_ODOO_PROD__SALE_ORDER so On so.ID = sm.SALE_ID LEFT JOIN BIZ.DBT_STG.STG_ODOO_PROD__SHIPMENT_SHIPMENT sh ON sh.id = sp.SHIPMENT_ID LEFT JOIN BIZ.DBT_STG.STG_ODOO_PROD__RES_PARTNER rp ON rp.ID = sm.PARTNER_ID LEFT JOIN BIZ.DBT_STG.STG_ODOO_PROD__SHIPMENT_MODE shm ON shm.ID = sp.MODE_ID LEFT JOIN BIZ.DBT_ODOO.PRODUCTS Prod ON prod.PRODUCT_ID = sm.PRODUCT_ID LEFT JOIN BIZ.DBT_STG.STG_ODOO_PROD__RES_COUNTRY prc ON prc.id = rp.COUNTRY_ID LEFT JOIN NETSUM ON NETSUM.PRODUCT_ID = sm.PRODUCT_ID --- end of change -------------------- WHERE so.SO_TYPE_ID = 2 ORDER BY sp.CREATE_DATE DESC ) ---- change to distinct ----- SELECT DISTINCT * From Final
Editor is loading...