Compare commits

..

18 Commits

Author SHA1 Message Date
PhilRunninger
8809cb9ad4 Added PrintJSON function for debugging the JSON object variables. 2023-03-03 14:16:59 -05:00
PhilRunninger
bd8aa18208 Merge branch 'dev' of github.com:The-HC-Companies/forecast_api into dev 2023-03-01 18:00:18 -05:00
PhilRunninger
bfcf8ff4b4 Keeping the workbook in sync with other code. 2023-03-01 17:56:36 -05:00
PhilRunninger
ed5975daf7 Switch source table from rlarp.itemmv to "CMS.CUSLG".itemm 2023-03-01 17:55:30 -05:00
PhilRunninger
59cb926d9c Make the log statements unique for each route. 2023-03-01 17:51:01 -05:00
5dc5a11489 increment year 2023-03-01 17:07:44 -05:00
fd4079cb17 clean up 2023-03-01 16:32:52 -05:00
e5db7372a1 repoint snaps 2023-03-01 16:07:36 -05:00
7d901e7f42 new forecast baseline dates 2023-03-01 16:01:32 -05:00
PhilRunninger
bc9aa4a456 Merge branch 'new_parser' into dev 2023-02-28 15:10:21 -05:00
PhilRunninger
3b72871cc6 Renamed the pivot tables, and simplified some code.
I made the "did I double click in the pivot table?" code work more
efficiently.
2023-02-28 15:05:54 -05:00
PhilRunninger
8ba18476d8 Include new JSON parser for evaluation. Is it better? 2023-02-27 16:26:12 -05:00
PhilRunninger
5b507d3d65 Updates to the newest season in scenario_package.sql 2023-02-27 16:15:35 -05:00
68aa1c219a updates 2023-02-24 19:28:14 -05:00
PhilRunninger
21e72a42cc Update the Excel workbook to the latest version from Teams. 2023-02-22 14:24:39 -05:00
PhilRunninger
70392a6829 Renamed the Excel file. 2023-02-22 14:23:59 -05:00
PhilRunninger
d7d2447be2 Merge branch 'dev' of github.com:The-HC-Companies/forecast_api into dev 2023-02-17 14:24:00 -05:00
PhilRunninger
e1359714cc Upgrade packages for use in node version 19.5.0. 2023-02-17 14:22:05 -05:00
19 changed files with 918 additions and 528 deletions

Binary file not shown.

BIN
Master Template.xlsm Normal file

Binary file not shown.

View File

@ -6,8 +6,8 @@ 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
DATERANGE('2022-06-01','2023-06-01','[)') drange
,DATERANGE(('2022-06-01'::date + '1 year'::interval)::date,('2023-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
);

View File

@ -1,9 +1,11 @@
-- Connection: usmidsap01.ubm
--\timing
truncate table rlarp.osmf_dev;
TRUNCATE TABLE rlarp.osmf;
INSERT INTO rlarp.osmf
WITH
gld AS (
SELECT
SELECT
N1COMP COMP
,N1CCYY FSYR
,KPMAXP PERDS
@ -12,13 +14,13 @@ gld AS (
,N1SD01 SDAT
,N1ED01 EDAT
,to_char(N1ED01,'yymm') CAPR
,N1ED01 - N1SD01 +1 NDAYS
,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
FROM
LGDAT.GLDATREF
INNER JOIN LGDAT.GLDATE ON
KPCOMP = N1COMP AND
KPCCYY = N1CCYY
WHERE
N1COMP = 93
@ -90,8 +92,9 @@ gld AS (
,null::text coltier
,null::text colstat
,null::text sizc
,null::text pckg
,null::text kit
,null::text uomp
,null::text suffix
,null::text accs_ps
,null::text brnd
,null::text majg
,null::text ming
@ -129,13 +132,15 @@ gld AS (
,o.oseas
,o.rdate
,o.rseas
,o.pdate
,o.pseas
-----when null, greatest/least is just going to act like coalesce
,greatest(least(o.sdate,gld.edat),gld.sdat) sdate
,ss.ssyr sseas
,'15mo' "version"
,'actuals' iter
FROM
rlarp.osm_dev o
rlarp.osm o
--snap the ship dates of the historic fiscal period
LEFT OUTER JOIN gld ON
gld.fspr = o.fspr
@ -145,11 +150,11 @@ gld AS (
WHERE
(
--base period orders booked....
o.odate BETWEEN '2020-06-01' AND '2021-04-11'
o.odate BETWEEN '2022-06-01' AND '2023-03-01'
--...or any open orders currently booked before cutoff....
OR (o.calc_status IN ('OPEN','BACKORDER') and o.odate < '2021-04-11')
OR (o.calc_status IN ('OPEN','BACKORDER') and o.odate < '2023-03-01')
--...or anything that shipped in that period
OR o.fspr BETWEEN '2101' AND '2110'
OR ((o.fspr BETWEEN '2301' AND '2309' OR o.fspr = '0000') AND o.sdate < '2023-03-01')
)
AND fs_line = '41010'
AND calc_status <> 'CANCELED'
@ -176,6 +181,8 @@ gld AS (
,o.oseas
,o.rdate
,o.rseas
,o.pdate
,o.pseas
,greatest(least(o.sdate,gld.edat),gld.sdat)
,ss.ssyr
UNION ALL
@ -243,8 +250,9 @@ gld AS (
,null::text coltier
,null::text colstat
,null::text sizc
,null::text pckg
,null::text kit
,null::text uomp
,null::text suffix
,null::text accs_ps
,null::text brnd
,null::text majg
,null::text ming
@ -279,22 +287,24 @@ gld AS (
,o.calc_status
,o.flag
,o.odate + interval '1 year' odate
,o.oseas + 1 rseas
,o.oseas + 1 rseas
,o.rdate + interval '1 year' rdate
,o.rseas + 1 rseas
,o.pdate + interval '1 year' pdate
,o.pseas + 1 pseas
-----when null, greatest/least is just going to act like coalesce
,greatest(least(o.sdate,gld.edat),gld.sdat) + interval '1 year' sdate
,ss.ssyr sseas
,'actuals' "version"
,'actuals_plug' iter
FROM
rlarp.osm_dev o
rlarp.osm o
LEFT OUTER JOIN gld ON
gld.fspr = o.fspr
LEFT OUTER JOIN gld ss ON
greatest(least(o.sdate,gld.edat),gld.sdat) + interval '1 year' BETWEEN ss.sdat AND ss.edat
WHERE
o.odate BETWEEN '2020-04-12' AND '2020-05-31'
o.odate BETWEEN '2022-03-01' AND '2022-05-31'
AND fs_line = '41010'
AND calc_status <> 'CANCELED'
------exclude actuals for now and use forecast to get the plug for the rest of the year
@ -319,6 +329,8 @@ gld AS (
,o.oseas
,o.rdate
,o.rseas
,o.pdate
,o.pseas
,greatest(least(o.sdate,gld.edat),gld.sdat)
,ss.ssyr
UNION ALL
@ -386,8 +398,9 @@ gld AS (
,null::text coltier
,null::text colstat
,null::text sizc
,null::text pckg
,null::text kit
,null::text uomp
,null::text suffix
,null::text accs_ps
,null::text brnd
,null::text majg
,null::text ming
@ -422,16 +435,18 @@ gld AS (
,o.calc_status
,o.flag
,o.odate odate
,o.oseas rseas
,o.oseas rseas
,o.rdate rdate
,o.rseas rseas
,o.pdate pdate
,o.pseas pseas
-----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"
,'forecast_plug' iter
FROM
rlarp.osmp_dev o
rlarp.osmp o
LEFT OUTER JOIN gld ON
gld.fspr = o.fspr
LEFT OUTER JOIN gld ss ON
@ -459,11 +474,13 @@ gld AS (
,o.oseas
,o.rdate
,o.rseas
,o.pdate
,o.pseas
,greatest(least(o.sdate,gld.edat),gld.sdat)
,ss.ssyr
)
,incr AS (
SELECT
SELECT
o."ddord#"
,o."dditm#"
,o."fgbol#"
@ -524,8 +541,9 @@ SELECT
,o.coltier
,o.colstat
,o.sizc
,o.pckg
,o.kit
,o.uomp
,o.suffix
,o.accs_ps
,o.brnd
,o.majg
,o.ming
@ -563,21 +581,142 @@ SELECT
,o.oseas + 1 --incremented
,o.rdate + interval '1 year' --incremented
,o.rseas + 1 --incremented
,o.pdate + interval '1 year' --incremented
,o.pseas + 1 --incremented
,o.sdate + interval '1 year' --incremented
,o.sseas + 1 --incremented
,'b22' "version"
,'b23' "version"
,'copy' iter
FROM
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' >= '2021-06-01'
o.odate + interval '1 year' >= '2023-06-01'
)
INSERT INTO rlarp.osmf_dev
SELECT * FROM incr
UNION ALL
SELECT * FROM baseline;
--INSERT INTO rlarp.osmf
SELECT
-----------documents-------------
"ddord#"
,"dditm#"
,"fgbol#"
,"fgent#"
,"diinv#"
,"dilin#"
,quoten
,quotel
----------dates/status------------------
,dcodat
,ddqdat
,dcmdat
,fesdat
,dhidat
------------document flags-------------------
,fesind
,dhpost
,fspr
-----------measures--------------------
,ddqtoi
,ddqtsi
,fgqshp
,diqtsh
,diext
,ditdis
,discj
------------document attributes--------------
,dhincr
,plnt
,promo
,return_reas
,terms
,custpo
,remit_to
------------customer info---------------------
,bill_class
,bill_cust
,bill_rep
,bill_terr
,ship_class
,ship_cust
,ship_rep
,ship_terr
,dsm
,account
,shipgrp
,geo
,chan
,chansub
,orig_ctry
,orig_prov
,orig_post
,bill_ctry
,bill_prov
,bill_post
,dest_ctry
,dest_prov
,dest_post
------------product info----------------------
,part
,styc
,colc
,colgrp
,coltier
,colstat
,sizc
,uomp
,suffix
,accs_ps
,brnd
,majg
,ming
,majs
,mins
,gldco
,gldc
,glec
,harm
,clss
,brand
,assc
,ddunit
,unti
,lbs
,plt
------------fiscal info-----------------------
,plcd
,fs_line
,r_currency
,r_rate
,c_currency
,c_rate
,fb_qty
,fb_val_loc
,fb_val_loc_dis
,fb_val_loc_qt
,fb_val_loc_pl
,fb_val_loc_tar
,fb_cst_loc
,fb_cst_loc_cur
,fb_cst_loc_fut
------------status info-----------------------
,calc_status
,flag
,odate
,oseas
,rdate
,rseas
,pdate
,pseas
,sdate
,sseas
,"version"
,iter
FROM
(
SELECT * FROM baseline
UNION ALL
SELECT * FROM incr
) x;
---identify short ships: causes disconnect with actual sales-------------------------------------------------------------------
--UPDATE rlarp.osmfs SET iter = 'short ship' WHERE calc_status = 'CLOSED' AND flag = 'REMAINDER';

View File

@ -59,7 +59,7 @@ repc AS (
)
--select * from si
,logload AS (
INSERT INTO rlarp.osm_log (doc) SELECT jsonb_build_object('user',current_user,'tag','1+11','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','baseline','type','build_pool','stamp',current_timestamp,'source','top level','message','don''t undo') RETURNING *
)
--select * from logload
,loadset AS (
@ -156,7 +156,7 @@ SELECT
,logload.doc->>'message' "comment"
,logload.doc->>'type' module
FROM
rlarp.osmf_dev o
rlarp.osmf o
CROSS JOIN logload
LEFT OUTER JOIN lgdat.cust bc ON
bc.bvcust = o.bill_cust
@ -178,7 +178,7 @@ FROM
*/
LEFT OUTER JOIN seg ON
seg.glec = o.glec
LEFT OUTER JOIN rlarp.itemm i ON
LEFT OUTER JOIN "CMS.CUSLG".itemm i ON
i.item = o.part
)
SELECT * FROM loadset

2
build/rebuild_script.sh Normal file → Executable file
View File

@ -1,6 +1,6 @@
#!/bin/bash
#$PG -f ./build_stage.sql;
$PG -f ./build_rolling.sql;
#$PG -f ./build_rolling.sql;
$PG -f ./snap_itemm.sql;
$PG -f ./snap_cost_current.sql;
$PG -f ./snap_customer.sql;

View File

@ -6,7 +6,7 @@ plist AS (
part
,plnt
FROM
rlarp.osmf_dev
rlarp.osmf
-----prevent a list of fake parts
INNER JOIN lgdat.stka ON
v6part = part
@ -30,7 +30,7 @@ plist AS (
AND ir.y0plnt = p.plnt
)
UPDATE
rlarp.osmf_dev o
rlarp.osmf o
SET
fb_cst_loc_cur = c.stdcost * o.fb_qty
FROM
@ -40,4 +40,4 @@ WHERE
AND c.plnt = o.plnt;
--AND version = 'b21';
commit;
commit;

View File

@ -1,64 +1,64 @@
----------------------------SET BILL-TO REP------------------------------------
UPDATE
RLARP.OSMF_DEV S
rlarp.osmf s
SET
BILL_REP = C.BVSALM
,BILL_CLASS = C.BVCLAS
,BILL_TERR = C.BVTERR
,BILL_CTRY = C.bvctry
,bill_prov = C.bvprcd
,bill_post = C.bvpost
bill_rep = c.bvsalm
,bill_class = c.bvclas
,bill_terr = c.bvterr
,bill_ctry = c.bvctry
,bill_prov = c.bvprcd
,bill_post = c.bvpost
,remit_to = c.bvcomp
,ACCOUNT = CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END
,account = CASE bvadr6 WHEN '' THEN bvname ELSE bvadr6 END
FROM
LGDAT.CUST C
lgdat.cust c
WHERE
C.BVCUST = S.BILL_CUST
c.bvcust = s.bill_cust
AND (
COALESCE(S.BILL_REP,'') <> C.BVSALM
OR COALESCE(S.BILL_CLASS,'') <> C.BVCLAS
OR COALESCE(S.BILL_TERR,'') <> C.BVTERR
OR COALESCE(BILL_CTRY,'') <> C.bvctry
OR COALESCE(bill_prov,'') <> C.bvprcd
OR COALESCE(bill_post,'') <> C.bvpost
COALESCE(s.bill_rep,'') <> c.bvsalm
OR COALESCE(s.bill_class,'') <> c.bvclas
OR COALESCE(s.bill_terr,'') <> c.bvterr
OR COALESCE(bill_ctry,'') <> c.bvctry
OR COALESCE(bill_prov,'') <> c.bvprcd
OR COALESCE(bill_post,'') <> c.bvpost
OR COALESCE(remit_to,'') <> c.bvcomp::text
);
----------------------------SET SHIP-TO REP------------------------------------
UPDATE
RLARP.OSMF_DEV S
rlarp.osmf s
SET
SHIP_REP = C.BVSALM
,SHIP_CLASS = C.BVCLAS
,SHIP_TERR = C.BVTERR
,dest_CTRY = C.bvctry
,dest_prov = C.bvprcd
,dest_post = C.bvpost
ship_rep = c.bvsalm
,ship_class = c.bvclas
,ship_terr = c.bvterr
,dest_ctry = c.bvctry
,dest_prov = c.bvprcd
,dest_post = c.bvpost
FROM
LGDAT.CUST C
lgdat.cust c
WHERE
C.BVCUST = S.SHIP_CUST
c.bvcust = s.ship_cust
AND (
COALESCE(S.SHIP_REP,'') <> C.BVSALM
OR COALESCE(S.SHIP_CLASS,'') <> C.BVCLAS
OR COALESCE(S.SHIP_TERR,'') <> C.BVTERR
OR COALESCE(dest_CTRY,'') <> C.bvctry
OR COALESCE(dest_prov,'') <> C.bvprcd
OR COALESCE(dest_post,'') <> C.bvpost
COALESCE(s.ship_rep,'') <> c.bvsalm
OR COALESCE(s.ship_class,'') <> c.bvclas
OR COALESCE(s.ship_terr,'') <> c.bvterr
OR COALESCE(dest_ctry,'') <> c.bvctry
OR COALESCE(dest_prov,'') <> c.bvprcd
OR COALESCE(dest_post,'') <> c.bvpost
);
----------------------------SET BILLTO GROUP------------------------------------
UPDATE
RLARP.OSMF_DEV O
rlarp.osmf o
SET
ACCOUNT = CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END
FROM
LGDAT.CUST C
lgdat.cust c
WHERE
C.BVCUST = O.BILL_CUST
c.bvcust = o.bill_cust
AND coalesce(account,'') <> CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END;
@ -66,13 +66,13 @@ WHERE
----------------------------SET SHIPTO GROUP------------------------------------
UPDATE
RLARP.OSMF_DEV O
rlarp.osmf o
SET
SHIPGRP = CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END
FROM
LGDAT.CUST C
lgdat.cust c
WHERE
C.BVCUST = O.SHIP_CUST
c.bvcust = o.ship_cust
AND CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END <> COALESCE(O.SHIPGRP,'');
@ -80,7 +80,7 @@ WHERE
UPDATE
rlarp.osmF_dev
rlarp.osmf
SET
CHAN = CASE SUBSTRING(BILL_CLASS,2,3)
--if the bill to class is ditsributor, then it's either warehouse or drop
@ -136,17 +136,17 @@ WHERE
UPDATE
RLARP.OSMF_DEV S
rlarp.osmf s
SET
DSM = CR.QUOTA_REP
dsm = cr.quota_rep
FROM
(
SELECT DISTINCT
VERSION,
COALESCE(GLEC,'') GLEC,
MING,
BILL_CUST,
SHIP_CUST,
version,
COALESCE(glec,'') glec,
ming,
bill_cust,
ship_cust,
------------quota rep column--------------
CASE WHEN COALESCE(ming,'') = 'B52' THEN 'PW' ELSE
--if the gl expense code is 1RE use the retail rep assigned to the bill-to customer if available
@ -163,18 +163,18 @@ FROM
END
END QUOTA_REP
FROM
RLARP.OSMF_DEV S
LEFT OUTER JOIN LGDAT.CUST ON
BVCUST = BILL_CUST
rlarp.osmf s
LEFT OUTER JOIN lgdat.cust ON
bvcust = bill_cust
LEFT OUTER JOIN lgpgm.usrcust cu ON
cu.cucust = s.bill_cust
WHERE
version = 'ACTUALS'
) CR
WHERE
CR.VERSION = S.VERSION
AND CR.GLEC = COALESCE(S.GLEC,'')
AND CR.MING = S.MING
AND CR.BILL_CUST = S.BILL_CUST
AND CR.SHIP_CUST = S.SHIP_CUST
AND COALESCE(S.DSM,'') <> CR.QUOTA_REP;
cr.version = s.version
AND cr.glec = COALESCE(s.glec,'')
AND cr.ming = s.ming
AND cr.bill_cust = s.bill_cust
AND cr.ship_cust = s.ship_cust
AND COALESCE(s.dsm,'') <> cr.quota_rep;

View File

@ -1,28 +1,29 @@
UPDATE
RLARP.OSMF_DEV O
rlarp.osmf o
SET
STYC = M.STLC
,COLC = M.COLC
,COLGRP = M.COLGRP
,COLTIER = M.COLTIER
,COLSTAT = M.COLSTAT
,SIZC = M.SIZC
,PCKG = M.PACKAGE
,KIT = M.KIT
,BRND = M.BRANDING
,MAJG = M.MAJG
,MING = M.MING
,MAJS = M.MAJS
,MINS = M.MINS
,GLDC = M.GLCD
,GLEC = M.GLEC
,HARM = M.HARM
,CLSS = M.CLSS
,BRAND = M.BRAND
,ASSC = M.ASSC
,LBS = CASE M.NWUN WHEN 'KG' THEN 2.2046 ELSE 1 END*M.NWHT
,UNTI = M.UNTI
stlc = m.stlc
,colc = m.colc
,colgrp = m.colgrp
,coltier = m.coltier
,colstat = m.colstat
,sizc = m.sizc
,uomp = m.uomp
,suffix = m.suffix
,accs_ps = m.accs_ps
,brnd = m.branding
,majg = m.majg
,ming = m.ming
,majs = m.majs
,mins = m.mins
,gldc = m.glcd
,glec = m.glec
,harm = m.harm
,clss = m.clss
,brand = m.brand
,assc = m.assc
,lbs = CASE m.nwun WHEN 'KG' THEN 2.2046 ELSE 1 END*m.nwht
,unti = m.unti
FROM
RLARP.ITEMM M
"CMS.CUSLG".itemm m
WHERE
M.ITEM = O.PART
m.item = o.part

View File

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

View File

@ -3,9 +3,9 @@ Description=forecast_api
After=network.target
[Service]
ExecStart=/usr/bin/node //opt/forecast_api/index.js
ExecStart=/home/fc/.nvm/versions/node/v18.14.2/bin/node //opt/forecast_api/index.js
Restart=always
User=fc_api
User=fc
Environemnt=NODE_ENV=production
WorkingDirectory=//opt/forecast_api/

View File

@ -203,7 +203,7 @@ server.post('/swap', bodyParser.json(), function(req, res) {
res.send("no body was sent");
return;
}
console.log(new Date().toISOString() + "-------------------------get swap fit:------------------------------")
console.log(new Date().toISOString() + "-------------------------post swap:------------------------------")
console.log(req.body);
//parse the where clause into the main sql statement
sql = sql.replace(new RegExp("where_clause", 'g'), w);
@ -246,7 +246,7 @@ server.post('/cust_swap', bodyParser.json(), function(req, res) {
res.send("no body was sent");
return;
}
console.log(new Date().toISOString() + "-------------------------get swap fit:------------------------------")
console.log(new Date().toISOString() + "-------------------------cust swap:------------------------------")
console.log(req.body);
//parse the where clause into the main sql statement
sql = sql.replace(new RegExp("where_clause", 'g'), w);
@ -553,7 +553,7 @@ server.post('/scale_vp_sales', bodyParser.json(), function(req, res) {
res.send("no body was sent");
return;
}
console.log(new Date().toISOString() + "--------------------scale volume & price:-------------------");
console.log(new Date().toISOString() + "--------------------scale volume & price sales:-------------------");
req.body.stamp = new Date().toISOString()
console.log(req.body);
//console.log(args);
@ -696,7 +696,7 @@ function build_where(req, c, w, d, args) {
if (req.body.stamp) {
w = w +
`
AND order_date >= '` + req.body.stamp + "'::date";
AND order_date >= least('` + req.body.stamp + "'::date,'2021-06-01')";
}
return { c, w, d };
}
}

View File

@ -1,6 +1,6 @@
--BEGIN;
WITH
WITH
------------------goal price increases---------------------
incr AS (
SELECT * FROM (VALUES
@ -99,7 +99,7 @@ incr AS (
WHERE
pricing <> ''
AND dba <> ''
GROUP BY
GROUP BY
dba
)
----customer dba price list pricing------
@ -154,11 +154,11 @@ incr AS (
,row_number() OVER (PARTITION BY o.styc||'.'||o.colgrp||substring(o.sizc,1,3),o.account, o.shipgrp ORDER BY o.odate DESC) rn
FROM
rlarp.osm_dev o
INNER JOIN rlarp.itemmv i ON
INNER JOIN "CMS.CUSLG".itemm i ON
i.item = o.part
WHERE
---exclude R&A's
o.fs_line = '41010'
o.fs_line = '41010'
---exclude canceled orders
AND o.calc_status <> 'CANCELED'
---exclude quotes
@ -207,7 +207,7 @@ incr AS (
,assc
,chgrp
)
--SELECT * FROM baseline WHERE product = 'AMK06000.CBXX'
--SELECT * FROM baseline WHERE product = 'AMK06000.CBXX'
----------calculate pricing as it sits in the forecast--------------
,poolprice AS (
SELECT
@ -226,7 +226,7 @@ SELECT
,jsonb_agg(DISTINCT iter) iters
FROM
rlarp.osm_pool o
,rlarp.itemmv i
,"CMS.CUSLG".itemm i
WHERE
i.item = o.part
--AND o.units <> 0
@ -249,7 +249,7 @@ HAVING
)
----------pivot the pricing out into columns per customer/product--------
,pivot AS (
SELECT
SELECT
p.productt
,p.product
--,p.styc
@ -275,7 +275,7 @@ SELECT
WHEN 'D' THEN i.rate
ELSE CASE p.majg
WHEN '610' THEN .02
ElSE CASE p.colgrp
ElSE CASE p.colgrp
WHEN 'B' THEN .20
WHEN 'C' THEN .25
ELSE 1
@ -285,7 +285,7 @@ SELECT
,ms.avg_price target
----------------potential price list increase of 5% across board-----
,JSONB_AGG(DISTINCT (plist.jcpric*1.05)/1000) jcprice
--,CASE WHEN sum(val_usd) FILTER (WHERE oseas = 2020) IS NULL
--,CASE WHEN sum(val_usd) FILTER (WHERE oseas = 2020) IS NULL
-- THEN CASE WHEN sum(units) FILTER (WHERE oseas = 2021) IS NULL
-- THEN 'unknown'
-- ELSE 'new'
@ -295,7 +295,7 @@ SELECT
-- ELSE 'repeat'
-- END
--END flag
FROM
FROM
p
LEFT OUTER JOIN baseline bl ON
bl.product = p.product
@ -353,29 +353,29 @@ GROUP BY
--,log AS (
-- INSERT INTO
-- rlarp.osm_log(doc)
-- SELECT
-- SELECT
-- $${
-- "message":"application of last price and target increases to all forecast orders",
-- "tag":"last price r1",
-- "type":"build"
-- }$$::jsonb doc
-- "type":"build"
-- }$$::jsonb doc
-- RETURNING *
--)
---------collapse iterations-----------------------
,collapse AS (
SELECT
o.fspr
,o.plnt ---master data
,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.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.billto_group --master data
,o.shipto_group
,o.chan --master data
,o.chan --master data
,o.chansub
,o.chan_retail
,o.part
@ -389,11 +389,11 @@ GROUP BY
,o.mins_descr
,o.segm
,o.substance
,o.fs_line
,o.r_currency
,o.r_rate
,o.c_currency
,o.c_rate
,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
@ -401,8 +401,8 @@ GROUP BY
,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.calc_status --0
,o.flag --0
,o.order_date --history date mix
,o.order_month
,o.order_season
@ -415,22 +415,22 @@ GROUP BY
FROM
rlarp.osm_pool o
--need to join to itemm to get the product from osm_pool
,rlarp.itemmv i
,"CMS.CUSLG".itemm i
WHERE
i.item = o.part
GROUP BY
GROUP BY
o.fspr
,o.plnt ---master data
,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.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.billto_group --master data
,o.shipto_group
,o.chan --master data
,o.chan --master data
,o.chansub
,o.chan_retail
,o.part
@ -444,13 +444,13 @@ GROUP BY
,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.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
@ -467,17 +467,17 @@ GROUP BY
,ins AS (
SELECT
o.fspr
,o.plnt ---master data
,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.quota_rep_descr --master data
,o.director
,o.billto_group --master data
,o.billto_group --master data
,o.shipto_group
,o.chan --master data
,o.chan --master data
,o.chansub
,o.chan_retail
,o.part
@ -490,11 +490,11 @@ SELECT
,o.mins_descr
,o.segm
,o.substance
,o.fs_line --master data
,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.r_rate --master data
,o.c_currency --master data
,o.c_rate --master data
--,o.units
,0::numeric units
,greatest(
@ -538,8 +538,8 @@ SELECT
-----------
,0::numeric cost_loc
,0::numeric cost_usd
,o.calc_status --0
,o.flag --0
,o.calc_status --0
,o.flag --0
,o.order_date --history date mix
,o.order_month
,o.order_season
@ -560,7 +560,7 @@ SELECT
FROM
collapse o
--need to join to itemm to get the product from osm_pool
--,fcp a
--,fcp a
,pivot a
--,log
WHERE

848
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,8 @@
"author": "",
"license": "ISC",
"dependencies": {
"dotenv": "^6.2.0",
"dotenv": "^16.0.3",
"express": "^4.17.1",
"pg": "^7.18.1"
"pg": "^8.9.0"
}
}

View File

@ -87,7 +87,7 @@ target AS (select $$replace_request$$::json def)
SELECT
LTRIM(RTRIM(A9)) AS COMP,
A30 AS DESCR,
SUBSTR(C.A249,242,2) CURR,
SUBSTR(C.A249,242,2) CURR,
SUBSTR(C.A249,32,4) AS GL,
SUBSTR(C.A249,190,4) AS AR,
SUBSTR(C.A249,182,4) AS AP,
@ -206,7 +206,7 @@ target AS (select $$replace_request$$::json def)
FROM
mmix
)
--select * from mmixp
--select * from mmixp
--month cross join mix
,mxm AS (
SELECT
@ -232,7 +232,7 @@ FROM
FROM
mmixp
ORDER BY
abs(seq - t.s) ASC
abs(seq - t.s) ASC
LIMIT 1
)
)
@ -290,7 +290,7 @@ SELECT
,(SELECT max(director) FROM repc WHERE rname = log.doc->'scenario'->>'quota_rep_descr') director
,COALESCE(CASE bc.BVADR6 WHEN '' THEN bc.BVNAME ELSE bc.BVADR6 END,b.bill_cust_descr) billto_group
,COALESCE(CASE sc.BVADR6 WHEN '' THEN sc.BVNAME ELSE sc.BVADR6 END,b.ship_cust_descr) shipto_group
,CASE SUBSTRING(bc.bvclas,2,3)
,CASE SUBSTRING(bc.bvclas,2,3)
--if the bill to class is ditsributor, then it's either warehouse or drop
WHEN 'DIS' THEN
--if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse
@ -302,7 +302,7 @@ SELECT
--everything else does not involve a distributor and is considered direct
ELSE 'DIR'
END chan
,CASE SUBSTRING(bc.bvclas,2,3)
,CASE SUBSTRING(bc.bvclas,2,3)
WHEN 'DIS' THEN
--if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse
CASE SUBSTRING(sc.bvclas,2,3)
@ -329,7 +329,7 @@ SELECT
,rx.rate r_rate --master data
,copr.curr c_currency --master data
,cx.rate c_rate --master data
,round(b.units ,2) units
,round(b.units ,2) units
,round(b.value_usd / COALESCE(rx.rate,1) ,2) value_loc --b.value is denominated in USD, need to apply currency to get to local, assume 1 if using a fake customer
,round(b.value_usd ,2) value_usd --b.value is already denominated in usd
,round(COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.units ,2) cost_loc
@ -354,7 +354,7 @@ SELECT
FROM
basemix b
CROSS JOIN log
LEFT OUTER JOIN rlarp.itemmv i ON
LEFT OUTER JOIN "CMS.CUSLG".itemm i ON
i.item = b.part
LEFT OUTER JOIN SEG ON
SEG.GLEC = i.glec
@ -364,7 +364,7 @@ FROM
LEFT OUTER JOIN LGDAT.CUST SC ON
SC.BVCUST = rtrim(substring(b.ship_cust_descr,1,8))
LEFT OUTER JOIN REPC ON
REPC.RCODE = RTRIM(
REPC.RCODE = RTRIM(
--retail items go to currep, or if null go to 90005
CASE WHEN i.glec IN ('1RE','1CU') THEN
CASE WHEN bc.bvctry = 'CAN' THEN
@ -397,11 +397,11 @@ FROM
END
--minor group b52 goes to dedicated rep
ELSE
CASE WHEN i.MING = 'B52' THEN
CASE WHEN i.MING = 'B52' THEN
'PW'
--gdir, ndir go to bill-to rep
ELSE
CASE WHEN bc.bvclas IN ('GDIR','NDIR') THEN
ELSE
CASE WHEN bc.bvclas IN ('GDIR','NDIR') THEN
bc.bvsalm
ELSE
sc.bvsalm

View File

@ -1,8 +1,8 @@
--\timing
--explain (analyze, buffers)
WITH
WITH
mseq AS (
SELECT * FROM
SELECT * FROM
(
VALUES
('01 - Jun',1)
@ -36,7 +36,7 @@ FROM
rlarp.osm_pool
WHERE
where_clause
AND order_season IN (2021,2022)
AND order_season IN (2023,2024)
GROUP BY
order_season
,order_month
@ -67,7 +67,7 @@ GROUP BY
,CASE WHEN sum(value_usd) over () = 0 THEN 0 ELSE value_usd/sum(value_usd) over () END mix
FROM
basket1
ORDER BY
ORDER BY
mix DESC
)
,months AS (
@ -94,14 +94,14 @@ GROUP BY
SELECT
order_month
,seq
,SUM(units) FILTER (WHERE order_season = 2021) "2021 qty"
,SUM(units) FILTER (WHERE order_season = 2022 AND iter IN ('copy','short ship','bad_ship','plan')) "2022 base qty"
,SUM(units) FILTER (WHERE order_season = 2022 AND iter NOT IN ('copy','short ship','bad_ship','plan')) "2022 adj qty"
,SUM(units) FILTER (WHERE order_season = 2022) "2022 tot qty"
,SUM(value_usd) FILTER (WHERE order_season = 2021) "2021 value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2022 AND iter IN ('copy','short ship','bad_ship','plan')) "2022 base value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2022 AND iter NOT IN ('copy','short ship','bad_ship','plan')) "2022 adj value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2022) "2022 tot value_usd"
,SUM(units) FILTER (WHERE order_season = 2023) "2023 qty"
,SUM(units) FILTER (WHERE order_season = 2024 AND iter IN ('copy','short ship','bad_ship','plan')) "2024 base qty"
,SUM(units) FILTER (WHERE order_season = 2024 AND iter NOT IN ('copy','short ship','bad_ship','plan')) "2024 adj qty"
,SUM(units) FILTER (WHERE order_season = 2024) "2024 tot qty"
,SUM(value_usd) FILTER (WHERE order_season = 2023) "2023 value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2024 AND iter IN ('copy','short ship','bad_ship','plan')) "2024 base value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2024 AND iter NOT IN ('copy','short ship','bad_ship','plan')) "2024 adj value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2024) "2024 tot value_usd"
FROM
months
GROUP BY
@ -113,14 +113,14 @@ GROUP BY
,mlist AS (
SELECT
mseq.m order_month
,"2021 qty"
,"2022 base qty"
,"2022 adj qty"
,"2022 tot qty"
,"2021 value_usd"
,"2022 base value_usd"
,"2022 adj value_usd"
,"2022 tot value_usd"
,"2023 qty"
,"2024 base qty"
,"2024 adj qty"
,"2024 tot qty"
,"2023 value_usd"
,"2024 base value_usd"
,"2024 adj value_usd"
,"2024 tot value_usd"
FROM
mseq
LEFT OUTER JOIN mpvt ON
@ -147,12 +147,12 @@ GROUP BY
doc->>'tag' tag
FROM
rlarp.osm_log
WHERE
WHERE
doc ? 'tag'
AND id <> 1
UNION
SELECT * FROM
(VALUES
(VALUES
('price'),
('volume')
) x(tag)
@ -168,7 +168,7 @@ GROUP BY
bill_cust_descr
,ship_cust_descr
)
SELECT
SELECT
jsonb_build_object(
'months'
,(SELECT jsonb_agg(row_to_json(months)::jsonb) FROM months)

View File

@ -11,7 +11,7 @@ target AS (select 'replace_new_mold' new_mold)
SUM(value_usd) value_usd
FROM
rlarp.osm_pool o
LEFT OUTER JOIN rlarp.itemmv i ON
LEFT OUTER JOIN "CMS.CUSLG".itemm i ON
i.item = o.part
WHERE
-----------------scenario----------------------------
@ -46,7 +46,7 @@ target AS (select 'replace_new_mold' new_mold)
CASE WHEN substring(b.part,9,12) = substring(i.item,9,12) THEN '1' ELSE 0 END fit
FROM
basemix b
LEFT OUTER JOIN rlarp.itemmv i ON
LEFT OUTER JOIN "CMS.CUSLG".itemm i ON
i.stlc = (SELECT new_mold FROM target WHERE new_mold <> '')
AND CASE WHEN b.sizc = i.sizc THEN '1' ELSE '0' END||
CASE WHEN i.aplnt = 'I' THEN '0' ELSE '1' END||
@ -55,7 +55,7 @@ target AS (select 'replace_new_mold' new_mold)
CASE WHEN b.colc = i.colc THEN '1' ELSE '0' END||
CASE WHEN substring(b.part,9,12) = substring(i.item,9,12) THEN '1' ELSE 0 END >= '111110'
)
--SELECT * FROM tag
--SELECT * FROM tag
,rsort AS (
SELECT
part,
@ -63,9 +63,9 @@ SELECT
item swap,
fit,
ROW_NUMBER() OVER (PARTITION BY tag.part ORDER BY fit DESC) ranked
FROM
FROM
tag
ORDER BY
ORDER BY
part
,fit desc
)
@ -74,4 +74,4 @@ SELECT
FROM
rsort
WHERE
ranked = 1
ranked = 1

View File

@ -44,17 +44,17 @@ target AS (SELECT $$swap_doc$$::jsonb swap)
,remove AS (
SELECT
fspr
,plnt ---master data
,plnt ---master data
,promo --history date mix
,terms
,bill_cust_descr --history cust mix
,ship_cust_descr --history cust mix
,dsm
,quota_rep_descr --master data
,quota_rep_descr --master data
,director
,billto_group --master data
,billto_group --master data
,shipto_group
,chan --master data
,chan --master data
,chansub
,chan_retail
,part
@ -67,18 +67,18 @@ target AS (SELECT $$swap_doc$$::jsonb swap)
,mins_descr
,segm
,substance
,fs_line --master data
,fs_line --master data
,r_currency --history cust mix
,r_rate --master data
,c_currency --master data
,c_rate --master data
,r_rate --master data
,c_currency --master data
,c_rate --master data
,-units units
,-value_loc value_loc
,-value_usd value_usd
,-cost_loc cost_loc
,-cost_usd cost_usd
,calc_status --0
,flag --0
,calc_status --0
,flag --0
,order_date --history date mix
,order_month
,order_season
@ -160,13 +160,13 @@ target AS (SELECT $$swap_doc$$::jsonb swap)
remove o
INNER JOIN pl ON
pl.original = o.part
INNER JOIN rlarp.itemmv m ON
INNER JOIN "CMS.CUSLG".itemm m ON
m.item = pl.replace
LEFT OUTER JOIN rlarp.icstx c ON
c.part = pl.replace
AND c.plnt = m.dplt
LEFT OUTER JOIN rlarp.plpr r ON
yaplnt = m.dplt
r.plnt = m.dplt
LEFT OUTER JOIN rlarp.ffcret x ON
x.fcur = r.curr
AND x.tcur = 'US'