include guidance logic

This commit is contained in:
Paul Trowbridge 2025-03-27 13:59:04 -04:00
parent eaba629002
commit f54081f69d

View File

@ -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