Compare commits

..

No commits in common. "3fe5126861898ca25d038429d5ebc40dd87ed53b" and "c9811e69db8d84a5dc7f1bf1b90d15f9edf14be0" have entirely different histories.

15 changed files with 285 additions and 1696 deletions

View File

@ -1,19 +0,0 @@
SELECT
version
,iter
,oseas
,g.sspr || ' ' || to_char(odate,'Mon') omon
,COUNT(*) cnt
,sum(fb_val_loc * r_rate) amt
FROM
rlarp.osmf_stage o
INNER JOIN rlarp.gld g ON
o.odate <@ g.drange
GROUP BY
version
,iter
,oseas
,g.sspr || ' ' || to_char(odate,'Mon')
ORDER BY
oseas
,omon

View File

@ -1,8 +1,11 @@
BEGIN; BEGIN;
DROP TABLE IF EXISTS rlarp.osm_pool_stage; DROP TABLE IF EXISTS rlarp.osm_pool;
DROP TABLE IF EXISTS rlarp.osm_log;
CREATE TABLE rlarp.osm_pool_stage AS ( CREATE TABLE IF NOT EXISTS rlarp.osm_log(id INT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, doc jsonb);
CREATE TABLE IF NOT EXISTS rlarp.osm_pool AS (
WITH WITH
repc AS ( repc AS (
SELECT SELECT
@ -49,7 +52,7 @@ repc AS (
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') <> '' SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') <> ''
) )
,logload AS ( ,logload AS (
INSERT INTO rlarp.osm_log (doc) SELECT jsonb_build_object('user',current_user,'tag','merge actuals','type','build_pool','stamp',current_timestamp,'source','top level','message','don''t undo') RETURNING * INSERT INTO rlarp.osm_log (doc) SELECT jsonb_build_object('user',current_user,'tag','Initial Build','type','build_pool','stamp',current_timestamp,'source','top level','message','don''t undo') RETURNING *
) )
SELECT SELECT
fspr fspr
@ -121,11 +124,11 @@ SELECT
,r_rate ,r_rate
,c_currency ,c_currency
,c_rate ,c_rate
,round(fb_qty,2) units ,fb_qty units
,round(fb_val_loc,2) value_loc ,fb_val_loc value_loc
,round(fb_val_loc * r_rate,2) value_usd ,fb_val_loc * r_rate value_usd
,round(fb_cst_loc_cur,2) cost_loc ,fb_cst_loc_cur cost_loc
,round(fb_cst_loc_cur * c_rate,2) cost_usd ,fb_cst_loc_cur * c_rate cost_usd
,calc_status ,calc_status
,flag ,flag
,o.odate order_date ,o.odate order_date
@ -171,12 +174,10 @@ FROM
--LIMIT 100 --LIMIT 100
) WITH DATA; ) WITH DATA;
--INSERT INTO rlarp.osm_pool SELECT * FROM rlarp.osm_pool_stage; CREATE INDEX osm_qr ON rlarp.osm_pool(quota_rep_descr, bill_cust_descr, ship_cust_descr);
ALTER TABLE rlarp.osm_pool ADD CONSTRAINT logfk FOREIGN KEY (logid) REFERENCES rlarp.osm_log(id);
--CREATE INDEX osm_qr ON rlarp.osm_pool(quota_rep_descr, bill_cust_descr, ship_cust_descr); CREATE INDEX osm_pool_logid ON rlarp.osm_pool(logid);
--ALTER TABLE rlarp.osm_pool ADD CONSTRAINT logfk FOREIGN KEY (logid) REFERENCES rlarp.osm_log(id); GRANT ALL ON TABLE rlarp.osm_log TO api;
--CREATE INDEX osm_pool_logid ON rlarp.osm_pool(logid); GRANT ALL ON TABLE rlarp.osm_pool TO api;
--GRANT ALL ON TABLE rlarp.osm_log TO api;
--GRANT ALL ON TABLE rlarp.osm_pool TO api;
COMMIT; COMMIT;

View File

@ -1,183 +0,0 @@
BEGIN;
DROP TABLE IF EXISTS rlarp.osm_pool;
DROP TABLE IF EXISTS rlarp.osm_log;
CREATE TABLE IF NOT EXISTS rlarp.osm_log(id INT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, doc jsonb);
CREATE TABLE IF NOT EXISTS rlarp.osm_pool AS (
WITH
repc AS (
SELECT
LTRIM(RTRIM(C.A9)) RCODE
,C.A30 REPP
,COALESCE(Q.DIR,'Other') DIRECTOR
FROM
LGDAT.CODE C
LEFT OUTER JOIN RLARP.QRH Q ON
Q.QR = LTRIM(RTRIM(C.A9))
WHERE
C.A2 = 'MM'
)
,SEG AS (
SELECT
GLEC
,SEGM
FROM
(
VALUES
('1CU','Sustainable'),
('1SU','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)
)
----------------------------------------------------sales major codes----------------------------------------------------------------------------------------------------------------------------------
,SJ AS (
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') = ''
)
----------------------------------------------------sales minor codes----------------------------------------------------------------------------------------------------------------------------------
,SI AS (
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') <> ''
)
,logload AS (
INSERT INTO rlarp.osm_log (doc) SELECT jsonb_build_object('user',current_user,'tag','Initial Build','type','build_pool','stamp',current_timestamp,'source','top level','message','don''t undo') RETURNING *
)
SELECT
fspr
,plnt
,promo
,terms
,bill_cust||' - '||bc.bvname bill_cust_descr
,ship_cust||' - '||sc.bvname ship_cust_descr
,dsm
,coalesce(repc.repp,dsm) quota_rep_descr
,repc.director
,account billto_group
,shipgrp shipto_group
,chan
,chansub
,CASE seg.segm
--for 1RE coded product
WHEN 'Retail' THEN
CASE o.bill_class
WHEN 'RONL' THEN 'Online'
WHEN 'RNAT' THEN 'National'
WHEN 'RMAS' THEN 'National'
ELSE
------ ship-to class ---------------------
CASE o.chan
WHEN 'GDIS' THEN 'Distribution'
WHEN 'NDIS' THEN 'Distribution'
WHEN 'RDIS' THEN 'Distribution'
WHEN 'GDRP' THEN 'Grower'
WHEN 'NDRP' THEN 'Grower'
WHEN 'RDRP' THEN 'Distribution'
WHEN 'GDIR' THEN 'Grower'
WHEN 'NDIR' THEN 'Grower'
-------this will probably need reviewed--------
WHEN 'RDIR' THEN 'Distribution'
WHEN 'NDIR' THEN 'Grower'
WHEN 'GDIR' THEN 'Grower'
ELSE 'Distribution'
END
END
--for 1SU 1CU coded product
WHEN 'Sustainable' THEN
CASE SUBSTRING(o.coltier,1,1)
--anything with a bio color tier is bio on the channel
WHEN 'R' THEN 'Bio'
ELSE
CASE o.glec
--any 1SU that is not bio is fiber
WHEN '1SU' THEN 'Fiber'
--any 1CU that is not bio is commercial
WHEN '1CU' THEN 'Commercial'
ELSE o.chan
END
END
ELSE o.chan
END chan_retail
,part
,part||coalesce(' - '||i.descr,'') part_descr
,stlcd part_group
,brnd branding
,o.majg||' - '||i.majgd majg_descr
,o.ming||' - '||i.mingd ming_descr
,o.majs||' - '||i.majsd majs_descr
,o.mins||' - '||i.minsd mins_descr
,seg.segm
,CASE WHEN o.majg = '610' THEN 'Fiber' ELSE 'Plastic' END substance
,fs_line
,r_currency
,r_rate
,c_currency
,c_rate
,fb_qty units
,fb_val_loc value_loc
,fb_val_loc * r_rate value_usd
,fb_cst_loc_cur cost_loc
,fb_cst_loc_cur * c_rate cost_usd
,calc_status
,flag
,o.odate order_date
,to_char(CASE WHEN extract(month FROM o.odate) >= 6 THEN -5 ELSE 7 END + extract(month FROM o.odate),'FM00')||' - '||to_char(o.odate,'TMMon') order_month
,oseas order_season
,rdate request_date
,to_char(CASE WHEN extract(month FROM o.rdate) >= 6 THEN -5 ELSE 7 END + extract(month FROM o.rdate),'FM00')||' - '||to_char(o.rdate,'TMMon') request_month
,rseas request_season
,sdate ship_date
,to_char(CASE WHEN extract(month FROM o.sdate) >= 6 THEN -5 ELSE 7 END + extract(month FROM o.sdate),'FM00')||' - '||to_char(o.sdate,'TMMon') ship_month
,sseas ship_season
,version
,iter
,logload.id logid
,logload.doc->>'tag' tag
,logload.doc->>'message' "comment"
,logload.doc->>'type' module
FROM
rlarp.osmf_dev o
CROSS JOIN logload
LEFT OUTER JOIN lgdat.cust bc ON
bc.bvcust = o.bill_cust
LEFT OUTER JOIN lgdat.cust sc ON
sc.bvcust = o.ship_cust
LEFT OUTER JOIN repc ON
repc.rcode = o.dsm
/*
LEFT OUTER JOIN lgdat.majg ON
bqgrp = o.majg
LEFT OUTER JOIN lgdat.mmgp ON
brmgrp = o.ming
AND BRGRP = o.majg
LEFT OUTER JOIN si ON
si.bsmjcd = o.majs
AND si.bsmncd = o.mins
LEFT OUTER JOIN sj ON
sj.bsmjcd = o.majs
*/
LEFT OUTER JOIN seg ON
seg.glec = o.glec
LEFT OUTER JOIN rlarp.itemm i ON
i.item = o.part
--LIMIT 100
) WITH DATA;
CREATE INDEX osm_qr ON rlarp.osm_pool(quota_rep_descr, bill_cust_descr, ship_cust_descr);
ALTER TABLE rlarp.osm_pool ADD CONSTRAINT logfk FOREIGN KEY (logid) REFERENCES rlarp.osm_log(id);
CREATE INDEX osm_pool_logid ON rlarp.osm_pool(logid);
GRANT ALL ON TABLE rlarp.osm_log TO api;
GRANT ALL ON TABLE rlarp.osm_pool TO api;
COMMIT;

View File

@ -1,657 +0,0 @@
BEGIN;
--\timing
--CREATE TABLE IF NOT EXISTS rlarp.osmf_stage AS (SELECT * FROM rlarp.osmf_dev) WITH no data;
TRUNCATE TABLE rlarp.osmf_dev;
DROP TABLE IF EXISTS tdr;
CREATE TEMP TABLE tdr AS (
SELECT
DATERANGE('2020-06-01','2021-06-01','[)') drange
,DATERANGE(('2020-06-01'::date + '1 year'::interval)::date,('2021-06-01'::date + '1 year'::interval)::date,'[)') repl
,'1 year'::interval AS incr
,(SELECT jsonb_agg(x.v) FROM (VALUES('copy'),('actuals'),('actuals_plug')) AS x(v)) iter
);
WITH
gld AS (
SELECT
N1COMP COMP
,N1CCYY FSYR
,KPMAXP PERDS
,N1FSPP PERD
,to_char(N1FSYP,'FM0000') FSPR
,N1SD01 SDAT
,N1ED01 EDAT
,to_char(N1ED01,'yymm') CAPR
,N1ED01 - N1SD01 +1 NDAYS
,CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(YEAR FROM N1ED01) + 1 ELSE EXTRACT(YEAR FROM N1ED01) END SSYR
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
FROM
LGDAT.GLDATREF
INNER JOIN LGDAT.GLDATE ON
KPCOMP = N1COMP AND
KPCCYY = N1CCYY
CROSS JOIN tdr
WHERE
N1COMP = 93
--AND DIGITS(N1FSYP) = '1901'
)
--SELECT * FROM gld
,baseline AS (
SELECT
-----------documents-------------
null::int "ddord#"
,null::int "dditm#"
,null::int "fgbol#"
,null::int "fgent#"
,null::int "diinv#"
,null::int "dilin#"
,null::int quoten
,null::int quotel
----------dates/status------------------
,o.odate dcodat
,o.rdate ddqdat
,null::date dcmdat
,null::date fesdat
,greatest(least(o.sdate,gld.edat),gld.sdat) dhidat
,null::text fesind
,null::text dhpost
---for forecasting purposes there are no open orders, populate fspr----
,ss.fspr
-----------measures--------------------
,null::numeric ddqtoi
,null::numeric ddqtsi
,null::numeric fgqshp
,null::numeric diqtsh
,null::numeric diext
,null::numeric ditdis
,null::jsonb discj
,null::text dhincr
,o.plnt
,COALESCE(o.promo,'') promo
,null::text return_reas
,o.terms
,null::text custpo
,null::text remit_to
,null::text bill_class
,o.bill_cust
,null::text bill_rep
,null::text bill_terr
,null::text ship_class
,o.ship_cust
,null::text ship_rep
,null::text ship_terr
,o.dsm
,null::text account
,null::text shipgrp
,null::text geo
,null::text chan
,null::text chansub
,null::text orig_ctry
,null::text orig_prov
,null::text orig_post
,null::text bill_ctry
,null::text bill_prov
,null::text bill_post
,null::text dest_ctry
,null::text dest_prov
,null::text dest_post
,o.part
,null::text styc
,null::text colc
,null::text colgrp
,null::text coltier
,null::text colstat
,null::text sizc
,null::text pckg
,null::text kit
,null::text brnd
,null::text majg
,null::text ming
,null::text majs
,null::text mins
,null::text gldco
,null::text gldc
,null::text glec
,null::text harm
,null::text clss
,null::text brand
,null::text assc
,null::text ddunit
,null::text unti
,null::numeric lbs
,null::numeric plt
,null::text plcd
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,sum(o.fb_qty) fb_qty
,sum(o.fb_val_loc) fb_val_loc
,sum(o.fb_val_loc_dis) fb_val_loc_dis
,sum(o.fb_val_loc_qt) fb_val_loc_qt
,sum(o.fb_val_loc_pl) fb_val_loc_pl
,sum(o.fb_val_loc_tar) fb_val_loc_tar
,sum(o.fb_cst_loc) fb_cst_loc
,sum(o.fb_cst_loc_cur) fb_cst_loc_cur
,sum(o.fb_cst_loc_fut) fb_cst_loc_fut
,o.calc_status
,o.flag
,o.odate
,o.oseas
,o.rdate
,o.rseas
-----when null, greatest/least is just going to act like coalesce
,greatest(least(o.sdate,gld.edat),gld.sdat) sdate
,ss.ssyr sseas
,'actuals' "version"
,'actuals' iter
FROM
rlarp.osm_dev o
--snap the ship dates of the historic fiscal period
LEFT OUTER JOIN gld ON
gld.fspr = o.fspr
--get the shipping season for open orders based on the snapped date
LEFT OUTER JOIN gld ss ON
greatest(least(o.sdate,gld.edat),gld.sdat) BETWEEN ss.sdat AND ss.edat
WHERE
(
--base period orders booked....
o.odate <@ (SELECT drange FROM tdr)
--...or any open orders currently booked before cutoff....
OR (o.calc_status IN ('OPEN','BACKORDER') and o.odate < (SELECT UPPER(drange) FROM tdr))
--...or anything that shipped in that period
OR (o.sdate <@ (SELECT drange FROM tdr) AND sseas IS NOT NULL)
)
AND fs_line = '41010'
AND calc_status <> 'CANCELED'
AND NOT (calc_status = 'CLOSED' AND flag = 'REMAINDER')
---exclude integrated quotes----
AND version = 'ACTUALS'
GROUP BY
ss.fspr
,o.plnt
,COALESCE(o.promo,'')
,o.terms
,o.bill_cust
,o.ship_cust
,o.dsm
,o.part
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,o.calc_status
,o.flag
,o.odate
,o.oseas
,o.rdate
,o.rseas
,greatest(least(o.sdate,gld.edat),gld.sdat)
,ss.ssyr
)
,incr AS (
SELECT
o."ddord#"
,o."dditm#"
,o."fgbol#"
,o."fgent#"
,o."diinv#"
,o."dilin#"
,o.quoten
,o.quotel
,o.dcodat + interval '1 year' dcodat --incremented
,o.ddqdat + interval '1 year' ddqdat --incremented
,o.dcmdat
,o.fesdat
,o.dhidat + interval '1 year' dhidat --incremented
,o.fesind
,o.dhpost
,gld.fspr --incremented
,o.ddqtoi
,o.ddqtsi
,o.fgqshp
,o.diqtsh
,o.diext
,o.ditdis
,o.discj
,o.dhincr
,o.plnt
,o.promo
,o.return_reas
,o.terms
,o.custpo
,o.remit_to
,o.bill_class
,o.bill_cust
,o.bill_rep
,o.bill_terr
,o.ship_class
,o.ship_cust
,o.ship_rep
,o.ship_terr
,o.dsm
,o.account
,o.shipgrp
,o.geo
,o.chan
,o.chansub
,o.orig_ctry
,o.orig_prov
,o.orig_post
,o.bill_ctry
,o.bill_prov
,o.bill_post
,o.dest_ctry
,o.dest_prov
,o.dest_post
,o.part
,o.styc
,o.colc
,o.colgrp
,o.coltier
,o.colstat
,o.sizc
,o.pckg
,o.kit
,o.brnd
,o.majg
,o.ming
,o.majs
,o.mins
,o.gldco
,o.gldc
,o.glec
,o.harm
,o.clss
,o.brand
,o.assc
,o.ddunit
,o.unti
,o.lbs
,o.plt
,o.plcd
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,o.fb_qty
,o.fb_val_loc
,o.fb_val_loc_dis
,o.fb_val_loc_qt
,o.fb_val_loc_pl
,o.fb_val_loc_tar
,o.fb_cst_loc
,o.fb_cst_loc_cur
,o.fb_cst_loc_fut
,o.calc_status
,o.flag
,(o.odate + interval '1 year')::date odate --incremented
,o.oseas + 1 oseas --incremented
,(o.rdate + interval '1 year')::date rdate --incremented
,o.rseas + 1 rseas --incremented
,(o.sdate + interval '1 year')::date sdate --incremented
,o.sseas + 1 sseas --incremented
,'b22' "version"
,'copy' iter
FROM
baseline o
LEFT OUTER JOIN gld ON
o.sdate + interval '1 year' BETWEEN gld.sdat and gld.edat
WHERE
o.odate + interval '1 year' >= (SELECT LOWER(drange) + INTERVAL '1 year' FROM tdr)
)
,stage AS (
SELECT * FROM incr
UNION ALL
SELECT * FROM baseline
)
,remove AS (
SELECT
-----------documents-------------
null::int "ddord#"
,null::int "dditm#"
,null::int "fgbol#"
,null::int "fgent#"
,null::int "diinv#"
,null::int "dilin#"
,null::int quoten
,null::int quotel
----------dates/status------------------
,o.odate dcodat
,o.rdate ddqdat
,null::date dcmdat
,null::date fesdat
,o.dhidat
,null::text fesind
,null::text dhpost
,o.fspr
-----------measures--------------------
,null::numeric ddqtoi
,null::numeric ddqtsi
,null::numeric fgqshp
,null::numeric diqtsh
,null::numeric diext
,null::numeric ditdis
,null::jsonb discj
,null::text dhincr
,o.plnt
,o.promo
,o.return_reas
,o.terms
,null::text custpo
,null::text remit_to
,null::text bill_class
,o.bill_cust
,null::text bill_rep
,null::text bill_terr
,null::text ship_class
,o.ship_cust
,null::text ship_rep
,null::text ship_terr
,o.dsm
,null::text account
,null::text shipgrp
,null::text geo
,null::text chan
,null::text chansub
,null::text orig_ctry
,null::text orig_prov
,null::text orig_post
,null::text bill_ctry
,null::text bill_prov
,null::text bill_post
,null::text dest_ctry
,null::text dest_prov
,null::text dest_post
,o.part
,null::text styc
,null::text colc
,null::text colgrp
,null::text coltier
,null::text colstat
,null::text sizc
,null::text pckg
,null::text kit
,null::text brnd
,null::text majg
,null::text ming
,null::text majs
,null::text mins
,null::text gldco
,null::text gldc
,null::text glec
,null::text harm
,null::text clss
,null::text brand
,null::text assc
,null::text ddunit
,null::text unti
,null::numeric lbs
,null::numeric plt
,null::text plcd
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,-sum(o.fb_qty) fb_qty
,-sum(o.fb_val_loc) fb_val_loc
,-sum(o.fb_val_loc_dis) fb_val_loc_dis
,-sum(o.fb_val_loc_qt) fb_val_loc_qt
,-sum(o.fb_val_loc_pl) fb_val_loc_pl
,-sum(o.fb_val_loc_tar) fb_val_loc_tar
,-sum(o.fb_cst_loc) fb_cst_loc
,-sum(o.fb_cst_loc_cur) fb_cst_loc_cur
,-sum(o.fb_cst_loc_fut) fb_cst_loc_fut
,o.calc_status
,o.flag
,o.odate
,o.oseas
,o.rdate
,o.rseas
-----when null, greatest/least is just going to act like coalesce
,o.sdate
,o.sseas
,o.version
,o.iter
FROM
rlarp.osmfs_dev o
CROSS JOIN tdr
WHERE
--collect all the rows in the base period and
--the destination slot for the new rows
(
o.odate <@ tdr.drange
OR o.odate <@ tdr.repl
)
---only merge with targeted iterations
AND tdr.iter ? o.iter
GROUP BY
o.odate
,o.rdate
,o.dhidat
,o.fspr
,o.plnt
,o.promo
,o.return_reas
,o.terms
,o.bill_cust
,o.ship_cust
,o.dsm
,o.part
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,o.calc_status
,o.flag
,o.odate
,o.oseas
,o.rdate
,o.rseas
,o.sdate
,o.sseas
,o.version
,o.iter
)
,stack AS (
SELECT * FROM stage
UNION ALL
SELECT * FROM remove
)
,merge_diff AS (
SELECT
-----------documents-------------
null::int "ddord#"
,null::int "dditm#"
,null::int "fgbol#"
,null::int "fgent#"
,null::int "diinv#"
,null::int "dilin#"
,null::int quoten
,null::int quotel
----------dates/status------------------
,o.odate dcodat
,o.rdate ddqdat
,null::date dcmdat
,null::date fesdat
,o.dhidat
,null::text fesind
,null::text dhpost
,o.fspr
-----------measures--------------------
,null::numeric ddqtoi
,null::numeric ddqtsi
,null::numeric fgqshp
,null::numeric diqtsh
,null::numeric diext
,null::numeric ditdis
,null::jsonb discj
,null::text dhincr
,o.plnt
,o.promo
,o.return_reas
,o.terms
,null::text custpo
,null::text remit_to
,null::text bill_class
,o.bill_cust
,null::text bill_rep
,null::text bill_terr
,null::text ship_class
,o.ship_cust
,null::text ship_rep
,null::text ship_terr
,o.dsm
,null::text account
,null::text shipgrp
,null::text geo
,null::text chan
,null::text chansub
,null::text orig_ctry
,null::text orig_prov
,null::text orig_post
,null::text bill_ctry
,null::text bill_prov
,null::text bill_post
,null::text dest_ctry
,null::text dest_prov
,null::text dest_post
,o.part
,null::text styc
,null::text colc
,null::text colgrp
,null::text coltier
,null::text colstat
,null::text sizc
,null::text pckg
,null::text kit
,null::text brnd
,null::text majg
,null::text ming
,null::text majs
,null::text mins
,null::text gldco
,null::text gldc
,null::text glec
,null::text harm
,null::text clss
,null::text brand
,null::text assc
,null::text ddunit
,null::text unti
,null::numeric lbs
,null::numeric plt
,null::text plcd
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,round(sum(o.fb_qty),2) fb_qty
,round(sum(o.fb_val_loc),2) fb_val_loc
,sum(o.fb_val_loc_dis) fb_val_loc_dis
,sum(o.fb_val_loc_qt) fb_val_loc_qt
,sum(o.fb_val_loc_pl) fb_val_loc_pl
,sum(o.fb_val_loc_tar) fb_val_loc_tar
,round(sum(o.fb_cst_loc),2) fb_cst_loc
,sum(o.fb_cst_loc_cur) fb_cst_loc_cur
,sum(o.fb_cst_loc_fut) fb_cst_loc_fut
,o.calc_status
,o.flag
,o.odate
,o.oseas
,o.rdate
,o.rseas
,o.sdate
,o.sseas
--,o.version
--,o.iter
,'actuals' AS version
,'copy' iter
FROM
stack o
WHERE
--collect all the rows in the base period and
--the destination slot for the new rows
o.odate <@ (SELECT tdr.drange FROM tdr)
OR o.odate <@ (SELECT tdr.repl FROM tdr)
GROUP BY
o.dhidat
,o.fspr
,o.plnt
,o.promo
,o.return_reas
,o.terms
,o.bill_cust
,o.ship_cust
,o.dsm
,o.part
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,o.calc_status
,o.flag
,o.odate
,o.oseas
,o.rdate
,o.rseas
,o.sdate
,o.sseas
--,o.version
--,o.iter
HAVING
round(sum(o.fb_qty),2) <> 0
OR round(sum(o.fb_val_loc),2) <> 0
--OR round(sum(o.fb_cst_loc),2) <> 0
)
INSERT INTO rlarp.osmf_dev SELECT * FROM merge_diff;
UPDATE
rlarp.osmf_dev f
SET
fspr = gld.fspr
FROM
(
SELECT
N1COMP COMP
,N1CCYY FSYRq
,KPMAXP PERDS
,N1FSPP PERD
,to_char(N1FSYP,'FM0000') FSPR
,N1SD01 SDAT
,N1ED01 EDAT
,to_char(N1ED01,'yymm') CAPR
,N1ED01 - N1SD01 +1 NDAYS
,CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(YEAR FROM N1ED01) + 1 ELSE EXTRACT(YEAR FROM N1ED01) END SSYR
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
FROM
LGDAT.GLDATREF
INNER JOIN LGDAT.GLDATE ON
KPCOMP = N1COMP AND
KPCCYY = N1CCYY
WHERE
N1COMP = 93
--AND DIGITS(N1FSYP) = '1901'
) gld
WHERE
f.sdate BETWEEN gld.sdat AND gld.edat
AND coalesce(f.fspr,'') <> gld.fspr;
COMMIT;
END
---identify short ships: causes disconnect with actual sales-------------------------------------------------------------------
--UPDATE rlarp.osmfs SET iter = 'short ship' WHERE calc_status = 'CLOSED' AND flag = 'REMAINDER';
---identify goofy ship dates: causes disconnect with sales when splicing in a forecast that has this problem-------------------
--UPDATE rlarp.osmfs SET iter = 'bad date' WHERE adj_shipdate < adj_orderdate;

View File

@ -110,8 +110,7 @@ SELECT
ship_date, ship_date,
ship_season, ship_season,
version, version,
iter, iter
tag
FROM FROM
rlarp.osm_pool; rlarp.osm_pool;
@ -119,8 +118,7 @@ FROM
UPDATE UPDATE
RLARP.OSMFS_DEV O RLARP.OSMFS_DEV O
SET SET
STYC = M.STLC COLC = M.COLC
,COLC = M.COLC
,COLGRP = M.COLGRP ,COLGRP = M.COLGRP
,COLTIER = M.COLTIER ,COLTIER = M.COLTIER
,COLSTAT = M.COLSTAT ,COLSTAT = M.COLSTAT

View File

@ -1,3 +1,3 @@
DELETE FROM rlarp.osmf_dev WHERE odate < '2021-05-01'; DELETE FROM rlarp.osmf_dev WHERE odate < '2020-06-01';
INSERT INTO rlarp.osmf_dev SELECT * FROM rlarp.osmfs_dev WHERE odate < '2021-05-01'; INSERT INTO rlarp.osmf_dev SELECT * FROM rlarp.osmfs_dev WHERE odate < '2020-06-01';

View File

@ -1,6 +1,6 @@
BEGIN; BEGIN;
DELETE FROM rlarp.osm_pool WHERE order_date < '2021-05-01'; DELETE FROM rlarp.osm_pool WHERE order_date < '2020-06-01';
INSERT INTO rlarp.osm_pool INSERT INTO rlarp.osm_pool
WITH WITH
@ -135,7 +135,7 @@ FROM
LEFT OUTER JOIN rlarp.itemm i ON LEFT OUTER JOIN rlarp.itemm i ON
i.item = o.part i.item = o.part
WHERE WHERE
odate < '2021-05-01'; odate < '2020-06-01';
SELECT SELECT

View File

@ -145,11 +145,11 @@ gld AS (
WHERE WHERE
( (
--base period orders booked.... --base period orders booked....
o.odate <@ daterange('2020-06-01','2021-05-01','[)') o.odate <@ daterange('2019-06-01','2020-06-01')
--...or any open orders currently booked before cutoff.... --...or any open orders currently booked before cutoff....
OR (o.calc_status IN ('OPEN','BACKORDER') and o.odate < '2021-05-01') OR (o.calc_status IN ('OPEN','BACKORDER') and o.odate < '2020-06-01')
--...or anything that shipped in that period --...or anything that shipped in that period
OR o.fspr BETWEEN '2101' AND '2111' OR o.fspr BETWEEN '2001' AND '2012'
) )
AND fs_line = '41010' AND fs_line = '41010'
AND calc_status <> 'CANCELED' AND calc_status <> 'CANCELED'

View File

@ -11,10 +11,3 @@ Build A New Forecast
* build the pool for the more limited UI data set: build_pool.sql * build the pool for the more limited UI data set: build_pool.sql
* copy the pool to osmfs_dev from inclusion in the osm_stack and reporting: convert_pool_all.sql * copy the pool to osmfs_dev from inclusion in the osm_stack and reporting: convert_pool_all.sql
* refresh osm_stack_refresh() to integrate into reporting * refresh osm_stack_refresh() to integrate into reporting
Integrate Actuals
------------------------------------------------------------------------------------------------------------------
* `merge_actuals_prep` -> push a fresh baseline into a temp table
* `merge_actuals_exec` -> take the baseline and push it into `osmf`
* `merge_actuals_exec` -> manualls splice in `osmf` into `pool`

View File

@ -1,5 +1,8 @@
$PG -f ./build_stage.sql $PG -f build_forecast.sql
$PG -f ./snap_itemm.sql $PG -f snap_itemm.sql
$PG -f ./snap_cost_current.sql $PG -f snap_cost_current.sql
$PG -f ./snap_customer.sql $PG -f snap_customer.sql
$PG -f ./build_pool.sql $PG -f snap_fx.sql
$PG -f build_pool.sql
$PG -f convert_pool_all.sql
$PG -c "CALL rlarp.osm_stack_refresh();"

View File

@ -50,13 +50,10 @@ UPDATE
rlarp.osm_pool o rlarp.osm_pool o
SET SET
quota_rep_descr = (regexp_match(r.repp,'.* - (.*)$'))[1] quota_rep_descr = (regexp_match(r.repp,'.* - (.*)$'))[1]
,director = r.director
FROM FROM
rlarp.repc r rlarp.repc r
WHERE WHERE
r.rcode = o.dsm r.rcode = o.dsm
AND ( AND quota_rep_descr <> (regexp_match(r.repp,'.* - (.*)$'))[1];
quota_rep_descr <> (regexp_match(r.repp,'.* - (.*)$'))[1]
OR o.director <> r.director
);
COMMIT; COMMIT;

View File

@ -39,7 +39,7 @@ SELECT DISTINCT
,CASE WHEN i.majg = '610' THEN 'Fiber' ELSE 'Plastic' END substance ,CASE WHEN i.majg = '610' THEN 'Fiber' ELSE 'Plastic' END substance
FROM FROM
rlarp.osm_pool o rlarp.osm_pool o
LEFT OUTER JOIN rlarp.itemmv i ON LEFT OUTER JOIN rlarp.itemm i ON
i.item = o.part i.item = o.part
LEFT OUTER JOIN seg ON LEFT OUTER JOIN seg ON
seg.glec = i.glec seg.glec = i.glec

View File

@ -5,7 +5,7 @@ SELECT
iter, iter,
sum(fb_val_loc) value_loc sum(fb_val_loc) value_loc
FROM FROM
rlarp.osmf_stage o rlarp.osmfs_dev o
GROUP BY GROUP BY
oseas, oseas,
to_char(CASE WHEN extract(month FROM o.odate) >= 6 THEN -5 ELSE 7 END + extract(month FROM o.odate),'FM00')||' - '||to_char(o.odate,'TMMon'), to_char(CASE WHEN extract(month FROM o.odate) >= 6 THEN -5 ELSE 7 END + extract(month FROM o.odate),'FM00')||' - '||to_char(o.odate,'TMMon'),

View File

@ -1,362 +0,0 @@
BEGIN;
WITH
targ AS (
SELECT
account
,segment
,targv::numeric targv
,targm::numeric targm
,targv::numeric - targm::numeric targc
FROM (VALUES
('THE HOME DEPOT','17000000','3074775','Retail'),
('L&L NURSERY SUPPLY INC','2350000','1323646','Retail'),
('WAL-MART','0','0','Retail'),
('FRED MEYER','2000000','856002','Retail'),
('AMAZON.COM','1640000','1030332','Retail'),
('BFG SUPPLY','1500000','836573','Retail'),
('MENARDS','1638401','608147','Retail'),
('ARETT SALES','1241808','664301','Retail'),
('VM INNOVATIONS-NE','1000000','550614','Retail'),
('CANADIAN TIRE CORP LTD','680606','47642','Retail'),
('CANADIAN TIRE CORP LTD','319394','160394','Sustainable'),
('ALLIANCE INTERNATIONAL LLC','500000','206602','Retail'),
('OCEAN STATE JOBBERS','300000','155878','Retail'),
('GRIFFIN','258240','118623','Retail'),
('DO IT BEST','297067','177889','Retail'),
('BWI','249061','117374','Retail'),
('BRADLEY CALDWELL INC','226211','134560','Retail'),
('PHILLIPS PET FOOD & SUPPLIES','194414','113853','Retail'),
('ACE HARDWARE','195043','128460','Retail'),
('EDDIS WHOLESALE GDN SUPPLIES','156305','76972','Retail'),
('GARD N WISE','154657','83291','Retail'),
('FOSTERS INC','154278','84043','Retail'),
('GARDEN CENTRE GROUP CO-OP','148400','79640','Retail'),
('TRUE VALUE','125272','66837','Retail'),
('RONA INC (PICK UP)ACE CANADA','125154','49123','Retail'),
('HB DAVIS SEED CO','103990','60800','Retail'),
('BOMGAARS SUPPLY INC. RETAIL','96550','55201','Retail'),
('CANAC MARQUIS GRENIER','84336','26284','Retail'),
('LOWES','82640','33445','Retail'),
('JENSEN DISTRIBUTION','79189','47567','Retail'),
('EARL MAY SEED','77321','45084','Retail'),
('INTERMOUNTAIN FARMERS ASSN','71161','25896','Retail'),
('PEAVEY INDUSTRIES LP RET','63755','38070','Retail'),
('SRC CORPORATION','62610','34107','Retail'),
('HORIZON DISTRIBUTION INC','52200','29953','Retail'),
('HALIFAX SEED CO INC','47859','23365','Retail'),
('JAVIC STEIN GARDEN CENTER RET','47332','29831','Retail'),
('TERIS SUPPLY SERVICES','46454','21876','Retail'),
('LITTLE MOUNTAIN GREENHOUSES','0','0','Retail'),
('WYATT QUARLES','45961','19806','Retail'),
('KROGER ACCOUNTING SERVICES','0','0','Retail'),
('AURORA WHOLESALERS, LLC','39005','1950','Retail'),
('CIMARRON LUMBER CO','41255','29321','Retail'),
('SKH WHOLESALE DIST','39498','22002','Retail'),
('GREENHOUSE MEGASTORE','38481','22165','Retail'),
('MEYER SEED CO.OF BALTIMORE INC','36907','21255','Retail'),
('GREEN ISLAND DISTRIBUTORS INC.','36335','16598','Retail'),
('ALASKA GDN & PET SUPPLY RET','34416','17673','Retail'),
('CY GROWERS SUPPLIES LTD','33516','17268','Retail'),
('PL ROHRER & BRO INC RET','32682','18721','Retail'),
('CISCO COMPANIES (THE)','31294','16958','Retail'),
('EXACTA SALES','29985','16997','Retail'),
('CARLIN HORTICULTURAL SUPP','29766','17926','Retail'),
('LEON KOROL COMPANY','27634','-20540','Retail'),
('FAMILY TREE NURSERY','26732','14253','Retail'),
('GREENHOUSE & GARDEN SUPPLY INC','28432','16180','Retail'),
('MIKES GARDEN CENTER','24804','8682','Retail'),
('HORTMARK','24148','14260','Retail'),
('FLORIDA HARDWARE COMPANY','22952','13416','Retail'),
('EARL''S FARM & GARDEN INC','20856','11680','Retail'),
('MIZE FARM & GARDEN SUPPLY','20317','11079','Retail'),
('HUMMERT INTERNATIONAL','19214','10602','Retail'),
('BAYERS GARDEN SHOP','18177','11247','Retail'),
('FEDERATED CO-OPERATIVES LTD','16347','9370','Retail'),
('VANDENBERG BULB CO INC','15895','8533','Retail'),
('RS GROWERS SUPPLY','15676','8691','Retail'),
('PLANTERS SEED & SPICE RET','15395','8520','Retail'),
('UNITED GARDEN CENTER','15303','8117','Retail'),
('NORTH 40 OUTFITTERS','13975','9093','Retail'),
('ERVA TOOL & DIE CO','13102','10114','Retail'),
('NITRO-PHOS FERTILIZERS','12772','7397','Retail'),
('OTTEN BROS','12390','6556','Retail'),
('GROSOUTH','12229','5783','Retail'),
('WAYFAIR LLC','10894','6861','Retail'),
('PRINCE CORPORATION','10627','6478','Retail'),
('BLISH-MIZE CO','10502','6181','Retail'),
('UNITED GARDEN CENTERS RET','10323','5880','Retail'),
('KC SCHAEFER SUPPLY','10176','5658','Retail'),
('LIFOAM INDUSTRIES LLC','9922','1437','Retail'),
('CARL BREHOB & SON','9909','4862','Retail'),
('GPF CORPORATION','8497','4907','Retail'),
('APACHE SEEDS LTD','7524','4823','Retail'),
('PRO GROWER SUPPLY','7160','4488','Retail'),
('ALTON GREENHOUSES','6282','4571','Retail'),
('VG SUPPLY CO INC','6170','3302','Retail'),
('PATRICK MORIN','5550','4185','Retail'),
('PROFESSIONAL GARDENER CO','5534','3780','Retail'),
('PREMIUM HORTICULTURAL SUPPLY','5260','2953','Retail'),
('SCHROTH WHOLESALE SUPPLY CO.','4886','2841','Retail'),
('WALDO & ASSOCIATES','4848','2662','Retail'),
('SERRES STE-ELIE','4554','2217','Retail'),
('JEAN H HENLE INC RET','4390','2596','Retail'),
('GOLDCREST DIST','4203','2652','Retail'),
('KEN VAN WINGERDEN GREENHOUSES','3934','2721','Retail'),
('PASTANCH LLC','3558','2300','Retail'),
('TESSMAN SEED','3490','1837','Retail'),
('GEMMELLS GARDEN CENTRE INC','3356','2459','Retail'),
('BELLE INVESTMENTS INC','2969','1901','Retail'),
('BLUE STAR WHOLESALE','2870','1321','Retail'),
('GLEN ECHO NURSERIES INC','2856','1358','Retail'),
('Distribution','2856','1000','Retail'),
('EZ GRO GARDEN','2770','970','Retail'),
('ENVIROGREENERY PLANTS LLC','2759','1546','Retail'),
('GERTENS GREENHOUSE','2669','934','Retail'),
('KROGER (KRG LLC)','2363','1074','Retail'),
('CINNABAR VALLEY','1873','1210','Retail'),
('EDWARDS GREENHOUSE INC','1842','1179','Retail'),
('DIRECT DISTRIBUTORS INC','1732','1140','Retail'),
('YODERS PRODUCE','1295','514','Retail'),
('ABC NURSERY LANDSCAPEMAIN','556','305','Retail'),
('DUNN SALES & MARKETING, INC.','385','197','Retail'),
('GARDENERS SUPPLY CO','375','263','Retail'),
('FARMERS COOP','355','135','Retail'),
('CROP PROD SERVICES INC','351','199','Retail'),
('ARNOLDS GREENHOUSES','309','249','Retail'),
('GEORGE''S FLOWERS','287','132','Retail'),
('HJS WHOLESALE LTD','162','117','Retail'),
('HOLMBERG FARMS INC','101','72','Retail'),
('KINNEY BONDED','93','49','Retail'),
('IRRIGATION PLUS INC','35','21','Retail'),
('GLENKIRK ASSOCIATES INC','0','0','Retail'),
('MILITARY PRODUCE GROUP LLC','0','0','Retail'),
('WONDER SOIL','0','0','Retail'),
('CHUCK BECK','0','0','Retail'),
('MENARDS INC STORE 3256 RET','0','0','Retail'),
('GREENSTAR PLANT-MANCHESTER','0','0','Retail'),
('MAIN LINE POTTERY','0','0','Retail'),
('PSR SALES INC','0','0','Retail'),
('CLEVELAND FLORAL PRODUCTS INC','0','0','Retail'),
('RACHEL BOWMAN','0','0','Retail'),
('ENG SVCS & PROD','0','0','Retail'),
('RITCHIE FEED & SEED','0','0','Retail'),
('PARK SEED (DBA JPPA)','0','0','Retail'),
('ART KNAPP','0','0','Retail'),
('VARIETY WHOLESALE (9001)','0','0','Retail'),
('ROY SIEMENS','0','0','Retail'),
('MARC DESROSIERS','0','0','Retail'),
('JIM REGER','0','0','Retail'),
('MARK WILKINSON','0','0','Retail'),
('SAN MARCOS GROWERS','0','0','Retail'),
('GRANBYS GREENHOUSE','0','0','Retail'),
('GIANT TIGERE STORES LIMITED','0','0','Retail'),
('INTEGRITY SALES & DISTRIBUTION','0','0','Retail'),
('GLOECKNER & CO. INC.','0','0','Retail'),
('DORAN MARABLE','0','0','Retail'),
('SEVEN OAKS PLANT SHOP INC','0','0','Retail'),
('BURPEE GARDEN PRODUCTS RET','0','0','Retail'),
('SHERRILL INC','0','0','Retail'),
('PARKWAY GARDENS','0','0','Retail'),
('GS DISTRIBUTION','0','0','Retail'),
('GALES GARDEN CENTER','0','0','Retail'),
('DAVE BODO','0','0','Retail'),
('FLOWERLAND GARDEN CTR OF CLEVE','0','0','Retail'),
('STACK-A-POTS','0','0','Retail'),
('BEAUTIFUL LAND PRODUCTS','0','0','Retail'),
('STRADERS','0','0','Retail'),
('WESTLAND GREENHOUSES','0','0','Retail'),
('SUNNYSIDE GREENHOUSES LTD. RET','0','0','Retail'),
('DM COLOR EXPRESS','0','0','Retail'),
('TERIS SVSC D''''APPROVISIONNEMNT','0','0','Retail'),
('YONAS GREENHOUSES','0','0','Retail'),
('FLORALIES JOUVENCE','0','0','Retail'),
('ALECIA LATINI','0','0','Retail'),
('AL PAR PEAT CO','0','0','Retail'),
('IVAN VANDERDEEN','0','0','Retail'),
('TIDBURY CREEK FARMS','0','0','Retail'),
('AGRO PRODUCTS LIMITED','0','0','Retail'),
('ALDI','0','0','Retail'),
('MISC ACCT - (US )','0','0','Retail'),
('TIMBERS MARKETING LLC','0','0','Retail'),
('ALLEN STERLING AND LOTHROP','0','0','Retail'),
('TINA PETTIGREW','0','0','Retail'),
('TONY LANDINO','0','0','Retail'),
('TRICIA PRICE','0','0','Retail'),
('PEAK DISTRIBUTION LLC','0','0','Retail'),
('DILLON SEED & SUPPLY','0','0','Retail'),
('MENARDS INC STORE 3510 RET','0','0','Retail'),
('PLANT BEST','0','0','Retail'),
('DENVER WHOLESALE FLORISTS CO','0','0','Retail'),
('TSC STORES LIMITED','0','0','Retail'),
('CENTRAL GARDEN & PET','0','0','Retail'),
('ESERRO','0','0','Retail'),
('AMA PLASTICS','0','0','Retail'),
('LITTLE MOUNTAIN GREENHOUSES U','0','0','Retail'),
('PATAPSCO VALLEY SALES','0','0','Retail'),
('UNITED HARDWARE','0','0','Retail'),
('COLOUR PARADISE GRHS LTD','0','0','Retail'),
('GARDEN RIDGE CORP','0','0','Retail'),
('VARIETY DISTRIBUTORS INC','0','0','Retail'),
('BLUE WATER BALTIMORE','0','0','Retail'),
('LEE VALLEY TOOLS','0','0','Retail')
) x(account,targv,targm,segment)
)
,factor AS (
SELECT
account
,segment
,targv
,targm
,targc
,sum(value_usd) value_usd
,sum(units) units
,sum(cost_usd) cost_usd
,round(CASE WHEN sum(value_usd) = 0 THEN 0 ELSE targv::numeric/sum(value_usd) END,5) vfactor
,round(CASE WHEN sum(cost_usd) = 0 THEN 0 ELSE targc::numeric/sum(cost_usd) END,5) cfactor
FROM
targ t
LEFT OUTER JOIN rlarp.osm_pool o ON
o.billto_group = t.account
AND o.segm = t.segment
AND o.order_season = 2022
GROUP BY
account
,segment
,targv
,targm
,targc
)
--SELECT * FROM agg_curr
----------------create a log entry--------------------
,log AS (
INSERT INTO
rlarp.osm_log(doc)
SELECT
$${
"message":"force accounts to match target total value and margin",
"tag":"retail plug",
"type":"build"
}$$::jsonb doc
RETURNING *
)
-------build adjustment rows collapsed for all iterations----------
,dv AS (
SELECT
o.fspr
,o.plnt ---master data
,o.promo --history date mix
,o.terms
,o.bill_cust_descr --history cust mix
,o.ship_cust_descr --history cust mix
,o.dsm
,o.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.shipto_group
,o.chan --master data
,o.chansub
,o.chan_retail
,o.part
,o.part_descr
,o.part_group
,o.branding
,o.majg_descr
,o.ming_descr
,o.majs_descr
,o.mins_descr
,o.segm
,o.substance
,o.fs_line --master data
,o.r_currency --history cust mix
,o.r_rate --master data
,o.c_currency --master data
,o.c_rate --master data
,round(sum(o.units*s.cfactor - o.units ),2) units
,round(sum(o.value_loc*s.vfactor - o.value_loc ),2) value_loc
,round(sum(o.value_usd*s.vfactor - o.value_usd ),2) value_usd
,round(sum(o.cost_loc*s.cfactor - o.cost_loc ),2) cost_loc
,round(sum(o.cost_usd*s.cfactor - o.cost_usd ),2) cost_usd
,o.calc_status --0
,o.flag --0
,o.order_date --history date mix
,o.order_month
,o.order_season
,o.request_date --history date mix
,o.request_month
,o.request_season
,o.ship_date --history date mix
,o.ship_month
,o.ship_season
,'b22' aS version
,'upload volume' iter
,log.id
,coalescE(log.doc->>'tag','') AS "tag"
,log.doc->>'message' AS "comment"
,log.doc->>'type' module
FROM
rlarp.osm_pool o
INNER JOIN factor s ON
s.account = o.billto_group
CROSS JOIN log
WHERE
o.order_season = 2022
AND o.segm = s.segment
GROUP BY
o.fspr
,o.plnt ---master data
,o.promo --history date mix
,o.terms
,o.bill_cust_descr --history cust mix
,o.ship_cust_descr --history cust mix
,o.dsm
,o.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.shipto_group
,o.chan --master data
,o.chansub
,o.chan_retail
,o.part
,o.part_descr
,o.part_group
,o.branding
,o.majg_descr
,o.ming_descr
,o.majs_descr
,o.mins_descr
,o.segm
,o.substance
,o.fs_line --master data
,o.r_currency --history cust mix
,o.r_rate --master data
,o.c_currency --master data
,o.c_rate --master data
,o.calc_status --0
,o.flag --0
,o.order_date --history date mix
,o.order_month
,o.order_season
,o.request_date --history date mix
,o.request_month
,o.request_season
,o.ship_date --history date mix
,o.ship_month
,o.ship_season
,log.id
,coalescE(log.doc->>'tag','')
,log.doc->>'message'
,log.doc->>'type'
)
INSERT INTO rlarp.osm_pool SELECT * FROM dv;
--SELECT
-- billto_group
-- ,sum(value_usd) val
-- ,sum(cost_usd) AS cost
-- ,sum(units) units
--FROM
-- dv
--GROUP BY
-- billto_group
COMMIT;

View File

@ -4,135 +4,74 @@ WITH
------------------goal price increases--------------------- ------------------goal price increases---------------------
incr AS ( incr AS (
SELECT * FROM (VALUES SELECT * FROM (VALUES
('110','PP','B',0.35), ('110','PP','B',0.25),
('110','PP','T',0.35), ('110','PP','T',0.25),
('110','PP','L',0.45), ('110','PP','L',0.4),
('110','PP','M',0.45), ('110','PP','M',0.4),
('110','PP','P',0.45), ('110','PP','P',0.4),
('110','PP','C',0.45), ('110','PP','C',0.4),
('210','PE','B',0.4), ('210','PE','B',0.25),
('210','PE','T',0.4), ('210','PE','T',0.25),
('210','PE','L',0.4), ('210','PE','L',0.25),
('210','PE','M',0.4), ('210','PE','M',0.25),
('210','PE','P',0.4), ('210','PE','P',0.25),
('210','PE','C',0.4), ('210','PE','C',0.25),
('310','PE','B',0.3), ('310','PE','B',0.15),
('310','PE','T',0.35), ('310','PE','T',0.25),
('310','PE','L',0.35), ('310','PE','L',0.25),
('310','PE','M',0.35), ('310','PE','M',0.25),
('310','PE','P',0.35), ('310','PE','P',0.25),
('310','PE','C',0.35), ('310','PE','C',0.25),
('310','PP','B',0.3), ('310','PP','B',0.13),
('310','PP','T',0.3), ('310','PP','T',0.16),
('310','PP','L',0.3), ('310','PP','L',0.16),
('310','PP','M',0.3), ('310','PP','M',0.16),
('310','PP','P',0.3), ('310','PP','P',0.16),
('310','PP','C',0.3), ('310','PP','C',0.16),
('310','PS','B',0.3), ('310','PS','B',0.13),
('310','PS','T',0.3), ('310','PS','T',0.16),
('310','PS','L',0.3), ('310','PS','L',0.16),
('310','PS','M',0.3), ('310','PS','M',0.16),
('310','PS','P',0.3), ('310','PS','P',0.16),
('310','PS','C',0.3), ('310','PS','C',0.16),
('320','PE','B',0.3), ('320','PE','B',0.25),
('320','PE','T',0.3), ('320','PE','T',0.25),
('320','PE','L',0.3), ('320','PE','L',0.25),
('320','PE','M',0.3), ('320','PE','M',0.25),
('320','PE','P',0.3), ('320','PE','P',0.25),
('320','PE','C',0.3), ('320','PE','C',0.25),
('320','PP','B',0.3), ('320','PP','B',0.25),
('320','PP','T',0.3), ('320','PP','T',0.25),
('320','PP','L',0.3), ('320','PP','L',0.25),
('320','PP','M',0.3), ('320','PP','M',0.25),
('320','PP','P',0.3), ('320','PP','P',0.25),
('320','PP','C',0.3), ('320','PP','C',0.25),
('910','PE','B',0.25), ('910','PE','B',0.15),
('910','PE','D',0.25), ('910','PE','D',0.25),
('910','PE','F',0.25), ('910','PE','F',0.25),
('910','PP','B',0.25), ('910','PP','B',0.15),
('910','PP','D',0.25), ('910','PP','D',0.25),
('910','PP','F',0.25), ('910','PP','F',0.25),
('910','PS','B',0.25), ('910','PS','B',0.15),
('910','PS','D',0.25), ('910','','B',0.15),
('910','PS','F',0.25), ('910','','D',0.25),
('910','','B',0.25), ('910','','F',0.25),
('910','','T',0.25), ('910','','T',0.25),
('910','','L',0.25), ('910','','L',0.25),
('910','','M',0.25), ('910','','M',0.25),
('910','','P',0.25), ('910','','P',0.25),
('910','','D',0.25),
('910','','F',0.25),
('910','','C',0.25), ('910','','C',0.25),
('910','PS','D',0.25),
('910','PS','F',0.25),
('610','','B',0.02), ('610','','B',0.02),
('610','','S',0.02), ('610','','S',0.02),
('610','','W',0.02) ('610','','W',0.02)
) x(MAJG,ASSC,COLTIER,RATE) ) x(MAJG,ASSC,COLTIER,RATE)
) )
,chx AS (
SELECT * FROM ( VALUES
('DIRECT','DIR','Direct'),
('DISTRIB DROP SHIP','DRP','Drop'),
('DISTRIBUTOR','WHS','Warehouse')
) x(xchan, chan, tchan)
)
,ds AS (
SELECT * FROM ( VALUES
('B','X','BASE','Base',''),
('B','L','BASE LABELED','Base','L'),
('B','P','BASE PRINTED','Base','P'),
('C','X','COLOR','Color',''),
('C','L','COLOR LABELED','Color','L'),
('C','P','COLOR PRINTED','Color','P')
) x(colgrp, brand, dataseg, tcol, tbrand)
)
---customer dba assigned price levels---------
,dbap AS (
SELECT
dba
,jsonb_agg(DISTINCT plevel) plev
,jsonb_agg(DISTINCT plcd) plist
FROM
rlarp.cust c
INNER JOIN rlarp.sachdef sd ON
sd.plev = c.plevel
AND '2020-05-31' between sd.fdate AND sd.tdate
WHERE
pricing <> ''
AND dba <> ''
GROUP BY
dba
)
----customer dba price list pricing------
,plist AS (
SELECT
dbap.dba
,dbap.plev
,dbap.plist
,jcplcd
,jcpart
,jcunit
--,jcvoll
-----just use the lowest volume price for the part-----
,min(jcpric) jcpric
FROM
dbap
INNER JOIN lgdat.iprcc cc ON
dbap.plist ? cc.jcplcd
WHERE
jcunit = 'M'
GROUP BY
dbap.dba
,dbap.plev
,dbap.plist
,jcplcd
,jcpart
,jcunit
)
------------carve out pricing baseline data-------------------- ------------carve out pricing baseline data--------------------
,p AS ( ,p AS (
SELECT SELECT
o.part o.part
,o.styc||'.'||o.coltier||substring(o.sizc,1,3) productt
,o.styc||'.'||o.colgrp||substring(o.sizc,1,3) product ,o.styc||'.'||o.colgrp||substring(o.sizc,1,3) product
,o.glec ,o.glec
,o.styc ,o.styc
@ -143,7 +82,6 @@ incr AS (
,o.sizc ,o.sizc
,i.suffix ,i.suffix
,substring(o.chan,1,1) chgrp ,substring(o.chan,1,1) chgrp
,o.chan
,o.account ,o.account
,o.shipgrp ,o.shipgrp
,o.fb_qty units ,o.fb_qty units
@ -189,7 +127,7 @@ incr AS (
,o.shipgrp ,o.shipgrp
,o.odate DESC ,o.odate DESC
) )
--SELECT * FROM p WHERE account ~ 'AMA P' and product = 'AMK06000.CBXX' order by rn ASC --SELECT * FROM p WHERE account ~ 'ACOSTA'
------------build global py asp------------------ ------------build global py asp------------------
,baseline AS ( ,baseline AS (
SELECT SELECT
@ -198,7 +136,6 @@ incr AS (
,assc ,assc
,chgrp ,chgrp
,round(sum(val_usd) FILTER (WHERE oseas = 2020)/sum(units) FILTER (WHERE oseas = 2020),5) py_gasp ,round(sum(val_usd) FILTER (WHERE oseas = 2020)/sum(units) FILTER (WHERE oseas = 2020),5) py_gasp
,round(sum(val_usd) FILTER (WHERE oseas = 2021)/sum(units) FILTER (WHERE oseas = 2021),5) cy_gasp
FROM FROM
p p
GROUP BY GROUP BY
@ -207,68 +144,24 @@ incr AS (
,assc ,assc
,chgrp ,chgrp
) )
--SELECT * FROM baseline WHERE product = 'AMK06000.CBXX'
----------calculate pricing as it sits in the forecast--------------
,poolprice AS (
SELECT
i.stlc||'.'||i.coltier||substring(i.sizc,1,3) productt
,i.stlc||'.'||i.colgrp||substring(i.sizc,1,3) product
,o.quota_rep_descr
,substring(majg,1,3) majg
,substring(chan,1,1) chgrp
,o.billto_group
,o.shipto_group
,order_season
,round(sum(units) ,2) fc_units
--,round(sum(value_loc) ,2) valloc
--,round(sum(value_usd) ,2) valusd
,round(sum(o.value_loc)/sum(o.units),5) fc_price
,jsonb_agg(DISTINCT iter) iters
FROM
rlarp.osm_pool o
,rlarp.itemmv i
WHERE
i.item = o.part
--AND o.units <> 0
---only apply to 2022 orders----
AND o.order_date >= '2021-06-01'
--only include baseline stuff---
AND segm <> 'Retail'
GROUP BY
i.stlc||'.'||i.coltier||substring(i.sizc,1,3)
,i.stlc||'.'||i.colgrp||substring(i.sizc,1,3)
,o.quota_rep_descr
,substring(majg,1,3)
,substring(chan,1,1)
,o.billto_group
,o.shipto_group
,order_season
--AND iter <> 'upload price'
HAVING
sum(o.units) <> 0
)
----------pivot the pricing out into columns per customer/product-------- ----------pivot the pricing out into columns per customer/product--------
,pivot AS ( ,pivot AS (
SELECT SELECT
p.productt p.product
,p.product ,p.styc
--,p.styc ,p.glec
--,p.glec
,p.majg ,p.majg
,p.assc ,p.assc
,p.colgrp ,p.colgrp
--,p.coltier ,p.coltier
--,p.sizc ,p.sizc
--,p.suffix ,p.suffix
,p.chgrp ,p.chgrp
,p.account ,p.account
,p.shipgrp ,p.shipgrp
,bl.py_gasp ,bl.py_gasp
,jsonb_agg(DISTINCT part) item
,sum(units) FILTER (WHERE oseas = 2020) py_units
,sum(units) FILTER (WHERE oseas = 2021) cy_units ,sum(units) FILTER (WHERE oseas = 2021) cy_units
,round(sum(val_usd) FILTER (WHERE oseas = 2020)/sum(units) FILTER (WHERE oseas = 2020),5) py_asp ,round(sum(val_usd) FILTER (WHERE oseas = 2020)/sum(units) FILTER (WHERE oseas = 2020),5) py_asp
,round(sum(val_usd) FILTER (WHERE oseas = 2021)/sum(units) FILTER (WHERE oseas = 2021),5) cy_asp
,round(avg(price) FILTER (WHERE rn = 1),5) last_price ,round(avg(price) FILTER (WHERE rn = 1),5) last_price
,max(odate) FILTER (WHERE rn = 1) last_order ,max(odate) FILTER (WHERE rn = 1) last_order
,CASE p.chgrp ,CASE p.chgrp
@ -276,25 +169,22 @@ SELECT
ELSE CASE p.majg ELSE CASE p.majg
WHEN '610' THEN .02 WHEN '610' THEN .02
ElSE CASE p.colgrp ElSE CASE p.colgrp
WHEN 'B' THEN .20 WHEN 'B' THEN .1
WHEN 'C' THEN .25 WHEN 'C' THEN .15
ELSE 1 ELSE 1
END END
END END
END rate END rate
,ms.avg_price target ,CASE WHEN sum(val_usd) FILTER (WHERE oseas = 2020) IS NULL
----------------potential price list increase of 5% across board----- THEN CASE WHEN sum(units) FILTER (WHERE oseas = 2021) IS NULL
,JSONB_AGG(DISTINCT (plist.jcpric*1.05)/1000) jcprice THEN 'unknown'
--,CASE WHEN sum(val_usd) FILTER (WHERE oseas = 2020) IS NULL ELSE 'new'
-- THEN CASE WHEN sum(units) FILTER (WHERE oseas = 2021) IS NULL END
-- THEN 'unknown' ELSE CASE WHEN sum(units) FILTER (WHERE oseas = 2021) IS NULL
-- ELSE 'new' THEN 'lost'
-- END ELSE 'repeat'
-- ELSE CASE WHEN sum(units) FILTER (WHERE oseas = 2021) IS NULL END
-- THEN 'lost' END flag
-- ELSE 'repeat'
-- END
--END flag
FROM FROM
p p
LEFT OUTER JOIN baseline bl ON LEFT OUTER JOIN baseline bl ON
@ -307,282 +197,210 @@ FROM
AND i.assc = p.assc AND i.assc = p.assc
AND i.coltier = p.coltier AND i.coltier = p.coltier
AND p.glec <> '1RE' AND p.glec <> '1RE'
-----convert to target price channels---------
LEFT OUTER JOIN chx ON
chx.chan = p.chan
-----convert to target price product level----
LEFT OUTER JOIN ds ON
ds.colgrp = p.colgrp
AND ds.brand = substring(p.sizc,3,1)
LEFT OUTER JOIN pricequote.market_setavgprice ms ON
ms.mold = substring(p.product,1,8)
AND ms.chan = chx.xchan
AND ms.data_segment = ds.dataseg
AND ms.season = '2021'
AND ms.region = 'ALL'
LEFT OUTER JOIN plist ON
plist.dba = p.account
AND plist.jcpart = p.part
GROUP BY GROUP BY
p.productt p.product
,p.product ,p.styc
--,p.styc ,p.glec
--,p.glec
,p.majg ,p.majg
,p.assc ,p.assc
--,p.coltier ,p.coltier
,p.colgrp ,p.colgrp
--,p.sizc ,p.sizc
--,p.suffix ,p.suffix
,p.chgrp ,p.chgrp
,p.account ,p.account
,p.shipgrp ,p.shipgrp
,bl.py_gasp ,bl.py_gasp
,ms.avg_price
,i.rate ,i.rate
) )
--,test_unique AS ( ----------------create the new price-----------------
--SELECT ,adj AS (
-- p.* SELECT
-- ,count(*) OVER (partition by productt, majg, chgrp, account, shipgrp) cnt p.product
--FROM ,p.styc
-- pivot p ,p.glec
--) ,p.majg
--SELECT * FROM test_unique where cnt > 1 ,p.assc
----------------create a log entry-------------------- ,p.coltier
,p.sizc
,p.suffix
,p.account
,p.shipgrp
,p.py_gasp
,p.cy_units
,p.py_asp
,p.last_price
,p.last_order
,p.rate
,p.flag
,CASE p.flag
----------------------if repeat business then get to prior year + target %--------------------------------------------------------------
WHEN 'repeat' THEN greatest(py_asp * COALESCE(1+rate,1) - last_price,0)
WHEN 'lost' THEN greatest(py_asp * COALESCE(1+rate,1) - last_price,0)
----------------------if new business, move towards py_gasp + target % : lesser of py gloabl + target or last + target------------------
WHEN 'new' THEN least(last_price * COALESCE(1+rate,1) - last_price,greatest(py_gasp * COALESCE(1+rate,1) - last_price,0))
END price_increment
FROM
pivot p
)
--SELECT * FROM adj LIMIT 10000
--------------create a log entry--------------------
,log AS ( ,log AS (
INSERT INTO INSERT INTO
rlarp.osm_log(doc) rlarp.osm_log(doc)
SELECT SELECT
$${ $${
"message":"application of last price and target increases to all forecast orders", "message":"application of last price and target increases to all forecast orders",
"tag":"last price r1", "tag":"last price",
"type":"build" "type":"build"
}$$::jsonb doc }$$::jsonb doc
RETURNING * RETURNING *
) )
---------collapse iterations----------------------- ,poolprice AS (
,collapse AS (
SELECT SELECT
o.fspr i.stlc||'.'||i.colgrp||substring(i.sizc,1,3) product
,o.plnt ---master data ,o.quota_rep_descr
,o.promo --history date mix ,o.billto_group
,o.terms
,o.bill_cust_descr --history cust mix
,o.ship_cust_descr --history cust mix
,o.dsm
,o.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.shipto_group ,o.shipto_group
,o.chan --master data ,order_season
,o.chansub ,sum(units) units
,o.chan_retail ,sum(value_loc) valloc
,o.part ,sum(value_usd) valusd
,o.part_descr ,sum(o.value_loc)/sum(o.units) price
,i.stlc||'.'||i.coltier||substring(i.sizc,1,3) productt ,jsonb_agg(DISTINCT iter) iters
,o.part_group
,o.branding
,o.majg_descr
,o.ming_descr
,o.majs_descr
,o.mins_descr
,o.segm
,o.substance
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,SUM(o.units) units
,SUM(o.value_loc) value_loc
,SUM(o.value_usd) value_usd
-----exclude any prior pricing adjustments from the "current" price in the forecast------
,SUM(o.value_loc) FILTER (WHERE iter <> 'upload price')/SUM(o.units) FILTER (WHERE iter <> 'upload price') price_loc
,SUM(o.cost_loc) cost_loc
,SUM(o.cost_usd) cost_usd
,o.calc_status --0
,o.flag --0
,o.order_date --history date mix
,o.order_month
,o.order_season
,o.request_date --history date mix
,o.request_month
,o.request_season
,o.ship_date --history date mix
,o.ship_month
,o.ship_season
FROM FROM
rlarp.osm_pool o rlarp.osm_pool o
--need to join to itemm to get the product from osm_pool
,rlarp.itemmv i ,rlarp.itemmv i
WHERE WHERE
i.item = o.part i.item = o.part
GROUP BY --AND o.units <> 0
o.fspr
,o.plnt ---master data
,o.promo --history date mix
,o.terms
,o.bill_cust_descr --history cust mix
,o.ship_cust_descr --history cust mix
,o.dsm
,o.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.shipto_group
,o.chan --master data
,o.chansub
,o.chan_retail
,o.part
,o.part_descr
,i.stlc||'.'||i.coltier||substring(i.sizc,1,3)
,o.part_group
,o.branding
,o.majg_descr
,o.ming_descr
,o.majs_descr
,o.mins_descr
,o.segm
,o.substance
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,o.calc_status --0
,o.flag --0
,o.order_date --history date mix
,o.order_month
,o.order_season
,o.request_date --history date mix
,o.request_month
,o.request_season
,o.ship_date --history date mix
,o.ship_month
,o.ship_season
HAVING
sum(o.units) <> 0
)
-------------build the iteration rows----------------
,ins AS (
SELECT
o.fspr
,o.plnt ---master data
,o.promo --history date mix
,o.terms
,o.bill_cust_descr --history cust mix
,o.ship_cust_descr --history cust mix
,o.dsm
,o.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.shipto_group
,o.chan --master data
,o.chansub
,o.chan_retail
,o.part
,o.part_descr
,o.part_group
,o.branding
,o.majg_descr
,o.ming_descr
,o.majs_descr
,o.mins_descr
,o.segm
,o.substance
,o.fs_line --master data
,o.r_currency --history cust mix
,o.r_rate --master data
,o.c_currency --master data
,o.c_rate --master data
--,o.units
,0::numeric units
,greatest(
round(least(
----cap pricing at global ASP or target---
least(
COALESCE(a.py_asp,o.price_loc),
COALESCE(a.py_gasp,a.target)
) * (1 + a.rate),
(a.jcprice->>0)::numeric
)*o.units - o.value_loc,2)
,0) AS value_loc
,greatest(
round((least(
least(
-----price loc needs to be prior to any other pricing adjustments-----
COALESCE(a.py_asp,o.price_loc),
COALESCE(a.py_gasp,a.target)
) * (1 + a.rate),
(a.jcprice->>0)::numeric
)*o.units - o.value_loc) * r_rate,2)
,0) AS value_usd
----debug---
--,least(
-- least(
-- COALESCE(a.py_asp,o.price_loc),
-- COALESCE(a.py_gasp,a.target)
-- ) * (1 + a.rate),
-- (a.jcprice->>0)::numeric
--) AS rev_price
--,o.units
--,o.value_loc
--,o.value_usd
--,o.price_loc
--,a.last_price
--,a.target
--,a.jcprice
--,a.rate
--,a.py_asp
--,a.py_gasp
-----------
,0::numeric cost_loc
,0::numeric cost_usd
,o.calc_status --0
,o.flag --0
,o.order_date --history date mix
,o.order_month
,o.order_season
,o.request_date --history date mix
,o.request_month
,o.request_season
,o.ship_date --history date mix
,o.ship_month
,o.ship_season
--,o.version
---this iteration has to be listed in the master template file in order to be effectively included---
,'b22' AS version
,'upload price' iter
,log.id
,COALESCE(log.doc->>'tag','') "tag"
,log.doc->>'message' "comment"
,log.doc->>'type' module
FROM
collapse o
--need to join to itemm to get the product from osm_pool
--,fcp a
,pivot a
,log
WHERE
-- a.productt = o.productt
--AND a.quota_rep_descr = o.quota_rep_descr
--AND a.majg = SUBSTRING(o.majg_descr,1,3)
--AND a.billto_group = o.billto_group
--AND a.shipto_group = o.shipto_group
--AND a.chgrp = substring(o.chan,1,1)
---only apply to 2022 orders---- ---only apply to 2022 orders----
---join p
a.productt = o.productt
AND a.majg = SUBSTRING(o.majg_descr,1,3)
AND a.chgrp = substring(o.chan,1,1)
AND a.account = o.billto_group
AND a.shipgrp = o.shipto_group
AND o.order_date >= '2021-06-01' AND o.order_date >= '2021-06-01'
AND o.segm <> 'Retail' --only include baseline stuff---
AND segm <> 'Retail'
GROUP BY
i.stlc||'.'||i.colgrp||substring(i.sizc,1,3)
,o.quota_rep_descr
,o.billto_group
,o.shipto_group
,order_season
--AND iter <> 'upload price'
) )
--SELECT order_season, order_month, sum(value_usd) from ins group by order_season, order_month; , pooladj AS (
INSERT INTO rlarp.osm_pool SELECT * FROM ins; SELECT
--SELECT * FROM ins WHERE shipto_group = 'A&W ANNUALS' and part = 'TWA10200G18B027'; p.product
-----------aggregate the impact------------ ,p.quota_rep_descr
,p.billto_group
,p.shipto_group
,p.price
,a.py_gasp
,a.rate
,a.last_price
,a.price_increment
FROM
poolprice p
,adj a
WHERE
a.product = p.product
AND a.account = p.billto_group
AND a.shipgrp = p.shipto_group
)
SELECT * FROM pooladj WHERE product ~ 'STG06000' AND shipto_group = 'BWI' limit 100
--SELECT * FROM poolprice WHERE product ~ 'TCA06600' AND shipto_group = 'BWI' AND quota_rep_descr = 'BRYAN HILL' LIMIT 1000
-------------build the iteration rows----------------
--,ins AS (
--SELECT
-- o.fspr
-- ,o.plnt ---master data
-- ,o.promo --history date mix
-- ,o.terms
-- ,o.bill_cust_descr --history cust mix
-- ,o.ship_cust_descr --history cust mix
-- ,o.dsm
-- ,o.quota_rep_descr --master data
-- ,o.director
-- ,o.billto_group --master data
-- ,o.shipto_group
-- ,o.chan --master data
-- ,o.chansub
-- ,o.chan_retail
-- ,o.part
-- ,o.part_descr
-- ,o.part_group
-- ,o.branding
-- ,o.majg_descr
-- ,o.ming_descr
-- ,o.majs_descr
-- ,o.mins_descr
-- ,o.segm
-- ,o.substance
-- ,o.fs_line --master data
-- ,o.r_currency --history cust mix
-- ,o.r_rate --master data
-- ,o.c_currency --master data
-- ,o.c_rate --master data
-- ,0::numeric units
-- ,ROUND(o.units * (a.price_increment/o.r_rate),2) value_loc
-- ,ROUND(o.units * a.price_increment,2) value_usd
-- ,0::numeric cost_loc
-- ,0::numeric cost_usd
-- ,o.calc_status --0
-- ,o.flag --0
-- ,o.order_date --history date mix
-- ,o.order_month
-- ,o.order_season
-- ,o.request_date --history date mix
-- ,o.request_month
-- ,o.request_season
-- ,o.ship_date --history date mix
-- ,o.ship_month
-- ,o.ship_season
-- ,o.version
-- ---this iteration has to be listed in the master template file in order to be effectively included---
-- ,'upload price' iter
-- ,log.id
-- ,COALESCE(log.doc->>'tag','') "tag"
-- ,log.doc->>'message' "comment"
-- ,log.doc->>'type' module
-- -----------debug columns---------
-- --,value_usd/units price
-- --,a.py_gasp
-- --,a.rate
-- --,a.last_price
-- --,a.price_increment
--FROM
-- rlarp.osm_pool o
-- ,rlarp.itemmv i
-- ,adj a
-- ,log
--WHERE
-- i.item = o.part
-- AND a.product = i.stlc||'.'||i.colgrp||substring(i.sizc,1,3)
-- AND a.account = o.billto_group
-- AND a.shipgrp = o.shipto_group
-- AND a.price_increment <> 0
-- AND o.units <> 0
-- ---only apply to 2022 orders----
-- AND o.order_date >= '2021-06-01'
-- --only include baseline stuff---
-- AND iter <> 'upload price'
--)
-------------aggregate the impact------------
----SELECT * FROM ins limit 10000
----SELECT
---- order_season
---- ,sum(value_loc) val_loc
---- ,sum(value_usd) val_usd
----FROM
---- ins
----GROUP BY
---- order_season;
--,del AS (
-- DELETE FROM rlarp.osm_pool WHERE iter = 'upload price' RETURNING *
--)
--INSERT INTO
-- rlarp.osm_pool
--SELECT * FROM ins;
--
--COMMIT; --COMMIT;