diff --git a/index.js b/index.js index 3d11637..1f617ee 100644 --- a/index.js +++ b/index.js @@ -18,8 +18,8 @@ var options = { passprase: [] }; -https.createServer(options,server).listen(process.env.nodeport, () => { - console.log('started on '+ process.env.nodeport) +https.createServer(options, server).listen(process.env.nodeport, () => { + console.log('started on ' + process.env.nodeport) }); //server.listen(3000, () => console.log('started')) @@ -34,7 +34,7 @@ var Postgres = new pg.Client({ }); Postgres.connect(); -Postgres.FirstRow = function (inSQL, args, inResponse) { +Postgres.FirstRow = function(inSQL, args, inResponse) { Postgres.query(inSQL, args, (err, res) => { if (err === null) { inResponse.json(res.rows[0]); @@ -42,7 +42,7 @@ Postgres.FirstRow = function (inSQL, args, inResponse) { } console.log(err.stack); inResponse.json(err.stack); - }); + }); }; server.get('/', (req, res) => res.send('node.js express is up and running')) @@ -55,14 +55,14 @@ server.get('/pgbadger', (req, res) => res.sendFile(process.env.wd + 'logs.html') server.get('/totals', (req, res) => res.sendFile(process.env.wd + 'totals.log')) -server.get('/test_sql', function(req, res){ +server.get('/test_sql', function(req, res) { var path = './route_meta/scenario_package.sql' - var callback = function(arg){ + var callback = function(arg) { res.send(arg) }; - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { callback(err); @@ -70,21 +70,21 @@ server.get('/test_sql', function(req, res){ }); }); -server.get('/get_pool', bodyParser.json(), function (req, res) { +server.get('/get_pool', bodyParser.json(), function(req, res) { var sql = ""; var args = [req.body.quota_rep]; var path = './route_sql/get_pool.sql'; - var callback = function(arg){ + var callback = function(arg) { sql = arg; console.log(new Date().toISOString() + "-------------------------get pool:----------------------------"); console.log(req.body.quota_rep); - sql = sql.replace("rep_replace",req.body.quota_rep); - Postgres.FirstRow(sql,[],res) + sql = sql.replace("rep_replace", req.body.quota_rep); + Postgres.FirstRow(sql, [], res) }; - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -94,7 +94,7 @@ server.get('/get_pool', bodyParser.json(), function (req, res) { }) -server.get('/scenario_package', bodyParser.json(), function (req, res) { +server.get('/scenario_package', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -103,8 +103,8 @@ server.get('/scenario_package', bodyParser.json(), function (req, res) { var args = []; var path = './route_sql/scenario_package.sql'; - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -112,9 +112,9 @@ server.get('/scenario_package', bodyParser.json(), function (req, res) { } }); - var callback = function(arg){ + var callback = function(arg) { sql = arg; - + //parse request body into a where clause ({ c, w, d } = build_where(req, c, w, d, args)); @@ -126,14 +126,14 @@ server.get('/scenario_package', bodyParser.json(), function (req, res) { console.log(new Date().toISOString() + "-------------------------get scenario:------------------------------") console.log(req.body); //parse the where clause into the main sql statement - sql = sql.replace(new RegExp("where_clause",'g'),w) - //execute the sql and send the result - //console.log(sql); - Postgres.FirstRow(sql,[],res) + sql = sql.replace(new RegExp("where_clause", 'g'), w) + //execute the sql and send the result + //console.log(sql); + Postgres.FirstRow(sql, [], res) }; }) -server.get('/list_changes', bodyParser.json(), function (req, res) { +server.get('/list_changes', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -142,8 +142,8 @@ server.get('/list_changes', bodyParser.json(), function (req, res) { var args = []; var path = './route_sql/list_changes.sql'; - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -151,20 +151,20 @@ server.get('/list_changes', bodyParser.json(), function (req, res) { } }); - var callback = function(arg){ + var callback = function(arg) { sql = arg; - - console.log(new Date().toISOString() +"-------------------------list changes:------------------------------") + + console.log(new Date().toISOString() + "-------------------------list changes:------------------------------") console.log(req.body); //parse the where clause into the main sql statement - sql = sql.replace(new RegExp("replace_user",'g'),JSON.stringify(req.body)) - //execute the sql and send the result - //console.log(sql); - Postgres.FirstRow(sql,[],res) + sql = sql.replace(new RegExp("replace_user", 'g'), JSON.stringify(req.body.quota_rep_descr)) + //execute the sql and send the result + console.log(sql); + Postgres.FirstRow(sql, [], res) }; }) -server.post('/addmonth_v', bodyParser.json(), function (req, res) { +server.post('/addmonth_v', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -173,16 +173,16 @@ server.post('/addmonth_v', bodyParser.json(), function (req, res) { var args = []; var path = './route_sql/addmonth_vd.sql'; - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") callback(err); } }); - - var callback = function(arg){ + + var callback = function(arg) { sql = arg; //buile where clause expression ({ c, w, d } = build_where(req, c, w, d, args)); @@ -191,22 +191,22 @@ server.post('/addmonth_v', bodyParser.json(), function (req, res) { res.send("no body was sent"); return; } - console.log(new Date().toISOString() +"-----------------------------add month volume:---------------------------------"); + console.log(new Date().toISOString() + "-----------------------------add month volume:---------------------------------"); req.body.stamp = new Date().toISOString() console.log(req.body); //console.log(args); - sql = sql.replace(new RegExp("scenario = target_scenario",'g'),w); - sql = sql.replace(new RegExp("target_increment",'g'),req.body.qty); - sql = sql.replace(new RegExp("target_month",'g'),req.body.month); - sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version); - sql = sql.replace(new RegExp("replace_source",'g'),req.body.source); - sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body)); + sql = sql.replace(new RegExp("scenario = target_scenario", 'g'), w); + sql = sql.replace(new RegExp("target_increment", 'g'), req.body.qty); + sql = sql.replace(new RegExp("target_month", 'g'), req.body.month); + sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); + sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); + sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); console.log(sql) - Postgres.FirstRow(sql,[],res) + Postgres.FirstRow(sql, [], res) } }) -server.post('/addmonth_vp', bodyParser.json(), function (req, res) { +server.post('/addmonth_vp', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -214,8 +214,8 @@ server.post('/addmonth_vp', bodyParser.json(), function (req, res) { var d = 1; var args = []; var path = './route_sql/addmonth_vupd.sql'; - - var callback = function(arg){ + + var callback = function(arg) { sql = arg; ({ c, w, d } = build_where(req, c, w, d, args)); @@ -224,23 +224,23 @@ server.post('/addmonth_vp', bodyParser.json(), function (req, res) { res.send("no body was sent"); return; } - console.log(new Date().toISOString() +"------------------add month volume and price:-------------------"); + console.log(new Date().toISOString() + "------------------add month volume and price:-------------------"); req.body.stamp = new Date().toISOString() console.log(req.body); //console.log(args); - sql = sql.replace(new RegExp("where_clause",'g'),w); - sql = sql.replace(new RegExp("target_volume",'g'),req.body.qty); - sql = sql.replace(new RegExp("target_price",'g'),req.body.amount); - sql = sql.replace(new RegExp("target_month",'g'),req.body.month); - sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version); - sql = sql.replace(new RegExp("replace_source",'g'),req.body.source); - sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body)); + sql = sql.replace(new RegExp("where_clause", 'g'), w); + sql = sql.replace(new RegExp("target_volume", 'g'), req.body.qty); + sql = sql.replace(new RegExp("target_price", 'g'), req.body.amount); + sql = sql.replace(new RegExp("target_month", 'g'), req.body.month); + sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); + sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); + sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); console.log(sql); - Postgres.FirstRow(sql,[],res) + Postgres.FirstRow(sql, [], res) } - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -249,7 +249,7 @@ server.post('/addmonth_vp', bodyParser.json(), function (req, res) { }); }) -server.post('/scale_v', bodyParser.json(), function (req, res) { +server.post('/scale_v', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -257,8 +257,8 @@ server.post('/scale_v', bodyParser.json(), function (req, res) { var d = 1; var args = []; var path = './route_sql/scale_vd.sql'; - - var callback = function(arg){ + + var callback = function(arg) { sql = arg; ({ c, w, d } = build_where(req, c, w, d, args)); @@ -267,21 +267,21 @@ server.post('/scale_v', bodyParser.json(), function (req, res) { res.send("no body was sent"); return; } - console.log(new Date().toISOString() +"-----------------------scale volume:------------------------------"); + console.log(new Date().toISOString() + "-----------------------scale volume:------------------------------"); req.body.stamp = new Date().toISOString() console.log(req.body); //console.log(args); - sql = sql.replace(new RegExp("where_clause",'g'),w); - sql = sql.replace(new RegExp("incr_qty",'g'),req.body.qty); - sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version); - sql = sql.replace(new RegExp("replace_source",'g'),req.body.source); - sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body)); + sql = sql.replace(new RegExp("where_clause", 'g'), w); + sql = sql.replace(new RegExp("incr_qty", 'g'), req.body.qty); + sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); + sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); + sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); console.log(sql); - Postgres.FirstRow(sql,[],res) + Postgres.FirstRow(sql, [], res) } - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -290,7 +290,7 @@ server.post('/scale_v', bodyParser.json(), function (req, res) { }); }) -server.post('/scale_p', bodyParser.json(), function (req, res) { +server.post('/scale_p', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -298,8 +298,8 @@ server.post('/scale_p', bodyParser.json(), function (req, res) { var d = 1; var args = []; var path = './route_sql/scale_pd.sql'; - - var callback = function(arg){ + + var callback = function(arg) { sql = arg; ({ c, w, d } = build_where(req, c, w, d, args)); @@ -308,21 +308,21 @@ server.post('/scale_p', bodyParser.json(), function (req, res) { res.send("no body was sent"); return; } - console.log(new Date().toISOString() +"--------------------scale price:-------------------"); + console.log(new Date().toISOString() + "--------------------scale price:-------------------"); req.body.stamp = new Date().toISOString() console.log(req.body); //console.log(args); - sql = sql.replace(new RegExp("where_clause",'g'),w); - sql = sql.replace(new RegExp("target_increment",'g'),req.body.amount); - sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version); - sql = sql.replace(new RegExp("replace_source",'g'),req.body.source); - sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body)); + sql = sql.replace(new RegExp("where_clause", 'g'), w); + sql = sql.replace(new RegExp("target_increment", 'g'), req.body.amount); + sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); + sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); + sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); console.log(sql); - Postgres.FirstRow(sql,[],res) + Postgres.FirstRow(sql, [], res) } - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -331,7 +331,7 @@ server.post('/scale_p', bodyParser.json(), function (req, res) { }); }) -server.post('/scale_vp', bodyParser.json(), function (req, res) { +server.post('/scale_vp', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -339,8 +339,8 @@ server.post('/scale_vp', bodyParser.json(), function (req, res) { var d = 1; var args = []; var path = './route_sql/scale_vupd.sql'; - - var callback = function(arg){ + + var callback = function(arg) { sql = arg; ({ c, w, d } = build_where(req, c, w, d, args)); @@ -349,22 +349,22 @@ server.post('/scale_vp', 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:-------------------"); req.body.stamp = new Date().toISOString() 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); - sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version); - sql = sql.replace(new RegExp("replace_source",'g'),req.body.source); - sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body)); + 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); + sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); + sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); + sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); console.log(sql); - Postgres.FirstRow(sql,[],res) + Postgres.FirstRow(sql, [], res) } - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -373,7 +373,7 @@ server.post('/scale_vp', bodyParser.json(), function (req, res) { }); }) -server.post('/new_part', bodyParser.json(), function (req, res) { +server.post('/new_part', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -381,8 +381,8 @@ server.post('/new_part', bodyParser.json(), function (req, res) { var d = 1; var args = []; var path = './route_sql/new_part.sql'; - - var callback = function(arg){ + + var callback = function(arg) { sql = arg; ({ c, w, d } = build_where(req, c, w, d, args)); @@ -391,23 +391,23 @@ server.post('/new_part', bodyParser.json(), function (req, res) { res.send("no body was sent"); return; } - console.log(new Date().toISOString() +"--------------------new part:-------------------"); + console.log(new Date().toISOString() + "--------------------new part:-------------------"); req.body.stamp = new Date().toISOString() 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); - sql = sql.replace(new RegExp("replace_request",'g'),JSON.stringify(req.body)); - sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version); - sql = sql.replace(new RegExp("replace_source",'g'),req.body.source); - sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body)); + 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); + sql = sql.replace(new RegExp("replace_request", 'g'), JSON.stringify(req.body)); + sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); + sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); + sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); console.log(sql); - Postgres.FirstRow(sql,[],res) + Postgres.FirstRow(sql, [], res) } - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -416,7 +416,7 @@ server.post('/new_part', bodyParser.json(), function (req, res) { }); }) -server.post('/new_basket', bodyParser.json(), function (req, res) { +server.post('/new_basket', bodyParser.json(), function(req, res) { var sql = ""; var w = ""; @@ -424,8 +424,8 @@ server.post('/new_basket', bodyParser.json(), function (req, res) { var d = 1; var args = []; var path = './route_sql/new_basket.sql'; - - var callback = function(arg){ + + var callback = function(arg) { sql = arg; ({ c, w, d } = build_where(req, c, w, d, args)); @@ -434,23 +434,23 @@ server.post('/new_basket', bodyParser.json(), function (req, res) { res.send("no body was sent"); return; } - console.log(new Date().toISOString() +"--------------------new basket:-------------------"); + console.log(new Date().toISOString() + "--------------------new basket:-------------------"); req.body.stamp = new Date().toISOString() 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); - sql = sql.replace(new RegExp("replace_request",'g'),JSON.stringify(req.body)); - sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version); - sql = sql.replace(new RegExp("replace_source",'g'),req.body.source); - sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body)); + 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); + sql = sql.replace(new RegExp("replace_request", 'g'), JSON.stringify(req.body)); + sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); + sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); + sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); console.log(sql); - Postgres.FirstRow(sql,[],res) + Postgres.FirstRow(sql, [], res) } - fs.readFile(path, 'utf8', function(err, data){ - if (!err){ + fs.readFile(path, 'utf8', function(err, data) { + if (!err) { callback(data); } else { console.log("fatal error pulling sql file") @@ -480,13 +480,11 @@ function build_where(req, c, w, d, args) { d = d + 1; } w = w + ")"; - } - else { + } else { w = w + i + " = '" + req.body.scenario[i] + "'"; } args.push(req.body.scenario[i]); c = c + 1; - } - ; + }; return { c, w, d }; -} +} \ No newline at end of file diff --git a/route_sql/list_changes.sql b/route_sql/list_changes.sql index 596c056..64dfabe 100644 --- a/route_sql/list_changes.sql +++ b/route_sql/list_changes.sql @@ -1,21 +1,37 @@ -WITH -list AS ( +WITH +list AS materialized ( SELECT - iterdef->>'user' "user", - iterdef->>'stamp' "stamp", - iterdef->>'mesasage' "comment", - round(SUM(fb_val_loc * r_rate)::numeric,2) sales, - jsonb_pretty(iterdef) def + l.doc->>'user' "user", + jsonb_path_query_first(l.doc,'$.scenario.quota_rep_descr')->>0 quota_rep_descr, + to_char((l.doc->>'stamp')::timestamptz,'YYYY-MM-DD HH:MI:SS') "stamp", + l.doc->>'message' "comment", + jsonb_pretty(l.doc) def, + l.id FROM - rlarp.osm_fcpool + rlarp.osm_log l WHERE - iterdef IS NOT NULL - AND iterdef @> $$replace_user$$::jsonb -GROUP BY - iterdef->>'user', - iterdef->>'stamp', - iterdef->>'message', - iterdef + l.doc @? '$.scenario.quota_rep_descr ? (@ == replace_user)' +) +,agg as ( +SELECT + list.user + ,list.quota_rep_descr + ,list.stamp + ,list.comment + ,list.def + ,list.id + ,to_char(round(sum(value_usd),2),'$999,999,999D00') sales +from + LIST + inner join rlarp.osm_pool on + id = logid +group BY + list.user + ,list.quota_rep_descr + ,list.stamp + ,list.comment + ,list.def + ,list.id ) SELECT - jsonb_agg(row_to_json(list)::jsonb) x from list \ No newline at end of file + jsonb_agg(row_to_json(agg)::jsonb ORDER BY agg.stamp desc) x from agg \ No newline at end of file diff --git a/route_sql/new_basket.sql b/route_sql/new_basket.sql index 945ec1c..7c748e3 100644 --- a/route_sql/new_basket.sql +++ b/route_sql/new_basket.sql @@ -1,11 +1,11 @@ -WITH +WITH /* the volume must be expressed in terms of units, since that is what it will be scaling */ target AS (select $$replace_request$$::json def) --select * from newm ,GLD AS ( - SELECT + SELECT N1COMP COMP ,N1CCYY FSYR ,KPMAXP PERDS @@ -13,35 +13,36 @@ target AS (select $$replace_request$$::json def) ,to_char(N1FSYP,'FM0000') FSPR ,N1SD01 SDAT ,N1ED01 EDAT + ,daterange(n1sd01, n1ed01) drange ,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 --AND DIGITS(N1FSYP) = '1901' ) ,mseq AS ( - SELECT * FROM + SELECT * FROM ( VALUES - ('Jun',1,6,-1) - ,('Jul',2,7,-1) - ,('Aug',3,8,-1) - ,('Sep',4,9,-1) - ,('Oct',5,10,-1) - ,('Nov',6,11,-1) - ,('Dec',7,12,-1) - ,('Jan',8,1,0) - ,('Feb',9,2,0) - ,('Mar',10,3,0) - ,('Apr',11,4,0) - ,('May',12,5,0) + ('01 - Jun',1,6,-1) + ,('02 - Jul',2,7,-1) + ,('03 - Aug',3,8,-1) + ,('04 - Sep',4,9,-1) + ,('05 - Oct',5,10,-1) + ,('06 - Nov',6,11,-1) + ,('07 - Dec',7,12,-1) + ,('08 - Jan',8,1,0) + ,('09 - Feb',9,2,0) + ,('10 - Mar',10,3,0) + ,('11 - Apr',11,4,0) + ,('12 - May',12,5,0) ) x(m,s,cal,yr) ) ,SEG AS ( @@ -67,30 +68,6 @@ target AS (select $$replace_request$$::json def) ('9TO','Other') ) X(GLEC, SEGM) ) -,MG AS ( - SELECT - X.F1, X.MING, X.GRP - FROM - ( - VALUES - ('L','000','Branded'), - ('L','B10','Branded'), - ('L','B11','Branded'), - ('L','B52','Branded'), - ('L','C10','Branded'), - ('L','D12','Branded'), - ('L','M11','Branded'), - ('L','P12','Branded'), - ('L','P13','Branded'), - ('L','S10','Branded'), - ('L','Y10','Branded'), - ('L','Y11','Branded'), - ('L','Y12','Branded'), - ('P','B10','Branded'), - ('P','B11','Branded'), - ('P','B52','Branded') - ) AS X (F1, MING, GRP) -) ,REPC AS ( SELECT LTRIM(RTRIM(C.A9)) RCODE @@ -103,78 +80,38 @@ target AS (select $$replace_request$$::json def) WHERE C.A2 = 'MM' ) ---MOLD DESCRIPTIONS -,MD AS ( - SELECT - U.MOLD - ,MAX(U.DESCR) DESCR - FROM - ( - SELECT - SUBSTR(M.AVPART,1,8) MOLD - ,MAX(M.AVDES1) DESCR - FROM - LGDAT.STKMM M - WHERE - LENGTH(M.AVPART) > 8 - AND SUBSTR(M.AVGLED,1,1) <= '2' - GROUP BY - SUBSTR(M.AVPART,1,8) - UNION ALL - SELECT - SUBSTR(P.AWPART,1,8) MOLD - ,MAX(P.AWDES1) DESCR - FROM - LGDAT.STKMP P - WHERE - LENGTH(P.AWPART) > 8 - AND SUBSTR(P.AWGLED,1,1) <= '2' - GROUP BY - SUBSTR(P.AWPART,1,8) - ) U - GROUP BY - U.MOLD -) -----------------------------------------------------sales major codes---------------------------------------------------------------------------------------------------------------------------------- -,SJ AS ( - SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') = '' -) -----------------------------------------------------sales minor codes---------------------------------------------------------------------------------------------------------------------------------- -,SI AS ( - SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') <> '' -) ,copr AS ( - SELECT - LTRIM(RTRIM(A9)) AS COMP, - A30 AS DESCR, + SELECT + LTRIM(RTRIM(A9)) AS COMP, + A30 AS DESCR, 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, - SUBSTR(C.A249,198,4) AS FA, - SUBSTR(C.A249,238,4) AS IC , - SUBSTR(D.A249,9,5) CONS_FUNC - FROM - LGDAT.CODE - LEFT OUTER JOIN LGDAT.NAME C ON - 'C0000'||LTRIM(RTRIM(A9)) = C.A7 - LEFT OUTER JOIN LGDAT.NAME D ON - 'D0000'||LTRIM(RTRIM(A9)) = D.A7 - WHERE + SUBSTR(C.A249,32,4) AS GL, + SUBSTR(C.A249,190,4) AS AR, + SUBSTR(C.A249,182,4) AS AP, + SUBSTR(C.A249,198,4) AS FA, + SUBSTR(C.A249,238,4) AS IC , + SUBSTR(D.A249,9,5) CONS_FUNC + FROM + LGDAT.CODE + LEFT OUTER JOIN LGDAT.NAME C ON + 'C0000'||LTRIM(RTRIM(A9)) = C.A7 + LEFT OUTER JOIN LGDAT.NAME D ON + 'D0000'||LTRIM(RTRIM(A9)) = D.A7 + WHERE A2 = 'AA' OR A2 IS NULL ) ,alldates AS ( - SELECT + SELECT promo ,terms ,order_month ,mseq.s seq - ,orderdate - ,requestdate - ,shipdate + ,order_date + ,request_date + ,ship_date ,sum(value_usd) value_usd FROM - rlarp.osm_fcpool + rlarp.osm_pool LEFT OUTER JOIN mseq ON mseq.m = order_month WHERE @@ -183,50 +120,52 @@ target AS (select $$replace_request$$::json def) --probably dont want to include adjustments that have blown away volume and good sources of dating info -----------------additional params------------------- AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments - AND adj_orderdate <= adj_shipdate + AND order_date <= ship_date GROUP BY promo ,terms ,order_month ,mseq.s - ,orderdate - ,requestdate - ,shipdate + ,order_date + ,request_date + ,ship_date HAVING sum(value_usd) <> 0 ) --select * from alldates ,dom AS ( SELECT - extract(day FROM orderdate) DOM + extract(day FROM order_date) DOM ,sum(value_usd) value_usd FROM alldates GROUP BY - extract(day FROM orderdate) + extract(day FROM order_date) ) +--select * from dom ---------------------may want ot look at a top-5 mix solution in the future facilitated by sum() over (order by sales desc)--------------- ,mmix AS ( SELECT - to_char(orderdate,'Mon') _month + to_char(order_date,'Mon') _month ,seq ,promo - ,sum(extract(day from orderdate)*value_usd) dom_wa - --,requestdate-orderdate rlag - ,sum((requestdate-orderdate)*(value_usd)) rlag_wa - --,shipdate - requestdate slag - ,sum((shipdate - requestdate)*(value_usd)) slag_wa + ,sum(extract(day from order_date)*value_usd) dom_wa + --,request_date-order_date rlag + ,sum((request_date-order_date)*(value_usd)) rlag_wa + --,ship_date - request_date slag + ,sum((ship_date - request_date)*(value_usd)) slag_wa ,sum(value_usd) value_usd FROM alldates GROUP BY - to_char(orderdate,'Mon') + to_char(order_date,'Mon') ,seq ,promo - --,extract(day from orderdate) - --,requestdate-orderdate - --,shipdate - requestdate + --,extract(day from order_date) + --,request_date-order_date + --,ship_date - request_date ) +--select * from mmix ,targm AS ( SELECT je.key as month @@ -235,13 +174,14 @@ target AS (select $$replace_request$$::json def) ,s ,cal ,yr - FROM + FROM target JOIN LATERAL json_each(def->'months') je ON true JOIN LATERAL json_to_record(je.value) as r (amount numeric, qty numeric) ON TRUE LEFT OUTER JOIN mseq ON mseq.m = je.key ) +--select * from targm ,mmixp AS ( SELECT _month @@ -255,6 +195,7 @@ target AS (select $$replace_request$$::json def) FROM mmix ) +--select * from mmixp --month cross join mix ,mxm AS ( SELECT @@ -273,11 +214,11 @@ FROM targm t LEFT OUTER JOIN mmixp x ON x._month = ( - SELECT + SELECT _month - FROM - mmixp - ORDER BY + FROM + mmixp + ORDER BY abs(seq - t.s) ASC LIMIT 1 ) @@ -286,114 +227,24 @@ FROM --this basemix is probably join going to be part-bill-ship with all master data joined later since it is not known if any original is salvaged ,basemix AS ( SELECT - null::text plnt ---master data - ,0::numeric(11,0) "ddord#" - ,0::numeric(11,0) "dditm#" - ,0::numeric(11,0) "fgbol#" - ,0::numeric(11,0) "fgent#" - ,0::numeric(9,0) "diinv#" - ,0::numeric(3,0) "dilin#" - ,mxm.promo --history - ,null::text return_reas - ,null::text terms - ,''::text custpo - ,'I' dhincr - ,null::numeric diext - ,null::numeric ditdis - ,null::date dcodat - ,null::date ddqdat - ,null::date dcmdat - ,null::date dhidat - ,sd.fspr - ,null::text remit_to - ,null::text bill_class - ,(regexp_match(jr.bill_cust_descr,'(.*?)(?= - |$)'))[1] bill_cust - ,null:: text bill_rep - ,null::text bill_terr - ,null::text ship_class - ,(regexp_match(jr.ship_cust_descr,'(.*?)(?= - |$)'))[1] ship_cust - ,null::text ship_rep - ,null::text ship_terr - ,null::text quota_rep - ,null::text account - ,null::text shipgrp - ,null::text geo - ,null::text chan - ,null::text orig_ctry - ,null::text orig_prov - ,null::text orig_post - ,null::text dest_ctry - ,null::text dest_prov - ,null::text dest_post - ,(regexp_match(jr.part_descr,'(.*?)(?= - |$)'))[1] part - ,null::text ord_gldc - ,null::text majg - ,null::text ming - ,null::text majs - ,null::text mins - ,null::text gldc - ,null::text glec - ,null::text harm - ,null::text clss - ,null::text brand - ,null::text assc - ,'41010'::text fs_line - ,null::text r_currency - ,null::numeric r_rate - ,null::text c_currency - ,null::numeric c_rate - ,0::numeric(15,5) ddqtoi - ,0::numeric(15,5) ddqtsi - ,0::numeric(15,5) fgqshp - ,0::numeric(15,5) diqtsh - ,mxm.qty*mxm.momix*jr.mix fb_qty --history value - ,0::numeric fb_cst_loc --history part mix - ,0::numeric fb_cst_loc_cur - ,0::numeric fb_cst_loc_fut - ,mxm.amount*mxm.momix*jr.mix fb_val_loc --history value - ,0::numeric fb_val_loc_pl - ,''::text calc_status - ,''::text flag - ,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) orderdate - ,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag requestdate - ,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag shipdate - ,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) adj_orderdate - ,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag adj_requestdate - ,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag adj_shipdate - ,'replace_version' "version" - ,'replace_source'||' volume' iter - -----------------------ui columns-------------------------------- - ,'replace_iterdet' iterdet - ,$$replace_iterdef$$::json iterdef - ,od.ssyr order_season - ,to_char(make_date(mxm.yr + 2020,mxm.cal,mxm.odom),'Mon') order_month - ,sd.ssyr ship_season - ,to_char(make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag,'Mon') ship_month - ,rd.ssyr request_season - ,to_char(make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag,'Mon') request_month - ,jr.part_descr part_descr - ,null::text part_family - ,null::text part_group - ,null::text branding - ,null::text color - ,null::text segm + sd.fspr + ,mxm.promo ,jr.bill_cust_descr - ,null::text billto_group ,jr.ship_cust_descr - ,null::text shipto_group - ,null::text majg_descr - ,null::text ming_descr - ,null::text majs_descr - ,null::text mins_descr - ,null::text mod_chan - ,null::text mod_chansub - ,null::text quota_rep_descr - ,null::text director_descr - ,null::numeric value_loc - ,null::numeric value_usd - ,null::numeric cost_loc - ,null::numeric cost_usd - ,null::numeric units + ,(regexp_match(jr.part_descr,'(.*?)(?= - |$)'))[1] part + ,jr.part_descr + ,substring(jr.part_descr,1,8) part_group + ,mxm.qty*mxm.momix*jr.mix units + ,mxm.amount*mxm.momix*jr.mix value_loc + ,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) order_date + ,to_char(make_date(mxm.yr + 2021,mxm.cal,mxm.odom),'Mon') order_month + ,od.ssyr order_season + ,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag request_date + ,to_char(make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag,'Mon') request_month + ,rd.ssyr request_season + ,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag + slag ship_date + ,to_char(make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag + slag,'Mon') ship_month + ,sd.ssyr ship_season ,jr.mix FROM target @@ -401,387 +252,245 @@ SELECT JOIN LATERAL json_to_record(ae.e) as jr(part_descr text, bill_cust_descr text, ship_cust_descr text, mix numeric) ON true CROSS JOIN mxm LEFT OUTER JOIN gld od ON - make_date(mxm.yr + 2020,mxm.cal,mxm.odom) BETWEEN od.sdat AND od.edat + od.drange @> make_date(mxm.yr + 2021,mxm.cal,mxm.odom) LEFT OUTER JOIN gld rd ON - make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag BETWEEN rd.sdat AND rd.edat + rd.drange @> (make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag) LEFT OUTER JOIN gld sd ON - make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat + sd.drange @> (make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag + slag) ) --SELECT * FROM basemix +,log AS ( + INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING * +) ,final AS ( SELECT - COALESCE(m.avdplt,p.awdplt) plnt --master data - ,b."ddord#" - ,b."dditm#" - ,b."fgbol#" - ,b."fgent#" - ,b."diinv#" - ,b."dilin#" - ,b.promo --history - ,b.return_reas - ,bc.bvterm terms --history cust mix - ,b.custpo - ,b.dhincr - ,b.diext - ,b.ditdis - ,b.dcodat - ,b.ddqdat - ,b.dcmdat - ,b.dhidat - ,b.fspr - ,bc.bvcomp remit_to --master data - ,bc.bvclas bill_class --master data - ,b.bill_cust --history cust mix - ,bc.bvsalm bill_rep --master data - ,bc.bvterr bill_terr --master data - ,sc.bvclas ship_class --master data - ,b.ship_cust --history cust mix - ,sc.bvsalm ship_rep --master data - ,sc.bvterr ship_terr --master data - --quota rep-------------------------------------------- - ,RTRIM( - COALESCE( - --retail items go to currep, or if null go to 90005 - CASE WHEN COALESCE(avgled,awgled) IN ('1RE','1CU') THEN - CASE WHEN bc.bvctry = 'CAN' THEN - --Rachel Bowman - '50300' - ELSE - --retail chain got to Mark Wilkinson - CASE COALESCE(cg.cgrp,bc.bvname) - WHEN 'THE HOME DEPOT' THEN '90005' - WHEN 'DO IT BEST' THEN '90005' - WHEN 'ACE HARDWARE' THEN '90005' - WHEN 'ALDI' THEN '90005' - WHEN 'AMAZON.COM' THEN '90005' - WHEN 'GARDEN RIDGE CORP' THEN '90005' - --all other retail goes to Doran Marable - ELSE '50200' - END - END - ELSE - CASE WHEN COALESCE(avming,awming) = 'B52' THEN - 'PW' - --gdir, ndir go to bill-to rep - ELSE - CASE WHEN bc.bvclas IN ('GDIR','NDIR') THEN - bc.bvsalm - ELSE - sc.bvsalm - END - END - END - ,'' - ) - ) quota_rep - ,coalesce(cg.cgrp,bc.bvname) account - ,coalesce(sg.cgrp,sc.bvname) shipgrp - ,coalesce(t.geo,'UNDEFINED') geo - ,coalesce(c.chan,'UNDEFINED') chan - ,ad.qzcryc orig_ctry - ,ad.qzprov orig_prov - ,ad.qzpost orig_post - ,sc.bvctry dest_ctry - ,sc.bvprcd dest_prov - ,sc.bvpost dest_post - ,b.part --history part mix - ,COALESCE(m.avglcd, p.awgldc) ord_gldc --master data - ,COALESCE(m.avmajg,p.awmajg) majg --master data - ,COALESCE(m.avming,p.awming) ming --master data - ,COALESCE(m.avmajs,p.awmajs) majs --master data - ,COALESCE(m.avmins,p.awmins) mins --master data - ,COALESCE(m.avglcd,p.awgldc) gldc --master data - ,COALESCE(m.avgled,p.awgled) glec --master data - ,COALESCE(m.avharm,p.awharm) harm --master data - ,COALESCE(m.avclss,p.awclss) clss --master data - ,SUBSTR(COALESCE(m."avcpt#",p."awvpt#"),1,1) brand --master data - ,COALESCE(m.avassc,p.awassc) assc --master data - ,b.fs_line --master data - ,bc.bvcurr r_currency --history cust mix - ,rx.rate r_rate --master data - ,copr.curr c_currency --master data - ,cx.rate c_rate --master data - ,b.ddqtoi - ,b.ddqtsi - ,b.fgqshp - ,b.diqtsh - ,b.fb_qty - ,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty fb_cst_loc - ,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty fb_cst_loc_cur - ,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty fb_cst_loc_fut - ,b.fb_val_loc - ,b.fb_val_loc_pl - ,b.calc_status - ,b.flag - ,b.orderdate - ,b.requestdate - ,b.shipdate - ,b.adj_orderdate - ,b.adj_requestdate - ,b.adj_shipdate - ,b."version" - ,b.iter - -----------------------ui columns-------------------------------- - ,b.iterdet - ,b.iterdef - ,b.order_season - ,b.order_month - ,b.ship_season - ,b.ship_month - ,b.request_season - ,b.request_month - ,b.part_descr - ,SUBSTR(b.part,1,3)||coalesce(' - '||F.DESCR,'') part_family - ,SUBSTRING(b.part,1,8)||coalesce(' - '||MD.DESCR,'') part_group - ,COALESCE(MG.GRP,'Unbranded') branding - ,CASE WHEN substring(COALESCE(m.avgled, p.awgled),1,1) <= '2' THEN SUBSTRING(b.part,9,3) ELSE '' END color - ,COALESCE(SEG.SEGM,'Other') segm + b.fspr + ,i.dplt plnt + ,b.promo + ,bc.bvterm terms ,b.bill_cust_descr - ,coalesce(cg.cgrp,bc.bvname) billto_group ,b.ship_cust_descr - ,coalesce(sg.cgrp,sc.bvname) shipto_group - ,COALESCE(m.avmajg,p.awmajg)||COALESCE(' - '||BQDES,'') majg_descr - ,COALESCE(m.avming,p.awming)||COALESCE(' - '||BRDES,'') ming_descr - ,COALESCE(m.avmajs,p.awmajs)||COALESCE(' - '||SJ.BSDES1,'') majs_descr - ,COALESCE(m.avmins,p.awmins)||COALESCE(' - '||SI.BSDES1,'') mins_descr - ,CASE COALESCE(SEG.SEGM,'Other') - WHEN 'Retail' THEN c.RETAIL - ELSE coalesce(c.chan,'UNDEFINED') - END mod_chan - ,CASE COALESCE(SEG.SEGM,'Other') - WHEN 'Retail' THEN c.RETAILSUB - ELSE '' - END mod_chansub - ,repc.repp quota_rep_descr - ,repc.director director_descr - ,b.fb_val_loc value_loc - ,b.fb_val_loc * rx.rate value_usd - ,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty cost_loc - ,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty*cx.rate cost_usd - ,b.fb_qty units + ,(SELECT rcode FROM repc WHERE repp = log.doc->'scenario'->>'quota_rep_descr') dsm + ,log.doc->'scenario'->>'quota_rep_descr' quota_rep_descr + ,(SELECT director FROM repc WHERE repp = log.doc->'scenario'->>'quota_rep_descr') director + ,CASE bc.BVADR6 WHEN '' THEN bc.BVNAME ELSE bc.BVADR6 END billto_group + ,CASE sc.BVADR6 WHEN '' THEN sc.BVNAME ELSE bc.BVADR6 END shipto_group + ,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 + CASE SUBSTRING(sc.bvclas,2,3) + WHEN 'DIS' THEN 'WHS' + ELSE 'DRP' + END + --CASE WHEN RTRIM(SUBSTRING(LTRIM(SC.BVADR7)||SC.BVNAME,1,30)) = RTRIM(SUBSTRING(LTRIM(BC.BVADR7)||BC.BVNAME,1,30)) THEN 'DIS' ELSE 'DRP' END + --everything else does not involve a distributor and is considered direct + ELSE 'DIR' + END chan + ,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) + WHEN 'DIS' THEN 'WHS' + ELSE CASE SUBSTRING(sc.bvclas,1,1) WHEN 'R' THEN 'RDP' ELSE 'DRP' END + END + WHEN 'MAS' THEN 'RMN' + WHEN 'NAT' THEN 'RMN' + ELSE CASE SUBSTRING(sc.bvclas,1,1) WHEN 'R' THEN 'RDI' ELSE 'DIR' END + END chansub + ,null::text chan_retail + ,b.part + ,b.part_descr + ,b.part_group + ,i.branding + ,i.majg||' - '||i.majgd majg_descr + ,i.ming||' - '||i.mingd ming_descr + ,i.majs||' - '||i.majsd majs_descr + ,i.mins||' - '||i.minsd mins_descr + ,seg.segm + ,'41010' fs_line --master data + ,bc.bvcurr r_currency --history cust mix + ,rx.rate r_rate --master data + ,copr.curr c_currency --master data + ,cx.rate c_rate --master data + ,b.units + ,b.value_loc + ,b.value_loc * rx.rate value_usd + ,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.units cost_loc + ,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.units*cx.rate cost_loc + ,'CLOSED' calc_status + ,'SHIPMENT' flag + ,b.order_date + ,b.order_month + ,b.order_season + ,b.request_date + ,b.request_month + ,b.request_season + ,b.ship_date + ,b.ship_month + ,b.ship_season + ,'replace_version' "version" + ,'replace_source'||' volume' iter + ,log.id + ,log.doc->>'comment' "comment" + ,log.doc->>'type' module FROM basemix b - LEFT OUTER JOIN LGDAT.STKMM M ON - M.AVPART = b.PART - LEFT OUTER JOIN LGDAT.STKMP P ON - P.AWPART = b.PART - LEFT OUTER JOIN lgdat.stka a ON - v6part = b.part - AND v6plnt = COALESCE(m.avdplt,p.awdplt) + CROSS JOIN log + LEFT OUTER JOIN rlarp.itemmv i ON + i.item = b.part LEFT OUTER JOIN SEG ON - SEG.GLEC = COALESCE(m.avgled,p.awgled) + SEG.GLEC = i.glec --AND SEG.SEGM <> 'Other' - LEFT OUTER JOIN MG ON - MG.F1 = SUBSTR(b.PART,16,1) - AND MG.MING = COALESCE(m.avming,p.awming) - LEFT OUTER JOIN RLARP.FAMILY F ON - F.F3 = SUBSTR(b.PART,1,3) - LEFT OUTER JOIN MD ON - MD.MOLD = SUBSTR(b.PART,1,8) LEFT OUTER JOIN LGDAT.CUST BC ON - BC.BVCUST = b.BILL_CUST + BC.BVCUST = rtrim(substring(b.bill_cust_descr,1,8)) LEFT OUTER JOIN LGDAT.CUST SC ON - SC.BVCUST = b.SHIP_CUST - LEFT OUTER JOIN RLARP.FFCHNL c ON - c.BILL = bc.bvclas - AND c.SHIP = sc.bvclas - LEFT OUTER JOIN rlarp.ffterr t ON - t.prov = sc.bvprcd AND - t.ctry = sc.bvctry - LEFT OUTER JOIN RLARP.FFCUST CG ON - CG.CUSTN = BC.BVCUST - LEFT OUTER JOIN RLARP.FFCUST SG ON - SG.CUSTN = SC.BVCUST + SC.BVCUST = rtrim(substring(b.ship_cust_descr,1,8)) LEFT OUTER JOIN REPC ON - REPC.RCODE = RTRIM( - COALESCE( - --retail items go to currep, or if null go to 90005 - CASE WHEN COALESCE(avgled,awgled) IN ('1RE','1CU') THEN - CASE WHEN bc.bvctry = 'CAN' THEN - --Rachel Bowman - '50300' - ELSE - --retail chain got to Mark Wilkinson - CASE COALESCE(cg.cgrp,bc.bvname) - WHEN 'THE HOME DEPOT' THEN '90005' - WHEN 'DO IT BEST' THEN '90005' - WHEN 'ACE HARDWARE' THEN '90005' - WHEN 'ALDI' THEN '90005' - WHEN 'AMAZON.COM' THEN '90005' - WHEN 'GARDEN RIDGE CORP' THEN '90005' - --all other retail goes to Doran Marable - ELSE '50200' - END - END - ELSE - CASE WHEN COALESCE(avming,awming) = 'B52' THEN - 'PW' - --gdir, ndir go to bill-to rep - ELSE - CASE WHEN bc.bvclas IN ('GDIR','NDIR') THEN - bc.bvsalm - ELSE - sc.bvsalm - END - END - END - ,'' - ) - ) - LEFT OUTER JOIN SI ON - SI.BSMJCD = COALESCE(m.avmajs,p.awmajs) - AND SI.BSMNCD = COALESCE(m.avmins,p.awmins) - LEFT OUTER JOIN SJ ON - SJ.BSMJCD = COALESCE(m.avmajs,p.awmajs) - LEFT OUTER JOIN LGDAT.MAJG ON - BQGRP = COALESCE(m.avmajg,p.awmajg) - LEFT OUTER JOIN LGDAT.MMGP ON - BRMGRP = COALESCE(m.avming,p.awming) - AND BRGRP = COALESCE(m.avmajg,p.awmajg) + 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 + --Rachel Bowman + '50300' + ELSE + --select customers go to select reps + CASE CASE bc.BVADR6 WHEN '' THEN bc.BVNAME ELSE bc.BVADR6 END + ------Alecia Latini------------------------------- + WHEN 'DO IT BEST' THEN '90006' + WHEN 'ACE HARDWARE' THEN '90006' + WHEN 'ALDI' THEN '90006' + WHEN 'AMAZON.COM' THEN '90006' + WHEN 'GARDEN RIDGE CORP' THEN '90006' --AKA "At Home" + WHEN 'TRUE VALUE' THEN '90006' + WHEN 'WAYFAIR' THEN '90006' + WHEN 'GRIFFIN' THEN '90006' + WHEN 'WAL-MART' THEN '90006' + ------Tony Landino-------------------------------- + WHEN 'THE HOME DEPOT' THEN '50802' + WHEN 'FRED MEYER' THEN '50802' + WHEN 'MENARDS' THEN '50802' + WHEN 'KROGER' THEN '50802' + WHEN 'OCEAN STATE JOBBERS' THEN '50802' + WHEN 'AURORA WHOLESALE' THEN '50802' + WHEN 'LEON KORRAL' THEN '50802' + --all other retail goes to Doran Marable----------- + ELSE '50200' + END + END + --minor group b52 goes to dedicated rep + ELSE + CASE WHEN i.MING = 'B52' THEN + 'PW' + --gdir, ndir go to bill-to rep + ELSE + CASE WHEN bc.bvclas IN ('GDIR','NDIR') THEN + bc.bvsalm + ELSE + sc.bvsalm + END + END + END + ) LEFT OUTER JOIN lgdat.icstm im ON im.cgpart = b.part - AND im.cgplnt = a.v6plnt + AND im.cgplnt = i.dplt LEFT OUTER JOIN lgdat.icstp ip ON ip.chpart = b.part - AND ip.chplnt = a.v6plnt + AND ip.chplnt = i.dplt LEFT OUTER JOIN lgdat.icstr ir ON ir.y0part = b.part - AND ir.y0plnt = a.v6plnt + AND ir.y0plnt = i.dplt LEFT OUTER JOIN lgdat.plnt ON - yaplnt = a.v6plnt + yaplnt = i.dplt LEFT OUTER JOIN copr ON copr.comp = yacomp::text LEFT OUTER JOIN rlarp.ffcret cx ON - cx.perd = '1910' + cx.perd = '2008' AND cx.rtyp = 'MA' AND cx.fcur = copr.curr AND cx.tcur = 'US' LEFT OUTER JOIN rlarp.ffcret rx ON - rx.perd = '1910' + rx.perd = '2008' AND rx.rtyp = 'MA' AND rx.fcur = bc.bvcurr AND rx.tcur = 'US' - LEFT OUTER JOIN LGDAT.ADRS AD ON - AD.QZADR = plnt."yaadr#" ) -/* -,clone_part_meta AS ( - SELECT - 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.segm - ,b.majg_descr - ,b.ming_descr - ,b.majs_descr - ,b.mins_descr - ,b.quota_rep - ,sum(fb_val_loc * r_rate) agg - FROM - rlarp.osm_fcpool b - WHERE - -----------------scenario---------------------------- - where_clause - --probably dont want to include adjustments that have blown away volume and good sources of dating info - -----------------additional params------------------- - AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments - AND adj_orderdate <= adj_shipdate - GROUP BY - 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.segm - ,b.majg_descr - ,b.ming_descr - ,b.majs_descr - ,b.mins_descr - ,b.quota_rep - ORDER BY - agg desc -) -*/ , ins AS ( - INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING * + INSERT INTO rlarp.osm_pool SELECT * FROM final 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 + ---------customer info----------------- + bill_cust_descr + ,billto_group + ,ship_cust_descr + ,shipto_group + ,quota_rep_descr + ,director + ,segm + ,chan + ,chansub + ---------product info------------------ + ,majg_descr + ,ming_descr + ,majs_descr + ,mins_descr + --,brand + --,part_family + ,part_group + ,branding + --,color + ,part_descr + ---------dates------------------------- + ,order_season + ,order_month + ,ship_season + ,ship_month + ,request_season + ,request_month + ,promo + ,version + ,iter + --------values------------------------- + ,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 + ---------customer info----------------- + bill_cust_descr + ,billto_group + ,ship_cust_descr + ,shipto_group + ,quota_rep_descr + ,director + ,segm + ,chan + ,chansub + ---------product info------------------ + ,majg_descr + ,ming_descr + ,majs_descr + ,mins_descr + --,brand + --,part_family + ,part_group + ,branding + --,color + ,part_descr + ---------dates------------------------- + ,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 +SELECT json_agg(row_to_json(insagg)) x from insagg \ No newline at end of file