Merge branch 'basket' of hc-companies/forecast_api into dev

This commit is contained in:
pt 2020-02-14 16:25:17 +00:00 committed by Gitea
commit b881fae5b4
3 changed files with 448 additions and 725 deletions

230
index.js
View File

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

View File

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

View File

@ -13,6 +13,7 @@ target AS (select $$replace_request$$::json def)
,to_char(N1FSYP,'FM0000') FSPR
,N1SD01 SDAT
,N1ED01 EDAT
,daterange(n1sd01, n1ed01) drange
,to_char(N1ED01,'yymm') CAPR
,N1ED01 - N1SD01 +1 NDAYS
,CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(YEAR FROM N1ED01) + 1 ELSE EXTRACT(YEAR FROM N1ED01) END SSYR
@ -30,18 +31,18 @@ target AS (select $$replace_request$$::json def)
SELECT * FROM
(
VALUES
('Jun',1,6,-1)
,('Jul',2,7,-1)
,('Aug',3,8,-1)
,('Sep',4,9,-1)
,('Oct',5,10,-1)
,('Nov',6,11,-1)
,('Dec',7,12,-1)
,('Jan',8,1,0)
,('Feb',9,2,0)
,('Mar',10,3,0)
,('Apr',11,4,0)
,('May',12,5,0)
('01 - Jun',1,6,-1)
,('02 - Jul',2,7,-1)
,('03 - Aug',3,8,-1)
,('04 - Sep',4,9,-1)
,('05 - Oct',5,10,-1)
,('06 - Nov',6,11,-1)
,('07 - Dec',7,12,-1)
,('08 - Jan',8,1,0)
,('09 - Feb',9,2,0)
,('10 - Mar',10,3,0)
,('11 - Apr',11,4,0)
,('12 - May',12,5,0)
) x(m,s,cal,yr)
)
,SEG AS (
@ -67,30 +68,6 @@ target AS (select $$replace_request$$::json def)
('9TO','Other')
) X(GLEC, SEGM)
)
,MG AS (
SELECT
X.F1, X.MING, X.GRP
FROM
(
VALUES
('L','000','Branded'),
('L','B10','Branded'),
('L','B11','Branded'),
('L','B52','Branded'),
('L','C10','Branded'),
('L','D12','Branded'),
('L','M11','Branded'),
('L','P12','Branded'),
('L','P13','Branded'),
('L','S10','Branded'),
('L','Y10','Branded'),
('L','Y11','Branded'),
('L','Y12','Branded'),
('P','B10','Branded'),
('P','B11','Branded'),
('P','B52','Branded')
) AS X (F1, MING, GRP)
)
,REPC AS (
SELECT
LTRIM(RTRIM(C.A9)) RCODE
@ -103,46 +80,6 @@ target AS (select $$replace_request$$::json def)
WHERE
C.A2 = 'MM'
)
--MOLD DESCRIPTIONS
,MD AS (
SELECT
U.MOLD
,MAX(U.DESCR) DESCR
FROM
(
SELECT
SUBSTR(M.AVPART,1,8) MOLD
,MAX(M.AVDES1) DESCR
FROM
LGDAT.STKMM M
WHERE
LENGTH(M.AVPART) > 8
AND SUBSTR(M.AVGLED,1,1) <= '2'
GROUP BY
SUBSTR(M.AVPART,1,8)
UNION ALL
SELECT
SUBSTR(P.AWPART,1,8) MOLD
,MAX(P.AWDES1) DESCR
FROM
LGDAT.STKMP P
WHERE
LENGTH(P.AWPART) > 8
AND SUBSTR(P.AWGLED,1,1) <= '2'
GROUP BY
SUBSTR(P.AWPART,1,8)
) U
GROUP BY
U.MOLD
)
----------------------------------------------------sales major codes----------------------------------------------------------------------------------------------------------------------------------
,SJ AS (
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') = ''
)
----------------------------------------------------sales minor codes----------------------------------------------------------------------------------------------------------------------------------
,SI AS (
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') <> ''
)
,copr AS (
SELECT
LTRIM(RTRIM(A9)) AS COMP,
@ -169,12 +106,12 @@ target AS (select $$replace_request$$::json def)
,terms
,order_month
,mseq.s seq
,orderdate
,requestdate
,shipdate
,order_date
,request_date
,ship_date
,sum(value_usd) value_usd
FROM
rlarp.osm_fcpool
rlarp.osm_pool
LEFT OUTER JOIN mseq ON
mseq.m = order_month
WHERE
@ -183,50 +120,52 @@ target AS (select $$replace_request$$::json def)
--probably dont want to include adjustments that have blown away volume and good sources of dating info
-----------------additional params-------------------
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND adj_orderdate <= adj_shipdate
AND order_date <= ship_date
GROUP BY
promo
,terms
,order_month
,mseq.s
,orderdate
,requestdate
,shipdate
,order_date
,request_date
,ship_date
HAVING
sum(value_usd) <> 0
)
--select * from alldates
,dom AS (
SELECT
extract(day FROM orderdate) DOM
extract(day FROM order_date) DOM
,sum(value_usd) value_usd
FROM
alldates
GROUP BY
extract(day FROM orderdate)
extract(day FROM order_date)
)
--select * from dom
---------------------may want ot look at a top-5 mix solution in the future facilitated by sum() over (order by sales desc)---------------
,mmix AS (
SELECT
to_char(orderdate,'Mon') _month
to_char(order_date,'Mon') _month
,seq
,promo
,sum(extract(day from orderdate)*value_usd) dom_wa
--,requestdate-orderdate rlag
,sum((requestdate-orderdate)*(value_usd)) rlag_wa
--,shipdate - requestdate slag
,sum((shipdate - requestdate)*(value_usd)) slag_wa
,sum(extract(day from order_date)*value_usd) dom_wa
--,request_date-order_date rlag
,sum((request_date-order_date)*(value_usd)) rlag_wa
--,ship_date - request_date slag
,sum((ship_date - request_date)*(value_usd)) slag_wa
,sum(value_usd) value_usd
FROM
alldates
GROUP BY
to_char(orderdate,'Mon')
to_char(order_date,'Mon')
,seq
,promo
--,extract(day from orderdate)
--,requestdate-orderdate
--,shipdate - requestdate
--,extract(day from order_date)
--,request_date-order_date
--,ship_date - request_date
)
--select * from mmix
,targm AS (
SELECT
je.key as month
@ -242,6 +181,7 @@ target AS (select $$replace_request$$::json def)
LEFT OUTER JOIN mseq ON
mseq.m = je.key
)
--select * from targm
,mmixp AS (
SELECT
_month
@ -255,6 +195,7 @@ target AS (select $$replace_request$$::json def)
FROM
mmix
)
--select * from mmixp
--month cross join mix
,mxm AS (
SELECT
@ -286,114 +227,24 @@ FROM
--this basemix is probably join going to be part-bill-ship with all master data joined later since it is not known if any original is salvaged
,basemix AS (
SELECT
null::text plnt ---master data
,0::numeric(11,0) "ddord#"
,0::numeric(11,0) "dditm#"
,0::numeric(11,0) "fgbol#"
,0::numeric(11,0) "fgent#"
,0::numeric(9,0) "diinv#"
,0::numeric(3,0) "dilin#"
,mxm.promo --history
,null::text return_reas
,null::text terms
,''::text custpo
,'I' dhincr
,null::numeric diext
,null::numeric ditdis
,null::date dcodat
,null::date ddqdat
,null::date dcmdat
,null::date dhidat
,sd.fspr
,null::text remit_to
,null::text bill_class
,(regexp_match(jr.bill_cust_descr,'(.*?)(?= - |$)'))[1] bill_cust
,null:: text bill_rep
,null::text bill_terr
,null::text ship_class
,(regexp_match(jr.ship_cust_descr,'(.*?)(?= - |$)'))[1] ship_cust
,null::text ship_rep
,null::text ship_terr
,null::text quota_rep
,null::text account
,null::text shipgrp
,null::text geo
,null::text chan
,null::text orig_ctry
,null::text orig_prov
,null::text orig_post
,null::text dest_ctry
,null::text dest_prov
,null::text dest_post
,(regexp_match(jr.part_descr,'(.*?)(?= - |$)'))[1] part
,null::text ord_gldc
,null::text majg
,null::text ming
,null::text majs
,null::text mins
,null::text gldc
,null::text glec
,null::text harm
,null::text clss
,null::text brand
,null::text assc
,'41010'::text fs_line
,null::text r_currency
,null::numeric r_rate
,null::text c_currency
,null::numeric c_rate
,0::numeric(15,5) ddqtoi
,0::numeric(15,5) ddqtsi
,0::numeric(15,5) fgqshp
,0::numeric(15,5) diqtsh
,mxm.qty*mxm.momix*jr.mix fb_qty --history value
,0::numeric fb_cst_loc --history part mix
,0::numeric fb_cst_loc_cur
,0::numeric fb_cst_loc_fut
,mxm.amount*mxm.momix*jr.mix fb_val_loc --history value
,0::numeric fb_val_loc_pl
,''::text calc_status
,''::text flag
,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) orderdate
,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag requestdate
,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag shipdate
,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) adj_orderdate
,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag adj_requestdate
,make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag adj_shipdate
,'replace_version' "version"
,'replace_source'||' volume' iter
-----------------------ui columns--------------------------------
,'replace_iterdet' iterdet
,$$replace_iterdef$$::json iterdef
,od.ssyr order_season
,to_char(make_date(mxm.yr + 2020,mxm.cal,mxm.odom),'Mon') order_month
,sd.ssyr ship_season
,to_char(make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag,'Mon') ship_month
,rd.ssyr request_season
,to_char(make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag,'Mon') request_month
,jr.part_descr part_descr
,null::text part_family
,null::text part_group
,null::text branding
,null::text color
,null::text segm
sd.fspr
,mxm.promo
,jr.bill_cust_descr
,null::text billto_group
,jr.ship_cust_descr
,null::text shipto_group
,null::text majg_descr
,null::text ming_descr
,null::text majs_descr
,null::text mins_descr
,null::text mod_chan
,null::text mod_chansub
,null::text quota_rep_descr
,null::text director_descr
,null::numeric value_loc
,null::numeric value_usd
,null::numeric cost_loc
,null::numeric cost_usd
,null::numeric units
,(regexp_match(jr.part_descr,'(.*?)(?= - |$)'))[1] part
,jr.part_descr
,substring(jr.part_descr,1,8) part_group
,mxm.qty*mxm.momix*jr.mix units
,mxm.amount*mxm.momix*jr.mix value_loc
,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) order_date
,to_char(make_date(mxm.yr + 2021,mxm.cal,mxm.odom),'Mon') order_month
,od.ssyr order_season
,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag request_date
,to_char(make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag,'Mon') request_month
,rd.ssyr request_season
,make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag + slag ship_date
,to_char(make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag + slag,'Mon') ship_month
,sd.ssyr ship_season
,jr.mix
FROM
target
@ -401,220 +252,135 @@ SELECT
JOIN LATERAL json_to_record(ae.e) as jr(part_descr text, bill_cust_descr text, ship_cust_descr text, mix numeric) ON true
CROSS JOIN mxm
LEFT OUTER JOIN gld od ON
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) BETWEEN od.sdat AND od.edat
od.drange @> make_date(mxm.yr + 2021,mxm.cal,mxm.odom)
LEFT OUTER JOIN gld rd ON
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag BETWEEN rd.sdat AND rd.edat
rd.drange @> (make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag)
LEFT OUTER JOIN gld sd ON
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat
sd.drange @> (make_date(mxm.yr + 2021,mxm.cal,mxm.odom) + rlag + slag)
)
--SELECT * FROM basemix
,log AS (
INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING *
)
,final AS (
SELECT
COALESCE(m.avdplt,p.awdplt) plnt --master data
,b."ddord#"
,b."dditm#"
,b."fgbol#"
,b."fgent#"
,b."diinv#"
,b."dilin#"
,b.promo --history
,b.return_reas
,bc.bvterm terms --history cust mix
,b.custpo
,b.dhincr
,b.diext
,b.ditdis
,b.dcodat
,b.ddqdat
,b.dcmdat
,b.dhidat
,b.fspr
,bc.bvcomp remit_to --master data
,bc.bvclas bill_class --master data
,b.bill_cust --history cust mix
,bc.bvsalm bill_rep --master data
,bc.bvterr bill_terr --master data
,sc.bvclas ship_class --master data
,b.ship_cust --history cust mix
,sc.bvsalm ship_rep --master data
,sc.bvterr ship_terr --master data
--quota rep--------------------------------------------
,RTRIM(
COALESCE(
--retail items go to currep, or if null go to 90005
CASE WHEN COALESCE(avgled,awgled) IN ('1RE','1CU') THEN
CASE WHEN bc.bvctry = 'CAN' THEN
--Rachel Bowman
'50300'
ELSE
--retail chain got to Mark Wilkinson
CASE COALESCE(cg.cgrp,bc.bvname)
WHEN 'THE HOME DEPOT' THEN '90005'
WHEN 'DO IT BEST' THEN '90005'
WHEN 'ACE HARDWARE' THEN '90005'
WHEN 'ALDI' THEN '90005'
WHEN 'AMAZON.COM' THEN '90005'
WHEN 'GARDEN RIDGE CORP' THEN '90005'
--all other retail goes to Doran Marable
ELSE '50200'
b.fspr
,i.dplt plnt
,b.promo
,bc.bvterm terms
,b.bill_cust_descr
,b.ship_cust_descr
,(SELECT rcode FROM repc WHERE repp = log.doc->'scenario'->>'quota_rep_descr') dsm
,log.doc->'scenario'->>'quota_rep_descr' quota_rep_descr
,(SELECT director FROM repc WHERE repp = log.doc->'scenario'->>'quota_rep_descr') director
,CASE bc.BVADR6 WHEN '' THEN bc.BVNAME ELSE bc.BVADR6 END billto_group
,CASE sc.BVADR6 WHEN '' THEN sc.BVNAME ELSE bc.BVADR6 END shipto_group
,CASE SUBSTRING(bc.bvclas,2,3)
--if the bill to class is ditsributor, then it's either warehouse or drop
WHEN 'DIS' THEN
--if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse
CASE SUBSTRING(sc.bvclas,2,3)
WHEN 'DIS' THEN 'WHS'
ELSE 'DRP'
END
--CASE WHEN RTRIM(SUBSTRING(LTRIM(SC.BVADR7)||SC.BVNAME,1,30)) = RTRIM(SUBSTRING(LTRIM(BC.BVADR7)||BC.BVNAME,1,30)) THEN 'DIS' ELSE 'DRP' END
--everything else does not involve a distributor and is considered direct
ELSE 'DIR'
END chan
,CASE SUBSTRING(bc.bvclas,2,3)
WHEN 'DIS' THEN
--if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse
CASE SUBSTRING(sc.bvclas,2,3)
WHEN 'DIS' THEN 'WHS'
ELSE CASE SUBSTRING(sc.bvclas,1,1) WHEN 'R' THEN 'RDP' ELSE 'DRP' END
END
ELSE
CASE WHEN COALESCE(avming,awming) = 'B52' THEN
'PW'
--gdir, ndir go to bill-to rep
ELSE
CASE WHEN bc.bvclas IN ('GDIR','NDIR') THEN
bc.bvsalm
ELSE
sc.bvsalm
END
END
END
,''
)
) quota_rep
,coalesce(cg.cgrp,bc.bvname) account
,coalesce(sg.cgrp,sc.bvname) shipgrp
,coalesce(t.geo,'UNDEFINED') geo
,coalesce(c.chan,'UNDEFINED') chan
,ad.qzcryc orig_ctry
,ad.qzprov orig_prov
,ad.qzpost orig_post
,sc.bvctry dest_ctry
,sc.bvprcd dest_prov
,sc.bvpost dest_post
,b.part --history part mix
,COALESCE(m.avglcd, p.awgldc) ord_gldc --master data
,COALESCE(m.avmajg,p.awmajg) majg --master data
,COALESCE(m.avming,p.awming) ming --master data
,COALESCE(m.avmajs,p.awmajs) majs --master data
,COALESCE(m.avmins,p.awmins) mins --master data
,COALESCE(m.avglcd,p.awgldc) gldc --master data
,COALESCE(m.avgled,p.awgled) glec --master data
,COALESCE(m.avharm,p.awharm) harm --master data
,COALESCE(m.avclss,p.awclss) clss --master data
,SUBSTR(COALESCE(m."avcpt#",p."awvpt#"),1,1) brand --master data
,COALESCE(m.avassc,p.awassc) assc --master data
,b.fs_line --master data
WHEN 'MAS' THEN 'RMN'
WHEN 'NAT' THEN 'RMN'
ELSE CASE SUBSTRING(sc.bvclas,1,1) WHEN 'R' THEN 'RDI' ELSE 'DIR' END
END chansub
,null::text chan_retail
,b.part
,b.part_descr
,b.part_group
,i.branding
,i.majg||' - '||i.majgd majg_descr
,i.ming||' - '||i.mingd ming_descr
,i.majs||' - '||i.majsd majs_descr
,i.mins||' - '||i.minsd mins_descr
,seg.segm
,'41010' fs_line --master data
,bc.bvcurr r_currency --history cust mix
,rx.rate r_rate --master data
,copr.curr c_currency --master data
,cx.rate c_rate --master data
,b.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.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.ship_season
,b.ship_month
,b.request_season
,b.order_season
,b.request_date
,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
,b.request_season
,b.ship_date
,b.ship_month
,b.ship_season
,'replace_version' "version"
,'replace_source'||' volume' iter
,log.id
,log.doc->>'comment' "comment"
,log.doc->>'type' module
FROM
basemix b
LEFT OUTER JOIN LGDAT.STKMM M ON
M.AVPART = b.PART
LEFT OUTER JOIN LGDAT.STKMP P ON
P.AWPART = b.PART
LEFT OUTER JOIN lgdat.stka a ON
v6part = b.part
AND v6plnt = COALESCE(m.avdplt,p.awdplt)
CROSS JOIN log
LEFT OUTER JOIN rlarp.itemmv i ON
i.item = b.part
LEFT OUTER JOIN SEG ON
SEG.GLEC = COALESCE(m.avgled,p.awgled)
SEG.GLEC = i.glec
--AND SEG.SEGM <> 'Other'
LEFT OUTER JOIN MG ON
MG.F1 = SUBSTR(b.PART,16,1)
AND MG.MING = COALESCE(m.avming,p.awming)
LEFT OUTER JOIN RLARP.FAMILY F ON
F.F3 = SUBSTR(b.PART,1,3)
LEFT OUTER JOIN MD ON
MD.MOLD = SUBSTR(b.PART,1,8)
LEFT OUTER JOIN LGDAT.CUST BC ON
BC.BVCUST = b.BILL_CUST
BC.BVCUST = rtrim(substring(b.bill_cust_descr,1,8))
LEFT OUTER JOIN LGDAT.CUST SC ON
SC.BVCUST = b.SHIP_CUST
LEFT OUTER JOIN RLARP.FFCHNL c ON
c.BILL = bc.bvclas
AND c.SHIP = sc.bvclas
LEFT OUTER JOIN rlarp.ffterr t ON
t.prov = sc.bvprcd AND
t.ctry = sc.bvctry
LEFT OUTER JOIN RLARP.FFCUST CG ON
CG.CUSTN = BC.BVCUST
LEFT OUTER JOIN RLARP.FFCUST SG ON
SG.CUSTN = SC.BVCUST
SC.BVCUST = rtrim(substring(b.ship_cust_descr,1,8))
LEFT OUTER JOIN REPC ON
REPC.RCODE = RTRIM(
COALESCE(
--retail items go to currep, or if null go to 90005
CASE WHEN COALESCE(avgled,awgled) IN ('1RE','1CU') THEN
CASE WHEN i.glec 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
--select customers go to select reps
CASE CASE bc.BVADR6 WHEN '' THEN bc.BVNAME ELSE bc.BVADR6 END
------Alecia Latini-------------------------------
WHEN 'DO IT BEST' THEN '90006'
WHEN 'ACE HARDWARE' THEN '90006'
WHEN 'ALDI' THEN '90006'
WHEN 'AMAZON.COM' THEN '90006'
WHEN 'GARDEN RIDGE CORP' THEN '90006' --AKA "At Home"
WHEN 'TRUE VALUE' THEN '90006'
WHEN 'WAYFAIR' THEN '90006'
WHEN 'GRIFFIN' THEN '90006'
WHEN 'WAL-MART' THEN '90006'
------Tony Landino--------------------------------
WHEN 'THE HOME DEPOT' THEN '50802'
WHEN 'FRED MEYER' THEN '50802'
WHEN 'MENARDS' THEN '50802'
WHEN 'KROGER' THEN '50802'
WHEN 'OCEAN STATE JOBBERS' THEN '50802'
WHEN 'AURORA WHOLESALE' THEN '50802'
WHEN 'LEON KORRAL' THEN '50802'
--all other retail goes to Doran Marable-----------
ELSE '50200'
END
END
--minor group b52 goes to dedicated rep
ELSE
CASE WHEN COALESCE(avming,awming) = 'B52' THEN
CASE WHEN i.MING = 'B52' THEN
'PW'
--gdir, ndir go to bill-to rep
ELSE
@ -625,119 +391,58 @@ FROM
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
im.cgpart = b.part
AND im.cgplnt = a.v6plnt
AND im.cgplnt = i.dplt
LEFT OUTER JOIN lgdat.icstp ip ON
ip.chpart = b.part
AND ip.chplnt = a.v6plnt
AND ip.chplnt = i.dplt
LEFT OUTER JOIN lgdat.icstr ir ON
ir.y0part = b.part
AND ir.y0plnt = a.v6plnt
AND ir.y0plnt = i.dplt
LEFT OUTER JOIN lgdat.plnt ON
yaplnt = a.v6plnt
yaplnt = i.dplt
LEFT OUTER JOIN copr ON
copr.comp = yacomp::text
LEFT OUTER JOIN rlarp.ffcret cx ON
cx.perd = '1910'
cx.perd = '2008'
AND cx.rtyp = 'MA'
AND cx.fcur = copr.curr
AND cx.tcur = 'US'
LEFT OUTER JOIN rlarp.ffcret rx ON
rx.perd = '1910'
rx.perd = '2008'
AND rx.rtyp = 'MA'
AND rx.fcur = bc.bvcurr
AND rx.tcur = 'US'
LEFT OUTER JOIN LGDAT.ADRS AD ON
AD.QZADR = plnt."yaadr#"
)
/*
,clone_part_meta AS (
SELECT
b.majg --master data
,b.ming --master data
,b.majs --master data
,b.mins --master data
,b.gldc --master data
,b.glec --master data
,b.harm --master data
,b.clss --master data
,b.brand --master data
,b.assc --master data
,b.segm
,b.majg_descr
,b.ming_descr
,b.majs_descr
,b.mins_descr
,b.quota_rep
,sum(fb_val_loc * r_rate) agg
FROM
rlarp.osm_fcpool b
WHERE
-----------------scenario----------------------------
where_clause
--probably dont want to include adjustments that have blown away volume and good sources of dating info
-----------------additional params-------------------
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
AND adj_orderdate <= adj_shipdate
GROUP BY
b.majg --master data
,b.ming --master data
,b.majs --master data
,b.mins --master data
,b.gldc --master data
,b.glec --master data
,b.harm --master data
,b.clss --master data
,b.brand --master data
,b.assc --master data
,b.segm
,b.majg_descr
,b.ming_descr
,b.majs_descr
,b.mins_descr
,b.quota_rep
ORDER BY
agg desc
)
*/
, ins AS (
INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
INSERT INTO rlarp.osm_pool SELECT * FROM final RETURNING *
)
,insagg AS (
SELECT
SELECT
---------customer info-----------------
bill_cust_descr
,billto_group
,ship_cust_descr
,shipto_group
,quota_rep_descr
,director_descr
,director
,segm
,mod_chan
,mod_chansub
,chan
,chansub
---------product info------------------
,majg_descr
,ming_descr
,majs_descr
,mins_descr
,brand
,part_family
--,brand
--,part_family
,part_group
,branding
,color
--,color
,part_descr
---------dates-------------------------
,order_season
,order_month
,ship_season
@ -747,33 +452,37 @@ SELECT
,promo
,version
,iter
--------values-------------------------
,sum(value_loc) value_loc
,sum(value_usd) value_usd
,sum(cost_loc) cost_loc
,sum(cost_usd) cost_usd
,sum(units) units
FROM
FROM
ins
GROUP BY
GROUP BY
---------customer info-----------------
bill_cust_descr
,billto_group
,ship_cust_descr
,shipto_group
,quota_rep_descr
,director_descr
,director
,segm
,mod_chan
,mod_chansub
,chan
,chansub
---------product info------------------
,majg_descr
,ming_descr
,majs_descr
,mins_descr
,brand
,part_family
--,brand
--,part_family
,part_group
,branding
,color
--,color
,part_descr
---------dates-------------------------
,order_season
,order_month
,ship_season