forecast_api/offline/baseline_orphans.pg.sql

430 lines
15 KiB
SQL

-- WITH
-- newc AS (
CREATE TABLE rlarp.orphans AS (
SELECT renamed, rerep, pounds::numeric pounds FROM (VALUES
('MARTIN''S NURSERY INC','10049 - STEVEN STUPPIELLO','160000'),
('BRENTANOS TREE FARM','30053 - SKYE SAWYER','125000'),
('QUALITREE PROPAGATORS','40042 - TOM MORRIS','122256'),
('HSU''S','13027 - STEVE RUSTEBERG','98054'),
('LANCASTER FARM','10040 - RYAN CHITWOOD','88733'),
('NATURALLY BEAUTIFUL PLANT PROD','10043 - CHERISSE GILSTROP','66876'),
('REARDON NURSERY','30053 - SKYE SAWYER','54000'),
('VAN BELLE NURSERY','40042 - TOM MORRIS','52690'),
('DEVAN GREENHOUSES','40042 - TOM MORRIS','50554'),
('STEWARTS GREENHOUSE','10046 - DUSTIN KUYKENDOLL 2','46585'),
('DESERT FOREST NURSERY','30035 - RODNEY RIOS','45292'),
('LINNAEA NURSERIES LTD','40042 - TOM MORRIS','40617'),
('MILLERS BLUE MOUNTAIN GHSE','10043 - CHERISSE GILSTROP','38029'),
('BRIGGS NURSERY','30053 - SKYE SAWYER','38000'),
('VAN KLAVEREN''S NURSERY LLC','30053 - SKYE SAWYER','36000'),
('BLUE HERON FARM','30053 - SKYE SAWYER','36000'),
('GROWERS NURSERY SUPPLY INC','30053 - SKYE SAWYER','33683'),
('DESERT HORIZON NURSERY','30035 - RODNEY RIOS','25834'),
('MEADOWLARK ORNAMENTALS LLC','12028 - JACOB WILKINSON','25350'),
('PHELPS NURSERY','10048 - PHILIP BIEDENBACH','22000'),
('VARGAS NURSERY','10041 - TAMARA RISKEN','21800'),
('MEDFORD NURSERY INC','10043 - CHERISSE GILSTROP','21600'),
('SUNLAND NURSERY','12028 - JACOB WILKINSON','19315'),
('TOM DE SANTO GREENHOUSES','30053 - SKYE SAWYER','18000'),
('LIMA GREENHOUSES','30053 - SKYE SAWYER','18000'),
('JACOBSONS GREENHOUSE','30053 - SKYE SAWYER','18000'),
('GOLD HILL NURSERY','30053 - SKYE SAWYER','18000'),
('ALASKA MILL AND FEED','30053 - SKYE SAWYER','18000'),
('HUIZENGA BRO GREENHOUSE INC','10035 - MATTHEW STAAL','17100'),
('SCHROCK SALES','10048 - PHILIP BIEDENBACH','16146'),
('HEIRLOOM ROSES','30053 - SKYE SAWYER','16000'),
('ASHCOMBE FARM & GREENHOUSE','10048 - PHILIP BIEDENBACH','16000'),
('SUNRISE GREENHOUSES','40039 - DAVE BODO','15770'),
('ALPHA NURSERY','30053 - SKYE SAWYER','15683'),
('BREEZY HILL NURSERY','13027 - STEVE RUSTEBERG','15555'),
('SALGACA CORPORATION','10046 - DUSTIN KUYKENDOLL 2','15268'),
('EDGEWOOD GREENHOUSE','13027 - STEVE RUSTEBERG','15000'),
('DGI','10035 - MATTHEW STAAL','15000'),
('DAYNABROOK GREENHOUSES','10048 - PHILIP BIEDENBACH','15000'),
('RAZBUTON INC','10039 - DUSTIN KUYKENDOLL','14710'),
('GOLD COAST FARMS LLC','30035 - RODNEY RIOS','14560'),
('A&W ANNUALS','10039 - DUSTIN KUYKENDOLL','13866'),
('MESQUITE VALLEY GROWERS','30035 - RODNEY RIOS','13440'),
('MULTIFAB, INC','30053 - SKYE SAWYER','13050'),
('CAAN FLORAL CO INC','13027 - STEVE RUSTEBERG','12661'),
('WEAKLAND GREENHOUSES','12028 - JACOB WILKINSON','11604'),
('BEAVER BARK LTD','30053 - SKYE SAWYER','11107'),
('HONEYMOON ACRES','13027 - STEVE RUSTEBERG','10500'),
('HENRY WHALEN AND SONS GHSE','10043 - CHERISSE GILSTROP','10063'),
('HILLEN NURSERY LTD','40039 - DAVE BODO','10000'),
('HIGHLAND FARMS','12028 - JACOB WILKINSON','10000'),
('WALNUT GROVE NURSERY','40042 - TOM MORRIS','9712'),
('KATOS NURSERY','40042 - TOM MORRIS','9634'),
('BAYVIEW GREENHOUSES','40039 - DAVE BODO','9631'),
('CARPINITO BROTHERS INC','30053 - SKYE SAWYER','9000'),
('AVA NURSERY','10049 - STEVEN STUPPIELLO','8924'),
('BELLE INVESTMENTS','10039 - DUSTIN KUYKENDOLL','8647'),
('SUN NURSERIES','10043 - CHERISSE GILSTROP','8334'),
('GEORGE''S PLANT FARM','10040 - RYAN CHITWOOD','8000'),
('D''ADDIO FAMILY NURSERY','10048 - PHILIP BIEDENBACH','8000'),
('MR GREENJEANS FARM MARKET','10043 - CHERISSE GILSTROP','7817'),
('BOEKESTYN GREENHOUSES LTD','40039 - DAVE BODO','7639'),
('FISHER FARMS','30053 - SKYE SAWYER','7238'),
('PINE VIEW FARM','10048 - PHILIP BIEDENBACH','7000'),
('GILSON FAMILY ENTERPRISE','10042 - JEREMY RHAULT','6763'),
('STARLING NURSERY','10049 - STEVEN STUPPIELLO','6400'),
('MCCALLS NURSERIES INC','30054 - JASON MOTTIN','6000'),
('I & G FARM INC','10043 - CHERISSE GILSTROP','5715'),
('THOMAS BECNEL','10041 - TAMARA RISKEN','5000'),
('MAYS GREENHOUSE','10048 - PHILIP BIEDENBACH','5000'),
('DRY LAND NATIVE GRASSES','10041 - TAMARA RISKEN','5000'),
('CAPOGNA FLOWERS','40039 - DAVE BODO','5000'),
('ANDYS GARDENS','10048 - PHILIP BIEDENBACH','5000'),
('BOBBY MURRAY FARMS','10041 - TAMARA RISKEN','4940'),
('J FRANK GAUDET TREE NURSERY','40040 - TINA PETTIGREW','4909'),
('NORTHWEST PLANT COMPANY','30053 - SKYE SAWYER','4566'),
('KATYDID GREENHOUSE','10040 - RYAN CHITWOOD','4122'),
('MCCALLISTERS LNDSCP SUPPLY','10041 - TAMARA RISKEN','3920'),
('SHANER AVENUE NURSERY','10035 - MATTHEW STAAL','3500'),
('BEAUTIFUL LAND PRODUCTS','13027 - STEVE RUSTEBERG','3368'),
('PARSLEYS PLANT FARM','10041 - TAMARA RISKEN','3000'),
('ALASKA GDN & PET SUPPLY RET','30053 - SKYE SAWYER','2380'),
('MARCUMS NURSERY','10041 - TAMARA RISKEN','2338'),
('UNITED CENTRAL ORCHIDS','13027 - STEVE RUSTEBERG','2298'),
('JEFF PARSLEY PLANT FARM','10041 - TAMARA RISKEN','2000'),
('BEDROCK NURSERY','10041 - TAMARA RISKEN','1955'),
('WAYFAIR LLC','90015 - ANN MARIE FOX','1800'),
('VM INNOVATIONS-NE','90015 - ANN MARIE FOX','1730'),
('DOAN''S NURSERY INC.','10041 - TAMARA RISKEN','1500'),
('KLEIN''S FLORAL AND GREENHOUSE','13027 - STEVE RUSTEBERG','1207'),
('DAHLINGHAUS VENTURES LLC','10048 - PHILIP BIEDENBACH','1051'),
('YC NURSERIES INC','10041 - TAMARA RISKEN','1000'),
('TEJANA NURSERY','10041 - TAMARA RISKEN','1000'),
('TREESEARCH FARMS INC','10041 - TAMARA RISKEN','1000'),
('THOMAS BECNEL CITRUS','10041 - TAMARA RISKEN','1000'),
('SUAREZ PLANT FARM','10041 - TAMARA RISKEN','1000'),
('SMITH NURSERY','10041 - TAMARA RISKEN','1000'),
('OSO GROWERS INC.','10041 - TAMARA RISKEN','1000'),
('LENO PLANT FARM','10041 - TAMARA RISKEN','1000'),
('GIESEL''S GREENHOUSE','10041 - TAMARA RISKEN','1000'),
('CHRIS DOYLE PLANT BROKERAGE','10041 - TAMARA RISKEN','1000')
) x(renamed,rerep,pounds)
) WITH DATA
-- )
-- ,seg AS (
-- SELECT
-- x.GLEC glec
-- ,x.SEGM segm
-- FROM
-- (
-- VALUES
-- ('1SU','Sustainable'),
-- ('1CU','Sustainable'),
-- ('1GR','Greenhouse'),
-- ('1NU','Nursery'),
-- ('1RE','Retail'),
-- ('2WI','Greenhouse'),
-- ('3BM','Other'),
-- ('3CO','Other'),
-- ('3PE','Other'),
-- ('3PP','Other'),
-- ('4CO','Other'),
-- ('4RA','Other'),
-- ('9MI','Other'),
-- ('9SA','Other'),
-- ('9TO','Other')
-- ) X(GLEC, SEGM)
-- )
-- ,profile AS (
-- SELECT * FROM rlarp.osm WHERE shipgrp IN (select distinct renamed FROM newc ) AND oseas >= 2018
-- )
-- -- SELECT * FROM profile
-- ,checkc AS (
-- SELECT shipgrp, min(oseas) oseas FROM profile GROUP BY shipgrp
-- )
-- -- select * from checkc
-- -- SELECT cust, sum(fb_qty) FROM newc LEFT OUTER JOIN profile ON shipgrp = cust GROUP by cust
----grouped prices-------------
,npgrp AS (
SELECT
o.bill_dba
,o.ship_dba
,o.bill_cust
,o.ship_cust
,o.promo
,o.terms
,o.dsm
,o.part
,o.odate
,o.qtyord
,i.nwht * CASE WHEN i.nwun = 'KG' THEN 2.2 ELSE 1 END lbs
,i.mpck pltq
,ROUND(o.sales_usd / o.qty,5) price
,(o.pricing->>'guidance_price')::NUMERIC guidance
,(o.pricing->>'floor' )::numeric(15,5) floor
,(o.pricing->>'ceiling')::numeric(15,5) ceiling
,(o.pricing->>'uselimits')::boolean uselimits
FROM
rlarp.osm_stack o
INNER JOIN "CMS.CUSLG".itemm i ON
i.item = o.part
INNER JOIN checkc c ON
c.shipgrp = o.customer
AND c.oseas = o.oseas
WHERE
VERSION = 'Actual'
AND o.oseas >= 2018
AND calc_status <> 'CANCELED'
AND o.fs_line = '41010'
AND o.part <> ''
AND substring(o.glec,1,1) <= '2'
AND o.qty <> 0
AND o.sseas IS NOT NULL
-- AND customer in (select distinct renamed FROM newc )
GROUP BY
o.bill_dba
,o.ship_dba
,o.dsm
,i.partgroup
,i.pricegroup
,o.part
,o.odate
,o.qtyord
,o.pounds
,o.pallets
,ROUND(o.sales_usd / o.qty,5)
,i.nwht * CASE WHEN i.nwun = 'KG' THEN 2.2 ELSE 1 END
,i.mpck
,(o.pricing->>'guidance_price')::NUMERIC
,(o.pricing->>'floor' )::numeric(15,5)
,(o.pricing->>'ceiling')::numeric(15,5)
,(o.pricing->>'uselimits')::boolean
)
----sequenced for most recent price------------
,nseq AS (
SELECT
bill_dba
,ship_dba
,part
,odate
,qtyord
,lbs
,pltq
,price
,guidance
,floor
,ceiling
,uselimits
,row_number() OVER (PARTITION BY bill_dba, ship_dba, part ORDER BY odate desc) rn
,round(avg(price) over (PARTITION BY bill_dba, ship_dba, part),5) avgprice
FROM
npgrp
)
-- SELECT * FROM seq WHERE rn = 1
,ngrp AS (
SELECT
sg.fspr
,i.dplt
,o.promo
,o.terms
,o.bill_cust
,o.ship_cust
,o.dsm
,o.dsm
,null:: director
,o.account
,o.shipgrp
,o.chan
,o.chansub
,null::channel_retail
,i.partgroup
,i.pricegroup
,o.part
,o.part || ' - ' || i.descr
,i.partgroup
,i.branding
,i.majgd majg_descr
,i.mingd ming_descr
,i.majsd majs_descr
,i.minsd mins_descr
,seg.segm
,CASE WHEN i.majg = '610' THEN 'Fiber' ELSE 'Plastic' END substance
,o.fs_line
,o.r_currency
,rx.rate r_rate
,pl.curr c_currency
,rx.rate r_rate
,pl.curr c_currency
,cx.rate c_rate
,ROUND(sum(fb_qty * lbs),5) lbs
,ROUND(sum(fb_qty),2) qty
,ROUND(sum(fb_val_loc * r_rate),2) sales_usd
,ROUND(sum(fb_cst_loc_cur * c_rate),2) cost_curstd_usd
,'CLOSED' calc_status
,'SHIPMENT' flag
,o.odate
,o.oseas
,o.odate
,og.sortmo omon
,o.sseas
,o.sdate
,sg.sortmo smon
-- ,o.calc_status
FROM
profile o
LEFT OUTER JOIN rlarp.gld og ON
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
LEFT OUTER JOIN seg ON
seg.glec = i.glec
LEFT OUTER JOIN rlarp.plpr pl ON
pl.plnt = i.dplt
LEFT OUTER JOIN rlarp.ffcret cx ON
cx.perd = pl.gl AND
cx.rtyp = 'MA' AND
cx.fcur = pl.curr AND
cx.tcur = 'US'
LEFT OUTER JOIN rlarp.ffcret rx ON
rx.perd = pl.gl AND
rx.rtyp = 'MA' AND
rx.fcur = b.r_currency AND
rx.tcur = 'US'
WHERE
true
-- iter IN ('actuals','actuals_plug','copy')
AND fs_line = '41010'
AND substring(o.glec,1,1) <= '2'
AND o.calc_status <> 'CANCELED'
AND o.sseas IS NOT NULL
GROUP BY
o.account
,o.shipgrp
,o.chan
,o.dsm
,i.partgroup
,i.pricegroup
,o.part
,o.glec
,o.oseas
,o.odate
,og.sortmo
,o.sseas
,o.sdate
,sg.sortmo
-- ,o.calc_status
)
-- SELECT * FROM ngrp
,nguid AS (
SELECT
grp.account
,grp.shipgrp
,grp.chan
,r.repp dsm
,r.director
,grp.shipgrp||'.'||r.repp lu
-- ,grp.partgroup
-- ,grp.pricegroup
,grp.part
-- ,grp.glec
,2026 oseas
,grp.omon
,grp.odate
,(2026- grp.oseas) + grp.sseas sseas
,grp.smon
,grp.sdate
,grp.lbs
,grp.qty
,grp.sales_usd
,CASE WHEN round(grp.sales_usd/grp.qty,5) = 0 THEN null ELSE round(grp.sales_usd/grp.qty,5) END hist_price
,grp.cost_curstd_usd
,sum(grp.lbs) OVER (PARTITION BY shipgrp, dsm) shiplbs
,CASE WHEN seq.floor = 0 THEN null else seq.floor END floor
,CASE WHEN seq.ceiling = 0 THEN null else seq.ceiling END ceiling
,seq.uselimits
,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
ngrp grp
LEFT OUTER JOIN nseq seq ON
seq.ship_dba = grp.shipgrp
AND seq.bill_dba = grp.account
AND seq.part = grp.part
AND seq.rn = 1
LEFT OUTER JOIN rlarp.repc r ON
r.rcode = grp.dsm
)
select * from nguid
-- ,orphans AS (
-- SELECT
-- account
-- ,shipgrp
-- ,chan
-- ,dsm
-- ,director
-- ,lu
-- --,partgroup
-- --,pricegroup
-- ,part
-- -- ,glec
-- ,oseas
-- ,omon
-- -- ,odate
-- ,sseas
-- ,smon
-- -- ,sdate
-- ,lbs
-- ,qty
-- ,sales_usd
-- ,hist_price
-- ,cost_curstd_usd
-- ,shiplbs
-- ,floor
-- ,ceiling
-- ,uselimits
-- ,price
-- ,avgprice
-- ,pltq
-- ,guid
-- ,least(hist_price, price, avgprice) lowest_last
-- ,least(hist_price, price, avgprice, floor) lowest_floor
-- FROM
-- nguid
-- )
-- SELECT * FROM orphans