From 34b53e8eef35f7e230c5d5e827231b4e45242d02 Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Wed, 13 Mar 2019 09:44:41 -0400 Subject: [PATCH] add route to modify price and volume at the same time --- index.js | 47 ++++ route_sql/scale_vupd.sql | 509 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 556 insertions(+) create mode 100644 route_sql/scale_vupd.sql diff --git a/index.js b/index.js index 681c4f5..2b56de6 100644 --- a/index.js +++ b/index.js @@ -305,4 +305,51 @@ server.post('/scale_p', bodyParser.json(), function (req, res) { }); }) +server.post('/scale_vp', bodyParser.json(), function (req, res) { + + var sql = ""; + var w = ""; + var c = 1; + var args = []; + var path = './route_sql/scale_vupd.sql'; + + var callback = function(arg){ + sql = arg + + for (var i in req.body.scenario) { + //console.log(i); + ///console.log(req.body[i]); + if (c > 1) { + w = w + + ` + AND ` + } + w = w + i + " = '" + req.body.scenario[i] + "'"; + args.push(req.body.scenario[i]); + c = c + 1; + }; + if (c == 1) { + res.send("no body was sent"); + return; + } + console.log("--------------------scale volume & price:-------------------"); + console.log(req.body); + //console.log(args); + sql = sql.replace(new RegExp("where_clause",'g'),w); + sql = sql.replace(new RegExp("target_vol",'g'),req.body.qty); + sql = sql.replace(new RegExp("target_prc",'g'),req.body.amount); + //console.log(sql); + Postgres.FirstRow(sql,[],res) + } + + fs.readFile(path, 'utf8', function(err, data){ + if (!err){ + callback(data); + } else { + console.log("fatal error pulling sql file") + callback(err); + } + }); +}) + server.listen(3000, () => console.log('started')) \ No newline at end of file diff --git a/route_sql/scale_vupd.sql b/route_sql/scale_vupd.sql new file mode 100644 index 0000000..e2d5b48 --- /dev/null +++ b/route_sql/scale_vupd.sql @@ -0,0 +1,509 @@ +WITH +target AS (select target_vol vincr, target_prc pincr) +,basemix AS ( + SELECT + plnt ---master data + ,0::numeric(11,0) "ddord#" --0 + ,0::numeric(11,0) "dditm#" --0 + ,0::numeric(11,0) "fgbol#" --0 + ,0::numeric(11,0) "fgent#" --0 + ,0::numeric(9,0) "diinv#" --0 + ,0::numeric(3,0) "dilin#" --0 + ,null::text promo --history date mix + ,null::text return_reas --0 + ,terms + ,''::text custpo --0 + ,'I' dhincr --0 + ,sum(diext) diext + ,sum(ditdis) ditdis + ,null::date dcodat --calculated date mix + ,null::date ddqdat --calculated date mix + ,null::date dcmdat --calculated date mix + ,null::date dhidat --calculated date mix + ,null::text fspr --calculated date mix + ,remit_to --master data + ,bill_class --master data + ,bill_cust --history cust mix + ,bill_rep --master data + ,bill_terr --master data + ,ship_class --master data + ,ship_cust --history cust mix + ,ship_rep --master data + ,ship_terr --master data + ,quota_rep --master data + ,account --master data + ,shipgrp --master data + ,geo --master data + ,chan --master data + ,orig_ctry --master data + ,orig_prov --master data + ,orig_post --master data + ,dest_ctry --master data + ,dest_prov --master data + ,dest_post --master data + ,part --history part mix + ,ord_gldc --master data + ,majg --master data + ,ming --master data + ,majs --master data + ,mins --master data + ,gldc --master data + ,glec --master data + ,harm --master data + ,clss --master data + ,brand --master data + ,assc --master data + ,fs_line --master data + ,r_currency --history cust mix + ,r_rate --master data + ,c_currency --master data + ,c_rate --master data + ,0::numeric(15,5) ddqtoi --0 + ,0::numeric(15,5) ddqtsi --0 + ,0::numeric(15,5) fgqshp --0 + ,0::numeric(15,5) diqtsh --0 + ,sum(coalesce(fb_qty,0)) fb_qty --history value + ,sum(coalesce(fb_cst_loc,0)) fb_cst_loc --history part mix + ,sum(coalesce(fb_cst_loc_cur,0)) fb_cst_loc_cur --master data + ,sum(coalesce(fb_cst_loc_fut,0)) fb_cst_loc_fut --master data + ,sum(coalesce(fb_val_loc,0)) fb_val_loc --history value + ,sum(coalesce(fb_val_loc_pl,0)) fb_val_loc_pl --0 + ,calc_status --0 + ,flag --0 + ,orderdate --history date mix + ,requestdate --history date mix + ,shipdate --history date mix + ,adj_orderdate --history + ,adj_requestdate --history + ,adj_shipdate --history + ,'b20' "version" --calculated + ,'adjustment' iter --calculated + ---------------ui columns------------------------- + ,order_season + ,order_month + ,ship_season + ,ship_month + ,request_season + ,request_month + ,part_descr + ,part_family + ,part_group + ,branding + ,color + ,segm + ,bill_cust_descr + ,billto_group + ,ship_cust_descr + ,shipto_group + ,majg_descr + ,ming_descr + ,majs_descr + ,mins_descr + ,mod_chan + ,mod_chansub + ,quota_rep_descr + ,director_descr + ,null value_loc + ,null value_usd + ,null cost_loc + ,null cost_usd + ,null units + FROM + rlarp.osm_fcpool + WHERE + -----------------scenario---------------------------- + where_clause + -----------------additional params------------------- + AND version = 'b20' + AND iter = 'copy' + AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments + AND adj_orderdate <= adj_shipdate + GROUP BY + plnt ---master data + ,terms + ,remit_to --master data + ,bill_class --master data + ,bill_cust --history cust mix + ,bill_rep --master data + ,bill_terr --master data + ,ship_class --master data + ,ship_cust --history cust mix + ,ship_rep --master data + ,ship_terr --master data + ,quota_rep --master data + ,account --master data + ,shipgrp --master data + ,geo --master data + ,chan --master data + ,orig_ctry --master data + ,orig_prov --master data + ,orig_post --master data + ,dest_ctry --master data + ,dest_prov --master data + ,dest_post --master data + ,part --history part mix + ,ord_gldc --master data + ,majg --master data + ,ming --master data + ,majs --master data + ,mins --master data + ,gldc --master data + ,glec --master data + ,harm --master data + ,clss --master data + ,brand --master data + ,assc --master data + ,fs_line --master data + ,r_currency --history cust mix + ,r_rate --master data + ,c_currency --master data + ,c_rate --master data + ,calc_status --0 + ,flag --0 + ,orderdate --history date mix + ,requestdate --history date mix + ,shipdate --history date mix + ,adj_orderdate --history + ,adj_requestdate --history + ,adj_shipdate --history + ---------------ui columns------------------------- + ,order_season + ,order_month + ,ship_season + ,ship_month + ,request_season + ,request_month + ,part_descr + ,part_family + ,part_group + ,branding + ,color + ,segm + ,bill_cust_descr + ,billto_group + ,ship_cust_descr + ,shipto_group + ,majg_descr + ,ming_descr + ,majs_descr + ,mins_descr + ,mod_chan + ,mod_chansub + ,quota_rep_descr + ,director_descr +) +,vscale AS ( + SELECT + (SELECT vincr::numeric FROM target) incr + ,(SELECT sum(fb_qty)::numeric FROM basemix) base + ,(SELECT vincr::numeric FROM target)/(SELECT sum(fb_qty)::numeric FROM basemix) factor +) +--select * from vscale +,volume AS ( + SELECT + b.plnt --master data + ,b."ddord#" --0 + ,b."dditm#" --0 + ,b."fgbol#" --0 + ,b."fgent#" --0 + ,b."diinv#" --0 + ,b."dilin#" --0 + ,b.promo --history date mix + ,b.return_reas --0 + ,b.terms --history cust mix + ,b.custpo --0 + ,b.dhincr --0 + ,b.diext --0 + ,b.ditdis --0 + ,b.dcodat --calculated date mix + ,b.ddqdat --calculated date mix + ,b.dcmdat --calculated date mix + ,b.dhidat --calculated date mix + ,b.fspr --calculated date mix + ,b.remit_to --master data + ,b.bill_class --master data + ,b.bill_cust --history cust mix + ,b.bill_rep --master data + ,b.bill_terr --master data + ,b.ship_class --master data + ,b.ship_cust --history cust mix + ,b.ship_rep --master data + ,b.ship_terr --master data + ,b.quota_rep --master data + ,b.account --master data + ,b.shipgrp --master data + ,b.geo --master data + ,b.chan --master data + ,b.orig_ctry --master data + ,b.orig_prov --master data + ,b.orig_post --master data + ,b.dest_ctry --master data + ,b.dest_prov --master data + ,b.dest_post --master data + ,b.part --history part mix + ,b.ord_gldc --master data + ,b.majg --master data + ,b.ming --master data + ,b.majs --master data + ,b.mins --master data + ,b.gldc --master data + ,b.glec --master data + ,b.harm --master data + ,b.clss --master data + ,b.brand --master data + ,b.assc --master data + ,b.fs_line --master data + ,b.r_currency --history cust mix + ,b.r_rate --master data + ,b.c_currency --master data + ,b.c_rate --master data + ,b.ddqtoi --0 + ,b.ddqtsi --0 + ,b.fgqshp --0 + ,b.diqtsh --0 + ,b.fb_qty*s.factor fb_qty + ,b.fb_cst_loc*s.factor fb_cst_loc + ,b.fb_cst_loc_cur*s.factor fb_cst_loc_cur + ,b.fb_cst_loc_fut*s.factor fb_cst_loc_fut + ,b.fb_val_loc*s.factor fb_val_loc + ,b.fb_val_loc_pl*s.factor fb_val_loc_pl + ,b.calc_status --0 + ,b.flag --0 + ,b.orderdate + ,b.requestdate + ,b.shipdate + ,b.adj_orderdate + ,b.adj_requestdate + ,b.adj_shipdate + ,b.version --calculated + ,b.iter --calculated + -----------------------ui columns-------------------------------- + ,'scale vp' iterdet + ,null::jsonb iterdef + ,b.order_season + ,b.order_month + ,b.ship_season + ,b.ship_month + ,b.request_season + ,b.request_month + ,b.part_descr + ,b.part_family + ,b.part_group + ,b.branding + ,b.color + ,b.segm + ,b.bill_cust_descr + ,b.billto_group + ,b.ship_cust_descr + ,b.shipto_group + ,b.majg_descr + ,b.ming_descr + ,b.majs_descr + ,b.mins_descr + ,b.mod_chan + ,b.mod_chansub + ,b.quota_rep_descr + ,b.director_descr + ,(b.fb_val_loc*s.factor)::numeric value_loc + ,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd + ,(b.fb_cst_loc*s.factor)::numeric cost_loc + ,(b.fb_cst_loc*s.factor*c_rate)::numeric cost_usd + ,(b.fb_qty*s.factor)::numeric units + FROM + basemix b + CROSS JOIN vscale s +) +,pscale AS ( + SELECT + (SELECT pincr::numeric FROM target) incr + ,(SELECT sum(fb_val_loc * r_rate) FROM volume) base + ,(SELECT pincr::numeric FROM target)/(SELECT sum(fb_val_loc) FROM volume) factor + ,(select SUM(fb_qty) from volume) tvol +) +--select * from pscale +,pricing AS ( + SELECT + b.plnt --master data + ,b."ddord#" --0 + ,b."dditm#" --0 + ,b."fgbol#" --0 + ,b."fgent#" --0 + ,b."diinv#" --0 + ,b."dilin#" --0 + ,b.promo --history date mix + ,b.return_reas --0 + ,b.terms --history cust mix + ,b.custpo --0 + ,b.dhincr --0 + ,b.diext --0 + ,b.ditdis --0 + ,b.dcodat --calculated date mix + ,b.ddqdat --calculated date mix + ,b.dcmdat --calculated date mix + ,b.dhidat --calculated date mix + ,b.fspr --calculated date mix + ,b.remit_to --master data + ,b.bill_class --master data + ,b.bill_cust --history cust mix + ,b.bill_rep --master data + ,b.bill_terr --master data + ,b.ship_class --master data + ,b.ship_cust --history cust mix + ,b.ship_rep --master data + ,b.ship_terr --master data + ,b.quota_rep --master data + ,b.account --master data + ,b.shipgrp --master data + ,b.geo --master data + ,b.chan --master data + ,b.orig_ctry --master data + ,b.orig_prov --master data + ,b.orig_post --master data + ,b.dest_ctry --master data + ,b.dest_prov --master data + ,b.dest_post --master data + ,b.part --history part mix + ,b.ord_gldc --master data + ,b.majg --master data + ,b.ming --master data + ,b.majs --master data + ,b.mins --master data + ,b.gldc --master data + ,b.glec --master data + ,b.harm --master data + ,b.clss --master data + ,b.brand --master data + ,b.assc --master data + ,b.fs_line --master data + ,b.r_currency --history cust mix + ,b.r_rate --master data + ,b.c_currency --master data + ,b.c_rate --master data + ,b.ddqtoi --0 + ,b.ddqtsi --0 + ,b.fgqshp --0 + ,b.diqtsh --0 + ,b.fb_qty + ,b.fb_cst_loc + ,b.fb_cst_loc_cur + ,b.fb_cst_loc_fut + ,b.fb_val_loc*s.factor fb_val_loc + ,b.fb_val_loc_pl*s.factor fb_val_loc_pl + ,b.calc_status --0 + ,b.flag --0 + ,b.orderdate + ,b.requestdate + ,b.shipdate + ,b.adj_orderdate + ,b.adj_requestdate + ,b.adj_shipdate + ,b.version --calculated + ,b.iter --calculated + -----------------------ui columns-------------------------------- + ,'scale vp' iterdet + ,null::jsonb iterdef + ,b.order_season + ,b.order_month + ,b.ship_season + ,b.ship_month + ,b.request_season + ,b.request_month + ,b.part_descr + ,b.part_family + ,b.part_group + ,b.branding + ,b.color + ,b.segm + ,b.bill_cust_descr + ,b.billto_group + ,b.ship_cust_descr + ,b.shipto_group + ,b.majg_descr + ,b.ming_descr + ,b.majs_descr + ,b.mins_descr + ,b.mod_chan + ,b.mod_chansub + ,b.quota_rep_descr + ,b.director_descr + ,(b.fb_val_loc*s.factor)::numeric value_loc + ,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd + ,b.cost_loc + ,b.cost_usd + ,b.units + FROM + volume b + CROSS JOIN pscale s +) +--select sum(value_usd), sum(fb_qty) from pricing +, ins AS ( + INSERT INTO rlarp.osm_fcpool SELECT * FROM pricing RETURNING * +) +,insagg AS ( +SELECT + bill_cust_descr + ,billto_group + ,ship_cust_descr + ,shipto_group + ,quota_rep_descr + ,director_descr + ,segm + ,mod_chan + ,mod_chansub + ,majg_descr + ,ming_descr + ,majs_descr + ,mins_descr + ,brand + ,part_family + ,part_group + ,branding + ,color + ,part_descr + ,order_season + ,order_month + ,ship_season + ,ship_month + ,request_season + ,request_month + ,promo + ,version + ,iter + ,sum(value_loc) value_loc + ,sum(value_usd) value_usd + ,sum(cost_loc) cost_loc + ,sum(cost_usd) cost_usd + ,sum(units) units +FROM + ins +GROUP BY + bill_cust_descr + ,billto_group + ,ship_cust_descr + ,shipto_group + ,quota_rep_descr + ,director_descr + ,segm + ,mod_chan + ,mod_chansub + ,majg_descr + ,ming_descr + ,majs_descr + ,mins_descr + ,brand + ,part_family + ,part_group + ,branding + ,color + ,part_descr + ,order_season + ,order_month + ,ship_season + ,ship_month + ,request_season + ,request_month + ,promo + ,version + ,iter +) +SELECT json_agg(row_to_json(insagg)) x from insagg \ No newline at end of file