diff --git a/offline/scale_cust.pg.sql b/offline/scale_cust.pg.sql index 0c96ed4..99cc567 100644 --- a/offline/scale_cust.pg.sql +++ b/offline/scale_cust.pg.sql @@ -5,6 +5,8 @@ pgrp AS ( o.bill_dba ,o.ship_dba ,o.dsm + ,i.partgroup + ,i.pricegroup ,o.part ,o.odate ,o.qtyord @@ -31,6 +33,8 @@ pgrp AS ( o.bill_dba ,o.ship_dba ,o.dsm + ,i.partgroup + ,i.pricegroup ,o.part ,o.odate ,o.qtyord @@ -70,7 +74,10 @@ pgrp AS ( o.account ,o.shipgrp ,o.dsm + ,i.partgroup + ,i.pricegroup ,o.part + ,o.glec ,o.oseas -- ,o.odate ,og.sortmo omon @@ -88,15 +95,20 @@ pgrp AS ( o.odate BETWEEN og.sdat and og.edat LEFT OUTER JOIN rlarp.gld sg ON o.sdate BETWEEN sg.sdat and sg.edat + LEFT OUTER JOIN "CMS.CUSLG".itemm i ON + i.item = o.part WHERE iter IN ('actuals','actuals_plug','copy') AND fs_line = '41010' - AND substring(glec,1,1) <= '2' + AND substring(o.glec,1,1) <= '2' GROUP BY o.account ,o.shipgrp ,o.dsm + ,i.partgroup + ,i.pricegroup ,o.part + ,o.glec ,o.oseas -- ,o.odate ,og.sortmo @@ -109,7 +121,11 @@ pgrp AS ( grp.account ,grp.shipgrp ,grp.dsm + ,r.director + ,grp.partgroup + ,grp.pricegroup ,grp.part + -- ,grp.glec ,grp.oseas ,grp.omon -- ,grp.odate @@ -127,6 +143,42 @@ pgrp AS ( ,seq.price ,seq.avgprice ,seq.pltq + ,ROUND(CASE WHEN seq.uselimits THEN + CASE + WHEN glec = '1NU' THEN + --if more than 8/24 pallets, use floor + CASE WHEN grp.qty >= 24*seq.pltq THEN seq.floor + -- if more than a pallet use the target price + ELSE CASE WHEN qtyord >= 8*seq.pltq THEN (seq.ceiling + seq.floor) / 2 + -- if more than a pallet use the target price + ELSE CASE WHEN qtyord >= 2*seq.pltq THEN seq.ceiling + -- if more than a pallet use the target price + ELSE seq.ceiling * 1.05 + END END END + ELSE + CASE WHEN pricegroup ~ '(Hanger|Dish)' THEN + --at least 1 pallets is lower limit + CASE WHEN qtyord >= 01*seq.pltq THEN seq.floor + --at least 2 pallets is mid range + ELSE CASE WHEN qtyord >= 0.5*seq.pltq THEN (seq.ceiling + seq.floor) / 2 + --less than a pallet is upper + 15% + ELSE seq.ceiling + END END + ELSE + --at least 8 pallets is lower limit + CASE WHEN qtyord >= 08*seq.pltq THEN seq.floor + --at least 2 pallets is mid range + ELSE CASE WHEN qtyord >= 2*seq.pltq THEN (seq.ceiling + seq.floor) / 2 + --at least 1 pallet is upper range + ELSE CASE WHEN qtyord >= 1*seq.pltq THEN seq.ceiling + --less than a pallet is upper + 15% + ELSE seq.ceiling * 1.15 + END END END + END + END + ELSE + null + END,5) guid FROM grp LEFT OUTER JOIN seq ON @@ -134,3 +186,5 @@ pgrp AS ( AND seq.bill_dba = grp.account AND seq.part = grp.part AND seq.rn = 1 + LEFT OUTER JOIN rlarp.repc r ON + r.repp = grp.dsm