Compare commits

..

No commits in common. "b881fae5b45d8a4c6fc94a975236b129644e783b" and "061387c1dcf0c47281b9262f11d857a7f7406139" have entirely different histories.

10 changed files with 1941 additions and 1179 deletions

230
index.js
View File

@ -18,8 +18,8 @@ var options = {
passprase: [] passprase: []
}; };
https.createServer(options, server).listen(process.env.nodeport, () => { https.createServer(options,server).listen(process.env.nodeport, () => {
console.log('started on ' + process.env.nodeport) console.log('started on '+ process.env.nodeport)
}); });
//server.listen(3000, () => console.log('started')) //server.listen(3000, () => console.log('started'))
@ -34,7 +34,7 @@ var Postgres = new pg.Client({
}); });
Postgres.connect(); Postgres.connect();
Postgres.FirstRow = function(inSQL, args, inResponse) { Postgres.FirstRow = function (inSQL, args, inResponse) {
Postgres.query(inSQL, args, (err, res) => { Postgres.query(inSQL, args, (err, res) => {
if (err === null) { if (err === null) {
inResponse.json(res.rows[0]); inResponse.json(res.rows[0]);
@ -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('/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 path = './route_meta/scenario_package.sql'
var callback = function(arg) { var callback = function(arg){
res.send(arg) res.send(arg)
}; };
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
callback(err); 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 sql = "";
var args = [req.body.quota_rep]; var args = [req.body.quota_rep];
var path = './route_sql/get_pool.sql'; var path = './route_sql/get_pool.sql';
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
console.log(new Date().toISOString() + "-------------------------get pool:----------------------------"); console.log(new Date().toISOString() + "-------------------------get pool:----------------------------");
console.log(req.body.quota_rep); console.log(req.body.quota_rep);
sql = sql.replace("rep_replace", req.body.quota_rep); sql = sql.replace("rep_replace",req.body.quota_rep);
Postgres.FirstRow(sql, [], res) Postgres.FirstRow(sql,[],res)
}; };
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") 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 sql = "";
var w = ""; var w = "";
@ -103,8 +103,8 @@ server.get('/scenario_package', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/scenario_package.sql'; var path = './route_sql/scenario_package.sql';
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") console.log("fatal error pulling sql file")
@ -112,7 +112,7 @@ server.get('/scenario_package', bodyParser.json(), function(req, res) {
} }
}); });
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
//parse request body into a where clause //parse request body into a where clause
@ -126,14 +126,14 @@ server.get('/scenario_package', bodyParser.json(), function(req, res) {
console.log(new Date().toISOString() + "-------------------------get scenario:------------------------------") console.log(new Date().toISOString() + "-------------------------get scenario:------------------------------")
console.log(req.body); console.log(req.body);
//parse the where clause into the main sql statement //parse the where clause into the main sql statement
sql = sql.replace(new RegExp("where_clause", 'g'), w) sql = sql.replace(new RegExp("where_clause",'g'),w)
//execute the sql and send the result //execute the sql and send the result
//console.log(sql); //console.log(sql);
Postgres.FirstRow(sql, [], res) 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 sql = "";
var w = ""; var w = "";
@ -142,8 +142,8 @@ server.get('/list_changes', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/list_changes.sql'; var path = './route_sql/list_changes.sql';
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") 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; sql = arg;
console.log(new Date().toISOString() + "-------------------------list changes:------------------------------") console.log(new Date().toISOString() +"-------------------------list changes:------------------------------")
console.log(req.body); console.log(req.body);
//parse the where clause into the main sql statement //parse the where clause into the main sql statement
sql = sql.replace(new RegExp("replace_user", 'g'), JSON.stringify(req.body.quota_rep_descr)) sql = sql.replace(new RegExp("replace_user",'g'),JSON.stringify(req.body))
//execute the sql and send the result //execute the sql and send the result
console.log(sql); //console.log(sql);
Postgres.FirstRow(sql, [], res) 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 sql = "";
var w = ""; var w = "";
@ -173,8 +173,8 @@ server.post('/addmonth_v', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/addmonth_vd.sql'; var path = './route_sql/addmonth_vd.sql';
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") console.log("fatal error pulling sql file")
@ -182,7 +182,7 @@ server.post('/addmonth_v', bodyParser.json(), function(req, res) {
} }
}); });
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
//buile where clause expression //buile where clause expression
({ c, w, d } = build_where(req, c, w, d, args)); ({ 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"); res.send("no body was sent");
return; return;
} }
console.log(new Date().toISOString() + "-----------------------------add month volume:---------------------------------"); console.log(new Date().toISOString() +"-----------------------------add month volume:---------------------------------");
req.body.stamp = new Date().toISOString() req.body.stamp = new Date().toISOString()
console.log(req.body); console.log(req.body);
//console.log(args); //console.log(args);
sql = sql.replace(new RegExp("scenario = target_scenario", 'g'), w); 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_increment",'g'),req.body.qty);
sql = sql.replace(new RegExp("target_month", 'g'), req.body.month); 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_version",'g'),req.body.scenario.version);
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); 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("replace_iterdef",'g'),JSON.stringify(req.body));
console.log(sql) 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 sql = "";
var w = ""; var w = "";
@ -215,7 +215,7 @@ server.post('/addmonth_vp', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/addmonth_vupd.sql'; var path = './route_sql/addmonth_vupd.sql';
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
({ c, w, d } = build_where(req, c, w, d, args)); ({ 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"); res.send("no body was sent");
return; 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() req.body.stamp = new Date().toISOString()
console.log(req.body); console.log(req.body);
//console.log(args); //console.log(args);
sql = sql.replace(new RegExp("where_clause", 'g'), w); 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_volume",'g'),req.body.qty);
sql = sql.replace(new RegExp("target_price", 'g'), req.body.amount); 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("target_month",'g'),req.body.month);
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); 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_source",'g'),req.body.source);
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body));
console.log(sql); console.log(sql);
Postgres.FirstRow(sql, [], res) Postgres.FirstRow(sql,[],res)
} }
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") 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 sql = "";
var w = ""; var w = "";
@ -258,7 +258,7 @@ server.post('/scale_v', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/scale_vd.sql'; var path = './route_sql/scale_vd.sql';
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
({ c, w, d } = build_where(req, c, w, d, args)); ({ 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"); res.send("no body was sent");
return; return;
} }
console.log(new Date().toISOString() + "-----------------------scale volume:------------------------------"); console.log(new Date().toISOString() +"-----------------------scale volume:------------------------------");
req.body.stamp = new Date().toISOString() req.body.stamp = new Date().toISOString()
console.log(req.body); console.log(req.body);
//console.log(args); //console.log(args);
sql = sql.replace(new RegExp("where_clause", 'g'), w); 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("incr_qty",'g'),req.body.qty);
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); 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_source",'g'),req.body.source);
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body));
console.log(sql); console.log(sql);
Postgres.FirstRow(sql, [], res) Postgres.FirstRow(sql,[],res)
} }
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") 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 sql = "";
var w = ""; var w = "";
@ -299,7 +299,7 @@ server.post('/scale_p', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/scale_pd.sql'; var path = './route_sql/scale_pd.sql';
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
({ c, w, d } = build_where(req, c, w, d, args)); ({ 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"); res.send("no body was sent");
return; return;
} }
console.log(new Date().toISOString() + "--------------------scale price:-------------------"); console.log(new Date().toISOString() +"--------------------scale price:-------------------");
req.body.stamp = new Date().toISOString() req.body.stamp = new Date().toISOString()
console.log(req.body); console.log(req.body);
//console.log(args); //console.log(args);
sql = sql.replace(new RegExp("where_clause", 'g'), w); 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("target_increment",'g'),req.body.amount);
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); 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_source",'g'),req.body.source);
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body));
console.log(sql); console.log(sql);
Postgres.FirstRow(sql, [], res) Postgres.FirstRow(sql,[],res)
} }
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") 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 sql = "";
var w = ""; var w = "";
@ -340,7 +340,7 @@ server.post('/scale_vp', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/scale_vupd.sql'; var path = './route_sql/scale_vupd.sql';
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
({ c, w, d } = build_where(req, c, w, d, args)); ({ 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"); res.send("no body was sent");
return; return;
} }
console.log(new Date().toISOString() + "--------------------scale volume & price:-------------------"); console.log(new Date().toISOString() +"--------------------scale volume & price:-------------------");
req.body.stamp = new Date().toISOString() req.body.stamp = new Date().toISOString()
console.log(req.body); console.log(req.body);
//console.log(args); //console.log(args);
sql = sql.replace(new RegExp("where_clause", 'g'), w); 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_vol",'g'),req.body.qty);
sql = sql.replace(new RegExp("target_prc", 'g'), req.body.amount); 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_version",'g'),req.body.scenario.version);
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source); 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("replace_iterdef",'g'),JSON.stringify(req.body));
console.log(sql); console.log(sql);
Postgres.FirstRow(sql, [], res) Postgres.FirstRow(sql,[],res)
} }
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") 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 sql = "";
var w = ""; var w = "";
@ -382,7 +382,7 @@ server.post('/new_part', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/new_part.sql'; var path = './route_sql/new_part.sql';
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
({ c, w, d } = build_where(req, c, w, d, args)); ({ 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"); res.send("no body was sent");
return; return;
} }
console.log(new Date().toISOString() + "--------------------new part:-------------------"); console.log(new Date().toISOString() +"--------------------new part:-------------------");
req.body.stamp = new Date().toISOString() req.body.stamp = new Date().toISOString()
console.log(req.body); console.log(req.body);
//console.log(args); //console.log(args);
sql = sql.replace(new RegExp("where_clause", 'g'), w); 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_vol",'g'),req.body.qty);
sql = sql.replace(new RegExp("target_prc", 'g'), req.body.amount); 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_request",'g'),JSON.stringify(req.body));
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); 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_source",'g'),req.body.source);
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body));
console.log(sql); console.log(sql);
Postgres.FirstRow(sql, [], res) Postgres.FirstRow(sql,[],res)
} }
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") 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 sql = "";
var w = ""; var w = "";
@ -425,7 +425,7 @@ server.post('/new_basket', bodyParser.json(), function(req, res) {
var args = []; var args = [];
var path = './route_sql/new_basket.sql'; var path = './route_sql/new_basket.sql';
var callback = function(arg) { var callback = function(arg){
sql = arg; sql = arg;
({ c, w, d } = build_where(req, c, w, d, args)); ({ 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"); res.send("no body was sent");
return; return;
} }
console.log(new Date().toISOString() + "--------------------new basket:-------------------"); console.log(new Date().toISOString() +"--------------------new basket:-------------------");
req.body.stamp = new Date().toISOString() req.body.stamp = new Date().toISOString()
console.log(req.body); console.log(req.body);
//console.log(args); //console.log(args);
sql = sql.replace(new RegExp("where_clause", 'g'), w); 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_vol",'g'),req.body.qty);
sql = sql.replace(new RegExp("target_prc", 'g'), req.body.amount); 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_request",'g'),JSON.stringify(req.body));
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version); 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_source",'g'),req.body.source);
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body)); sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body));
console.log(sql); console.log(sql);
Postgres.FirstRow(sql, [], res) Postgres.FirstRow(sql,[],res)
} }
fs.readFile(path, 'utf8', function(err, data) { fs.readFile(path, 'utf8', function(err, data){
if (!err) { if (!err){
callback(data); callback(data);
} else { } else {
console.log("fatal error pulling sql file") console.log("fatal error pulling sql file")
@ -480,11 +480,13 @@ function build_where(req, c, w, d, args) {
d = d + 1; d = d + 1;
} }
w = w + ")"; w = w + ")";
} else { }
else {
w = w + i + " = '" + req.body.scenario[i] + "'"; w = w + i + " = '" + req.body.scenario[i] + "'";
} }
args.push(req.body.scenario[i]); args.push(req.body.scenario[i]);
c = c + 1; c = c + 1;
}; }
;
return { c, w, d }; return { c, w, d };
} }

View File

@ -50,13 +50,13 @@ SELECT
,plnt ,plnt
,promo ,promo
,terms ,terms
,bill_cust||' - '||bc.bvname bill_cust_descr ,bill_cust||' - '||bc.bvname bill_custd
,ship_cust||' - '||sc.bvname ship_cust_descr ,ship_cust||' - '||sc.bvname ship_custd
,dsm ,dsm
,coalesce(repc.repp,dsm) quota_rep_descr ,coalesce(repc.repp,dsm) dsmd
,repc.director ,repc.director
,account billto_group ,account bill_dba
,shipgrp shipto_group ,shipgrp ship_dba
,chan ,chan
,chansub ,chansub
,CASE seg.segm ,CASE seg.segm
@ -69,40 +69,40 @@ SELECT
ELSE o.chan ELSE o.chan
END chan_retail END chan_retail
,part ,part
,part||coalesce(' - '||i.descr,'') part_descr ,part||coalesce(' - '||i.descr,'') partd
,stlcd part_group ,stlcd partgroup
,brnd branding ,brnd
,o.majg||' - '||i.majgd majg_descr ,o.majg||' - '||i.majgd majgd
,o.ming||' - '||i.mingd ming_descr ,o.ming||' - '||i.mingd mingd
,o.majs||' - '||i.majsd majs_descr ,o.majs||' - '||i.majsd majsd
,o.mins||' - '||i.minsd mins_descr ,o.mins||' - '||i.minsd minsd
,seg.segm ,seg.segm
,fs_line ,fs_line
,r_currency ,r_currency
,r_rate ,r_rate
,c_currency ,c_currency
,c_rate ,c_rate
,fb_qty units ,fb_qty
,fb_val_loc value_loc ,fb_val_loc
,fb_val_loc * r_rate value_usd ,fb_val_loc * r_rate value_usd
,fb_cst_loc cost_loc ,fb_cst_loc
,fb_cst_loc * c_rate cost_usd ,fb_cst_loc * c_rate cost_usd
,calc_status ,calc_status
,flag ,flag
,o.odate order_date ,o.odate
,to_char(CASE WHEN extract(month FROM o.odate) > 6 THEN -5 ELSE 7 END + extract(month FROM o.odate),'FM00')||' - '||to_char(o.odate,'TMMon') order_month ,to_char(CASE WHEN extract(month FROM o.odate) > 6 THEN -5 ELSE 7 END + extract(month FROM o.odate),'FM00')||' - '||to_char(o.odate,'TMMon') omonth
,oseas order_season ,oseas
,rdate request_date ,rdate
,to_char(CASE WHEN extract(month FROM o.rdate) > 6 THEN -5 ELSE 7 END + extract(month FROM o.rdate),'FM00')||' - '||to_char(o.rdate,'TMMon') request_month ,to_char(CASE WHEN extract(month FROM o.rdate) > 6 THEN -5 ELSE 7 END + extract(month FROM o.rdate),'FM00')||' - '||to_char(o.rdate,'TMMon') rmonth
,rseas request_season ,rseas
,sdate ship_date ,sdate
,to_char(CASE WHEN extract(month FROM o.sdate) > 6 THEN -5 ELSE 7 END + extract(month FROM o.sdate),'FM00')||' - '||to_char(o.sdate,'TMMon') ship_month ,to_char(CASE WHEN extract(month FROM o.sdate) > 6 THEN -5 ELSE 7 END + extract(month FROM o.sdate),'FM00')||' - '||to_char(o.sdate,'TMMon') smonth
,sseas ship_season ,sseas
,version ,version
,iter ,iter
,null::int logid ,null::int logid
,null::text "comment" ,null::text "comment"
,null::text module ,null::text iterdet
FROM FROM
rlarp.osmf_dev o rlarp.osmf_dev o
LEFT OUTER JOIN lgdat.cust bc ON LEFT OUTER JOIN lgdat.cust bc ON
@ -129,13 +129,3 @@ FROM
i.item = o.part i.item = o.part
--LIMIT 100 --LIMIT 100
) WITH DATA; ) WITH DATA;
CREATE INDEX osm_qr ON rlarp.osm_pool(quota_rep_descr);
DROP TABLE IF EXISTS rlarp.osm_log;
CREATE TABLE IF NOT EXISTS rlarp.osm_log(id INT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, doc jsonb);
GRANT ALL ON TABLE rlarp.osm_log TO api;
GRANT ALL ON TABLE rlarp.osm_pool TO api;

View File

@ -552,7 +552,7 @@ SELECT
,o.sdate + interval '1 year' --incremented ,o.sdate + interval '1 year' --incremented
,o.sseas + 1 --incremented ,o.sseas + 1 --incremented
,'b21' "version" ,'b21' "version"
,'copy' iter ,'baseline' iter
FROM FROM
baseline o baseline o
LEFT OUTER JOIN gld ON LEFT OUTER JOIN gld ON

View File

@ -6,20 +6,20 @@ SELECT
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------ ---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates------------------------- ---------dates-------------------------
,order_season ,order_season
@ -38,7 +38,7 @@ SELECT
,sum(cost_usd) cost_usd ,sum(cost_usd) cost_usd
,sum(units) units ,sum(units) units
FROM FROM
rlarp.osm_pool rlarp.osm_fcpool
WHERE WHERE
quota_rep_descr = 'rep_replace' quota_rep_descr = 'rep_replace'
GROUP BY GROUP BY
@ -48,20 +48,20 @@ GROUP BY
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------ ---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates------------------------- ---------dates-------------------------
,order_season ,order_season

View File

@ -1,37 +1,21 @@
WITH WITH
list AS materialized ( list AS (
SELECT SELECT
l.doc->>'user' "user", iterdef->>'user' "user",
jsonb_path_query_first(l.doc,'$.scenario.quota_rep_descr')->>0 quota_rep_descr, iterdef->>'stamp' "stamp",
to_char((l.doc->>'stamp')::timestamptz,'YYYY-MM-DD HH:MI:SS') "stamp", iterdef->>'mesasage' "comment",
l.doc->>'message' "comment", round(SUM(fb_val_loc * r_rate)::numeric,2) sales,
jsonb_pretty(l.doc) def, jsonb_pretty(iterdef) def
l.id
FROM FROM
rlarp.osm_log l rlarp.osm_fcpool
WHERE WHERE
l.doc @? '$.scenario.quota_rep_descr ? (@ == replace_user)' iterdef IS NOT NULL
) AND iterdef @> $$replace_user$$::jsonb
,agg as ( GROUP BY
SELECT iterdef->>'user',
list.user iterdef->>'stamp',
,list.quota_rep_descr iterdef->>'message',
,list.stamp iterdef
,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 SELECT
jsonb_agg(row_to_json(agg)::jsonb ORDER BY agg.stamp desc) x from agg jsonb_agg(row_to_json(list)::jsonb) x from list

View File

@ -13,7 +13,6 @@ target AS (select $$replace_request$$::json def)
,to_char(N1FSYP,'FM0000') FSPR ,to_char(N1FSYP,'FM0000') FSPR
,N1SD01 SDAT ,N1SD01 SDAT
,N1ED01 EDAT ,N1ED01 EDAT
,daterange(n1sd01, n1ed01) drange
,to_char(N1ED01,'yymm') CAPR ,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 ,CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(YEAR FROM N1ED01) + 1 ELSE EXTRACT(YEAR FROM N1ED01) END SSYR
@ -31,18 +30,18 @@ target AS (select $$replace_request$$::json def)
SELECT * FROM SELECT * FROM
( (
VALUES VALUES
('01 - Jun',1,6,-1) ('Jun',1,6,-1)
,('02 - Jul',2,7,-1) ,('Jul',2,7,-1)
,('03 - Aug',3,8,-1) ,('Aug',3,8,-1)
,('04 - Sep',4,9,-1) ,('Sep',4,9,-1)
,('05 - Oct',5,10,-1) ,('Oct',5,10,-1)
,('06 - Nov',6,11,-1) ,('Nov',6,11,-1)
,('07 - Dec',7,12,-1) ,('Dec',7,12,-1)
,('08 - Jan',8,1,0) ,('Jan',8,1,0)
,('09 - Feb',9,2,0) ,('Feb',9,2,0)
,('10 - Mar',10,3,0) ,('Mar',10,3,0)
,('11 - Apr',11,4,0) ,('Apr',11,4,0)
,('12 - May',12,5,0) ,('May',12,5,0)
) x(m,s,cal,yr) ) x(m,s,cal,yr)
) )
,SEG AS ( ,SEG AS (
@ -68,6 +67,30 @@ target AS (select $$replace_request$$::json def)
('9TO','Other') ('9TO','Other')
) X(GLEC, SEGM) ) 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 ( ,REPC AS (
SELECT SELECT
LTRIM(RTRIM(C.A9)) RCODE LTRIM(RTRIM(C.A9)) RCODE
@ -80,6 +103,46 @@ target AS (select $$replace_request$$::json def)
WHERE WHERE
C.A2 = 'MM' 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 ( ,copr AS (
SELECT SELECT
LTRIM(RTRIM(A9)) AS COMP, LTRIM(RTRIM(A9)) AS COMP,
@ -106,12 +169,12 @@ target AS (select $$replace_request$$::json def)
,terms ,terms
,order_month ,order_month
,mseq.s seq ,mseq.s seq
,order_date ,orderdate
,request_date ,requestdate
,ship_date ,shipdate
,sum(value_usd) value_usd ,sum(value_usd) value_usd
FROM FROM
rlarp.osm_pool rlarp.osm_fcpool
LEFT OUTER JOIN mseq ON LEFT OUTER JOIN mseq ON
mseq.m = order_month mseq.m = order_month
WHERE WHERE
@ -120,52 +183,50 @@ target AS (select $$replace_request$$::json def)
--probably dont want to include adjustments that have blown away volume and good sources of dating info --probably dont want to include adjustments that have blown away volume and good sources of dating info
-----------------additional params------------------- -----------------additional params-------------------
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND order_date <= ship_date AND adj_orderdate <= adj_shipdate
GROUP BY GROUP BY
promo promo
,terms ,terms
,order_month ,order_month
,mseq.s ,mseq.s
,order_date ,orderdate
,request_date ,requestdate
,ship_date ,shipdate
HAVING HAVING
sum(value_usd) <> 0 sum(value_usd) <> 0
) )
--select * from alldates --select * from alldates
,dom AS ( ,dom AS (
SELECT SELECT
extract(day FROM order_date) DOM extract(day FROM orderdate) DOM
,sum(value_usd) value_usd ,sum(value_usd) value_usd
FROM FROM
alldates alldates
GROUP BY GROUP BY
extract(day FROM order_date) extract(day FROM orderdate)
) )
--select * from dom
---------------------may want ot look at a top-5 mix solution in the future facilitated by sum() over (order by sales desc)--------------- ---------------------may want ot look at a top-5 mix solution in the future facilitated by sum() over (order by sales desc)---------------
,mmix AS ( ,mmix AS (
SELECT SELECT
to_char(order_date,'Mon') _month to_char(orderdate,'Mon') _month
,seq ,seq
,promo ,promo
,sum(extract(day from order_date)*value_usd) dom_wa ,sum(extract(day from orderdate)*value_usd) dom_wa
--,request_date-order_date rlag --,requestdate-orderdate rlag
,sum((request_date-order_date)*(value_usd)) rlag_wa ,sum((requestdate-orderdate)*(value_usd)) rlag_wa
--,ship_date - request_date slag --,shipdate - requestdate slag
,sum((ship_date - request_date)*(value_usd)) slag_wa ,sum((shipdate - requestdate)*(value_usd)) slag_wa
,sum(value_usd) value_usd ,sum(value_usd) value_usd
FROM FROM
alldates alldates
GROUP BY GROUP BY
to_char(order_date,'Mon') to_char(orderdate,'Mon')
,seq ,seq
,promo ,promo
--,extract(day from order_date) --,extract(day from orderdate)
--,request_date-order_date --,requestdate-orderdate
--,ship_date - request_date --,shipdate - requestdate
) )
--select * from mmix
,targm AS ( ,targm AS (
SELECT SELECT
je.key as month je.key as month
@ -181,7 +242,6 @@ target AS (select $$replace_request$$::json def)
LEFT OUTER JOIN mseq ON LEFT OUTER JOIN mseq ON
mseq.m = je.key mseq.m = je.key
) )
--select * from targm
,mmixp AS ( ,mmixp AS (
SELECT SELECT
_month _month
@ -195,7 +255,6 @@ target AS (select $$replace_request$$::json def)
FROM FROM
mmix mmix
) )
--select * from mmixp
--month cross join mix --month cross join mix
,mxm AS ( ,mxm AS (
SELECT SELECT
@ -227,24 +286,114 @@ 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 --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 ( ,basemix AS (
SELECT SELECT
sd.fspr null::text plnt ---master data
,mxm.promo ,0::numeric(11,0) "ddord#"
,jr.bill_cust_descr ,0::numeric(11,0) "dditm#"
,jr.ship_cust_descr ,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 ,(regexp_match(jr.part_descr,'(.*?)(?= - |$)'))[1] part
,jr.part_descr ,null::text ord_gldc
,substring(jr.part_descr,1,8) part_group ,null::text majg
,mxm.qty*mxm.momix*jr.mix units ,null::text ming
,mxm.amount*mxm.momix*jr.mix value_loc ,null::text majs
,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) order_date ,null::text mins
,to_char(make_date(mxm.yr + 2021,mxm.cal,mxm.odom),'Mon') order_month ,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 ,od.ssyr order_season
,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag request_date ,to_char(make_date(mxm.yr + 2020,mxm.cal,mxm.odom),'Mon') order_month
,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 ,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
,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
,jr.mix ,jr.mix
FROM FROM
target target
@ -252,135 +401,66 @@ 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 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 CROSS JOIN mxm
LEFT OUTER JOIN gld od ON LEFT OUTER JOIN gld od ON
od.drange @> make_date(mxm.yr + 2021,mxm.cal,mxm.odom) make_date(mxm.yr + 2020,mxm.cal,mxm.odom) BETWEEN od.sdat AND od.edat
LEFT OUTER JOIN gld rd ON LEFT OUTER JOIN gld rd ON
rd.drange @> (make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag) make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag BETWEEN rd.sdat AND rd.edat
LEFT OUTER JOIN gld sd ON LEFT OUTER JOIN gld sd ON
sd.drange @> (make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag + slag) make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat
) )
--SELECT * FROM basemix --SELECT * FROM basemix
,log AS (
INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING *
)
,final AS ( ,final AS (
SELECT SELECT
b.fspr COALESCE(m.avdplt,p.awdplt) plnt --master data
,i.dplt plnt ,b."ddord#"
,b.promo ,b."dditm#"
,bc.bvterm terms ,b."fgbol#"
,b.bill_cust_descr ,b."fgent#"
,b.ship_cust_descr ,b."diinv#"
,(SELECT rcode FROM repc WHERE repp = log.doc->'scenario'->>'quota_rep_descr') dsm ,b."dilin#"
,log.doc->'scenario'->>'quota_rep_descr' quota_rep_descr ,b.promo --history
,(SELECT director FROM repc WHERE repp = log.doc->'scenario'->>'quota_rep_descr') director ,b.return_reas
,CASE bc.BVADR6 WHEN '' THEN bc.BVNAME ELSE bc.BVADR6 END billto_group ,bc.bvterm terms --history cust mix
,CASE sc.BVADR6 WHEN '' THEN sc.BVNAME ELSE bc.BVADR6 END shipto_group ,b.custpo
,CASE SUBSTRING(bc.bvclas,2,3) ,b.dhincr
--if the bill to class is ditsributor, then it's either warehouse or drop ,b.diext
WHEN 'DIS' THEN ,b.ditdis
--if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse ,b.dcodat
CASE SUBSTRING(sc.bvclas,2,3) ,b.ddqdat
WHEN 'DIS' THEN 'WHS' ,b.dcmdat
ELSE 'DRP' ,b.dhidat
END ,b.fspr
--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 ,bc.bvcomp remit_to --master data
--everything else does not involve a distributor and is considered direct ,bc.bvclas bill_class --master data
ELSE 'DIR' ,b.bill_cust --history cust mix
END chan ,bc.bvsalm bill_rep --master data
,CASE SUBSTRING(bc.bvclas,2,3) ,bc.bvterr bill_terr --master data
WHEN 'DIS' THEN ,sc.bvclas ship_class --master data
--if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse ,b.ship_cust --history cust mix
CASE SUBSTRING(sc.bvclas,2,3) ,sc.bvsalm ship_rep --master data
WHEN 'DIS' THEN 'WHS' ,sc.bvterr ship_terr --master data
ELSE CASE SUBSTRING(sc.bvclas,1,1) WHEN 'R' THEN 'RDP' ELSE 'DRP' END --quota rep--------------------------------------------
END ,RTRIM(
WHEN 'MAS' THEN 'RMN' COALESCE(
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
CROSS JOIN log
LEFT OUTER JOIN rlarp.itemmv i ON
i.item = b.part
LEFT OUTER JOIN SEG ON
SEG.GLEC = i.glec
--AND SEG.SEGM <> 'Other'
LEFT OUTER JOIN LGDAT.CUST BC ON
BC.BVCUST = rtrim(substring(b.bill_cust_descr,1,8))
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(
--retail items go to currep, or if null go to 90005 --retail items go to currep, or if null go to 90005
CASE WHEN i.glec IN ('1RE','1CU') THEN CASE WHEN COALESCE(avgled,awgled) IN ('1RE','1CU') THEN
CASE WHEN bc.bvctry = 'CAN' THEN CASE WHEN bc.bvctry = 'CAN' THEN
--Rachel Bowman --Rachel Bowman
'50300' '50300'
ELSE ELSE
--select customers go to select reps --retail chain got to Mark Wilkinson
CASE CASE bc.BVADR6 WHEN '' THEN bc.BVNAME ELSE bc.BVADR6 END CASE COALESCE(cg.cgrp,bc.bvname)
------Alecia Latini------------------------------- WHEN 'THE HOME DEPOT' THEN '90005'
WHEN 'DO IT BEST' THEN '90006' WHEN 'DO IT BEST' THEN '90005'
WHEN 'ACE HARDWARE' THEN '90006' WHEN 'ACE HARDWARE' THEN '90005'
WHEN 'ALDI' THEN '90006' WHEN 'ALDI' THEN '90005'
WHEN 'AMAZON.COM' THEN '90006' WHEN 'AMAZON.COM' THEN '90005'
WHEN 'GARDEN RIDGE CORP' THEN '90006' --AKA "At Home" WHEN 'GARDEN RIDGE CORP' THEN '90005'
WHEN 'TRUE VALUE' THEN '90006' --all other retail goes to Doran Marable
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' ELSE '50200'
END END
END END
--minor group b52 goes to dedicated rep
ELSE ELSE
CASE WHEN i.MING = 'B52' THEN CASE WHEN COALESCE(avming,awming) = 'B52' THEN
'PW' 'PW'
--gdir, ndir go to bill-to rep --gdir, ndir go to bill-to rep
ELSE ELSE
@ -391,58 +471,273 @@ FROM
END END
END 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.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
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)
LEFT OUTER JOIN SEG ON
SEG.GLEC = COALESCE(m.avgled,p.awgled)
--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
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
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)
LEFT OUTER JOIN lgdat.icstm im ON LEFT OUTER JOIN lgdat.icstm im ON
im.cgpart = b.part im.cgpart = b.part
AND im.cgplnt = i.dplt AND im.cgplnt = a.v6plnt
LEFT OUTER JOIN lgdat.icstp ip ON LEFT OUTER JOIN lgdat.icstp ip ON
ip.chpart = b.part ip.chpart = b.part
AND ip.chplnt = i.dplt AND ip.chplnt = a.v6plnt
LEFT OUTER JOIN lgdat.icstr ir ON LEFT OUTER JOIN lgdat.icstr ir ON
ir.y0part = b.part ir.y0part = b.part
AND ir.y0plnt = i.dplt AND ir.y0plnt = a.v6plnt
LEFT OUTER JOIN lgdat.plnt ON LEFT OUTER JOIN lgdat.plnt ON
yaplnt = i.dplt yaplnt = a.v6plnt
LEFT OUTER JOIN copr ON LEFT OUTER JOIN copr ON
copr.comp = yacomp::text copr.comp = yacomp::text
LEFT OUTER JOIN rlarp.ffcret cx ON LEFT OUTER JOIN rlarp.ffcret cx ON
cx.perd = '2008' cx.perd = '1910'
AND cx.rtyp = 'MA' AND cx.rtyp = 'MA'
AND cx.fcur = copr.curr AND cx.fcur = copr.curr
AND cx.tcur = 'US' AND cx.tcur = 'US'
LEFT OUTER JOIN rlarp.ffcret rx ON LEFT OUTER JOIN rlarp.ffcret rx ON
rx.perd = '2008' rx.perd = '1910'
AND rx.rtyp = 'MA' AND rx.rtyp = 'MA'
AND rx.fcur = bc.bvcurr AND rx.fcur = bc.bvcurr
AND rx.tcur = 'US' 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 ( , ins AS (
INSERT INTO rlarp.osm_pool SELECT * FROM final RETURNING * INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
) )
,insagg AS ( ,insagg AS (
SELECT SELECT
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season
@ -452,37 +747,33 @@ FROM
,promo ,promo
,version ,version
,iter ,iter
--------values-------------------------
,sum(value_loc) value_loc ,sum(value_loc) value_loc
,sum(value_usd) value_usd ,sum(value_usd) value_usd
,sum(cost_loc) cost_loc ,sum(cost_loc) cost_loc
,sum(cost_usd) cost_usd ,sum(cost_usd) cost_usd
,sum(units) units ,sum(units) units
FROM FROM
ins ins
GROUP BY GROUP BY
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season

View File

@ -1,83 +1,157 @@
WITH WITH
target AS (select target_increment incr) target AS (select target_increment incr)
,basemix AS ( ,basemix AS (
SELECT SELECT
fspr plnt ---master data
,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
,promo --history date mix ,promo --history date mix
,null::text return_reas --0
,terms ,terms
,bill_cust_descr --history cust mix ,''::text custpo --0
,ship_cust_descr --history cust mix ,'I' dhincr --0
,dsm ,null::numeric diext
,quota_rep_descr --master data ,null::numeric ditdis
,director ,null::date dcodat --calculated date mix
,billto_group --master data ,null::date ddqdat --calculated date mix
,shipto_group ,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 ,chan --master data
,chansub ,orig_ctry --master data
,chan_retail ,orig_prov --master data
,part ,orig_post --master data
,part_descr ,dest_ctry --master data
,part_group ,dest_prov --master data
,branding ,dest_post --master data
,majg_descr ,part --history part mix
,ming_descr ,ord_gldc --master data
,majs_descr ,majg --master data
,mins_descr ,ming --master data
,segm ,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 ,fs_line --master data
,r_currency --history cust mix ,r_currency --history cust mix
,r_rate --master data ,r_rate --master data
,c_currency --master data ,c_currency --master data
,c_rate --master data ,c_rate --master data
,sum(coalesce(units,0)) units --history value ,0::numeric(15,5) ddqtoi --0
,sum(coalesce(value_loc,0)) value_loc --history value ,0::numeric(15,5) ddqtsi --0
,sum(coalesce(value_usd,0)) value_usd --0 ,0::numeric(15,5) fgqshp --0
,sum(coalesce(cost_loc,0)) cost_loc --history part mix ,0::numeric(15,5) diqtsh --0
,sum(coalesce(cost_usd,0)) cost_usd ,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 ,calc_status --0
,flag --0 ,flag --0
,order_date --history date mix ,orderdate --history date mix
,order_month ,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_season
,request_date --history date mix ,order_month
,request_month
,request_season
,ship_date --history date mix
,ship_month
,ship_season ,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 FROM
rlarp.osm_pool rlarp.osm_fcpool
WHERE WHERE
-----------------scenario---------------------------- -----------------scenario----------------------------
where_clause where_clause
-----------------additional params------------------- -----------------additional params-------------------
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND order_date <= ship_date AND adj_orderdate <= adj_shipdate
GROUP BY GROUP BY
fspr plnt ---master data
,plnt ---master data ,promo
,promo --history date mix
,terms ,terms
,bill_cust_descr --history cust mix ,remit_to --master data
,ship_cust_descr --history cust mix ,bill_class --master data
,dsm ,bill_cust --history cust mix
,quota_rep_descr --master data ,bill_rep --master data
,director ,bill_terr --master data
,billto_group --master data ,ship_class --master data
,shipto_group ,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 ,chan --master data
,chansub ,orig_ctry --master data
,chan_retail ,orig_prov --master data
,part ,orig_post --master data
,part_descr ,dest_ctry --master data
,part_group ,dest_prov --master data
,branding ,dest_post --master data
,majg_descr ,part --history part mix
,ming_descr ,ord_gldc --master data
,majs_descr ,majg --master data
,mins_descr ,ming --master data
,segm ,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 ,fs_line --master data
,r_currency --history cust mix ,r_currency --history cust mix
,r_rate --master data ,r_rate --master data
@ -85,29 +159,51 @@ target AS (select target_increment incr)
,c_rate --master data ,c_rate --master data
,calc_status --0 ,calc_status --0
,flag --0 ,flag --0
,order_date --history date mix ,orderdate --history date mix
,order_month ,requestdate --history date mix
,shipdate --history date mix
,adj_orderdate --history
,adj_requestdate --history
,adj_shipdate --history
---------------ui columns-------------------------
,order_season ,order_season
,request_date --history date mix ,order_month
,request_month
,request_season
,ship_date --history date mix
,ship_month
,ship_season ,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
) )
,scale AS ( ,scale AS (
SELECT SELECT
(SELECT incr::numeric FROM target) incr (SELECT incr::numeric FROM target) incr
,(SELECT sum(value_loc * r_rate) FROM basemix) base ,(SELECT sum(fb_val_loc * r_rate) FROM basemix) base
,CASE WHEN (SELECT sum(value_loc * r_rate) FROM basemix) = 0 THEN ,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM basemix) = 0 THEN
0 0
ELSE ELSE
(SELECT incr::numeric FROM target)/(SELECT sum(value_loc * r_rate) FROM basemix) (SELECT incr::numeric FROM target)/(SELECT sum(fb_val_loc * r_rate) FROM basemix)
END factor END factor
,CASE WHEN (SELECT sum(value_loc * r_rate) FROM basemix) = 0 THEN ,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM basemix) = 0 THEN
CASE WHEN ((SELECT incr::numeric FROM target) - (SELECT sum(value_loc * r_rate) FROM basemix)) <> 0 THEN CASE WHEN ((SELECT incr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM basemix)) <> 0 THEN
--if the base value is -0- but the target value hasn't been achieved, derive a price to apply --if the base value is -0- but the target value hasn't been achieved, derive a price to apply
((SELECT incr::numeric FROM target) - (SELECT sum(value_loc * r_rate) FROM basemix))/(SELECT sum(units) FROM basemix) ((SELECT incr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM basemix))/(SELECT sum(fb_qty) FROM basemix)
ELSE ELSE
0 0
END END
@ -115,95 +211,149 @@ target AS (select target_increment incr)
0 0
END mod_price END mod_price
) )
,log AS (
INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING *
)
,final AS ( ,final AS (
SELECT SELECT
fspr b.plnt --master data
,plnt ---master data ,b."ddord#" --0
,promo --history date mix ,b."dditm#" --0
,terms ,b."fgbol#" --0
,bill_cust_descr --history cust mix ,b."fgent#" --0
,ship_cust_descr --history cust mix ,b."diinv#" --0
,dsm ,b."dilin#" --0
,quota_rep_descr --master data ,b.promo --history date mix
,director ,b.return_reas --0
,billto_group --master data ,b.terms --history cust mix
,shipto_group ,b.custpo --0
,chan --master data ,b.dhincr --0
,chansub ,b.diext --0
,chan_retail ,b.ditdis --0
,part ,b.dcodat --calculated date mix
,part_descr ,b.ddqdat --calculated date mix
,part_group ,b.dcmdat --calculated date mix
,branding ,b.dhidat --calculated date mix
,majg_descr ,b.fspr --calculated date mix
,ming_descr ,b.remit_to --master data
,majs_descr ,b.bill_class --master data
,mins_descr ,b.bill_cust --history cust mix
,segm ,b.bill_rep --master data
,fs_line --master data ,b.bill_terr --master data
,r_currency --history cust mix ,b.ship_class --master data
,r_rate --master data ,b.ship_cust --history cust mix
,c_currency --master data ,b.ship_rep --master data
,c_rate --master data ,b.ship_terr --master data
,0::numeric units ,b.quota_rep --master data
,(CASE WHEN s.factor = 0 THEN b.units * s.mod_price/b.r_rate ELSE b.value_loc*s.factor END)::numeric value_loc ,b.account --master data
,(CASE WHEN s.factor = 0 THEN b.units * s.mod_price ELSE b.value_usd*s.factor END)::numeric value_usd ,b.shipgrp --master data
,0::numeric cost_loc ,b.geo --master data
,0::numeric cost_usd ,b.chan --master data
,calc_status --0 ,b.orig_ctry --master data
,flag --0 ,b.orig_prov --master data
,order_date --history date mix ,b.orig_post --master data
,order_month ,b.dest_ctry --master data
,order_season ,b.dest_prov --master data
,request_date --history date mix ,b.dest_post --master data
,request_month ,b.part --history part mix
,request_season ,b.ord_gldc --master data
,ship_date --history date mix ,b.majg --master data
,ship_month ,b.ming --master data
,ship_season ,b.majs --master data
,'replace_version' "version" ,b.mins --master data
,'replace_source'||' price' iter ,b.gldc --master data
,log.id ,b.glec --master data
,log.doc->>'comment' "comment" ,b.harm --master data
,log.doc->>'type' module ,b.clss --master data
FROM ,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
,0 fb_qty
,0 fb_cst_loc
,0 fb_cst_loc_cur
,0 fb_cst_loc_fut
--,b.fb_val_loc*s.factor fb_val_loc
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc*s.factor END)::numeric fb_val_loc
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc_pl*s.factor END)::numeric fb_val_loc_pl
--,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
,'replace_version' "version" --calculated
,'replace_source'||' price' iter --calculated
-----------------------ui columns--------------------------------
,'replace_iterdet' iterdet
,$$replace_iterdef$$::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
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc*s.factor END)::numeric value_loc
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price ELSE b.fb_val_loc*s.factor*r_rate END)::numeric value_usd
,0 cost_loc
,0 cost_usd
,0 units
FROM
basemix b basemix b
CROSS JOIN scale s CROSS JOIN scale s
CROSS JOIN log WHERE
WHERE
s.factor <> 0 or s.mod_price <> 0 s.factor <> 0 or s.mod_price <> 0
) )
--select sum(value_usd), count(*) from final --select sum(value_usd), count(*) from final
, ins AS ( , ins AS (
INSERT INTO rlarp.osm_pool SELECT * FROM final RETURNING * INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
) )
,insagg AS ( ,insagg AS (
SELECT SELECT
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season
@ -213,37 +363,33 @@ target AS (select target_increment incr)
,promo ,promo
,version ,version
,iter ,iter
--------values-------------------------
,sum(value_loc) value_loc ,sum(value_loc) value_loc
,sum(value_usd) value_usd ,sum(value_usd) value_usd
,sum(cost_loc) cost_loc ,sum(cost_loc) cost_loc
,sum(cost_usd) cost_usd ,sum(cost_usd) cost_usd
,sum(units) units ,sum(units) units
FROM FROM
ins ins
GROUP BY GROUP BY
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season

View File

@ -2,17 +2,18 @@ WITH
target AS (select incr_qty qincr) target AS (select incr_qty qincr)
,testv AS ( ,testv AS (
SELECT SELECT
sum(units) tot sum(fb_qty) tot
,sum(units) FILTER (WHERE iter = 'copy') base ,sum(fb_qty) FILTER (WHERE iter = 'copy') base
,sum(units) FILTER (WHERE module = 'new basket') newpart ,sum(fb_qty) FILTER (WHERE iterdef->>'type' = 'new basket') newpart
FROM FROM
rlarp.osm_pool p rlarp.osm_fcpool
WHERE WHERE
-----------------scenario---------------------------- -----------------scenario----------------------------
where_clause where_clause
-----------------additional params------------------- -----------------additional params-------------------
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND order_date <= ship_date AND adj_orderdate <= adj_shipdate
) )
,flagv AS ( ,flagv AS (
SELECT SELECT
@ -37,53 +38,115 @@ target AS (select incr_qty qincr)
) )
--ever need receive a target of -0- qty but value <> 0? --ever need receive a target of -0- qty but value <> 0?
,basemix AS ( ,basemix AS (
SELECT SELECT
fspr plnt ---master data
,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
,promo --history date mix ,promo --history date mix
,null::text return_reas --0
,terms ,terms
,bill_cust_descr --history cust mix ,''::text custpo --0
,ship_cust_descr --history cust mix ,'I' dhincr --0
,dsm ,null::numeric diext
,quota_rep_descr --master data ,null::numeric ditdis
,director ,null::date dcodat --calculated date mix
,billto_group --master data ,null::date ddqdat --calculated date mix
,shipto_group ,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 ,chan --master data
,chansub ,orig_ctry --master data
,chan_retail ,orig_prov --master data
,part ,orig_post --master data
,part_descr ,dest_ctry --master data
,part_group ,dest_prov --master data
,branding ,dest_post --master data
,majg_descr ,part --history part mix
,ming_descr ,ord_gldc --master data
,majs_descr ,majg --master data
,mins_descr ,ming --master data
,segm ,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 ,fs_line --master data
,r_currency --history cust mix ,r_currency --history cust mix
,r_rate --master data ,r_rate --master data
,c_currency --master data ,c_currency --master data
,c_rate --master data ,c_rate --master data
,sum(coalesce(units,0)) units --history value ,0::numeric(15,5) ddqtoi --0
,sum(coalesce(value_loc,0)) value_loc --history value ,0::numeric(15,5) ddqtsi --0
,sum(coalesce(value_usd,0)) value_usd --0 ,0::numeric(15,5) fgqshp --0
,sum(coalesce(cost_loc,0)) cost_loc --history part mix ,0::numeric(15,5) diqtsh --0
,sum(coalesce(cost_usd,0)) cost_usd ,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 ,calc_status --0
,flag --0 ,flag --0
,order_date --history date mix ,orderdate --history date mix
,order_month ,requestdate --history date mix
,shipdate --history date mix
,adj_orderdate --history
,adj_requestdate --history
,adj_shipdate --history
,null::text "version" --calculated
,null::text iter --calculated
---------------ui columns-------------------------
,order_season ,order_season
,request_date --history date mix ,order_month
,request_month
,request_season
,ship_date --history date mix
,ship_month
,ship_season ,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 FROM
rlarp.osm_pool rlarp.osm_fcpool
WHERE WHERE
-----------------scenario---------------------------- -----------------scenario----------------------------
where_clause where_clause
@ -91,34 +154,46 @@ target AS (select incr_qty qincr)
AND CASE (SELECT flag FROM flagv) AND CASE (SELECT flag FROM flagv)
WHEN 'scale all' THEN true WHEN 'scale all' THEN true
WHEN 'scale copy' THEN iter = 'copy' WHEN 'scale copy' THEN iter = 'copy'
WHEN 'scale new part' THEN module = 'new basket' WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
END END
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND order_date <= ship_date AND adj_orderdate <= adj_shipdate
GROUP BY GROUP BY
fspr plnt ---master data
,plnt ---master data ,promo
,promo --history date mix
,terms ,terms
,bill_cust_descr --history cust mix ,remit_to --master data
,ship_cust_descr --history cust mix ,bill_class --master data
,dsm ,bill_cust --history cust mix
,quota_rep_descr --master data ,bill_rep --master data
,director ,bill_terr --master data
,billto_group --master data ,ship_class --master data
,shipto_group ,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 ,chan --master data
,chansub ,orig_ctry --master data
,chan_retail ,orig_prov --master data
,part ,orig_post --master data
,part_descr ,dest_ctry --master data
,part_group ,dest_prov --master data
,branding ,dest_post --master data
,majg_descr ,part --history part mix
,ming_descr ,ord_gldc --master data
,majs_descr ,majg --master data
,mins_descr ,ming --master data
,segm ,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 ,fs_line --master data
,r_currency --history cust mix ,r_currency --history cust mix
,r_rate --master data ,r_rate --master data
@ -126,111 +201,185 @@ target AS (select incr_qty qincr)
,c_rate --master data ,c_rate --master data
,calc_status --0 ,calc_status --0
,flag --0 ,flag --0
,order_date --history date mix ,orderdate --history date mix
,order_month ,requestdate --history date mix
,shipdate --history date mix
,adj_orderdate --history
,adj_requestdate --history
,adj_shipdate --history
---------------ui columns-------------------------
,order_season ,order_season
,request_date --history date mix ,order_month
,request_month
,request_season
,ship_date --history date mix
,ship_month
,ship_season ,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
) )
--SELECT * FROM basemix --SELECT * FROM basemix
,scale AS ( ,scale AS (
SELECT SELECT
(SELECT qincr::numeric FROM target) incr (SELECT qincr::numeric FROM target) incr
,(SELECT sum(value_loc *r_rate) FROM basemix) base ,(SELECT sum(fb_val_loc *r_rate) FROM basemix) base
,(SELECT qincr FROM target)/(SELECT SUM(units) FROM basemix) factor ,(SELECT qincr FROM target)/(SELECT SUM(fb_qty) FROM basemix) factor
) )
--select * from scale --select * from scale
,log AS (
INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING *
)
,final AS ( ,final AS (
SELECT SELECT
fspr b.plnt --master data
,plnt ---master data ,b."ddord#" --0
,promo --history date mix ,b."dditm#" --0
,terms ,b."fgbol#" --0
,bill_cust_descr --history cust mix ,b."fgent#" --0
,ship_cust_descr --history cust mix ,b."diinv#" --0
,dsm ,b."dilin#" --0
,quota_rep_descr --master data ,b.promo --history date mix
,director ,b.return_reas --0
,billto_group --master data ,b.terms --history cust mix
,shipto_group ,b.custpo --0
,chan --master data ,b.dhincr --0
,chansub ,b.diext --0
,chan_retail ,b.ditdis --0
,part ,b.dcodat --calculated date mix
,part_descr ,b.ddqdat --calculated date mix
,part_group ,b.dcmdat --calculated date mix
,branding ,b.dhidat --calculated date mix
,majg_descr ,b.fspr --calculated date mix
,ming_descr ,b.remit_to --master data
,majs_descr ,b.bill_class --master data
,mins_descr ,b.bill_cust --history cust mix
,segm ,b.bill_rep --master data
,fs_line --master data ,b.bill_terr --master data
,r_currency --history cust mix ,b.ship_class --master data
,r_rate --master data ,b.ship_cust --history cust mix
,c_currency --master data ,b.ship_rep --master data
,c_rate --master data ,b.ship_terr --master data
,units*s.factor ,b.quota_rep --master data
,value_loc*s.factor value_loc ,b.account --master data
,value_usd*s.factor value_usd ,b.shipgrp --master data
,cost_loc*s.factor cost_loc ,b.geo --master data
,cost_usd*s.factor cost_usd ,b.chan --master data
,calc_status --0 ,b.orig_ctry --master data
,flag --0 ,b.orig_prov --master data
,order_date --history date mix ,b.orig_post --master data
,order_month ,b.dest_ctry --master data
,order_season ,b.dest_prov --master data
,request_date --history date mix ,b.dest_post --master data
,request_month ,b.part --history part mix
,request_season ,b.ord_gldc --master data
,ship_date --history date mix ,b.majg --master data
,ship_month ,b.ming --master data
,ship_season ,b.majs --master data
,'replace_version' "version" ,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
,'replace_version' "version" --calculated
,'replace_source'||' volume' iter ,'replace_source'||' volume' iter
,log.id -----------------------ui columns--------------------------------
,log.doc->>'comment' "comment" ,'replace_iterdet' iterdet
,log.doc->>'type' module ,$$replace_iterdef$$::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 FROM
basemix b basemix b
CROSS JOIN scale s CROSS JOIN scale s
CROSS JOIN log
) )
--select sum(value_usd), count(*) from final --select sum(value_usd), count(*) from final
, ins AS ( , ins AS (
INSERT INTO rlarp.osm_pool SELECT * FROM final RETURNING * INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
) )
,insagg AS ( ,insagg AS (
SELECT SELECT
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season
@ -240,37 +389,33 @@ FROM
,promo ,promo
,version ,version
,iter ,iter
--------values-------------------------
,sum(value_loc) value_loc ,sum(value_loc) value_loc
,sum(value_usd) value_usd ,sum(value_usd) value_usd
,sum(cost_loc) cost_loc ,sum(cost_loc) cost_loc
,sum(cost_usd) cost_usd ,sum(cost_usd) cost_usd
,sum(units) units ,sum(units) units
FROM FROM
ins ins
GROUP BY GROUP BY
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season

View File

@ -2,17 +2,17 @@ WITH
target AS (select target_vol vincr, target_prc pincr) target AS (select target_vol vincr, target_prc pincr)
,testv AS ( ,testv AS (
SELECT SELECT
sum(units) tot sum(fb_qty) tot
,sum(units) FILTER (WHERE iter = 'copy') base ,sum(fb_qty) FILTER (WHERE iter = 'copy') base
,sum(units) FILTER (WHERE module = 'new basket') newpart ,sum(fb_qty) FILTER (WHERE iterdef->>'type' = 'new basket') newpart
FROM FROM
rlarp.osm_pool rlarp.osm_fcpool
WHERE WHERE
-----------------scenario---------------------------- -----------------scenario----------------------------
where_clause where_clause
-----------------additional params------------------- -----------------additional params-------------------
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND order_date <= ship_date AND adj_orderdate <= adj_shipdate
) )
,flagv AS ( ,flagv AS (
@ -38,52 +38,114 @@ target AS (select target_vol vincr, target_prc pincr)
) )
,basemix AS ( ,basemix AS (
SELECT SELECT
fspr plnt ---master data
,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
,promo --history date mix ,promo --history date mix
,null::text return_reas --0
,terms ,terms
,bill_cust_descr --history cust mix ,''::text custpo --0
,ship_cust_descr --history cust mix ,'I' dhincr --0
,dsm ,null::numeric diext
,quota_rep_descr --master data ,null::numeric ditdis
,director ,null::date dcodat --calculated date mix
,billto_group --master data ,null::date ddqdat --calculated date mix
,shipto_group ,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 ,chan --master data
,chansub ,orig_ctry --master data
,chan_retail ,orig_prov --master data
,part ,orig_post --master data
,part_descr ,dest_ctry --master data
,part_group ,dest_prov --master data
,branding ,dest_post --master data
,majg_descr ,part --history part mix
,ming_descr ,ord_gldc --master data
,majs_descr ,majg --master data
,mins_descr ,ming --master data
,segm ,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 ,fs_line --master data
,r_currency --history cust mix ,r_currency --history cust mix
,r_rate --master data ,r_rate --master data
,c_currency --master data ,c_currency --master data
,c_rate --master data ,c_rate --master data
,sum(coalesce(units,0)) units --history value ,0::numeric(15,5) ddqtoi --0
,sum(coalesce(value_loc,0)) value_loc --history value ,0::numeric(15,5) ddqtsi --0
,sum(coalesce(value_usd,0)) value_usd --0 ,0::numeric(15,5) fgqshp --0
,sum(coalesce(cost_loc,0)) cost_loc --history part mix ,0::numeric(15,5) diqtsh --0
,sum(coalesce(cost_usd,0)) cost_usd ,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 ,calc_status --0
,flag --0 ,flag --0
,order_date --history date mix ,orderdate --history date mix
,order_month ,requestdate --history date mix
,shipdate --history date mix
,adj_orderdate --history
,adj_requestdate --history
,adj_shipdate --history
,null::text "version" --calculated
,null::text iter --calculated
---------------ui columns-------------------------
,order_season ,order_season
,request_date --history date mix ,order_month
,request_month
,request_season
,ship_date --history date mix
,ship_month
,ship_season ,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 FROM
rlarp.osm_pool rlarp.osm_fcpool
WHERE WHERE
-----------------scenario---------------------------- -----------------scenario----------------------------
where_clause where_clause
@ -91,34 +153,46 @@ target AS (select target_vol vincr, target_prc pincr)
AND CASE (SELECT flag FROM flagv) AND CASE (SELECT flag FROM flagv)
WHEN 'scale all' THEN true WHEN 'scale all' THEN true
WHEN 'scale copy' THEN iter = 'copy' WHEN 'scale copy' THEN iter = 'copy'
WHEN 'scale new part' THEN module = 'new basket' WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
END END
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND order_date <= ship_date AND adj_orderdate <= adj_shipdate
GROUP BY GROUP BY
fspr plnt ---master data
,plnt ---master data ,promo
,promo --history date mix
,terms ,terms
,bill_cust_descr --history cust mix ,remit_to --master data
,ship_cust_descr --history cust mix ,bill_class --master data
,dsm ,bill_cust --history cust mix
,quota_rep_descr --master data ,bill_rep --master data
,director ,bill_terr --master data
,billto_group --master data ,ship_class --master data
,shipto_group ,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 ,chan --master data
,chansub ,orig_ctry --master data
,chan_retail ,orig_prov --master data
,part ,orig_post --master data
,part_descr ,dest_ctry --master data
,part_group ,dest_prov --master data
,branding ,dest_post --master data
,majg_descr ,part --history part mix
,ming_descr ,ord_gldc --master data
,majs_descr ,majg --master data
,mins_descr ,ming --master data
,segm ,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 ,fs_line --master data
,r_currency --history cust mix ,r_currency --history cust mix
,r_rate --master data ,r_rate --master data
@ -126,97 +200,174 @@ target AS (select target_vol vincr, target_prc pincr)
,c_rate --master data ,c_rate --master data
,calc_status --0 ,calc_status --0
,flag --0 ,flag --0
,order_date --history date mix ,orderdate --history date mix
,order_month ,requestdate --history date mix
,shipdate --history date mix
,adj_orderdate --history
,adj_requestdate --history
,adj_shipdate --history
---------------ui columns-------------------------
,order_season ,order_season
,request_date --history date mix ,order_month
,request_month
,request_season
,ship_date --history date mix
,ship_month
,ship_season ,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 ( ,vscale AS (
SELECT SELECT
(SELECT vincr::numeric FROM target) incr (SELECT vincr::numeric FROM target) incr
,(SELECT sum(units)::numeric FROM basemix) base ,(SELECT sum(fb_qty)::numeric FROM basemix) base
,(SELECT vincr::numeric FROM target)/(SELECT sum(units)::numeric FROM basemix) factor ,(SELECT vincr::numeric FROM target)/(SELECT sum(fb_qty)::numeric FROM basemix) factor
) )
--select * from vscale --select * from vscale
,log AS (
INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING *
)
,volume AS ( ,volume AS (
SELECT SELECT
fspr b.plnt --master data
,plnt ---master data ,b."ddord#" --0
,promo --history date mix ,b."dditm#" --0
,terms ,b."fgbol#" --0
,bill_cust_descr --history cust mix ,b."fgent#" --0
,ship_cust_descr --history cust mix ,b."diinv#" --0
,dsm ,b."dilin#" --0
,quota_rep_descr --master data ,b.promo --history date mix
,director ,b.return_reas --0
,billto_group --master data ,b.terms --history cust mix
,shipto_group ,b.custpo --0
,chan --master data ,b.dhincr --0
,chansub ,b.diext --0
,chan_retail ,b.ditdis --0
,part ,b.dcodat --calculated date mix
,part_descr ,b.ddqdat --calculated date mix
,part_group ,b.dcmdat --calculated date mix
,branding ,b.dhidat --calculated date mix
,majg_descr ,b.fspr --calculated date mix
,ming_descr ,b.remit_to --master data
,majs_descr ,b.bill_class --master data
,mins_descr ,b.bill_cust --history cust mix
,segm ,b.bill_rep --master data
,fs_line --master data ,b.bill_terr --master data
,r_currency --history cust mix ,b.ship_class --master data
,r_rate --master data ,b.ship_cust --history cust mix
,c_currency --master data ,b.ship_rep --master data
,c_rate --master data ,b.ship_terr --master data
,units*s.factor units ,b.quota_rep --master data
,value_loc*s.factor value_loc ,b.account --master data
,value_usd*s.factor value_usd ,b.shipgrp --master data
,cost_loc*s.factor cost_loc ,b.geo --master data
,cost_usd*s.factor cost_usd ,b.chan --master data
,calc_status --0 ,b.orig_ctry --master data
,flag --0 ,b.orig_prov --master data
,order_date --history date mix ,b.orig_post --master data
,order_month ,b.dest_ctry --master data
,order_season ,b.dest_prov --master data
,request_date --history date mix ,b.dest_post --master data
,request_month ,b.part --history part mix
,request_season ,b.ord_gldc --master data
,ship_date --history date mix ,b.majg --master data
,ship_month ,b.ming --master data
,ship_season ,b.majs --master data
,'replace_version' "version" ,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
,'replace_version' "version" --calculated
,'replace_source'||' volume' iter ,'replace_source'||' volume' iter
,log.id -----------------------ui columns--------------------------------
,log.doc->>'comment' "comment" ,'replace_iterdet' iterdet
,log.doc->>'type' module ,$$replace_iterdef$$::jsonb iterdef
FROM ,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 basemix b
CROSS JOIN vscale s CROSS JOIN vscale s
CROSS JOIN log
) )
,pscale AS ( ,pscale AS (
SELECT SELECT
(SELECT pincr::numeric FROM target) incr (SELECT pincr::numeric FROM target) incr
,(SELECT sum(value_loc * r_rate) FROM volume) base ,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
,CASE WHEN (SELECT sum(value_loc * r_rate) FROM volume) = 0 THEN ,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM volume) = 0 THEN
--if the base value is -0- scaling will not work, need to generate price, factor goes to -0- --if the base value is -0- scaling will not work, need to generate price, factor goes to -0-
0 0
ELSE ELSE
--if the target $amount is not achieved, adjust further --if the target $amount is not achieved, adjust further
((SELECT pincr::numeric FROM target)-(SELECT sum(value_loc * r_rate) FROM volume))/(SELECT sum(value_loc * r_rate) FROM volume) ((SELECT pincr::numeric FROM target)-(SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume)
END factor END factor
,CASE WHEN (SELECT sum(value_loc * r_rate) FROM volume) = 0 THEN ,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM volume) = 0 THEN
CASE WHEN ((SELECT pincr::numeric FROM target) - (SELECT sum(value_loc * r_rate) FROM volume)) <> 0 THEN CASE WHEN ((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume)) <> 0 THEN
--if the base value is -0- but the target value hasn't been achieved, derive a price to apply --if the base value is -0- but the target value hasn't been achieved, derive a price to apply
((SELECT pincr::numeric FROM target) - (SELECT sum(value_loc * r_rate) FROM volume))/(SELECT sum(units) FROM volume) ((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_qty) FROM volume)
ELSE ELSE
0 0
END END
@ -227,90 +378,147 @@ FROM
--select * from pscale --select * from pscale
,pricing AS ( ,pricing AS (
SELECT SELECT
fspr b.plnt --master data
,plnt ---master data ,b."ddord#" --0
,promo --history date mix ,b."dditm#" --0
,terms ,b."fgbol#" --0
,bill_cust_descr --history cust mix ,b."fgent#" --0
,ship_cust_descr --history cust mix ,b."diinv#" --0
,dsm ,b."dilin#" --0
,quota_rep_descr --master data ,b.promo --history date mix
,director ,b.return_reas --0
,billto_group --master data ,b.terms --history cust mix
,shipto_group ,b.custpo --0
,chan --master data ,b.dhincr --0
,chansub ,b.diext --0
,chan_retail ,b.ditdis --0
,part ,b.dcodat --calculated date mix
,part_descr ,b.ddqdat --calculated date mix
,part_group ,b.dcmdat --calculated date mix
,branding ,b.dhidat --calculated date mix
,majg_descr ,b.fspr --calculated date mix
,ming_descr ,b.remit_to --master data
,majs_descr ,b.bill_class --master data
,mins_descr ,b.bill_cust --history cust mix
,segm ,b.bill_rep --master data
,fs_line --master data ,b.bill_terr --master data
,r_currency --history cust mix ,b.ship_class --master data
,r_rate --master data ,b.ship_cust --history cust mix
,c_currency --master data ,b.ship_rep --master data
,c_rate --master data ,b.ship_terr --master data
,0::numeric units ,b.quota_rep --master data
,(CASE WHEN s.factor = 0 THEN b.units * s.mod_price/b.r_rate ELSE b.value_loc*s.factor END)::numeric value_loc ,b.account --master data
,(CASE WHEN s.factor = 0 THEN b.units * s.mod_price ELSE b.value_usd*s.factor END)::numeric value_usd ,b.shipgrp --master data
,0::numeric cost_loc ,b.geo --master data
,0::numeric cost_usd ,b.chan --master data
,calc_status --0 ,b.orig_ctry --master data
,flag --0 ,b.orig_prov --master data
,order_date --history date mix ,b.orig_post --master data
,order_month ,b.dest_ctry --master data
,order_season ,b.dest_prov --master data
,request_date --history date mix ,b.dest_post --master data
,request_month ,b.part --history part mix
,request_season ,b.ord_gldc --master data
,ship_date --history date mix ,b.majg --master data
,ship_month ,b.ming --master data
,ship_season ,b.majs --master data
,'replace_version' "version" ,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
,0 fb_qty
,0 fb_cst_loc
,0 fb_cst_loc_cur
,0 fb_cst_loc_fut
--,b.fb_val_loc*s.factor fb_val_loc
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc*s.factor END)::numeric fb_val_loc
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc_pl*s.factor END)::numeric fb_val_loc_pl
--,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
,'replace_version' "version" --calculated
,'replace_source'||' price' iter ,'replace_source'||' price' iter
,log.id -----------------------ui columns--------------------------------
,log.doc->>'comment' "comment" ,'replace_iterdet' iterdet
,log.doc->>'type' module ,$$replace_iterdef$$::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
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc*s.factor END)::numeric value_loc
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price ELSE b.fb_val_loc*s.factor*b.r_rate END)::numeric value_usd
,0 cost_loc
,0 cost_usd
,0 units
FROM FROM
volume b volume b
CROSS JOIN pscale s CROSS JOIN pscale s
CROSS JOIN log
WHERE WHERE
s.factor <> 0 or s.mod_price <> 0 s.factor <> 0 or s.mod_price <> 0
) )
--select sum(value_usd), sum(units) from pricing --select sum(value_usd), sum(fb_qty) from pricing
, ins AS ( , ins AS (
INSERT INTO rlarp.osm_pool (SELECT * FROM pricing UNION ALL SELECT * FROM volume) RETURNING * INSERT INTO rlarp.osm_fcpool (SELECT * FROM pricing UNION ALL SELECT * FROM volume) RETURNING *
) )
,insagg AS ( ,insagg AS (
SELECT SELECT
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season
@ -320,37 +528,33 @@ FROM
,promo ,promo
,version ,version
,iter ,iter
--------values-------------------------
,sum(value_loc) value_loc ,sum(value_loc) value_loc
,sum(value_usd) value_usd ,sum(value_usd) value_usd
,sum(cost_loc) cost_loc ,sum(cost_loc) cost_loc
,sum(cost_usd) cost_usd ,sum(cost_usd) cost_usd
,sum(units) units ,sum(units) units
FROM FROM
ins ins
GROUP BY GROUP BY
---------customer info-----------------
bill_cust_descr bill_cust_descr
,billto_group ,billto_group
,ship_cust_descr ,ship_cust_descr
,shipto_group ,shipto_group
,quota_rep_descr ,quota_rep_descr
,director ,director_descr
,segm ,segm
,chan ,mod_chan
,chansub ,mod_chansub
---------product info------------------
,majg_descr ,majg_descr
,ming_descr ,ming_descr
,majs_descr ,majs_descr
,mins_descr ,mins_descr
--,brand ,brand
--,part_family ,part_family
,part_group ,part_group
,branding ,branding
--,color ,color
,part_descr ,part_descr
---------dates-------------------------
,order_season ,order_season
,order_month ,order_month
,ship_season ,ship_season

View File

@ -5,18 +5,18 @@ mseq AS (
SELECT * FROM SELECT * FROM
( (
VALUES VALUES
('01 - Jun',1) ('Jun',1)
,('02 - Jul',2) ,('Jul',2)
,('03 - Aug',3) ,('Aug',3)
,('04 - Sep',4) ,('Sep',4)
,('05 - Oct',5) ,('Oct',5)
,('06 - Nov',6) ,('Nov',6)
,('07 - Dec',7) ,('Dec',7)
,('08 - Jan',8) ,('Jan',8)
,('09 - Feb',9) ,('Feb',9)
,('10 - Mar',10) ,('Mar',10)
,('11 - Apr',11) ,('Apr',11)
,('12 - May',12) ,('May',12)
) x(m,s) ) x(m,s)
) )
@ -33,10 +33,10 @@ SELECT
,SUM(units) units ,SUM(units) units
,SUM(value_usd) value_usd ,SUM(value_usd) value_usd
FROM FROM
rlarp.osm_pool rlarp.osm_fcpool
WHERE WHERE
where_clause where_clause
AND order_season IN (2020,2021) AND order_season IN (2019,2020)
GROUP BY GROUP BY
order_season order_season
,order_month ,order_month
@ -94,14 +94,14 @@ GROUP BY
SELECT SELECT
order_month order_month
,seq ,seq
,SUM(units) FILTER (WHERE order_season = 2020) "2020 qty" ,SUM(units) FILTER (WHERE order_season = 2019) "2019 qty"
,SUM(units) FILTER (WHERE order_season = 2021 AND iter IN ('copy','short ship','bad_ship')) "2021 base qty" ,SUM(units) FILTER (WHERE order_season = 2020 AND iter IN ('copy','short ship','bad_ship')) "2020 base qty"
,SUM(units) FILTER (WHERE order_season = 2021 AND iter NOT IN ('copy','short ship','bad_ship')) "2021 adj qty" ,SUM(units) FILTER (WHERE order_season = 2020 AND iter NOT IN ('copy','short ship','bad_ship')) "2020 adj qty"
,SUM(units) FILTER (WHERE order_season = 2021) "2021 tot qty" ,SUM(units) FILTER (WHERE order_season = 2020) "2020 tot qty"
,SUM(value_usd) FILTER (WHERE order_season = 2020) "2020 value_usd" ,SUM(value_usd) FILTER (WHERE order_season = 2019) "2019 value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2021 AND iter IN ('copy','short ship','bad_ship')) "2021 base value_usd" ,SUM(value_usd) FILTER (WHERE order_season = 2020 AND iter IN ('copy','short ship','bad_ship')) "2020 base value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2021 AND iter NOT IN ('copy','short ship','bad_ship')) "2021 adj value_usd" ,SUM(value_usd) FILTER (WHERE order_season = 2020 AND iter NOT IN ('copy','short ship','bad_ship')) "2020 adj value_usd"
,SUM(value_usd) FILTER (WHERE order_season = 2021) "2021 tot value_usd" ,SUM(value_usd) FILTER (WHERE order_season = 2020) "2020 tot value_usd"
FROM FROM
months months
GROUP BY GROUP BY
@ -113,14 +113,14 @@ GROUP BY
,mlist AS ( ,mlist AS (
SELECT SELECT
mseq.m order_month mseq.m order_month
,"2020 qty" ,"2019 qty"
,"2021 base qty" ,"2020 base qty"
,"2021 adj qty" ,"2020 adj qty"
,"2021 tot qty" ,"2020 tot qty"
,"2020 value_usd" ,"2019 value_usd"
,"2021 base value_usd" ,"2020 base value_usd"
,"2021 adj value_usd" ,"2020 adj value_usd"
,"2021 tot value_usd" ,"2020 tot value_usd"
FROM FROM
mseq mseq
LEFT OUTER JOIN mpvt ON LEFT OUTER JOIN mpvt ON