Merge pull request #1 from fleetside72/dev
update master with current live
This commit is contained in:
commit
c00e4d3f89
5
.gitignore
vendored
5
.gitignore
vendored
@ -3,3 +3,8 @@ npm-debug.log
|
|||||||
/node_modules
|
/node_modules
|
||||||
.env
|
.env
|
||||||
/.vscode
|
/.vscode
|
||||||
|
logs.html
|
||||||
|
stat.html
|
||||||
|
*.pem
|
||||||
|
node.log
|
||||||
|
changes.html
|
||||||
|
164
index.js
164
index.js
@ -1,5 +1,8 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
|
var https = require('https');
|
||||||
var bodyParser = require('body-parser');
|
var bodyParser = require('body-parser');
|
||||||
const server = express();
|
const server = express();
|
||||||
const pg = require('pg');
|
const pg = require('pg');
|
||||||
@ -9,6 +12,17 @@ var fs = require('fs');
|
|||||||
var readline = require('readline');
|
var readline = require('readline');
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
key: fs.readFileSync('//var/www/forecast_api/key.pem'),
|
||||||
|
cert: fs.readFileSync('//var/www/forecast_api/cert.pem'),
|
||||||
|
passprase: []
|
||||||
|
};
|
||||||
|
|
||||||
|
https.createServer(options,server).listen(3000, () => {
|
||||||
|
console.log('started on 3000')
|
||||||
|
});
|
||||||
|
//server.listen(3000, () => console.log('started'))
|
||||||
|
|
||||||
var Postgres = new pg.Client({
|
var Postgres = new pg.Client({
|
||||||
user: process.env.user,
|
user: process.env.user,
|
||||||
password: process.env.password,
|
password: process.env.password,
|
||||||
@ -33,8 +47,9 @@ Postgres.FirstRow = function (inSQL, args, inResponse) {
|
|||||||
|
|
||||||
server.get('/', (req, res) => res.send('node.js express is up and running'))
|
server.get('/', (req, res) => res.send('node.js express is up and running'))
|
||||||
|
|
||||||
|
server.get('/login', (req, res) => res.sendFile('//var/www/forecast_api/msauth.html'))
|
||||||
|
|
||||||
server.get('/logs', (req, res) => res.sendFile('~/forecast_api/logs.html'))
|
server.get('/logs', (req, res) => res.sendFile('//var/www/forecast_api/logs.html'))
|
||||||
|
|
||||||
|
|
||||||
server.get('/test_sql', function(req, res){
|
server.get('/test_sql', function(req, res){
|
||||||
@ -59,7 +74,7 @@ server.get('/get_pool', bodyParser.json(), function (req, res) {
|
|||||||
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("-------------------------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)
|
||||||
@ -105,7 +120,7 @@ server.get('/scenario_package', bodyParser.json(), function (req, res) {
|
|||||||
res.send("no body was sent");
|
res.send("no body was sent");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log("-------------------------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)
|
||||||
@ -115,6 +130,37 @@ server.get('/scenario_package', bodyParser.json(), function (req, res) {
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
server.get('/list_changes', bodyParser.json(), function (req, res) {
|
||||||
|
|
||||||
|
var sql = "";
|
||||||
|
var w = "";
|
||||||
|
var c = 1;
|
||||||
|
var d = 1;
|
||||||
|
var args = [];
|
||||||
|
var path = './route_sql/list_changes.sql';
|
||||||
|
|
||||||
|
fs.readFile(path, 'utf8', function(err, data){
|
||||||
|
if (!err){
|
||||||
|
callback(data);
|
||||||
|
} else {
|
||||||
|
console.log("fatal error pulling sql file")
|
||||||
|
callback(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var callback = function(arg){
|
||||||
|
sql = arg;
|
||||||
|
|
||||||
|
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("replace_user",'g'),JSON.stringify(req.body))
|
||||||
|
//execute the sql and send the result
|
||||||
|
//console.log(sql);
|
||||||
|
Postgres.FirstRow(sql,[],res)
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
server.post('/addmonth_v', bodyParser.json(), function (req, res) {
|
server.post('/addmonth_v', bodyParser.json(), function (req, res) {
|
||||||
|
|
||||||
var sql = "";
|
var sql = "";
|
||||||
@ -142,7 +188,8 @@ 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("-----------------------------add month volume:---------------------------------");
|
console.log(new Date().toISOString() +"-----------------------------add month volume:---------------------------------");
|
||||||
|
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);
|
||||||
@ -151,7 +198,6 @@ server.post('/addmonth_v', bodyParser.json(), function (req, res) {
|
|||||||
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)
|
console.log(sql)
|
||||||
Postgres.FirstRow(sql,[],res)
|
Postgres.FirstRow(sql,[],res)
|
||||||
}
|
}
|
||||||
@ -175,7 +221,8 @@ 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("------------------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(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);
|
||||||
@ -185,7 +232,7 @@ server.post('/addmonth_vp', bodyParser.json(), function (req, res) {
|
|||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +264,8 @@ 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("-----------------------scale volume:------------------------------");
|
console.log(new Date().toISOString() +"-----------------------scale volume:------------------------------");
|
||||||
|
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);
|
||||||
@ -225,7 +273,7 @@ server.post('/scale_v', bodyParser.json(), function (req, res) {
|
|||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,7 +305,8 @@ 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("--------------------scale price:-------------------");
|
console.log(new Date().toISOString() +"--------------------scale price:-------------------");
|
||||||
|
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);
|
||||||
@ -265,7 +314,7 @@ server.post('/scale_p', bodyParser.json(), function (req, res) {
|
|||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +346,8 @@ 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("--------------------scale volume & price:-------------------");
|
console.log(new Date().toISOString() +"--------------------scale volume & price:-------------------");
|
||||||
|
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);
|
||||||
@ -306,7 +356,93 @@ server.post('/scale_vp', bodyParser.json(), function (req, res) {
|
|||||||
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.readFile(path, 'utf8', function(err, data){
|
||||||
|
if (!err){
|
||||||
|
callback(data);
|
||||||
|
} else {
|
||||||
|
console.log("fatal error pulling sql file")
|
||||||
|
callback(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
server.post('/new_part', bodyParser.json(), function (req, res) {
|
||||||
|
|
||||||
|
var sql = "";
|
||||||
|
var w = "";
|
||||||
|
var c = 1;
|
||||||
|
var d = 1;
|
||||||
|
var args = [];
|
||||||
|
var path = './route_sql/new_part.sql';
|
||||||
|
|
||||||
|
var callback = function(arg){
|
||||||
|
sql = arg;
|
||||||
|
|
||||||
|
({ c, w, d } = build_where(req, c, w, d, args));
|
||||||
|
|
||||||
|
if (c == 1) {
|
||||||
|
res.send("no body was sent");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
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));
|
||||||
|
console.log(sql);
|
||||||
|
Postgres.FirstRow(sql,[],res)
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.readFile(path, 'utf8', function(err, data){
|
||||||
|
if (!err){
|
||||||
|
callback(data);
|
||||||
|
} else {
|
||||||
|
console.log("fatal error pulling sql file")
|
||||||
|
callback(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
server.post('/new_basket', bodyParser.json(), function (req, res) {
|
||||||
|
|
||||||
|
var sql = "";
|
||||||
|
var w = "";
|
||||||
|
var c = 1;
|
||||||
|
var d = 1;
|
||||||
|
var args = [];
|
||||||
|
var path = './route_sql/new_basket.sql';
|
||||||
|
|
||||||
|
var callback = function(arg){
|
||||||
|
sql = arg;
|
||||||
|
|
||||||
|
({ c, w, d } = build_where(req, c, w, d, args));
|
||||||
|
|
||||||
|
if (c == 1) {
|
||||||
|
res.send("no body was sent");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
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));
|
||||||
|
console.log(sql);
|
||||||
Postgres.FirstRow(sql,[],res)
|
Postgres.FirstRow(sql,[],res)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,5 +487,3 @@ function build_where(req, c, w, d, args) {
|
|||||||
;
|
;
|
||||||
return { c, w, d };
|
return { c, w, d };
|
||||||
}
|
}
|
||||||
|
|
||||||
server.listen(3000, () => console.log('started'))
|
|
137
msauth.html
Normal file
137
msauth.html
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Microsoft Authentication</title>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js"></script>
|
||||||
|
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/0.2.3/js/msal.js"></script>
|
||||||
|
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h4 id="WelcomeMessage"></h4>
|
||||||
|
<button id="SignIn" onclick="signIn()">Sign In</button>
|
||||||
|
<br/><br/>
|
||||||
|
<pre id="json"></pre>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var applicationConfig = {
|
||||||
|
clientID: "24d81a32-6a9a-4f5c-b7cc-53bc1ba178c7",
|
||||||
|
authority: "https://login.microsoftonline.com/common",
|
||||||
|
graphScopes: ["user.read"],
|
||||||
|
graphEndpoint: "https://graph.microsoft.com/v1.0/me"
|
||||||
|
};
|
||||||
|
|
||||||
|
var myMSALObj = new Msal.UserAgentApplication(applicationConfig.clientID, applicationConfig.authority, acquireTokenRedirectCallBack,
|
||||||
|
{storeAuthStateInCookie: true, cacheLocation: "localStorage"});
|
||||||
|
|
||||||
|
function signIn() {
|
||||||
|
myMSALObj.loginPopup(applicationConfig.graphScopes).then(function (idToken) {
|
||||||
|
//Login Success
|
||||||
|
showWelcomeMessage();
|
||||||
|
acquireTokenPopupAndCallMSGraph();
|
||||||
|
}, function (error) {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function signOut() {
|
||||||
|
myMSALObj.logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
function acquireTokenPopupAndCallMSGraph() {
|
||||||
|
//Call acquireTokenSilent (iframe) to obtain a token for Microsoft Graph
|
||||||
|
myMSALObj.acquireTokenSilent(applicationConfig.graphScopes).then(function (accessToken) {
|
||||||
|
callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
|
||||||
|
}, function (error) {
|
||||||
|
console.log(error);
|
||||||
|
// Call acquireTokenPopup (popup window) in case of acquireTokenSilent failure due to consent or interaction required ONLY
|
||||||
|
if (error.indexOf("consent_required") !== -1 || error.indexOf("interaction_required") !== -1 || error.indexOf("login_required") !== -1) {
|
||||||
|
myMSALObj.acquireTokenPopup(applicationConfig.graphScopes).then(function (accessToken) {
|
||||||
|
callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
|
||||||
|
}, function (error) {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function callMSGraph(theUrl, accessToken, callback) {
|
||||||
|
var xmlHttp = new XMLHttpRequest();
|
||||||
|
xmlHttp.onreadystatechange = function () {
|
||||||
|
if (this.readyState == 4 && this.status == 200)
|
||||||
|
callback(JSON.parse(this.responseText));
|
||||||
|
}
|
||||||
|
xmlHttp.open("GET", theUrl, true); // true for asynchronous
|
||||||
|
xmlHttp.setRequestHeader('Authorization', 'Bearer ' + accessToken);
|
||||||
|
xmlHttp.send();
|
||||||
|
}
|
||||||
|
|
||||||
|
function graphAPICallback(data) {
|
||||||
|
//Display user data on DOM
|
||||||
|
var divWelcome = document.getElementById('WelcomeMessage');
|
||||||
|
//divWelcome.innerHTML += " to Microsoft Graph API!!";
|
||||||
|
document.getElementById("json").innerHTML = JSON.stringify(data, null, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
function showWelcomeMessage() {
|
||||||
|
var divWelcome = document.getElementById('WelcomeMessage');
|
||||||
|
//divWelcome.innerHTML += 'Welcome ' + myMSALObj.getUser().name;
|
||||||
|
var loginbutton = document.getElementById('SignIn');
|
||||||
|
loginbutton.innerHTML = 'Sign Out';
|
||||||
|
loginbutton.setAttribute('onclick', 'signOut();');
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function can be removed if you do not need to support IE
|
||||||
|
function acquireTokenRedirectAndCallMSGraph() {
|
||||||
|
//Call acquireTokenSilent (iframe) to obtain a token for Microsoft Graph
|
||||||
|
myMSALObj.acquireTokenSilent(applicationConfig.graphScopes).then(function (accessToken) {
|
||||||
|
callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
|
||||||
|
}, function (error) {
|
||||||
|
console.log(error);
|
||||||
|
//Call acquireTokenRedirect in case of acquireToken Failure
|
||||||
|
if (error.indexOf("consent_required") !== -1 || error.indexOf("interaction_required") !== -1 || error.indexOf("login_required") !== -1) {
|
||||||
|
myMSALObj.acquireTokenRedirect(applicationConfig.graphScopes);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function acquireTokenRedirectCallBack(errorDesc, token, error, tokenType)
|
||||||
|
{
|
||||||
|
if(tokenType === "access_token")
|
||||||
|
{
|
||||||
|
callMSGraph(applicationConfig.graphEndpoint, token, graphAPICallback);
|
||||||
|
} else {
|
||||||
|
console.log("token type is:"+tokenType);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Browser check variables
|
||||||
|
var ua = window.navigator.userAgent;
|
||||||
|
var msie = ua.indexOf('MSIE ');
|
||||||
|
var msie11 = ua.indexOf('Trident/');
|
||||||
|
var msedge = ua.indexOf('Edge/');
|
||||||
|
var isIE = msie > 0 || msie11 > 0;
|
||||||
|
var isEdge = msedge > 0;
|
||||||
|
|
||||||
|
//If you support IE, our recommendation is that you sign-in using Redirect APIs
|
||||||
|
//If you as a developer are testing using Edge InPrivate mode, please add "isEdge" to the if check
|
||||||
|
if (!isIE) {
|
||||||
|
if (myMSALObj.getUser()) {// avoid duplicate code execution on page load in case of iframe and popup window.
|
||||||
|
showWelcomeMessage();
|
||||||
|
acquireTokenPopupAndCallMSGraph();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
document.getElementById("SignIn").onclick = function () {
|
||||||
|
myMSALObj.loginRedirect(applicationConfig.graphScopes);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (myMSALObj.getUser() && !myMSALObj.isCallback(window.location.hash)) {// avoid duplicate code execution on page load in case of iframe and popup window.
|
||||||
|
showWelcomeMessage();
|
||||||
|
acquireTokenRedirectAndCallMSGraph();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,438 +0,0 @@
|
|||||||
WITH
|
|
||||||
target AS (select 50000 incr)
|
|
||||||
,GLD AS (
|
|
||||||
SELECT
|
|
||||||
N1COMP COMP
|
|
||||||
,N1CCYY FSYR
|
|
||||||
,KPMAXP PERDS
|
|
||||||
,N1FSPP PERD
|
|
||||||
,to_char(N1FSYP,'FM0000') FSPR
|
|
||||||
,N1SD01 SDAT
|
|
||||||
,N1ED01 EDAT
|
|
||||||
,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
|
|
||||||
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
|
||||||
FROM
|
|
||||||
LGDAT.GLDATREF
|
|
||||||
INNER JOIN LGDAT.GLDATE ON
|
|
||||||
KPCOMP = N1COMP AND
|
|
||||||
KPCCYY = N1CCYY
|
|
||||||
WHERE
|
|
||||||
N1COMP = 93
|
|
||||||
--AND DIGITS(N1FSYP) = '1901'
|
|
||||||
)
|
|
||||||
,mseq AS (
|
|
||||||
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)
|
|
||||||
) x(m,s,cal,yr)
|
|
||||||
)
|
|
||||||
,alldates AS (
|
|
||||||
SELECT
|
|
||||||
promo
|
|
||||||
,terms
|
|
||||||
,order_month
|
|
||||||
,mseq.s seq
|
|
||||||
,orderdate
|
|
||||||
,requestdate
|
|
||||||
,shipdate
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
LEFT OUTER JOIN mseq ON
|
|
||||||
mseq.m = order_month
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
GROUP BY
|
|
||||||
promo
|
|
||||||
,terms
|
|
||||||
,order_month
|
|
||||||
,mseq.s
|
|
||||||
,orderdate
|
|
||||||
,requestdate
|
|
||||||
,shipdate
|
|
||||||
HAVING
|
|
||||||
sum(value_usd) <> 0
|
|
||||||
)
|
|
||||||
--select * from alldates
|
|
||||||
,dom AS (
|
|
||||||
SELECT
|
|
||||||
extract(day FROM orderdate) DOM
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
alldates
|
|
||||||
GROUP BY
|
|
||||||
extract(day FROM orderdate)
|
|
||||||
)
|
|
||||||
---------------------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
|
|
||||||
,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(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
alldates
|
|
||||||
GROUP BY
|
|
||||||
to_char(orderdate,'Mon')
|
|
||||||
,seq
|
|
||||||
,promo
|
|
||||||
--,extract(day from orderdate)
|
|
||||||
--,requestdate-orderdate
|
|
||||||
--,shipdate - requestdate
|
|
||||||
)
|
|
||||||
,mmixp AS (
|
|
||||||
SELECT
|
|
||||||
_month
|
|
||||||
,seq
|
|
||||||
,promo
|
|
||||||
,round((dom_wa/value_usd)::numeric,0)::int odom
|
|
||||||
,round((rlag_wa/value_usd)::numeric,0)::int rlag
|
|
||||||
,round((slag_wa/value_usd)::numeric,0)::int slag
|
|
||||||
,value_usd/sum(value_usd) over (partition by _month) momix
|
|
||||||
--,value_usd/SUM(value_usd) over (PARTITION BY _month) vperc
|
|
||||||
FROM
|
|
||||||
mmix
|
|
||||||
)
|
|
||||||
--SELECT * FROM mmixp order by seq asc, vperc desc
|
|
||||||
,basemix AS (
|
|
||||||
SELECT
|
|
||||||
plnt ---master data
|
|
||||||
,0::numeric(11,0) "ddord#" --0
|
|
||||||
,0::numeric(11,0) "dditm#" --0
|
|
||||||
,0::numeric(11,0) "fgbol#" --0
|
|
||||||
,0::numeric(11,0) "fgent#" --0
|
|
||||||
,0::numeric(9,0) "diinv#" --0
|
|
||||||
,0::numeric(3,0) "dilin#" --0
|
|
||||||
,null::text promo --history date mix
|
|
||||||
,null::text return_reas --0
|
|
||||||
,terms
|
|
||||||
,''::text custpo --0
|
|
||||||
,'I' dhincr --0
|
|
||||||
,sum(diext) diext
|
|
||||||
,sum(ditdis) ditdis
|
|
||||||
,null::date dcodat --calculated date mix
|
|
||||||
,null::date ddqdat --calculated date mix
|
|
||||||
,null::date dcmdat --calculated date mix
|
|
||||||
,null::date dhidat --calculated date mix
|
|
||||||
,null::text fspr --calculated date mix
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,0::numeric(15,5) ddqtoi --0
|
|
||||||
,0::numeric(15,5) ddqtsi --0
|
|
||||||
,0::numeric(15,5) fgqshp --0
|
|
||||||
,0::numeric(15,5) diqtsh --0
|
|
||||||
,sum(coalesce(fb_qty,0)) fb_qty --history value
|
|
||||||
,sum(coalesce(fb_cst_loc,0)) fb_cst_loc --history part mix
|
|
||||||
,sum(coalesce(fb_cst_loc_cur,0)) fb_cst_loc_cur --master data
|
|
||||||
,sum(coalesce(fb_cst_loc_fut,0)) fb_cst_loc_fut --master data
|
|
||||||
,sum(coalesce(fb_val_loc,0)) fb_val_loc --history value
|
|
||||||
,sum(coalesce(fb_val_loc_pl,0)) fb_val_loc_pl --0
|
|
||||||
,calc_status --0
|
|
||||||
,flag --0
|
|
||||||
,null::date orderdate --history date mix
|
|
||||||
,null::date requestdate --history date mix
|
|
||||||
,null::date shipdate --history date mix
|
|
||||||
,null::date adj_orderdate --history
|
|
||||||
,null::date adj_requestdate --history
|
|
||||||
,null::date adj_shipdate --history
|
|
||||||
,'b20' "version" --calculated
|
|
||||||
,'adjustment' iter --calculated
|
|
||||||
---------------ui columns-------------------------
|
|
||||||
,null::numeric order_season
|
|
||||||
,null::text order_month
|
|
||||||
,null::numeric ship_season
|
|
||||||
,null::text ship_month
|
|
||||||
,null::numeric request_season
|
|
||||||
,null::text request_month
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,null value_loc
|
|
||||||
,null value_usd
|
|
||||||
,null cost_loc
|
|
||||||
,null cost_usd
|
|
||||||
,null units
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
GROUP BY
|
|
||||||
plnt ---master data
|
|
||||||
,terms
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,calc_status
|
|
||||||
,flag
|
|
||||||
,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 (
|
|
||||||
SELECT
|
|
||||||
(SELECT incr::numeric FROM target) incr
|
|
||||||
,(SELECT sum(fb_val_loc *r_rate) FROM basemix) base
|
|
||||||
,(SELECT incr::numeric FROM target)/(SELECT sum(fb_val_loc *r_rate) FROM basemix) factor
|
|
||||||
)
|
|
||||||
,final AS (
|
|
||||||
SELECT
|
|
||||||
b.plnt --master data
|
|
||||||
,b."ddord#" --0
|
|
||||||
,b."dditm#" --0
|
|
||||||
,b."fgbol#" --0
|
|
||||||
,b."fgent#" --0
|
|
||||||
,b."diinv#" --0
|
|
||||||
,b."dilin#" --0
|
|
||||||
,b.promo --history date mix
|
|
||||||
,b.return_reas --0
|
|
||||||
,b.terms --history cust mix
|
|
||||||
,b.custpo --0
|
|
||||||
,b.dhincr --0
|
|
||||||
,b.diext --0
|
|
||||||
,b.ditdis --0
|
|
||||||
,b.dcodat --calculated date mix
|
|
||||||
,b.ddqdat --calculated date mix
|
|
||||||
,b.dcmdat --calculated date mix
|
|
||||||
,b.dhidat --calculated date mix
|
|
||||||
,b.fspr --calculated date mix
|
|
||||||
,b.remit_to --master data
|
|
||||||
,b.bill_class --master data
|
|
||||||
,b.bill_cust --history cust mix
|
|
||||||
,b.bill_rep --master data
|
|
||||||
,b.bill_terr --master data
|
|
||||||
,b.ship_class --master data
|
|
||||||
,b.ship_cust --history cust mix
|
|
||||||
,b.ship_rep --master data
|
|
||||||
,b.ship_terr --master data
|
|
||||||
,b.quota_rep --master data
|
|
||||||
,b.account --master data
|
|
||||||
,b.shipgrp --master data
|
|
||||||
,b.geo --master data
|
|
||||||
,b.chan --master data
|
|
||||||
,b.orig_ctry --master data
|
|
||||||
,b.orig_prov --master data
|
|
||||||
,b.orig_post --master data
|
|
||||||
,b.dest_ctry --master data
|
|
||||||
,b.dest_prov --master data
|
|
||||||
,b.dest_post --master data
|
|
||||||
,b.part --history part mix
|
|
||||||
,b.ord_gldc --master data
|
|
||||||
,b.majg --master data
|
|
||||||
,b.ming --master data
|
|
||||||
,b.majs --master data
|
|
||||||
,b.mins --master data
|
|
||||||
,b.gldc --master data
|
|
||||||
,b.glec --master data
|
|
||||||
,b.harm --master data
|
|
||||||
,b.clss --master data
|
|
||||||
,b.brand --master data
|
|
||||||
,b.assc --master data
|
|
||||||
,b.fs_line --master data
|
|
||||||
,b.r_currency --history cust mix
|
|
||||||
,b.r_rate --master data
|
|
||||||
,b.c_currency --master data
|
|
||||||
,b.c_rate --master data
|
|
||||||
,b.ddqtoi --0
|
|
||||||
,b.ddqtsi --0
|
|
||||||
,b.fgqshp --0
|
|
||||||
,b.diqtsh --0
|
|
||||||
,0 fb_qty
|
|
||||||
,0 fb_cst_loc
|
|
||||||
,0 fb_cst_loc_cur
|
|
||||||
,0 fb_cst_loc_fut
|
|
||||||
,b.fb_val_loc*s.factor*m.momix fb_val_loc
|
|
||||||
,0 fb_val_loc_pl
|
|
||||||
,b.calc_status --0
|
|
||||||
,b.flag --0
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) orderdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag requestdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag shipdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) adj_orderdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag adj_requestdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag adj_shipdate
|
|
||||||
,b.version --calculated
|
|
||||||
,b.iter --calculated
|
|
||||||
-----------------------ui columns--------------------------------
|
|
||||||
,'adjust price' iterdet
|
|
||||||
,null::jsonb iterdef
|
|
||||||
,od.ssyr order_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom),'Mon') order_month
|
|
||||||
,sd.ssyr ship_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag,'Mon') ship_month
|
|
||||||
,rd.ssyr request_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag,'Mon') 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*m.momix value_loc
|
|
||||||
,b.fb_val_loc*s.factor*m.momix*r_rate value_usd
|
|
||||||
,0 cost_loc
|
|
||||||
,0 cost_usd
|
|
||||||
,0 units
|
|
||||||
FROM
|
|
||||||
basemix b
|
|
||||||
CROSS JOIN scale s
|
|
||||||
CROSS JOIN mmixp m
|
|
||||||
LEFT OUTER JOIN mseq ON
|
|
||||||
mseq.m = m._month
|
|
||||||
LEFT OUTER JOIN gld od ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) BETWEEN od.sdat AND od.edat
|
|
||||||
LEFT OUTER JOIN gld rd ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag BETWEEN rd.sdat AND rd.edat
|
|
||||||
LEFT OUTER JOIN gld sd ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat
|
|
||||||
WHERE
|
|
||||||
m._month = 'Jul'
|
|
||||||
)
|
|
||||||
INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
|
|
@ -1,522 +0,0 @@
|
|||||||
WITH
|
|
||||||
target AS (select 50000 incr)
|
|
||||||
,GLD AS (
|
|
||||||
SELECT
|
|
||||||
N1COMP COMP
|
|
||||||
,N1CCYY FSYR
|
|
||||||
,KPMAXP PERDS
|
|
||||||
,N1FSPP PERD
|
|
||||||
,to_char(N1FSYP,'FM0000') FSPR
|
|
||||||
,N1SD01 SDAT
|
|
||||||
,N1ED01 EDAT
|
|
||||||
,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
|
|
||||||
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
|
||||||
FROM
|
|
||||||
LGDAT.GLDATREF
|
|
||||||
INNER JOIN LGDAT.GLDATE ON
|
|
||||||
KPCOMP = N1COMP AND
|
|
||||||
KPCCYY = N1CCYY
|
|
||||||
WHERE
|
|
||||||
N1COMP = 93
|
|
||||||
--AND DIGITS(N1FSYP) = '1901'
|
|
||||||
)
|
|
||||||
,mseq AS (
|
|
||||||
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)
|
|
||||||
) x(m,s,cal,yr)
|
|
||||||
)
|
|
||||||
,alldates AS (
|
|
||||||
SELECT
|
|
||||||
promo
|
|
||||||
,terms
|
|
||||||
,order_month
|
|
||||||
,mseq.s seq
|
|
||||||
,orderdate
|
|
||||||
,requestdate
|
|
||||||
,shipdate
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
LEFT OUTER JOIN mseq ON
|
|
||||||
mseq.m = order_month
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
AND adj_orderdate <= adj_shipdate
|
|
||||||
GROUP BY
|
|
||||||
promo
|
|
||||||
,terms
|
|
||||||
,order_month
|
|
||||||
,mseq.s
|
|
||||||
,orderdate
|
|
||||||
,requestdate
|
|
||||||
,shipdate
|
|
||||||
HAVING
|
|
||||||
sum(value_usd) <> 0
|
|
||||||
)
|
|
||||||
--select * from alldates
|
|
||||||
,dom AS (
|
|
||||||
SELECT
|
|
||||||
extract(day FROM orderdate) DOM
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
alldates
|
|
||||||
GROUP BY
|
|
||||||
extract(day FROM orderdate)
|
|
||||||
)
|
|
||||||
---------------------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
|
|
||||||
,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(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
alldates
|
|
||||||
GROUP BY
|
|
||||||
to_char(orderdate,'Mon')
|
|
||||||
,seq
|
|
||||||
,promo
|
|
||||||
--,extract(day from orderdate)
|
|
||||||
--,requestdate-orderdate
|
|
||||||
--,shipdate - requestdate
|
|
||||||
)
|
|
||||||
,targm AS (select s, m from mseq where m = 'Jul' )
|
|
||||||
,mmixp AS (
|
|
||||||
SELECT
|
|
||||||
_month
|
|
||||||
,seq
|
|
||||||
,promo
|
|
||||||
,round((dom_wa/value_usd)::numeric,0)::int odom
|
|
||||||
,round((rlag_wa/value_usd)::numeric,0)::int rlag
|
|
||||||
,round((slag_wa/value_usd)::numeric,0)::int slag
|
|
||||||
,value_usd/sum(value_usd) over (partition by _month) momix
|
|
||||||
--,value_usd/SUM(value_usd) over (PARTITION BY _month) vperc
|
|
||||||
FROM
|
|
||||||
mmix
|
|
||||||
)
|
|
||||||
,closest AS (
|
|
||||||
SELECT
|
|
||||||
_month, targm.s, m
|
|
||||||
FROM
|
|
||||||
mmixp
|
|
||||||
CROSS JOIN targm
|
|
||||||
ORDER BY
|
|
||||||
abs(seq - targm.s) ASC
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
--SELECT * FROM mmixp order by seq asc, vperc desc
|
|
||||||
,basemix AS (
|
|
||||||
SELECT
|
|
||||||
plnt ---master data
|
|
||||||
,0::numeric(11,0) "ddord#" --0
|
|
||||||
,0::numeric(11,0) "dditm#" --0
|
|
||||||
,0::numeric(11,0) "fgbol#" --0
|
|
||||||
,0::numeric(11,0) "fgent#" --0
|
|
||||||
,0::numeric(9,0) "diinv#" --0
|
|
||||||
,0::numeric(3,0) "dilin#" --0
|
|
||||||
,null::text promo --history date mix
|
|
||||||
,null::text return_reas --0
|
|
||||||
,terms
|
|
||||||
,''::text custpo --0
|
|
||||||
,'I' dhincr --0
|
|
||||||
,sum(diext) diext
|
|
||||||
,sum(ditdis) ditdis
|
|
||||||
,null::date dcodat --calculated date mix
|
|
||||||
,null::date ddqdat --calculated date mix
|
|
||||||
,null::date dcmdat --calculated date mix
|
|
||||||
,null::date dhidat --calculated date mix
|
|
||||||
,null::text fspr --calculated date mix
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,0::numeric(15,5) ddqtoi --0
|
|
||||||
,0::numeric(15,5) ddqtsi --0
|
|
||||||
,0::numeric(15,5) fgqshp --0
|
|
||||||
,0::numeric(15,5) diqtsh --0
|
|
||||||
,sum(coalesce(fb_qty,0)) fb_qty --history value
|
|
||||||
,sum(coalesce(fb_cst_loc,0)) fb_cst_loc --history part mix
|
|
||||||
,sum(coalesce(fb_cst_loc_cur,0)) fb_cst_loc_cur --master data
|
|
||||||
,sum(coalesce(fb_cst_loc_fut,0)) fb_cst_loc_fut --master data
|
|
||||||
,sum(coalesce(fb_val_loc,0)) fb_val_loc --history value
|
|
||||||
,sum(coalesce(fb_val_loc_pl,0)) fb_val_loc_pl --0
|
|
||||||
,calc_status --0
|
|
||||||
,flag --0
|
|
||||||
,null::date orderdate --history date mix
|
|
||||||
,null::date requestdate --history date mix
|
|
||||||
,null::date shipdate --history date mix
|
|
||||||
,null::date adj_orderdate --history
|
|
||||||
,null::date adj_requestdate --history
|
|
||||||
,null::date adj_shipdate --history
|
|
||||||
,'b20' "version" --calculated
|
|
||||||
,'adjustment' iter --calculated
|
|
||||||
---------------ui columns-------------------------
|
|
||||||
,null::numeric order_season
|
|
||||||
,null::text order_month
|
|
||||||
,null::numeric ship_season
|
|
||||||
,null::text ship_month
|
|
||||||
,null::numeric request_season
|
|
||||||
,null::text request_month
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,null value_loc
|
|
||||||
,null value_usd
|
|
||||||
,null cost_loc
|
|
||||||
,null cost_usd
|
|
||||||
,null units
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
AND adj_orderdate <= adj_shipdate
|
|
||||||
GROUP BY
|
|
||||||
plnt ---master data
|
|
||||||
,terms
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,calc_status
|
|
||||||
,flag
|
|
||||||
,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 (
|
|
||||||
SELECT
|
|
||||||
(SELECT incr::numeric FROM target) incr
|
|
||||||
,(SELECT sum(fb_val_loc *r_rate) FROM basemix) base
|
|
||||||
,(SELECT incr::numeric FROM target)/(SELECT sum(fb_val_loc *r_rate) FROM basemix) factor
|
|
||||||
)
|
|
||||||
,final AS (
|
|
||||||
SELECT
|
|
||||||
b.plnt --master data
|
|
||||||
,b."ddord#" --0
|
|
||||||
,b."dditm#" --0
|
|
||||||
,b."fgbol#" --0
|
|
||||||
,b."fgent#" --0
|
|
||||||
,b."diinv#" --0
|
|
||||||
,b."dilin#" --0
|
|
||||||
,b.promo --history date mix
|
|
||||||
,b.return_reas --0
|
|
||||||
,b.terms --history cust mix
|
|
||||||
,b.custpo --0
|
|
||||||
,b.dhincr --0
|
|
||||||
,b.diext --0
|
|
||||||
,b.ditdis --0
|
|
||||||
,b.dcodat --calculated date mix
|
|
||||||
,b.ddqdat --calculated date mix
|
|
||||||
,b.dcmdat --calculated date mix
|
|
||||||
,b.dhidat --calculated date mix
|
|
||||||
,b.fspr --calculated date mix
|
|
||||||
,b.remit_to --master data
|
|
||||||
,b.bill_class --master data
|
|
||||||
,b.bill_cust --history cust mix
|
|
||||||
,b.bill_rep --master data
|
|
||||||
,b.bill_terr --master data
|
|
||||||
,b.ship_class --master data
|
|
||||||
,b.ship_cust --history cust mix
|
|
||||||
,b.ship_rep --master data
|
|
||||||
,b.ship_terr --master data
|
|
||||||
,b.quota_rep --master data
|
|
||||||
,b.account --master data
|
|
||||||
,b.shipgrp --master data
|
|
||||||
,b.geo --master data
|
|
||||||
,b.chan --master data
|
|
||||||
,b.orig_ctry --master data
|
|
||||||
,b.orig_prov --master data
|
|
||||||
,b.orig_post --master data
|
|
||||||
,b.dest_ctry --master data
|
|
||||||
,b.dest_prov --master data
|
|
||||||
,b.dest_post --master data
|
|
||||||
,b.part --history part mix
|
|
||||||
,b.ord_gldc --master data
|
|
||||||
,b.majg --master data
|
|
||||||
,b.ming --master data
|
|
||||||
,b.majs --master data
|
|
||||||
,b.mins --master data
|
|
||||||
,b.gldc --master data
|
|
||||||
,b.glec --master data
|
|
||||||
,b.harm --master data
|
|
||||||
,b.clss --master data
|
|
||||||
,b.brand --master data
|
|
||||||
,b.assc --master data
|
|
||||||
,b.fs_line --master data
|
|
||||||
,b.r_currency --history cust mix
|
|
||||||
,b.r_rate --master data
|
|
||||||
,b.c_currency --master data
|
|
||||||
,b.c_rate --master data
|
|
||||||
,b.ddqtoi --0
|
|
||||||
,b.ddqtsi --0
|
|
||||||
,b.fgqshp --0
|
|
||||||
,b.diqtsh --0
|
|
||||||
,b.fb_qty*s.factor*m.momix fb_qty
|
|
||||||
,b.fb_cst_loc*s.factor*m.momix fb_cst_loc
|
|
||||||
,b.fb_cst_loc_cur*s.factor*m.momix fb_cst_loc_cur
|
|
||||||
,b.fb_cst_loc_fut*s.factor*m.momix fb_cst_loc_fut
|
|
||||||
,b.fb_val_loc*s.factor*m.momix fb_val_loc
|
|
||||||
,b.fb_val_loc_pl*s.factor*m.momix fb_val_loc_pl
|
|
||||||
,b.calc_status --0
|
|
||||||
,b.flag --0
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) orderdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag requestdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag shipdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) adj_orderdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag adj_requestdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag adj_shipdate
|
|
||||||
,b.version --calculated
|
|
||||||
,b.iter --calculated
|
|
||||||
-----------------------ui columns--------------------------------
|
|
||||||
,'adjust volume' iterdet
|
|
||||||
,null::jsonb iterdef
|
|
||||||
,od.ssyr order_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom),'Mon') order_month
|
|
||||||
,sd.ssyr ship_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag,'Mon') ship_month
|
|
||||||
,rd.ssyr request_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag,'Mon') 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*m.momix)::numeric value_loc
|
|
||||||
,(b.fb_val_loc*s.factor*m.momix*r_rate)::numeric value_usd
|
|
||||||
,(b.fb_cst_loc*s.factor*m.momix)::numeric cost_loc
|
|
||||||
,(b.fb_cst_loc*s.factor*m.momix*c_rate)::numeric cost_usd
|
|
||||||
,(b.fb_qty*s.factor*m.momix)::numeric units
|
|
||||||
FROM
|
|
||||||
basemix b
|
|
||||||
CROSS JOIN scale s
|
|
||||||
CROSS JOIN mmixp m
|
|
||||||
CROSS JOIN closest
|
|
||||||
LEFT OUTER JOIN mseq ON
|
|
||||||
mseq.m = closest.m
|
|
||||||
LEFT OUTER JOIN gld od ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) BETWEEN od.sdat AND od.edat
|
|
||||||
LEFT OUTER JOIN gld rd ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag BETWEEN rd.sdat AND rd.edat
|
|
||||||
LEFT OUTER JOIN gld sd ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat
|
|
||||||
WHERE
|
|
||||||
m._month = (SELECT _month FROM closest)
|
|
||||||
)
|
|
||||||
, ins AS (
|
|
||||||
INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
|
|
||||||
)
|
|
||||||
,insagg AS (
|
|
||||||
SELECT
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,sum(value_loc) value_loc
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
,sum(cost_loc) cost_loc
|
|
||||||
,sum(cost_usd) cost_usd
|
|
||||||
,sum(units) units
|
|
||||||
FROM
|
|
||||||
ins
|
|
||||||
GROUP BY
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
)
|
|
||||||
SELECT json_agg(row_to_json(insagg)) x from insagg
|
|
@ -1,647 +0,0 @@
|
|||||||
WITH
|
|
||||||
/*
|
|
||||||
the volume must be expressed in terms of units, since that is what it will be scaling
|
|
||||||
*/
|
|
||||||
target AS (select -50000 vincr, 20000 pincr)
|
|
||||||
,GLD AS (
|
|
||||||
SELECT
|
|
||||||
N1COMP COMP
|
|
||||||
,N1CCYY FSYR
|
|
||||||
,KPMAXP PERDS
|
|
||||||
,N1FSPP PERD
|
|
||||||
,to_char(N1FSYP,'FM0000') FSPR
|
|
||||||
,N1SD01 SDAT
|
|
||||||
,N1ED01 EDAT
|
|
||||||
,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
|
|
||||||
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
|
||||||
FROM
|
|
||||||
LGDAT.GLDATREF
|
|
||||||
INNER JOIN LGDAT.GLDATE ON
|
|
||||||
KPCOMP = N1COMP AND
|
|
||||||
KPCCYY = N1CCYY
|
|
||||||
WHERE
|
|
||||||
N1COMP = 93
|
|
||||||
--AND DIGITS(N1FSYP) = '1901'
|
|
||||||
)
|
|
||||||
,mseq AS (
|
|
||||||
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)
|
|
||||||
) x(m,s,cal,yr)
|
|
||||||
)
|
|
||||||
,alldates AS (
|
|
||||||
SELECT
|
|
||||||
promo
|
|
||||||
,terms
|
|
||||||
,order_month
|
|
||||||
,mseq.s seq
|
|
||||||
,orderdate
|
|
||||||
,requestdate
|
|
||||||
,shipdate
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
LEFT OUTER JOIN mseq ON
|
|
||||||
mseq.m = order_month
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
AND adj_orderdate <= adj_shipdate
|
|
||||||
GROUP BY
|
|
||||||
promo
|
|
||||||
,terms
|
|
||||||
,order_month
|
|
||||||
,mseq.s
|
|
||||||
,orderdate
|
|
||||||
,requestdate
|
|
||||||
,shipdate
|
|
||||||
HAVING
|
|
||||||
sum(value_usd) <> 0
|
|
||||||
)
|
|
||||||
--select * from alldates
|
|
||||||
,dom AS (
|
|
||||||
SELECT
|
|
||||||
extract(day FROM orderdate) DOM
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
alldates
|
|
||||||
GROUP BY
|
|
||||||
extract(day FROM orderdate)
|
|
||||||
)
|
|
||||||
---------------------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
|
|
||||||
,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(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
alldates
|
|
||||||
GROUP BY
|
|
||||||
to_char(orderdate,'Mon')
|
|
||||||
,seq
|
|
||||||
,promo
|
|
||||||
--,extract(day from orderdate)
|
|
||||||
--,requestdate-orderdate
|
|
||||||
--,shipdate - requestdate
|
|
||||||
)
|
|
||||||
,targm AS (select s, m from mseq where m = 'Jul' )
|
|
||||||
,mmixp AS (
|
|
||||||
SELECT
|
|
||||||
_month
|
|
||||||
,seq
|
|
||||||
,promo
|
|
||||||
,round((dom_wa/value_usd)::numeric,0)::int odom
|
|
||||||
,round((rlag_wa/value_usd)::numeric,0)::int rlag
|
|
||||||
,round((slag_wa/value_usd)::numeric,0)::int slag
|
|
||||||
,value_usd/sum(value_usd) over (partition by _month) momix
|
|
||||||
--,value_usd/SUM(value_usd) over (PARTITION BY _month) vperc
|
|
||||||
FROM
|
|
||||||
mmix
|
|
||||||
)
|
|
||||||
,closest AS (
|
|
||||||
SELECT
|
|
||||||
_month, targm.s, m
|
|
||||||
FROM
|
|
||||||
mmixp
|
|
||||||
CROSS JOIN targm
|
|
||||||
ORDER BY
|
|
||||||
abs(seq - targm.s) ASC
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
--SELECT * FROM mmixp order by seq asc, vperc desc
|
|
||||||
,basemix AS (
|
|
||||||
SELECT
|
|
||||||
plnt ---master data
|
|
||||||
,0::numeric(11,0) "ddord#" --0
|
|
||||||
,0::numeric(11,0) "dditm#" --0
|
|
||||||
,0::numeric(11,0) "fgbol#" --0
|
|
||||||
,0::numeric(11,0) "fgent#" --0
|
|
||||||
,0::numeric(9,0) "diinv#" --0
|
|
||||||
,0::numeric(3,0) "dilin#" --0
|
|
||||||
,null::text promo --history date mix
|
|
||||||
,null::text return_reas --0
|
|
||||||
,terms
|
|
||||||
,''::text custpo --0
|
|
||||||
,'I' dhincr --0
|
|
||||||
,sum(diext) diext
|
|
||||||
,sum(ditdis) ditdis
|
|
||||||
,null::date dcodat --calculated date mix
|
|
||||||
,null::date ddqdat --calculated date mix
|
|
||||||
,null::date dcmdat --calculated date mix
|
|
||||||
,null::date dhidat --calculated date mix
|
|
||||||
,null::text fspr --calculated date mix
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,0::numeric(15,5) ddqtoi --0
|
|
||||||
,0::numeric(15,5) ddqtsi --0
|
|
||||||
,0::numeric(15,5) fgqshp --0
|
|
||||||
,0::numeric(15,5) diqtsh --0
|
|
||||||
,sum(coalesce(fb_qty,0)) fb_qty --history value
|
|
||||||
,sum(coalesce(fb_cst_loc,0)) fb_cst_loc --history part mix
|
|
||||||
,sum(coalesce(fb_cst_loc_cur,0)) fb_cst_loc_cur --master data
|
|
||||||
,sum(coalesce(fb_cst_loc_fut,0)) fb_cst_loc_fut --master data
|
|
||||||
,sum(coalesce(fb_val_loc,0)) fb_val_loc --history value
|
|
||||||
,sum(coalesce(fb_val_loc_pl,0)) fb_val_loc_pl --0
|
|
||||||
,calc_status --0
|
|
||||||
,flag --0
|
|
||||||
,null::date orderdate --history date mix
|
|
||||||
,null::date requestdate --history date mix
|
|
||||||
,null::date shipdate --history date mix
|
|
||||||
,null::date adj_orderdate --history
|
|
||||||
,null::date adj_requestdate --history
|
|
||||||
,null::date adj_shipdate --history
|
|
||||||
,'b20' "version" --calculated
|
|
||||||
,'adjustment' iter --calculated
|
|
||||||
---------------ui columns-------------------------
|
|
||||||
,null::numeric order_season
|
|
||||||
,null::text order_month
|
|
||||||
,null::numeric ship_season
|
|
||||||
,null::text ship_month
|
|
||||||
,null::numeric request_season
|
|
||||||
,null::text request_month
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,null value_loc
|
|
||||||
,null value_usd
|
|
||||||
,null cost_loc
|
|
||||||
,null cost_usd
|
|
||||||
,null units
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
AND adj_orderdate <= adj_shipdate
|
|
||||||
GROUP BY
|
|
||||||
plnt ---master data
|
|
||||||
,terms
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,calc_status
|
|
||||||
,flag
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
)
|
|
||||||
,vscale AS (
|
|
||||||
SELECT
|
|
||||||
(SELECT vincr::numeric FROM target) incr
|
|
||||||
,(SELECT sum(fb_qty) FROM basemix) base
|
|
||||||
,(SELECT vincr::numeric FROM target)/(SELECT sum(fb_qty) FROM basemix) factor
|
|
||||||
)
|
|
||||||
--select * from SCALE
|
|
||||||
,volume AS (
|
|
||||||
SELECT
|
|
||||||
b.plnt --master data
|
|
||||||
,b."ddord#" --0
|
|
||||||
,b."dditm#" --0
|
|
||||||
,b."fgbol#" --0
|
|
||||||
,b."fgent#" --0
|
|
||||||
,b."diinv#" --0
|
|
||||||
,b."dilin#" --0
|
|
||||||
,b.promo --history date mix
|
|
||||||
,b.return_reas --0
|
|
||||||
,b.terms --history cust mix
|
|
||||||
,b.custpo --0
|
|
||||||
,b.dhincr --0
|
|
||||||
,b.diext --0
|
|
||||||
,b.ditdis --0
|
|
||||||
,b.dcodat --calculated date mix
|
|
||||||
,b.ddqdat --calculated date mix
|
|
||||||
,b.dcmdat --calculated date mix
|
|
||||||
,b.dhidat --calculated date mix
|
|
||||||
,b.fspr --calculated date mix
|
|
||||||
,b.remit_to --master data
|
|
||||||
,b.bill_class --master data
|
|
||||||
,b.bill_cust --history cust mix
|
|
||||||
,b.bill_rep --master data
|
|
||||||
,b.bill_terr --master data
|
|
||||||
,b.ship_class --master data
|
|
||||||
,b.ship_cust --history cust mix
|
|
||||||
,b.ship_rep --master data
|
|
||||||
,b.ship_terr --master data
|
|
||||||
,b.quota_rep --master data
|
|
||||||
,b.account --master data
|
|
||||||
,b.shipgrp --master data
|
|
||||||
,b.geo --master data
|
|
||||||
,b.chan --master data
|
|
||||||
,b.orig_ctry --master data
|
|
||||||
,b.orig_prov --master data
|
|
||||||
,b.orig_post --master data
|
|
||||||
,b.dest_ctry --master data
|
|
||||||
,b.dest_prov --master data
|
|
||||||
,b.dest_post --master data
|
|
||||||
,b.part --history part mix
|
|
||||||
,b.ord_gldc --master data
|
|
||||||
,b.majg --master data
|
|
||||||
,b.ming --master data
|
|
||||||
,b.majs --master data
|
|
||||||
,b.mins --master data
|
|
||||||
,b.gldc --master data
|
|
||||||
,b.glec --master data
|
|
||||||
,b.harm --master data
|
|
||||||
,b.clss --master data
|
|
||||||
,b.brand --master data
|
|
||||||
,b.assc --master data
|
|
||||||
,b.fs_line --master data
|
|
||||||
,b.r_currency --history cust mix
|
|
||||||
,b.r_rate --master data
|
|
||||||
,b.c_currency --master data
|
|
||||||
,b.c_rate --master data
|
|
||||||
,b.ddqtoi --0
|
|
||||||
,b.ddqtsi --0
|
|
||||||
,b.fgqshp --0
|
|
||||||
,b.diqtsh --0
|
|
||||||
,b.fb_qty*s.factor*m.momix fb_qty
|
|
||||||
,b.fb_cst_loc*s.factor*m.momix fb_cst_loc
|
|
||||||
,b.fb_cst_loc_cur*s.factor*m.momix fb_cst_loc_cur
|
|
||||||
,b.fb_cst_loc_fut*s.factor*m.momix fb_cst_loc_fut
|
|
||||||
,b.fb_val_loc*s.factor*m.momix fb_val_loc
|
|
||||||
,b.fb_val_loc_pl*s.factor*m.momix fb_val_loc_pl
|
|
||||||
,b.calc_status --0
|
|
||||||
,b.flag --0
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) orderdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag requestdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag shipdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) adj_orderdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag adj_requestdate
|
|
||||||
,make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag adj_shipdate
|
|
||||||
,b.version --calculated
|
|
||||||
,b.iter --calculated
|
|
||||||
-----------------------ui columns--------------------------------
|
|
||||||
,'adjust volume' iterdet
|
|
||||||
,null::jsonb iterdef
|
|
||||||
,od.ssyr order_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom),'Mon') order_month
|
|
||||||
,sd.ssyr ship_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag,'Mon') ship_month
|
|
||||||
,rd.ssyr request_season
|
|
||||||
,to_char(make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag,'Mon') 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*m.momix value_loc
|
|
||||||
,b.fb_val_loc*s.factor*m.momix*r_rate value_usd
|
|
||||||
,b.fb_cst_loc*s.factor*m.momix cost_loc
|
|
||||||
,b.fb_cst_loc*s.factor*m.momix*c_rate cost_usd
|
|
||||||
,(b.fb_qty*s.factor*m.momix) units
|
|
||||||
FROM
|
|
||||||
basemix b
|
|
||||||
CROSS JOIN vscale s
|
|
||||||
CROSS JOIN mmixp m
|
|
||||||
CROSS JOIN closest
|
|
||||||
LEFT OUTER JOIN mseq ON
|
|
||||||
mseq.m = closest.m
|
|
||||||
LEFT OUTER JOIN gld od ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) BETWEEN od.sdat AND od.edat
|
|
||||||
LEFT OUTER JOIN gld rd ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag BETWEEN rd.sdat AND rd.edat
|
|
||||||
LEFT OUTER JOIN gld sd ON
|
|
||||||
make_date(mseq.yr + 2020,mseq.cal,m.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat
|
|
||||||
WHERE
|
|
||||||
m._month = (SELECT _month FROM closest)
|
|
||||||
)
|
|
||||||
,pscale AS (
|
|
||||||
SELECT
|
|
||||||
(SELECT pincr::numeric FROM target) incr
|
|
||||||
,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
|
|
||||||
,(SELECT pincr::numeric FROM target)/(SELECT sum(fb_val_loc) FROM volume) factor
|
|
||||||
)
|
|
||||||
,price AS (
|
|
||||||
SELECT
|
|
||||||
b.plnt --master data
|
|
||||||
,b."ddord#" --0
|
|
||||||
,b."dditm#" --0
|
|
||||||
,b."fgbol#" --0
|
|
||||||
,b."fgent#" --0
|
|
||||||
,b."diinv#" --0
|
|
||||||
,b."dilin#" --0
|
|
||||||
,b.promo --history date mix
|
|
||||||
,b.return_reas --0
|
|
||||||
,b.terms --history cust mix
|
|
||||||
,b.custpo --0
|
|
||||||
,b.dhincr --0
|
|
||||||
,b.diext --0
|
|
||||||
,b.ditdis --0
|
|
||||||
,b.dcodat --calculated date mix
|
|
||||||
,b.ddqdat --calculated date mix
|
|
||||||
,b.dcmdat --calculated date mix
|
|
||||||
,b.dhidat --calculated date mix
|
|
||||||
,b.fspr --calculated date mix
|
|
||||||
,b.remit_to --master data
|
|
||||||
,b.bill_class --master data
|
|
||||||
,b.bill_cust --history cust mix
|
|
||||||
,b.bill_rep --master data
|
|
||||||
,b.bill_terr --master data
|
|
||||||
,b.ship_class --master data
|
|
||||||
,b.ship_cust --history cust mix
|
|
||||||
,b.ship_rep --master data
|
|
||||||
,b.ship_terr --master data
|
|
||||||
,b.quota_rep --master data
|
|
||||||
,b.account --master data
|
|
||||||
,b.shipgrp --master data
|
|
||||||
,b.geo --master data
|
|
||||||
,b.chan --master data
|
|
||||||
,b.orig_ctry --master data
|
|
||||||
,b.orig_prov --master data
|
|
||||||
,b.orig_post --master data
|
|
||||||
,b.dest_ctry --master data
|
|
||||||
,b.dest_prov --master data
|
|
||||||
,b.dest_post --master data
|
|
||||||
,b.part --history part mix
|
|
||||||
,b.ord_gldc --master data
|
|
||||||
,b.majg --master data
|
|
||||||
,b.ming --master data
|
|
||||||
,b.majs --master data
|
|
||||||
,b.mins --master data
|
|
||||||
,b.gldc --master data
|
|
||||||
,b.glec --master data
|
|
||||||
,b.harm --master data
|
|
||||||
,b.clss --master data
|
|
||||||
,b.brand --master data
|
|
||||||
,b.assc --master data
|
|
||||||
,b.fs_line --master data
|
|
||||||
,b.r_currency --history cust mix
|
|
||||||
,b.r_rate --master data
|
|
||||||
,b.c_currency --master data
|
|
||||||
,b.c_rate --master data
|
|
||||||
,b.ddqtoi --0
|
|
||||||
,b.ddqtsi --0
|
|
||||||
,b.fgqshp --0
|
|
||||||
,b.diqtsh --0
|
|
||||||
,b.fb_qty
|
|
||||||
,b.fb_cst_loc
|
|
||||||
,b.fb_cst_loc_cur
|
|
||||||
,b.fb_cst_loc_fut
|
|
||||||
,b.fb_val_loc*p.factor fb_val_loc
|
|
||||||
,b.fb_val_loc_pl*p.factor fb_val_loc_pl
|
|
||||||
,b.calc_status --0
|
|
||||||
,b.flag --0
|
|
||||||
,b.orderdate
|
|
||||||
,b.requestdate
|
|
||||||
,b.shipdate
|
|
||||||
,b.adj_orderdate
|
|
||||||
,b.adj_requestdate
|
|
||||||
,b.adj_shipdate
|
|
||||||
,b.version --calculated
|
|
||||||
,b.iter --calculated
|
|
||||||
-----------------------ui columns--------------------------------
|
|
||||||
,'adjust p & v' iterdet
|
|
||||||
,null::jsonb iterdef
|
|
||||||
,b.order_season
|
|
||||||
,b.order_month
|
|
||||||
,b.ship_season
|
|
||||||
,b.ship_month
|
|
||||||
,b.request_season
|
|
||||||
,b.request_month
|
|
||||||
,b.part_descr
|
|
||||||
,b.part_family
|
|
||||||
,b.part_group
|
|
||||||
,b.branding
|
|
||||||
,b.color
|
|
||||||
,b.segm
|
|
||||||
,b.bill_cust_descr
|
|
||||||
,b.billto_group
|
|
||||||
,b.ship_cust_descr
|
|
||||||
,b.shipto_group
|
|
||||||
,b.majg_descr
|
|
||||||
,b.ming_descr
|
|
||||||
,b.majs_descr
|
|
||||||
,b.mins_descr
|
|
||||||
,b.mod_chan
|
|
||||||
,b.mod_chansub
|
|
||||||
,b.quota_rep_descr
|
|
||||||
,b.director_descr
|
|
||||||
,b.fb_val_loc*p.factor value_loc
|
|
||||||
,b.fb_val_loc*p.factor*r_rate value_usd
|
|
||||||
,b.fb_cst_loc cost_loc
|
|
||||||
,b.fb_cst_loc*c_rate cost_usd
|
|
||||||
,b.units
|
|
||||||
FROM
|
|
||||||
volume b
|
|
||||||
CROSS JOIN pscale p
|
|
||||||
)
|
|
||||||
, ins AS (
|
|
||||||
INSERT INTO rlarp.osm_fcpool SELECT * FROM price RETURNING *
|
|
||||||
)
|
|
||||||
,insagg AS (
|
|
||||||
SELECT
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,sum(value_loc) value_loc
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
,sum(cost_loc) cost_loc
|
|
||||||
,sum(cost_usd) cost_usd
|
|
||||||
,sum(units) units
|
|
||||||
FROM
|
|
||||||
ins
|
|
||||||
GROUP BY
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
)
|
|
||||||
SELECT * FROM insagg
|
|
||||||
--SELECT json_agg(row_to_json(insagg)) x from insagg
|
|
@ -1,80 +0,0 @@
|
|||||||
WITH rows AS (
|
|
||||||
SELECT
|
|
||||||
---------customer info-----------------
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
---------product info------------------
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
---------dates-------------------------
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
--------values-------------------------
|
|
||||||
,sum(value_loc) value_loc
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
,sum(cost_loc) cost_loc
|
|
||||||
,sum(cost_usd) cost_usd
|
|
||||||
,sum(units) units
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
WHERE
|
|
||||||
quota_rep_descr = '13025 - JAMES REGER'
|
|
||||||
GROUP BY
|
|
||||||
---------customer info-----------------
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
---------product info------------------
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
---------dates-------------------------
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
json_agg(row_to_json(rows))
|
|
||||||
FROM
|
|
||||||
rows
|
|
@ -1,390 +0,0 @@
|
|||||||
WITH
|
|
||||||
target AS (select 50000 incr)
|
|
||||||
,basemix AS (
|
|
||||||
SELECT
|
|
||||||
plnt ---master data
|
|
||||||
,0::numeric(11,0) "ddord#" --0
|
|
||||||
,0::numeric(11,0) "dditm#" --0
|
|
||||||
,0::numeric(11,0) "fgbol#" --0
|
|
||||||
,0::numeric(11,0) "fgent#" --0
|
|
||||||
,0::numeric(9,0) "diinv#" --0
|
|
||||||
,0::numeric(3,0) "dilin#" --0
|
|
||||||
,null::text promo --history date mix
|
|
||||||
,null::text return_reas --0
|
|
||||||
,terms
|
|
||||||
,''::text custpo --0
|
|
||||||
,'I' dhincr --0
|
|
||||||
,sum(diext) diext
|
|
||||||
,sum(ditdis) ditdis
|
|
||||||
,null::date dcodat --calculated date mix
|
|
||||||
,null::date ddqdat --calculated date mix
|
|
||||||
,null::date dcmdat --calculated date mix
|
|
||||||
,null::date dhidat --calculated date mix
|
|
||||||
,null::text fspr --calculated date mix
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,0::numeric(15,5) ddqtoi --0
|
|
||||||
,0::numeric(15,5) ddqtsi --0
|
|
||||||
,0::numeric(15,5) fgqshp --0
|
|
||||||
,0::numeric(15,5) diqtsh --0
|
|
||||||
,sum(coalesce(fb_qty,0)) fb_qty --history value
|
|
||||||
,sum(coalesce(fb_cst_loc,0)) fb_cst_loc --history part mix
|
|
||||||
,sum(coalesce(fb_cst_loc_cur,0)) fb_cst_loc_cur --master data
|
|
||||||
,sum(coalesce(fb_cst_loc_fut,0)) fb_cst_loc_fut --master data
|
|
||||||
,sum(coalesce(fb_val_loc,0)) fb_val_loc --history value
|
|
||||||
,sum(coalesce(fb_val_loc_pl,0)) fb_val_loc_pl --0
|
|
||||||
,calc_status --0
|
|
||||||
,flag --0
|
|
||||||
,orderdate --history date mix
|
|
||||||
,requestdate --history date mix
|
|
||||||
,shipdate --history date mix
|
|
||||||
,adj_orderdate --history
|
|
||||||
,adj_requestdate --history
|
|
||||||
,adj_shipdate --history
|
|
||||||
,'b20' "version" --calculated
|
|
||||||
,'adjustment' iter --calculated
|
|
||||||
---------------ui columns-------------------------
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,null value_loc
|
|
||||||
,null value_usd
|
|
||||||
,null cost_loc
|
|
||||||
,null cost_usd
|
|
||||||
,null units
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
AND adj_orderdate <= adj_shipdate
|
|
||||||
GROUP BY
|
|
||||||
plnt ---master data
|
|
||||||
,terms
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,calc_status --0
|
|
||||||
,flag --0
|
|
||||||
,orderdate --history date mix
|
|
||||||
,requestdate --history date mix
|
|
||||||
,shipdate --history date mix
|
|
||||||
,adj_orderdate --history
|
|
||||||
,adj_requestdate --history
|
|
||||||
,adj_shipdate --history
|
|
||||||
---------------ui columns-------------------------
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
)
|
|
||||||
,scale AS (
|
|
||||||
SELECT
|
|
||||||
(SELECT incr::numeric FROM target) incr
|
|
||||||
,(SELECT sum(fb_val_loc *r_rate) FROM basemix) base
|
|
||||||
,(SELECT incr::numeric FROM target)/(SELECT sum(fb_val_loc *r_rate) FROM basemix) factor
|
|
||||||
)
|
|
||||||
,final AS (
|
|
||||||
SELECT
|
|
||||||
b.plnt --master data
|
|
||||||
,b."ddord#" --0
|
|
||||||
,b."dditm#" --0
|
|
||||||
,b."fgbol#" --0
|
|
||||||
,b."fgent#" --0
|
|
||||||
,b."diinv#" --0
|
|
||||||
,b."dilin#" --0
|
|
||||||
,b.promo --history date mix
|
|
||||||
,b.return_reas --0
|
|
||||||
,b.terms --history cust mix
|
|
||||||
,b.custpo --0
|
|
||||||
,b.dhincr --0
|
|
||||||
,b.diext --0
|
|
||||||
,b.ditdis --0
|
|
||||||
,b.dcodat --calculated date mix
|
|
||||||
,b.ddqdat --calculated date mix
|
|
||||||
,b.dcmdat --calculated date mix
|
|
||||||
,b.dhidat --calculated date mix
|
|
||||||
,b.fspr --calculated date mix
|
|
||||||
,b.remit_to --master data
|
|
||||||
,b.bill_class --master data
|
|
||||||
,b.bill_cust --history cust mix
|
|
||||||
,b.bill_rep --master data
|
|
||||||
,b.bill_terr --master data
|
|
||||||
,b.ship_class --master data
|
|
||||||
,b.ship_cust --history cust mix
|
|
||||||
,b.ship_rep --master data
|
|
||||||
,b.ship_terr --master data
|
|
||||||
,b.quota_rep --master data
|
|
||||||
,b.account --master data
|
|
||||||
,b.shipgrp --master data
|
|
||||||
,b.geo --master data
|
|
||||||
,b.chan --master data
|
|
||||||
,b.orig_ctry --master data
|
|
||||||
,b.orig_prov --master data
|
|
||||||
,b.orig_post --master data
|
|
||||||
,b.dest_ctry --master data
|
|
||||||
,b.dest_prov --master data
|
|
||||||
,b.dest_post --master data
|
|
||||||
,b.part --history part mix
|
|
||||||
,b.ord_gldc --master data
|
|
||||||
,b.majg --master data
|
|
||||||
,b.ming --master data
|
|
||||||
,b.majs --master data
|
|
||||||
,b.mins --master data
|
|
||||||
,b.gldc --master data
|
|
||||||
,b.glec --master data
|
|
||||||
,b.harm --master data
|
|
||||||
,b.clss --master data
|
|
||||||
,b.brand --master data
|
|
||||||
,b.assc --master data
|
|
||||||
,b.fs_line --master data
|
|
||||||
,b.r_currency --history cust mix
|
|
||||||
,b.r_rate --master data
|
|
||||||
,b.c_currency --master data
|
|
||||||
,b.c_rate --master data
|
|
||||||
,b.ddqtoi --0
|
|
||||||
,b.ddqtsi --0
|
|
||||||
,b.fgqshp --0
|
|
||||||
,b.diqtsh --0
|
|
||||||
,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
|
|
||||||
,b.fb_val_loc_pl*s.factor fb_val_loc_pl
|
|
||||||
,b.calc_status --0
|
|
||||||
,b.flag --0
|
|
||||||
,b.orderdate
|
|
||||||
,b.requestdate
|
|
||||||
,b.shipdate
|
|
||||||
,b.adj_orderdate
|
|
||||||
,b.adj_requestdate
|
|
||||||
,b.adj_shipdate
|
|
||||||
,b.version --calculated
|
|
||||||
,b.iter --calculated
|
|
||||||
-----------------------ui columns--------------------------------
|
|
||||||
,'scale volume' iterdet
|
|
||||||
,null::jsonb iterdef
|
|
||||||
,b.order_season
|
|
||||||
,b.order_month
|
|
||||||
,b.ship_season
|
|
||||||
,b.ship_month
|
|
||||||
,b.request_season
|
|
||||||
,b.request_month
|
|
||||||
,b.part_descr
|
|
||||||
,b.part_family
|
|
||||||
,b.part_group
|
|
||||||
,b.branding
|
|
||||||
,b.color
|
|
||||||
,b.segm
|
|
||||||
,b.bill_cust_descr
|
|
||||||
,b.billto_group
|
|
||||||
,b.ship_cust_descr
|
|
||||||
,b.shipto_group
|
|
||||||
,b.majg_descr
|
|
||||||
,b.ming_descr
|
|
||||||
,b.majs_descr
|
|
||||||
,b.mins_descr
|
|
||||||
,b.mod_chan
|
|
||||||
,b.mod_chansub
|
|
||||||
,b.quota_rep_descr
|
|
||||||
,b.director_descr
|
|
||||||
,(b.fb_val_loc*s.factor)::numeric value_loc
|
|
||||||
,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
|
|
||||||
,0 cost_loc
|
|
||||||
,0 cost_usd
|
|
||||||
,0 units
|
|
||||||
FROM
|
|
||||||
basemix b
|
|
||||||
CROSS JOIN scale s
|
|
||||||
)
|
|
||||||
--select sum(value_usd), count(*) from final
|
|
||||||
, ins AS (
|
|
||||||
INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
|
|
||||||
)
|
|
||||||
,insagg AS (
|
|
||||||
SELECT
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,sum(value_loc) value_loc
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
,sum(cost_loc) cost_loc
|
|
||||||
,sum(cost_usd) cost_usd
|
|
||||||
,sum(units) units
|
|
||||||
FROM
|
|
||||||
ins
|
|
||||||
GROUP BY
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
)
|
|
||||||
SELECT json_agg(row_to_json(insagg)) x from insagg
|
|
@ -1,513 +0,0 @@
|
|||||||
WITH
|
|
||||||
target AS (select -50000 vincr, 20000 pincr)
|
|
||||||
,basemix AS (
|
|
||||||
SELECT
|
|
||||||
plnt ---master data
|
|
||||||
,0::numeric(11,0) "ddord#" --0
|
|
||||||
,0::numeric(11,0) "dditm#" --0
|
|
||||||
,0::numeric(11,0) "fgbol#" --0
|
|
||||||
,0::numeric(11,0) "fgent#" --0
|
|
||||||
,0::numeric(9,0) "diinv#" --0
|
|
||||||
,0::numeric(3,0) "dilin#" --0
|
|
||||||
,null::text promo --history date mix
|
|
||||||
,null::text return_reas --0
|
|
||||||
,terms
|
|
||||||
,''::text custpo --0
|
|
||||||
,'I' dhincr --0
|
|
||||||
,sum(diext) diext
|
|
||||||
,sum(ditdis) ditdis
|
|
||||||
,null::date dcodat --calculated date mix
|
|
||||||
,null::date ddqdat --calculated date mix
|
|
||||||
,null::date dcmdat --calculated date mix
|
|
||||||
,null::date dhidat --calculated date mix
|
|
||||||
,null::text fspr --calculated date mix
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,0::numeric(15,5) ddqtoi --0
|
|
||||||
,0::numeric(15,5) ddqtsi --0
|
|
||||||
,0::numeric(15,5) fgqshp --0
|
|
||||||
,0::numeric(15,5) diqtsh --0
|
|
||||||
,sum(coalesce(fb_qty,0)) fb_qty --history value
|
|
||||||
,sum(coalesce(fb_cst_loc,0)) fb_cst_loc --history part mix
|
|
||||||
,sum(coalesce(fb_cst_loc_cur,0)) fb_cst_loc_cur --master data
|
|
||||||
,sum(coalesce(fb_cst_loc_fut,0)) fb_cst_loc_fut --master data
|
|
||||||
,sum(coalesce(fb_val_loc,0)) fb_val_loc --history value
|
|
||||||
,sum(coalesce(fb_val_loc_pl,0)) fb_val_loc_pl --0
|
|
||||||
,calc_status --0
|
|
||||||
,flag --0
|
|
||||||
,orderdate --history date mix
|
|
||||||
,requestdate --history date mix
|
|
||||||
,shipdate --history date mix
|
|
||||||
,adj_orderdate --history
|
|
||||||
,adj_requestdate --history
|
|
||||||
,adj_shipdate --history
|
|
||||||
,'b20' "version" --calculated
|
|
||||||
,'adjustment' iter --calculated
|
|
||||||
---------------ui columns-------------------------
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,null value_loc
|
|
||||||
,null value_usd
|
|
||||||
,null cost_loc
|
|
||||||
,null cost_usd
|
|
||||||
,null units
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
WHERE
|
|
||||||
-----------------scenario----------------------------
|
|
||||||
quota_rep_descr = '10032 - BRYAN HILL'
|
|
||||||
AND segm = 'Greenhouse'
|
|
||||||
AND mod_chan = 'DISTRIB DROP SHIP'
|
|
||||||
AND billto_group = 'BWI'
|
|
||||||
--AND order_month = 'May'
|
|
||||||
-----------------additional params-------------------
|
|
||||||
AND version = 'b20'
|
|
||||||
AND iter = 'copy'
|
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
|
||||||
AND adj_orderdate <= adj_shipdate
|
|
||||||
GROUP BY
|
|
||||||
plnt ---master data
|
|
||||||
,terms
|
|
||||||
,remit_to --master data
|
|
||||||
,bill_class --master data
|
|
||||||
,bill_cust --history cust mix
|
|
||||||
,bill_rep --master data
|
|
||||||
,bill_terr --master data
|
|
||||||
,ship_class --master data
|
|
||||||
,ship_cust --history cust mix
|
|
||||||
,ship_rep --master data
|
|
||||||
,ship_terr --master data
|
|
||||||
,quota_rep --master data
|
|
||||||
,account --master data
|
|
||||||
,shipgrp --master data
|
|
||||||
,geo --master data
|
|
||||||
,chan --master data
|
|
||||||
,orig_ctry --master data
|
|
||||||
,orig_prov --master data
|
|
||||||
,orig_post --master data
|
|
||||||
,dest_ctry --master data
|
|
||||||
,dest_prov --master data
|
|
||||||
,dest_post --master data
|
|
||||||
,part --history part mix
|
|
||||||
,ord_gldc --master data
|
|
||||||
,majg --master data
|
|
||||||
,ming --master data
|
|
||||||
,majs --master data
|
|
||||||
,mins --master data
|
|
||||||
,gldc --master data
|
|
||||||
,glec --master data
|
|
||||||
,harm --master data
|
|
||||||
,clss --master data
|
|
||||||
,brand --master data
|
|
||||||
,assc --master data
|
|
||||||
,fs_line --master data
|
|
||||||
,r_currency --history cust mix
|
|
||||||
,r_rate --master data
|
|
||||||
,c_currency --master data
|
|
||||||
,c_rate --master data
|
|
||||||
,calc_status --0
|
|
||||||
,flag --0
|
|
||||||
,orderdate --history date mix
|
|
||||||
,requestdate --history date mix
|
|
||||||
,shipdate --history date mix
|
|
||||||
,adj_orderdate --history
|
|
||||||
,adj_requestdate --history
|
|
||||||
,adj_shipdate --history
|
|
||||||
---------------ui columns-------------------------
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,part_descr
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,segm
|
|
||||||
,bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
)
|
|
||||||
,vscale AS (
|
|
||||||
SELECT
|
|
||||||
(SELECT vincr::numeric FROM target) incr
|
|
||||||
,(SELECT sum(fb_qty)::numeric FROM basemix) base
|
|
||||||
,(SELECT vincr::numeric FROM target)/(SELECT sum(fb_qty)::numeric FROM basemix) factor
|
|
||||||
)
|
|
||||||
--select * from vscale
|
|
||||||
,volume AS (
|
|
||||||
SELECT
|
|
||||||
b.plnt --master data
|
|
||||||
,b."ddord#" --0
|
|
||||||
,b."dditm#" --0
|
|
||||||
,b."fgbol#" --0
|
|
||||||
,b."fgent#" --0
|
|
||||||
,b."diinv#" --0
|
|
||||||
,b."dilin#" --0
|
|
||||||
,b.promo --history date mix
|
|
||||||
,b.return_reas --0
|
|
||||||
,b.terms --history cust mix
|
|
||||||
,b.custpo --0
|
|
||||||
,b.dhincr --0
|
|
||||||
,b.diext --0
|
|
||||||
,b.ditdis --0
|
|
||||||
,b.dcodat --calculated date mix
|
|
||||||
,b.ddqdat --calculated date mix
|
|
||||||
,b.dcmdat --calculated date mix
|
|
||||||
,b.dhidat --calculated date mix
|
|
||||||
,b.fspr --calculated date mix
|
|
||||||
,b.remit_to --master data
|
|
||||||
,b.bill_class --master data
|
|
||||||
,b.bill_cust --history cust mix
|
|
||||||
,b.bill_rep --master data
|
|
||||||
,b.bill_terr --master data
|
|
||||||
,b.ship_class --master data
|
|
||||||
,b.ship_cust --history cust mix
|
|
||||||
,b.ship_rep --master data
|
|
||||||
,b.ship_terr --master data
|
|
||||||
,b.quota_rep --master data
|
|
||||||
,b.account --master data
|
|
||||||
,b.shipgrp --master data
|
|
||||||
,b.geo --master data
|
|
||||||
,b.chan --master data
|
|
||||||
,b.orig_ctry --master data
|
|
||||||
,b.orig_prov --master data
|
|
||||||
,b.orig_post --master data
|
|
||||||
,b.dest_ctry --master data
|
|
||||||
,b.dest_prov --master data
|
|
||||||
,b.dest_post --master data
|
|
||||||
,b.part --history part mix
|
|
||||||
,b.ord_gldc --master data
|
|
||||||
,b.majg --master data
|
|
||||||
,b.ming --master data
|
|
||||||
,b.majs --master data
|
|
||||||
,b.mins --master data
|
|
||||||
,b.gldc --master data
|
|
||||||
,b.glec --master data
|
|
||||||
,b.harm --master data
|
|
||||||
,b.clss --master data
|
|
||||||
,b.brand --master data
|
|
||||||
,b.assc --master data
|
|
||||||
,b.fs_line --master data
|
|
||||||
,b.r_currency --history cust mix
|
|
||||||
,b.r_rate --master data
|
|
||||||
,b.c_currency --master data
|
|
||||||
,b.c_rate --master data
|
|
||||||
,b.ddqtoi --0
|
|
||||||
,b.ddqtsi --0
|
|
||||||
,b.fgqshp --0
|
|
||||||
,b.diqtsh --0
|
|
||||||
,b.fb_qty*s.factor fb_qty
|
|
||||||
,b.fb_cst_loc*s.factor fb_cst_loc
|
|
||||||
,b.fb_cst_loc_cur*s.factor fb_cst_loc_cur
|
|
||||||
,b.fb_cst_loc_fut*s.factor fb_cst_loc_fut
|
|
||||||
,b.fb_val_loc*s.factor fb_val_loc
|
|
||||||
,b.fb_val_loc_pl*s.factor fb_val_loc_pl
|
|
||||||
,b.calc_status --0
|
|
||||||
,b.flag --0
|
|
||||||
,b.orderdate
|
|
||||||
,b.requestdate
|
|
||||||
,b.shipdate
|
|
||||||
,b.adj_orderdate
|
|
||||||
,b.adj_requestdate
|
|
||||||
,b.adj_shipdate
|
|
||||||
,b.version --calculated
|
|
||||||
,b.iter --calculated
|
|
||||||
-----------------------ui columns--------------------------------
|
|
||||||
,'scale vp' iterdet
|
|
||||||
,null::jsonb iterdef
|
|
||||||
,b.order_season
|
|
||||||
,b.order_month
|
|
||||||
,b.ship_season
|
|
||||||
,b.ship_month
|
|
||||||
,b.request_season
|
|
||||||
,b.request_month
|
|
||||||
,b.part_descr
|
|
||||||
,b.part_family
|
|
||||||
,b.part_group
|
|
||||||
,b.branding
|
|
||||||
,b.color
|
|
||||||
,b.segm
|
|
||||||
,b.bill_cust_descr
|
|
||||||
,b.billto_group
|
|
||||||
,b.ship_cust_descr
|
|
||||||
,b.shipto_group
|
|
||||||
,b.majg_descr
|
|
||||||
,b.ming_descr
|
|
||||||
,b.majs_descr
|
|
||||||
,b.mins_descr
|
|
||||||
,b.mod_chan
|
|
||||||
,b.mod_chansub
|
|
||||||
,b.quota_rep_descr
|
|
||||||
,b.director_descr
|
|
||||||
,(b.fb_val_loc*s.factor)::numeric value_loc
|
|
||||||
,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
|
|
||||||
,(b.fb_cst_loc*s.factor)::numeric cost_loc
|
|
||||||
,(b.fb_cst_loc*s.factor*c_rate)::numeric cost_usd
|
|
||||||
,(b.fb_qty*s.factor)::numeric units
|
|
||||||
FROM
|
|
||||||
basemix b
|
|
||||||
CROSS JOIN vscale s
|
|
||||||
)
|
|
||||||
,pscale AS (
|
|
||||||
SELECT
|
|
||||||
(SELECT pincr::numeric FROM target) incr
|
|
||||||
,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
|
|
||||||
,(SELECT pincr::numeric FROM target)/(SELECT sum(fb_val_loc) FROM volume) factor
|
|
||||||
,(select SUM(fb_qty) from volume) tvol
|
|
||||||
)
|
|
||||||
--select * from pscale
|
|
||||||
,pricing AS (
|
|
||||||
SELECT
|
|
||||||
b.plnt --master data
|
|
||||||
,b."ddord#" --0
|
|
||||||
,b."dditm#" --0
|
|
||||||
,b."fgbol#" --0
|
|
||||||
,b."fgent#" --0
|
|
||||||
,b."diinv#" --0
|
|
||||||
,b."dilin#" --0
|
|
||||||
,b.promo --history date mix
|
|
||||||
,b.return_reas --0
|
|
||||||
,b.terms --history cust mix
|
|
||||||
,b.custpo --0
|
|
||||||
,b.dhincr --0
|
|
||||||
,b.diext --0
|
|
||||||
,b.ditdis --0
|
|
||||||
,b.dcodat --calculated date mix
|
|
||||||
,b.ddqdat --calculated date mix
|
|
||||||
,b.dcmdat --calculated date mix
|
|
||||||
,b.dhidat --calculated date mix
|
|
||||||
,b.fspr --calculated date mix
|
|
||||||
,b.remit_to --master data
|
|
||||||
,b.bill_class --master data
|
|
||||||
,b.bill_cust --history cust mix
|
|
||||||
,b.bill_rep --master data
|
|
||||||
,b.bill_terr --master data
|
|
||||||
,b.ship_class --master data
|
|
||||||
,b.ship_cust --history cust mix
|
|
||||||
,b.ship_rep --master data
|
|
||||||
,b.ship_terr --master data
|
|
||||||
,b.quota_rep --master data
|
|
||||||
,b.account --master data
|
|
||||||
,b.shipgrp --master data
|
|
||||||
,b.geo --master data
|
|
||||||
,b.chan --master data
|
|
||||||
,b.orig_ctry --master data
|
|
||||||
,b.orig_prov --master data
|
|
||||||
,b.orig_post --master data
|
|
||||||
,b.dest_ctry --master data
|
|
||||||
,b.dest_prov --master data
|
|
||||||
,b.dest_post --master data
|
|
||||||
,b.part --history part mix
|
|
||||||
,b.ord_gldc --master data
|
|
||||||
,b.majg --master data
|
|
||||||
,b.ming --master data
|
|
||||||
,b.majs --master data
|
|
||||||
,b.mins --master data
|
|
||||||
,b.gldc --master data
|
|
||||||
,b.glec --master data
|
|
||||||
,b.harm --master data
|
|
||||||
,b.clss --master data
|
|
||||||
,b.brand --master data
|
|
||||||
,b.assc --master data
|
|
||||||
,b.fs_line --master data
|
|
||||||
,b.r_currency --history cust mix
|
|
||||||
,b.r_rate --master data
|
|
||||||
,b.c_currency --master data
|
|
||||||
,b.c_rate --master data
|
|
||||||
,b.ddqtoi --0
|
|
||||||
,b.ddqtsi --0
|
|
||||||
,b.fgqshp --0
|
|
||||||
,b.diqtsh --0
|
|
||||||
,b.fb_qty
|
|
||||||
,b.fb_cst_loc
|
|
||||||
,b.fb_cst_loc_cur
|
|
||||||
,b.fb_cst_loc_fut
|
|
||||||
,b.fb_val_loc*s.factor fb_val_loc
|
|
||||||
,b.fb_val_loc_pl*s.factor fb_val_loc_pl
|
|
||||||
,b.calc_status --0
|
|
||||||
,b.flag --0
|
|
||||||
,b.orderdate
|
|
||||||
,b.requestdate
|
|
||||||
,b.shipdate
|
|
||||||
,b.adj_orderdate
|
|
||||||
,b.adj_requestdate
|
|
||||||
,b.adj_shipdate
|
|
||||||
,b.version --calculated
|
|
||||||
,b.iter --calculated
|
|
||||||
-----------------------ui columns--------------------------------
|
|
||||||
,'scale vp' iterdet
|
|
||||||
,null::jsonb iterdef
|
|
||||||
,b.order_season
|
|
||||||
,b.order_month
|
|
||||||
,b.ship_season
|
|
||||||
,b.ship_month
|
|
||||||
,b.request_season
|
|
||||||
,b.request_month
|
|
||||||
,b.part_descr
|
|
||||||
,b.part_family
|
|
||||||
,b.part_group
|
|
||||||
,b.branding
|
|
||||||
,b.color
|
|
||||||
,b.segm
|
|
||||||
,b.bill_cust_descr
|
|
||||||
,b.billto_group
|
|
||||||
,b.ship_cust_descr
|
|
||||||
,b.shipto_group
|
|
||||||
,b.majg_descr
|
|
||||||
,b.ming_descr
|
|
||||||
,b.majs_descr
|
|
||||||
,b.mins_descr
|
|
||||||
,b.mod_chan
|
|
||||||
,b.mod_chansub
|
|
||||||
,b.quota_rep_descr
|
|
||||||
,b.director_descr
|
|
||||||
,(b.fb_val_loc*s.factor)::numeric value_loc
|
|
||||||
,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
|
|
||||||
,b.cost_loc
|
|
||||||
,b.cost_usd
|
|
||||||
,b.units
|
|
||||||
FROM
|
|
||||||
volume b
|
|
||||||
CROSS JOIN pscale s
|
|
||||||
)
|
|
||||||
--select sum(value_usd), sum(fb_qty) from pricing
|
|
||||||
, ins AS (
|
|
||||||
INSERT INTO rlarp.osm_fcpool SELECT * FROM pricing RETURNING *
|
|
||||||
)
|
|
||||||
,insagg AS (
|
|
||||||
SELECT
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,sum(value_loc) value_loc
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
,sum(cost_loc) cost_loc
|
|
||||||
,sum(cost_usd) cost_usd
|
|
||||||
,sum(units) units
|
|
||||||
FROM
|
|
||||||
ins
|
|
||||||
GROUP BY
|
|
||||||
bill_cust_descr
|
|
||||||
,billto_group
|
|
||||||
,ship_cust_descr
|
|
||||||
,shipto_group
|
|
||||||
,quota_rep_descr
|
|
||||||
,director_descr
|
|
||||||
,segm
|
|
||||||
,mod_chan
|
|
||||||
,mod_chansub
|
|
||||||
,majg_descr
|
|
||||||
,ming_descr
|
|
||||||
,majs_descr
|
|
||||||
,mins_descr
|
|
||||||
,brand
|
|
||||||
,part_family
|
|
||||||
,part_group
|
|
||||||
,branding
|
|
||||||
,color
|
|
||||||
,part_descr
|
|
||||||
,order_season
|
|
||||||
,order_month
|
|
||||||
,ship_season
|
|
||||||
,ship_month
|
|
||||||
,request_season
|
|
||||||
,request_month
|
|
||||||
,promo
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
)
|
|
||||||
SELECT json_agg(row_to_json(insagg)) x from insagg
|
|
@ -1,133 +0,0 @@
|
|||||||
\timing
|
|
||||||
--explain (analyze, buffers)
|
|
||||||
WITH
|
|
||||||
mseq AS (
|
|
||||||
SELECT * FROM
|
|
||||||
(
|
|
||||||
VALUES
|
|
||||||
('Jun',1)
|
|
||||||
,('Jul',2)
|
|
||||||
,('Aug',3)
|
|
||||||
,('Sep',4)
|
|
||||||
,('Oct',5)
|
|
||||||
,('Nov',6)
|
|
||||||
,('Dec',7)
|
|
||||||
,('Jan',8)
|
|
||||||
,('Feb',9)
|
|
||||||
,('Mar',10)
|
|
||||||
,('Apr',11)
|
|
||||||
,('May',12)
|
|
||||||
|
|
||||||
) x(m,s)
|
|
||||||
)
|
|
||||||
--select * from mseq
|
|
||||||
,base AS (
|
|
||||||
SELECT
|
|
||||||
order_season
|
|
||||||
,order_month
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,part_descr
|
|
||||||
,bill_cust_descr
|
|
||||||
,ship_cust_descr
|
|
||||||
,SUM(units) units
|
|
||||||
,SUM(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
rlarp.osm_fcpool
|
|
||||||
WHERE
|
|
||||||
quota_rep_descr = '90005 - MARK WILKINSON'
|
|
||||||
AND segm = 'Retail'
|
|
||||||
AND mod_chan = 'MASS'
|
|
||||||
AND order_month = 'May'
|
|
||||||
GROUP BY
|
|
||||||
order_season
|
|
||||||
,order_month
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,part_descr
|
|
||||||
,bill_cust_descr
|
|
||||||
,ship_cust_descr
|
|
||||||
)
|
|
||||||
,months AS (
|
|
||||||
SELECT
|
|
||||||
order_season
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,order_month
|
|
||||||
,mseq.s seq
|
|
||||||
,sum(units) units
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
base
|
|
||||||
INNER JOIN mseq ON
|
|
||||||
mseq.m = base.order_month
|
|
||||||
GROUP BY
|
|
||||||
order_season
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,order_month
|
|
||||||
,s
|
|
||||||
)
|
|
||||||
,mpvt AS (
|
|
||||||
SELECT
|
|
||||||
order_month
|
|
||||||
,seq
|
|
||||||
,SUM(units) FILTER (WHERE order_season = 2019) "2019 qty"
|
|
||||||
,SUM(units) FILTER (WHERE order_season = 2020 AND iter = 'copy') "2020 base qty"
|
|
||||||
,SUM(units) FILTER (WHERE order_season = 2020 AND iter = 'adjustment') "2020 adj qty"
|
|
||||||
,SUM(units) FILTER (WHERE order_season = 2020 AND iter IN ('copy','adjustment')) "2020 tot qty"
|
|
||||||
,SUM(value_usd) FILTER (WHERE order_season = 2019) "2019 value_usd"
|
|
||||||
,SUM(value_usd) FILTER (WHERE order_season = 2020 AND iter = 'copy') "2020 base value_usd"
|
|
||||||
,SUM(value_usd) FILTER (WHERE order_season = 2020 AND iter = 'adjustment') "2020 adj value_usd"
|
|
||||||
,SUM(value_usd) FILTER (WHERE order_season = 2020 AND iter IN ('copy','adjustment')) "2020 tot value_usd"
|
|
||||||
FROM
|
|
||||||
months
|
|
||||||
GROUP BY
|
|
||||||
order_month
|
|
||||||
,seq
|
|
||||||
ORDER BY
|
|
||||||
seq ASC
|
|
||||||
)
|
|
||||||
,mlist AS (
|
|
||||||
SELECT
|
|
||||||
mseq.m order_month
|
|
||||||
,"2019 qty"
|
|
||||||
,"2020 base qty"
|
|
||||||
,"2020 adj qty"
|
|
||||||
,"2020 tot qty"
|
|
||||||
,"2019 value_usd"
|
|
||||||
,"2020 base value_usd"
|
|
||||||
,"2020 adj value_usd"
|
|
||||||
,"2020 tot value_usd"
|
|
||||||
FROM
|
|
||||||
mseq
|
|
||||||
LEFT OUTER JOIN mpvt ON
|
|
||||||
mpvt.order_month = mseq.m
|
|
||||||
ORDER BY
|
|
||||||
mseq.s ASC
|
|
||||||
)
|
|
||||||
,totals AS (
|
|
||||||
SELECT
|
|
||||||
order_season
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
,sum(units) units
|
|
||||||
,sum(value_usd) value_usd
|
|
||||||
FROM
|
|
||||||
months
|
|
||||||
GROUP BY
|
|
||||||
order_season
|
|
||||||
,version
|
|
||||||
,iter
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
jsonb_build_object(
|
|
||||||
'months'
|
|
||||||
,(SELECT jsonb_agg(row_to_json(months)::jsonb) FROM months)
|
|
||||||
,'mlist'
|
|
||||||
,(SELECT jsonb_agg(row_to_json(mlist)::jsonb) FROM mlist)
|
|
||||||
,'base'
|
|
||||||
,(SELECT jsonb_agg(row_to_json(base)::jsonb) FROM base)
|
|
||||||
,'totals'
|
|
||||||
,(SELECT jsonb_agg(row_to_json(totals)::jsonb) FROM totals)
|
|
||||||
) package
|
|
@ -151,8 +151,8 @@ SELECT
|
|||||||
,terms
|
,terms
|
||||||
,''::text custpo --0
|
,''::text custpo --0
|
||||||
,'I' dhincr --0
|
,'I' dhincr --0
|
||||||
,sum(diext) diext
|
,null::numeric diext
|
||||||
,sum(ditdis) ditdis
|
,null::numeric ditdis
|
||||||
,null::date dcodat --calculated date mix
|
,null::date dcodat --calculated date mix
|
||||||
,null::date ddqdat --calculated date mix
|
,null::date ddqdat --calculated date mix
|
||||||
,null::date dcmdat --calculated date mix
|
,null::date dcmdat --calculated date mix
|
||||||
|
@ -145,8 +145,8 @@ SELECT
|
|||||||
,terms
|
,terms
|
||||||
,''::text custpo --0
|
,''::text custpo --0
|
||||||
,'I' dhincr --0
|
,'I' dhincr --0
|
||||||
,sum(diext) diext
|
,null::numeric diext
|
||||||
,sum(ditdis) ditdis
|
,null::numeric ditdis
|
||||||
,null::date dcodat --calculated date mix
|
,null::date dcodat --calculated date mix
|
||||||
,null::date ddqdat --calculated date mix
|
,null::date ddqdat --calculated date mix
|
||||||
,null::date dcmdat --calculated date mix
|
,null::date dcmdat --calculated date mix
|
||||||
@ -445,7 +445,8 @@ WHERE
|
|||||||
SELECT
|
SELECT
|
||||||
(SELECT pincr::numeric FROM target) incr
|
(SELECT pincr::numeric FROM target) incr
|
||||||
,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
|
,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
|
||||||
,(SELECT pincr::numeric FROM target)/(SELECT sum(fb_val_loc) FROM volume) factor
|
--(target_sales - current_state)/current state = adjustment factor
|
||||||
|
,((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume) factor
|
||||||
)
|
)
|
||||||
,price AS (
|
,price AS (
|
||||||
SELECT
|
SELECT
|
||||||
@ -509,10 +510,10 @@ SELECT
|
|||||||
,b.ddqtsi --0
|
,b.ddqtsi --0
|
||||||
,b.fgqshp --0
|
,b.fgqshp --0
|
||||||
,b.diqtsh --0
|
,b.diqtsh --0
|
||||||
,b.fb_qty
|
,0 fb_qty
|
||||||
,b.fb_cst_loc
|
,0 fb_cst_loc
|
||||||
,b.fb_cst_loc_cur
|
,0 fb_cst_loc_cur
|
||||||
,b.fb_cst_loc_fut
|
,0 fb_cst_loc_fut
|
||||||
,b.fb_val_loc*p.factor fb_val_loc
|
,b.fb_val_loc*p.factor fb_val_loc
|
||||||
,b.fb_val_loc_pl*p.factor fb_val_loc_pl
|
,b.fb_val_loc_pl*p.factor fb_val_loc_pl
|
||||||
,b.calc_status --0
|
,b.calc_status --0
|
||||||
@ -523,11 +524,10 @@ SELECT
|
|||||||
,b.adj_orderdate
|
,b.adj_orderdate
|
||||||
,b.adj_requestdate
|
,b.adj_requestdate
|
||||||
,b.adj_shipdate
|
,b.adj_shipdate
|
||||||
,b.version --calculated
|
,'replace_version' "version" --calculated
|
||||||
,b.iter --calculated
|
,'replace_source'||' price' iter --calculateds
|
||||||
-----------------------ui columns--------------------------------
|
,'replace_iterdet' iterdet
|
||||||
,b.iterdet
|
,$$replace_iterdef$$::jsonb iterdef
|
||||||
,b.iterdef
|
|
||||||
,b.order_season
|
,b.order_season
|
||||||
,b.order_month
|
,b.order_month
|
||||||
,b.ship_season
|
,b.ship_season
|
||||||
@ -554,15 +554,15 @@ SELECT
|
|||||||
,b.director_descr
|
,b.director_descr
|
||||||
,b.fb_val_loc*p.factor value_loc
|
,b.fb_val_loc*p.factor value_loc
|
||||||
,b.fb_val_loc*p.factor*r_rate value_usd
|
,b.fb_val_loc*p.factor*r_rate value_usd
|
||||||
,b.fb_cst_loc cost_loc
|
,0 cost_loc
|
||||||
,b.fb_cst_loc*c_rate cost_usd
|
,0 cost_usd
|
||||||
,b.units
|
,0 units
|
||||||
FROM
|
FROM
|
||||||
volume b
|
volume b
|
||||||
CROSS JOIN pscale p
|
CROSS JOIN pscale p
|
||||||
)
|
)
|
||||||
, ins AS (
|
, ins AS (
|
||||||
INSERT INTO rlarp.osm_fcpool SELECT * FROM price RETURNING *
|
INSERT INTO rlarp.osm_fcpool (SELECT * FROM price UNION ALL SELECT * FROM volume) RETURNING *
|
||||||
)
|
)
|
||||||
,insagg AS (
|
,insagg AS (
|
||||||
SELECT
|
SELECT
|
||||||
|
518
route_sql/build/build_pool.sql
Normal file
518
route_sql/build/build_pool.sql
Normal file
@ -0,0 +1,518 @@
|
|||||||
|
BEGIN;
|
||||||
|
DROP TABLE rlarp.osm_fcpool;
|
||||||
|
--EXPLAIN
|
||||||
|
--\timing
|
||||||
|
CREATE TABLE rlarp.osm_fcpool AS (
|
||||||
|
WITH
|
||||||
|
---------------------------------------last actual date------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
SALES_CUTOFF AS (
|
||||||
|
SELECT MAX(FSPR) MAX_FSPR FROM RLARP.OSM
|
||||||
|
)
|
||||||
|
,GLD AS (
|
||||||
|
SELECT
|
||||||
|
N1COMP COMP
|
||||||
|
,N1CCYY FSYR
|
||||||
|
,KPMAXP PERDS
|
||||||
|
,N1FSPP PERD
|
||||||
|
,to_char(N1FSYP,'FM0000') FSPR
|
||||||
|
,N1SD01 SDAT
|
||||||
|
,N1ED01 EDAT
|
||||||
|
,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
|
||||||
|
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
||||||
|
--if the period date is less than the first forecasted order it is actual from perspective of the plan
|
||||||
|
,CASE WHEN MAX_FSPR = to_char(N1FSYP,'FM0000') THEN 'C' ELSE CASE WHEN SALES_CUTOFF.MAX_FSPR > to_char(N1FSYP,'FM0000') THEN 'P' ELSE 'F' END END CM
|
||||||
|
,CASE
|
||||||
|
WHEN MAX_FSPR = to_char(N1FSYP,'FM0000') THEN
|
||||||
|
'C'
|
||||||
|
ELSE
|
||||||
|
CASE
|
||||||
|
WHEN SALES_CUTOFF.MAX_FSPR > to_char(N1FSYP,'FM0000') THEN
|
||||||
|
CASE
|
||||||
|
WHEN SUBSTR(SALES_CUTOFF.MAX_FSPR,1,2) > SUBSTR(to_char(N1FSYP,'FM0000'),1,2) THEN
|
||||||
|
'P'
|
||||||
|
ELSE
|
||||||
|
'C'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'F'
|
||||||
|
END
|
||||||
|
END CY
|
||||||
|
FROM
|
||||||
|
LGDAT.GLDATREF
|
||||||
|
INNER JOIN LGDAT.GLDATE ON
|
||||||
|
KPCOMP = N1COMP AND
|
||||||
|
KPCCYY = N1CCYY
|
||||||
|
CROSS JOIN SALES_CUTOFF
|
||||||
|
WHERE
|
||||||
|
N1COMP = 93
|
||||||
|
--AND DIGITS(N1FSYP) = '1901'
|
||||||
|
)
|
||||||
|
--SELECT * FROM gld
|
||||||
|
--CREATE INDEX SE_DAT ON gld (sdat, edat);
|
||||||
|
--SELECT daterange(MIN(SDAT),CURRENT_DATE,'[]') INTO _ytd FROM GLD WHERE CY = 'C';
|
||||||
|
--SELECT ssyr INTO _y FROM gld WHERE current_date <@ daterange(sdat,edat);
|
||||||
|
--CREATE TEMP TABLE rslt AS
|
||||||
|
--RETURN QUERY
|
||||||
|
---------------------------------------segments--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,SEG AS (
|
||||||
|
SELECT
|
||||||
|
x.GLEC
|
||||||
|
,x.SEGM
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
VALUES
|
||||||
|
('1CU','Retail'),
|
||||||
|
('1GR','Greenhouse'),
|
||||||
|
('1NU','Nursery'),
|
||||||
|
('1RE','Retail'),
|
||||||
|
('2WI','Greenhouse'),
|
||||||
|
('3BM','Other'),
|
||||||
|
('3CO','Other'),
|
||||||
|
('3PE','Other'),
|
||||||
|
('3PP','Other'),
|
||||||
|
('4CO','Other'),
|
||||||
|
('4RA','Other'),
|
||||||
|
('9MI','Other'),
|
||||||
|
('9SA','Other'),
|
||||||
|
('9TO','Other')
|
||||||
|
) X(GLEC, SEGM)
|
||||||
|
)
|
||||||
|
---------------------------------------branding flag---------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,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)
|
||||||
|
)
|
||||||
|
---------------------------------------directors-------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,REPC AS (
|
||||||
|
SELECT
|
||||||
|
LTRIM(RTRIM(C.A9)) RCODE
|
||||||
|
,LTRIM(RTRIM(C.A9)) || ' - ' || C.A30 REPP
|
||||||
|
,COALESCE(Q.DIR,'Other') DIRECTOR
|
||||||
|
FROM
|
||||||
|
LGDAT.CODE C
|
||||||
|
LEFT OUTER JOIN RLARP.QRH Q ON
|
||||||
|
Q.QR = LTRIM(RTRIM(C.A9))
|
||||||
|
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,'') <> ''
|
||||||
|
)
|
||||||
|
----------------------------------------------------date ranges per season------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,seas AS(
|
||||||
|
SELECT
|
||||||
|
ssyr
|
||||||
|
,daterange(MIN(sdat),MAX(edat),'[]') dr
|
||||||
|
,current_date <@ daterange(MIN(sdat),MAX(edat),'[]') cy
|
||||||
|
FROM
|
||||||
|
gld
|
||||||
|
GROUP BY
|
||||||
|
ssyr
|
||||||
|
ORDER BY
|
||||||
|
ssyr DESC
|
||||||
|
)
|
||||||
|
,intv AS (
|
||||||
|
SELECT current_date - lower(dr) dy from seas where cy = true
|
||||||
|
)
|
||||||
|
,std AS (
|
||||||
|
SELECT
|
||||||
|
s.ssyr
|
||||||
|
,s.dr
|
||||||
|
,s.cy
|
||||||
|
,daterange(lower(dr),dy + LOWER(dr),'[]') ytd
|
||||||
|
FROM
|
||||||
|
seas s
|
||||||
|
CROSS JOIN intv
|
||||||
|
)
|
||||||
|
--select * from std
|
||||||
|
---------------------------------------union actual and forecast---------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,UN AS (
|
||||||
|
--plan
|
||||||
|
SELECT
|
||||||
|
osm.plnt
|
||||||
|
,osm."ddord#"
|
||||||
|
,osm."dditm#"
|
||||||
|
,osm."fgbol#"
|
||||||
|
,osm."fgent#"
|
||||||
|
,osm."diinv#"
|
||||||
|
,osm."dilin#"
|
||||||
|
,osm.promo
|
||||||
|
,osm.return_reas
|
||||||
|
,osm.terms
|
||||||
|
,osm.custpo
|
||||||
|
,osm.dhincr
|
||||||
|
,osm.diext
|
||||||
|
,osm.ditdis
|
||||||
|
,osm.dcodat
|
||||||
|
,osm.ddqdat
|
||||||
|
,osm.dcmdat
|
||||||
|
,osm.dhidat
|
||||||
|
,osm.fspr
|
||||||
|
,osm.remit_to
|
||||||
|
,osm.bill_class
|
||||||
|
,osm.bill_cust
|
||||||
|
,osm.bill_rep
|
||||||
|
,osm.bill_terr
|
||||||
|
,osm.ship_class
|
||||||
|
,osm.ship_cust
|
||||||
|
,osm.ship_rep
|
||||||
|
,osm.ship_terr
|
||||||
|
,osm.quota_rep
|
||||||
|
,osm.account
|
||||||
|
,osm.shipgrp
|
||||||
|
,osm.geo
|
||||||
|
,osm.chan
|
||||||
|
,osm.orig_ctry
|
||||||
|
,osm.orig_prov
|
||||||
|
,osm.orig_post
|
||||||
|
,osm.dest_ctry
|
||||||
|
,osm.dest_prov
|
||||||
|
,osm.dest_post
|
||||||
|
,osm.part
|
||||||
|
,osm.ord_gldc
|
||||||
|
,osm.majg
|
||||||
|
,osm.ming
|
||||||
|
,osm.majs
|
||||||
|
,osm.mins
|
||||||
|
,osm.gldc
|
||||||
|
,osm.glec
|
||||||
|
,osm.harm
|
||||||
|
,osm.clss
|
||||||
|
,osm.brand
|
||||||
|
,osm.assc
|
||||||
|
,osm.fs_line
|
||||||
|
,osm.r_currency
|
||||||
|
,osm.r_rate
|
||||||
|
,osm.c_currency
|
||||||
|
,osm.c_rate
|
||||||
|
,osm.ddqtoi
|
||||||
|
,osm.ddqtsi
|
||||||
|
,osm.fgqshp
|
||||||
|
,osm.diqtsh
|
||||||
|
,osm.fb_qty
|
||||||
|
,osm.fb_cst_loc
|
||||||
|
,osm.fb_cst_loc_cur
|
||||||
|
,osm.fb_cst_loc_fut
|
||||||
|
,osm.fb_val_loc
|
||||||
|
,osm.fb_val_loc_pl
|
||||||
|
,osm.calc_status
|
||||||
|
,osm.flag
|
||||||
|
,osm.orderdate
|
||||||
|
,osm.requestdate
|
||||||
|
,greatest(least(osm.shipdate,sd.edat),sd.sdat) shipdate
|
||||||
|
,osm.adj_orderdate
|
||||||
|
,osm.adj_requestdate
|
||||||
|
,osm.adj_shipdate
|
||||||
|
,osm."version"
|
||||||
|
,osm.iter
|
||||||
|
----------------presentation columns----------------------------------------------
|
||||||
|
,null::text iterdet
|
||||||
|
,null::jsonb iterdef
|
||||||
|
,OD.SSYR order_season
|
||||||
|
,to_char(osm.adj_orderdate,'Mon') order_month
|
||||||
|
,SD.SSYR ship_season
|
||||||
|
,to_char(osm.adj_shipdate,'Mon') ship_month
|
||||||
|
,RD.SSYR request_season
|
||||||
|
,to_char(osm.adj_requestdate,'Mon') request_month
|
||||||
|
,osm.PART ||COALESCE(' - '|| RTRIM(COALESCE(AVDES1, AWDES1)),'') part_descr
|
||||||
|
,F.F3||COALESCE(' - '||F.DESCR,'') part_family
|
||||||
|
,SUBSTRING(PART,1,8)||COALESCE(' - '||MD.DESCR,'') part_group
|
||||||
|
,COALESCE(MG.GRP,'Unbranded') branding
|
||||||
|
,CASE WHEN substring(osm.glec,1,1) <= '2' THEN SUBSTRING(osm.part,9,3) ELSE '' END color
|
||||||
|
,COALESCE(SEG.SEGM,'Other') segm
|
||||||
|
,osm.bill_cust || COALESCE(' - '|| RTRIM(BC.BVNAME),'') bill_cust_descr
|
||||||
|
,osm.account billto_group
|
||||||
|
,osm.ship_cust || COALESCE(' - '|| RTRIM(SC.BVNAME),'') ship_cust_descr
|
||||||
|
,osm.shipgrp shipto_group
|
||||||
|
,osm.MAJG||COALESCE(' - '||BQDES,'') majg_descr
|
||||||
|
,osm.MING||COALESCE(' - '||BRDES,'') ming_descr
|
||||||
|
,osm.MAJS||COALESCE(' - '||SJ.BSDES1,'') majs_descr
|
||||||
|
,osm.MINS||COALESCE(' - '||SI.BSDES1,'') mins_descr
|
||||||
|
,CASE COALESCE(SEG.SEGM,'Other')
|
||||||
|
WHEN 'Retail' THEN coalesce(L.RETAIL)
|
||||||
|
ELSE osm.CHAN
|
||||||
|
END mod_chan
|
||||||
|
,CASE COALESCE(SEG.SEGM,'Other')
|
||||||
|
WHEN 'Retail' THEN coalesce(L.RETAILSUB)
|
||||||
|
ELSE ''
|
||||||
|
END mod_chansub
|
||||||
|
,COALESCE(REPC.REPP,osm.QUOTA_REP) quota_rep_descr
|
||||||
|
,COALESCE(REPC.DIRECTOR,osm.QUOTA_REP) director_descr
|
||||||
|
,fb_val_loc value_loc
|
||||||
|
,fb_val_loc * r_rate value_usd
|
||||||
|
,fb_cst_loc cost_loc
|
||||||
|
,fb_cst_loc * c_rate cost_usd
|
||||||
|
,fb_qty units
|
||||||
|
FROM
|
||||||
|
rlarp.osmfs osm
|
||||||
|
LEFT OUTER JOIN GLD SD ON
|
||||||
|
osm.FSPR = sd.FSPR
|
||||||
|
LEFT OUTER JOIN GLD OD ON
|
||||||
|
osm.ADJ_ORDERDATE BETWEEN od.SDAT AND od.EDAT
|
||||||
|
LEFT OUTER JOIN GLD RD ON
|
||||||
|
osm.ADJ_REQUESTDATE BETWEEN RD.SDAT AND RD.EDAT
|
||||||
|
LEFT OUTER JOIN SEG ON
|
||||||
|
SEG.GLEC = osm.GLEC
|
||||||
|
--AND SEG.SEGM <> 'Other'
|
||||||
|
LEFT OUTER JOIN MG ON
|
||||||
|
MG.F1 = SUBSTR(osm.PART,16,1)
|
||||||
|
AND MG.MING = osm.MING
|
||||||
|
LEFT OUTER JOIN RLARP.FAMILY F ON
|
||||||
|
F.F3 = SUBSTR(osm.PART,1,3)
|
||||||
|
LEFT OUTER JOIN LGDAT.STKMM M ON
|
||||||
|
M.AVPART = osm.PART
|
||||||
|
LEFT OUTER JOIN LGDAT.STKMP P ON
|
||||||
|
P.AWPART = osm.PART
|
||||||
|
LEFT OUTER JOIN MD ON
|
||||||
|
MD.MOLD = SUBSTR(osm.PART,1,8)
|
||||||
|
LEFT OUTER JOIN RLARP.FFCHNL L ON
|
||||||
|
L.BILL = osm.BILL_CLASS
|
||||||
|
AND L.SHIP = osm.SHIP_CLASS
|
||||||
|
LEFT OUTER JOIN LGDAT.CUST BC ON
|
||||||
|
BC.BVCUST = osm.BILL_CUST
|
||||||
|
LEFT OUTER JOIN LGDAT.CUST SC ON
|
||||||
|
SC.BVCUST = osm.SHIP_CUST
|
||||||
|
LEFT OUTER JOIN REPC ON
|
||||||
|
REPC.RCODE = osm.QUOTA_REP
|
||||||
|
LEFT OUTER JOIN SI ON
|
||||||
|
SI.BSMJCD = osm.MAJS
|
||||||
|
AND SI.BSMNCD = osm.MINS
|
||||||
|
LEFT OUTER JOIN SJ ON
|
||||||
|
SJ.BSMJCD = osm.MAJS
|
||||||
|
LEFT OUTER JOIN LGDAT.MAJG ON
|
||||||
|
BQGRP = osm.MAJG
|
||||||
|
LEFT OUTER JOIN LGDAT.MMGP ON
|
||||||
|
BRMGRP = osm.MING
|
||||||
|
AND BRGRP = osm.MAJG
|
||||||
|
WHERE
|
||||||
|
osm.FS_LINE = '41010'
|
||||||
|
AND osm.CALC_STATUS <> 'CANCELED'
|
||||||
|
AND SUBSTR(osm.GLEC,1,1) <= '2'
|
||||||
|
/*
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
osm.plnt
|
||||||
|
,osm."ddord#"
|
||||||
|
,osm."dditm#"
|
||||||
|
,osm."fgbol#"
|
||||||
|
,osm."fgent#"
|
||||||
|
,osm."diinv#"
|
||||||
|
,osm."dilin#"
|
||||||
|
,osm.promo
|
||||||
|
,osm.return_reas
|
||||||
|
,osm.terms
|
||||||
|
,osm.custpo
|
||||||
|
,osm.dhincr
|
||||||
|
,osm.diext
|
||||||
|
,osm.ditdis
|
||||||
|
,osm.dcodat
|
||||||
|
,osm.ddqdat
|
||||||
|
,osm.dcmdat
|
||||||
|
,osm.dhidat
|
||||||
|
,osm.fspr
|
||||||
|
,osm.remit_to
|
||||||
|
,osm.bill_class
|
||||||
|
,osm.bill_cust
|
||||||
|
,osm.bill_rep
|
||||||
|
,osm.bill_terr
|
||||||
|
,osm.ship_class
|
||||||
|
,osm.ship_cust
|
||||||
|
,osm.ship_rep
|
||||||
|
,osm.ship_terr
|
||||||
|
,osm.quota_rep
|
||||||
|
,osm.account
|
||||||
|
,osm.shipgrp
|
||||||
|
,osm.geo
|
||||||
|
,osm.chan
|
||||||
|
,osm.orig_ctry
|
||||||
|
,osm.orig_prov
|
||||||
|
,osm.orig_post
|
||||||
|
,osm.dest_ctry
|
||||||
|
,osm.dest_prov
|
||||||
|
,osm.dest_post
|
||||||
|
,osm.part
|
||||||
|
,osm.ord_gldc
|
||||||
|
,osm.majg
|
||||||
|
,osm.ming
|
||||||
|
,osm.majs
|
||||||
|
,osm.mins
|
||||||
|
,osm.gldc
|
||||||
|
,osm.glec
|
||||||
|
,osm.harm
|
||||||
|
,osm.clss
|
||||||
|
,osm.brand
|
||||||
|
,osm.assc
|
||||||
|
,osm.fs_line
|
||||||
|
,osm.r_currency
|
||||||
|
,osm.r_rate
|
||||||
|
,osm.c_currency
|
||||||
|
,osm.c_rate
|
||||||
|
,osm.ddqtoi
|
||||||
|
,osm.ddqtsi
|
||||||
|
,osm.fgqshp
|
||||||
|
,osm.diqtsh
|
||||||
|
,osm.fb_qty
|
||||||
|
,osm.fb_cst_loc
|
||||||
|
,osm.fb_cst_loc_cur
|
||||||
|
,osm.fb_cst_loc_fut
|
||||||
|
,osm.fb_val_loc
|
||||||
|
,osm.fb_val_loc_pl
|
||||||
|
,osm.calc_status
|
||||||
|
,osm.flag
|
||||||
|
,osm.orderdate
|
||||||
|
,osm.requestdate
|
||||||
|
,greatest(least(osm.shipdate,sd.edat),sd.sdat) shipdate
|
||||||
|
,osm.adj_orderdate
|
||||||
|
,osm.adj_requestdate
|
||||||
|
,osm.adj_shipdate
|
||||||
|
,osm."version"
|
||||||
|
,osm.iter
|
||||||
|
----------------presentation columns----------------------------------------------
|
||||||
|
,null::text iterdet
|
||||||
|
,null::jsonb iterdef
|
||||||
|
,OD.SSYR order_season
|
||||||
|
,to_char(osm.adj_orderdate,'Mon') order_month
|
||||||
|
,SD.SSYR ship_season
|
||||||
|
,to_char(osm.adj_shipdate,'Mon') ship_month
|
||||||
|
,RD.SSYR request_season
|
||||||
|
,to_char(osm.adj_requestdate,'Mon') request_month
|
||||||
|
,PART ||' - '|| RTRIM(COALESCE(AVDES1, AWDES1)) part_descr
|
||||||
|
,F.F3||' - '||F.DESCR part_family
|
||||||
|
,SUBSTRING(PART,1,8)||' - '||MD.DESCR part_group
|
||||||
|
,COALESCE(MG.GRP,'Unbranded') branding
|
||||||
|
,CASE WHEN substring(osm.glec,1,1) <= '2' THEN SUBSTRING(osm.part,9,3) ELSE '' END color
|
||||||
|
,COALESCE(SEG.SEGM,'Other') segm
|
||||||
|
,osm.bill_cust ||' - '|| RTRIM(BC.BVNAME) bill_cust_descr
|
||||||
|
,osm.account billto_group
|
||||||
|
,osm.ship_cust ||' - '|| RTRIM(SC.BVNAME) ship_cust_descr
|
||||||
|
,osm.shipgrp shipto_group
|
||||||
|
,osm.MAJG||COALESCE(' - '||BQDES,'') majg_descr
|
||||||
|
,osm.MING||COALESCE(' - '||BRDES,'') ming_descr
|
||||||
|
,osm.MAJS||COALESCE(' - '||SJ.BSDES1,'') majs_descr
|
||||||
|
,osm.MINS||COALESCE(' - '||SI.BSDES1,'') mins_descr
|
||||||
|
,CASE COALESCE(SEG.SEGM,'Other')
|
||||||
|
WHEN 'Retail' THEN coalesce(L.RETAIL,'')
|
||||||
|
ELSE osm.CHAN
|
||||||
|
END mod_chan
|
||||||
|
,CASE COALESCE(SEG.SEGM,'Other')
|
||||||
|
WHEN 'Retail' THEN coalesce(L.RETAILSUB,'')
|
||||||
|
ELSE ''
|
||||||
|
END mod_chansub
|
||||||
|
,COALESCE(REPC.REPP,osm.QUOTA_REP) quota_rep_descr
|
||||||
|
,COALESCE(REPC.DIRECTOR,osm.QUOTA_REP) director_descr
|
||||||
|
,osm.fb_val_loc::numeric value_loc
|
||||||
|
,(osm.fb_val_loc * osm.r_rate)::numeric value_usd
|
||||||
|
,osm.fb_cst_loc::numeric cost_loc
|
||||||
|
,(osm.fb_cst_loc * osm.c_rate)::numeric cost_usd
|
||||||
|
,osm.fb_qty::numeric units
|
||||||
|
FROM
|
||||||
|
rlarp.osmfs osm
|
||||||
|
LEFT OUTER JOIN GLD SD ON
|
||||||
|
osm.FSPR = sd.FSPR
|
||||||
|
LEFT OUTER JOIN GLD OD ON
|
||||||
|
osm.ADJ_ORDERDATE BETWEEN od.SDAT AND od.EDAT
|
||||||
|
LEFT OUTER JOIN GLD RD ON
|
||||||
|
osm.ADJ_REQUESTDATE BETWEEN RD.SDAT AND RD.EDAT
|
||||||
|
LEFT OUTER JOIN SEG ON
|
||||||
|
SEG.GLEC = osm.GLEC
|
||||||
|
--AND SEG.SEGM <> 'Other'
|
||||||
|
LEFT OUTER JOIN MG ON
|
||||||
|
MG.F1 = SUBSTR(osm.PART,16,1)
|
||||||
|
AND MG.MING = osm.MING
|
||||||
|
LEFT OUTER JOIN RLARP.FAMILY F ON
|
||||||
|
F.F3 = SUBSTR(osm.PART,1,3)
|
||||||
|
LEFT OUTER JOIN LGDAT.STKMM M ON
|
||||||
|
M.AVPART = osm.PART
|
||||||
|
LEFT OUTER JOIN LGDAT.STKMP P ON
|
||||||
|
P.AWPART = osm.PART
|
||||||
|
LEFT OUTER JOIN MD ON
|
||||||
|
MD.MOLD = SUBSTR(osm.PART,1,8)
|
||||||
|
LEFT OUTER JOIN RLARP.FFCHNL L ON
|
||||||
|
L.BILL = osm.BILL_CLASS
|
||||||
|
AND L.SHIP = osm.SHIP_CLASS
|
||||||
|
LEFT OUTER JOIN LGDAT.CUST BC ON
|
||||||
|
BC.BVCUST = osm.BILL_CUST
|
||||||
|
LEFT OUTER JOIN LGDAT.CUST SC ON
|
||||||
|
SC.BVCUST = osm.SHIP_CUST
|
||||||
|
LEFT OUTER JOIN REPC ON
|
||||||
|
REPC.RCODE = osm.QUOTA_REP
|
||||||
|
LEFT OUTER JOIN SI ON
|
||||||
|
SI.BSMJCD = osm.MAJS
|
||||||
|
AND SI.BSMNCD = osm.MINS
|
||||||
|
LEFT OUTER JOIN SJ ON
|
||||||
|
SJ.BSMJCD = osm.MAJS
|
||||||
|
LEFT OUTER JOIN LGDAT.MAJG ON
|
||||||
|
BQGRP = osm.MAJG
|
||||||
|
LEFT OUTER JOIN LGDAT.MMGP ON
|
||||||
|
BRMGRP = osm.MING
|
||||||
|
AND BRGRP = osm.MAJG
|
||||||
|
WHERE
|
||||||
|
osm.fs_line = '41010'
|
||||||
|
AND osm.calc_status <> 'CANCELED'
|
||||||
|
AND SUBSTRING(osm.glec,1,1) <= '2'
|
||||||
|
AND osm.version = 'ACTUALS'
|
||||||
|
AND osm.adj_orderdate BETWEEN '2017-06-01' AND '2018-05-31'
|
||||||
|
*/
|
||||||
|
)
|
||||||
|
SELECT * FROM UN
|
||||||
|
);
|
||||||
|
COMMIT;
|
547
route_sql/build/copy_orders.sql
Normal file
547
route_sql/build/copy_orders.sql
Normal file
@ -0,0 +1,547 @@
|
|||||||
|
BEGIN;
|
||||||
|
--\timing
|
||||||
|
truncate table rlarp.osmfs;
|
||||||
|
|
||||||
|
WITH
|
||||||
|
gld AS (
|
||||||
|
SELECT
|
||||||
|
N1COMP COMP
|
||||||
|
,N1CCYY FSYR
|
||||||
|
,KPMAXP PERDS
|
||||||
|
,N1FSPP PERD
|
||||||
|
,to_char(N1FSYP,'FM0000') FSPR
|
||||||
|
,N1SD01 SDAT
|
||||||
|
,N1ED01 EDAT
|
||||||
|
,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
|
||||||
|
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
||||||
|
FROM
|
||||||
|
LGDAT.GLDATREF
|
||||||
|
INNER JOIN LGDAT.GLDATE ON
|
||||||
|
KPCOMP = N1COMP AND
|
||||||
|
KPCCYY = N1CCYY
|
||||||
|
WHERE
|
||||||
|
N1COMP = 93
|
||||||
|
--AND DIGITS(N1FSYP) = '1901'
|
||||||
|
)
|
||||||
|
--SELECT * FROM gld
|
||||||
|
,price AS (
|
||||||
|
SELECT
|
||||||
|
part
|
||||||
|
,bill_cust
|
||||||
|
,ship_cust
|
||||||
|
,round(fb_val_loc/fb_qty,10) AS price
|
||||||
|
,orderdate
|
||||||
|
,row_number() OVER (PARTITION BY part,bill_cust, ship_cust ORDER BY orderdate DESC) rn
|
||||||
|
FROM
|
||||||
|
rlarp.osm
|
||||||
|
WHERE
|
||||||
|
fs_line = '41010'
|
||||||
|
AND calc_status <> 'CANCELED'
|
||||||
|
AND COALESCE(part,'') <> ''
|
||||||
|
AND fb_qty <> 0
|
||||||
|
AND orderdate IS NOT NULL
|
||||||
|
ORDER BY
|
||||||
|
part
|
||||||
|
,bill_cust
|
||||||
|
,ship_cust
|
||||||
|
,orderdate
|
||||||
|
)
|
||||||
|
,cop AS (
|
||||||
|
SELECT
|
||||||
|
o.plnt
|
||||||
|
,o."ddord#"
|
||||||
|
,o."dditm#"
|
||||||
|
,o."fgbol#"
|
||||||
|
,o."fgent#"
|
||||||
|
,o."diinv#"
|
||||||
|
,o."dilin#"
|
||||||
|
,o.promo
|
||||||
|
,o.return_reas
|
||||||
|
,o.terms
|
||||||
|
,o.custpo
|
||||||
|
,o.dhincr
|
||||||
|
,o.diext
|
||||||
|
,o.ditdis
|
||||||
|
,o.dcodat
|
||||||
|
,o.ddqdat
|
||||||
|
,o.dcmdat
|
||||||
|
,o.dhidat
|
||||||
|
,o.fspr
|
||||||
|
,o.remit_to
|
||||||
|
,o.bill_class
|
||||||
|
,o.bill_cust
|
||||||
|
,o.bill_rep
|
||||||
|
,o.bill_terr
|
||||||
|
,o.ship_class
|
||||||
|
,o.ship_cust
|
||||||
|
,o.ship_rep
|
||||||
|
,o.ship_terr
|
||||||
|
,o.quota_rep
|
||||||
|
,o.account
|
||||||
|
,o.shipgrp
|
||||||
|
,o.geo
|
||||||
|
,o.chan
|
||||||
|
,o.orig_ctry
|
||||||
|
,o.orig_prov
|
||||||
|
,o.orig_post
|
||||||
|
,o.dest_ctry
|
||||||
|
,o.dest_prov
|
||||||
|
,o.dest_post
|
||||||
|
,o.part
|
||||||
|
,o.ord_gldc
|
||||||
|
,o.majg
|
||||||
|
,o.ming
|
||||||
|
,o.majs
|
||||||
|
,o.mins
|
||||||
|
,o.gldc
|
||||||
|
,o.glec
|
||||||
|
,o.harm
|
||||||
|
,o.clss
|
||||||
|
,o.brand
|
||||||
|
,o.assc
|
||||||
|
,o.fs_line
|
||||||
|
,o.r_currency
|
||||||
|
,o.r_rate
|
||||||
|
,o.c_currency
|
||||||
|
,o.c_rate
|
||||||
|
,o.ddqtoi
|
||||||
|
,o.ddqtsi
|
||||||
|
,o.fgqshp
|
||||||
|
,o.diqtsh
|
||||||
|
,sum(o.fb_qty) fb_qty
|
||||||
|
,sum(o.fb_cst_loc) fb_cst_loc
|
||||||
|
,sum(o.fb_cst_loc_cur) fb_cst_loc_cur
|
||||||
|
,sum(o.fb_cst_loc_fut) fb_cst_loc_fut
|
||||||
|
,sum(o.fb_val_loc) fb_val_loc
|
||||||
|
,sum(o.fb_val_loc_pl) fb_val_loc_pl
|
||||||
|
,o.calc_status
|
||||||
|
,o.flag
|
||||||
|
,o.orderdate
|
||||||
|
,o.requestdate
|
||||||
|
,greatest(least(o.shipdate,gld.edat),gld.sdat) shipdate
|
||||||
|
,o.adj_orderdate
|
||||||
|
,o.adj_requestdate
|
||||||
|
,greatest(least(o.adj_shipdate,gld.edat),gld.sdat) adj_shipdate
|
||||||
|
,'9p3' "version"
|
||||||
|
,'actual' iter
|
||||||
|
FROM
|
||||||
|
rlarp.osm o
|
||||||
|
LEFT OUTER JOIN gld ON
|
||||||
|
gld.fspr = o.fspr
|
||||||
|
WHERE
|
||||||
|
(
|
||||||
|
o.adj_orderdate BETWEEN '2018-06-01' AND '2019-03-24'
|
||||||
|
OR o.calc_status IN ('OPEN','BACKORDER')
|
||||||
|
OR o.fspr BETWEEN '1901' AND '1910'
|
||||||
|
)
|
||||||
|
AND fs_line = '41010'
|
||||||
|
AND calc_status <> 'CANCELED'
|
||||||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
|
--AND adj_orderdate <= adj_shipdate --exclude poorly date
|
||||||
|
GROUP BY
|
||||||
|
o.plnt
|
||||||
|
,o."ddord#"
|
||||||
|
,o."dditm#"
|
||||||
|
,o."fgbol#"
|
||||||
|
,o."fgent#"
|
||||||
|
,o."diinv#"
|
||||||
|
,o."dilin#"
|
||||||
|
,o.promo
|
||||||
|
,o.return_reas
|
||||||
|
,o.terms
|
||||||
|
,o.custpo
|
||||||
|
,o.dhincr
|
||||||
|
,o.diext
|
||||||
|
,o.ditdis
|
||||||
|
,o.dcodat
|
||||||
|
,o.ddqdat
|
||||||
|
,o.dcmdat
|
||||||
|
,o.dhidat
|
||||||
|
,o.fspr
|
||||||
|
,o.remit_to
|
||||||
|
,o.bill_class
|
||||||
|
,o.bill_cust
|
||||||
|
,o.bill_rep
|
||||||
|
,o.bill_terr
|
||||||
|
,o.ship_class
|
||||||
|
,o.ship_cust
|
||||||
|
,o.ship_rep
|
||||||
|
,o.ship_terr
|
||||||
|
,o.quota_rep
|
||||||
|
,o.account
|
||||||
|
,o.shipgrp
|
||||||
|
,o.geo
|
||||||
|
,o.chan
|
||||||
|
,o.orig_ctry
|
||||||
|
,o.orig_prov
|
||||||
|
,o.orig_post
|
||||||
|
,o.dest_ctry
|
||||||
|
,o.dest_prov
|
||||||
|
,o.dest_post
|
||||||
|
,o.part
|
||||||
|
,o.ord_gldc
|
||||||
|
,o.majg
|
||||||
|
,o.ming
|
||||||
|
,o.majs
|
||||||
|
,o.mins
|
||||||
|
,o.gldc
|
||||||
|
,o.glec
|
||||||
|
,o.harm
|
||||||
|
,o.clss
|
||||||
|
,o.brand
|
||||||
|
,o.assc
|
||||||
|
,o.fs_line
|
||||||
|
,o.r_currency
|
||||||
|
,o.r_rate
|
||||||
|
,o.c_currency
|
||||||
|
,o.c_rate
|
||||||
|
,o.ddqtoi
|
||||||
|
,o.ddqtsi
|
||||||
|
,o.fgqshp
|
||||||
|
,o.diqtsh
|
||||||
|
,o.calc_status
|
||||||
|
,o.flag
|
||||||
|
,o.orderdate
|
||||||
|
,o.requestdate
|
||||||
|
,greatest(least(o.shipdate,gld.edat),gld.sdat)
|
||||||
|
,o.adj_orderdate
|
||||||
|
,o.adj_requestdate
|
||||||
|
,greatest(least(o.adj_shipdate,gld.edat),gld.sdat)
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
o.plnt
|
||||||
|
,o."ddord#"
|
||||||
|
,o."dditm#"
|
||||||
|
,o."fgbol#"
|
||||||
|
,o."fgent#"
|
||||||
|
,o."diinv#"
|
||||||
|
,o."dilin#"
|
||||||
|
,o.promo
|
||||||
|
,o.return_reas
|
||||||
|
,o.terms
|
||||||
|
,o.custpo
|
||||||
|
,o.dhincr
|
||||||
|
,o.diext
|
||||||
|
,o.ditdis
|
||||||
|
,o.dcodat
|
||||||
|
,o.ddqdat
|
||||||
|
,o.dcmdat
|
||||||
|
,o.dhidat
|
||||||
|
,o.fspr
|
||||||
|
,o.remit_to
|
||||||
|
,o.bill_class
|
||||||
|
,o.bill_cust
|
||||||
|
,o.bill_rep
|
||||||
|
,o.bill_terr
|
||||||
|
,o.ship_class
|
||||||
|
,o.ship_cust
|
||||||
|
,o.ship_rep
|
||||||
|
,o.ship_terr
|
||||||
|
,o.quota_rep
|
||||||
|
,o.account
|
||||||
|
,o.shipgrp
|
||||||
|
,o.geo
|
||||||
|
,o.chan
|
||||||
|
,o.orig_ctry
|
||||||
|
,o.orig_prov
|
||||||
|
,o.orig_post
|
||||||
|
,o.dest_ctry
|
||||||
|
,o.dest_prov
|
||||||
|
,o.dest_post
|
||||||
|
,o.part
|
||||||
|
,o.ord_gldc
|
||||||
|
,o.majg
|
||||||
|
,o.ming
|
||||||
|
,o.majs
|
||||||
|
,o.mins
|
||||||
|
,o.gldc
|
||||||
|
,o.glec
|
||||||
|
,o.harm
|
||||||
|
,o.clss
|
||||||
|
,o.brand
|
||||||
|
,o.assc
|
||||||
|
,o.fs_line
|
||||||
|
,o.r_currency
|
||||||
|
,o.r_rate
|
||||||
|
,o.c_currency
|
||||||
|
,o.c_rate
|
||||||
|
,o.ddqtoi
|
||||||
|
,o.ddqtsi
|
||||||
|
,o.fgqshp
|
||||||
|
,o.diqtsh
|
||||||
|
,sum(o.fb_qty) fb_qty
|
||||||
|
,sum(COALESCE(o.fb_qty * coalesce(m.cgstcs, pr.chstcs, r.y0stcs),o.fb_cst_loc)) fb_cst_loc
|
||||||
|
,sum(o.fb_cst_loc_cur) fb_cst_loc_cur
|
||||||
|
,sum(o.fb_cst_loc_fut) fb_cst_loc_fut
|
||||||
|
,sum(COALESCE(o.fb_qty * p.price,o.fb_val_loc)) fb_val_loc
|
||||||
|
,sum(o.fb_val_loc) fb_val_loc_pl
|
||||||
|
,'CLOSED' calc_status
|
||||||
|
,'SHIPMENT' flag
|
||||||
|
,o.orderdate
|
||||||
|
,o.requestdate
|
||||||
|
,greatest(least(o.shipdate,gld.edat),gld.sdat) shipdate
|
||||||
|
,o.adj_orderdate
|
||||||
|
,o.adj_requestdate
|
||||||
|
,greatest(least(o.adj_shipdate,gld.edat),gld.sdat) adj_shipdate
|
||||||
|
,'9p3' "version"
|
||||||
|
,'forecast' iter
|
||||||
|
FROM
|
||||||
|
rlarp.osmf o
|
||||||
|
LEFT OUTER JOIN gld ON
|
||||||
|
gld.fspr = o.fspr
|
||||||
|
LEFT OUTER JOIN price p ON
|
||||||
|
p.part = o.part
|
||||||
|
AND p.bill_cust = o.bill_cust
|
||||||
|
AND p.ship_cust = o.ship_cust
|
||||||
|
AND p.rn = 1
|
||||||
|
LEFT OUTER JOIN lgdat.icstm m ON
|
||||||
|
m.cgpart = o.part
|
||||||
|
AND m.cgplnt = o.plnt
|
||||||
|
LEFT OUTER JOIN lgdat.icstp pr ON
|
||||||
|
pr.chpart = o.part
|
||||||
|
AND pr.chplnt = o.plnt
|
||||||
|
LEFT OUTER JOIN lgdat.icstr r ON
|
||||||
|
y0part = o.part
|
||||||
|
AND y0plnt = o.plnt
|
||||||
|
WHERE
|
||||||
|
o.adj_orderdate BETWEEN '2019-03-25' AND '2019-05-31'
|
||||||
|
AND fs_line = '41010'
|
||||||
|
AND calc_status <> 'CANCELED'
|
||||||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
|
AND adj_orderdate <= adj_shipdate --exclude bogus ship date orders
|
||||||
|
GROUP BY
|
||||||
|
o.plnt
|
||||||
|
,o."ddord#"
|
||||||
|
,o."dditm#"
|
||||||
|
,o."fgbol#"
|
||||||
|
,o."fgent#"
|
||||||
|
,o."diinv#"
|
||||||
|
,o."dilin#"
|
||||||
|
,o.promo
|
||||||
|
,o.return_reas
|
||||||
|
,o.terms
|
||||||
|
,o.custpo
|
||||||
|
,o.dhincr
|
||||||
|
,o.diext
|
||||||
|
,o.ditdis
|
||||||
|
,o.dcodat
|
||||||
|
,o.ddqdat
|
||||||
|
,o.dcmdat
|
||||||
|
,o.dhidat
|
||||||
|
,o.fspr
|
||||||
|
,o.remit_to
|
||||||
|
,o.bill_class
|
||||||
|
,o.bill_cust
|
||||||
|
,o.bill_rep
|
||||||
|
,o.bill_terr
|
||||||
|
,o.ship_class
|
||||||
|
,o.ship_cust
|
||||||
|
,o.ship_rep
|
||||||
|
,o.ship_terr
|
||||||
|
,o.quota_rep
|
||||||
|
,o.account
|
||||||
|
,o.shipgrp
|
||||||
|
,o.geo
|
||||||
|
,o.chan
|
||||||
|
,o.orig_ctry
|
||||||
|
,o.orig_prov
|
||||||
|
,o.orig_post
|
||||||
|
,o.dest_ctry
|
||||||
|
,o.dest_prov
|
||||||
|
,o.dest_post
|
||||||
|
,o.part
|
||||||
|
,o.ord_gldc
|
||||||
|
,o.majg
|
||||||
|
,o.ming
|
||||||
|
,o.majs
|
||||||
|
,o.mins
|
||||||
|
,o.gldc
|
||||||
|
,o.glec
|
||||||
|
,o.harm
|
||||||
|
,o.clss
|
||||||
|
,o.brand
|
||||||
|
,o.assc
|
||||||
|
,o.fs_line
|
||||||
|
,o.r_currency
|
||||||
|
,o.r_rate
|
||||||
|
,o.c_currency
|
||||||
|
,o.c_rate
|
||||||
|
,o.ddqtoi
|
||||||
|
,o.ddqtsi
|
||||||
|
,o.fgqshp
|
||||||
|
,o.diqtsh
|
||||||
|
,o.orderdate
|
||||||
|
,o.requestdate
|
||||||
|
,greatest(least(o.shipdate,gld.edat),gld.sdat)
|
||||||
|
,o.adj_orderdate
|
||||||
|
,o.adj_requestdate
|
||||||
|
,greatest(least(o.adj_shipdate,gld.edat),gld.sdat)
|
||||||
|
)
|
||||||
|
,incr AS (
|
||||||
|
SELECT
|
||||||
|
o.plnt
|
||||||
|
,o."ddord#"
|
||||||
|
,o."dditm#"
|
||||||
|
,o."fgbol#"
|
||||||
|
,o."fgent#"
|
||||||
|
,o."diinv#"
|
||||||
|
,o."dilin#"
|
||||||
|
,o.promo
|
||||||
|
,o.return_reas
|
||||||
|
,o.terms
|
||||||
|
,o.custpo
|
||||||
|
,o.dhincr
|
||||||
|
,o.diext
|
||||||
|
,o.ditdis
|
||||||
|
,o.dcodat
|
||||||
|
,o.ddqdat
|
||||||
|
,o.dcmdat
|
||||||
|
,o.dhidat
|
||||||
|
,gld.fspr
|
||||||
|
,o.remit_to
|
||||||
|
,o.bill_class
|
||||||
|
,o.bill_cust
|
||||||
|
,o.bill_rep
|
||||||
|
,o.bill_terr
|
||||||
|
,o.ship_class
|
||||||
|
,o.ship_cust
|
||||||
|
,o.ship_rep
|
||||||
|
,o.ship_terr
|
||||||
|
,o.quota_rep
|
||||||
|
,o.account
|
||||||
|
,o.shipgrp
|
||||||
|
,o.geo
|
||||||
|
,o.chan
|
||||||
|
,o.orig_ctry
|
||||||
|
,o.orig_prov
|
||||||
|
,o.orig_post
|
||||||
|
,o.dest_ctry
|
||||||
|
,o.dest_prov
|
||||||
|
,o.dest_post
|
||||||
|
,o.part
|
||||||
|
,o.ord_gldc
|
||||||
|
,o.majg
|
||||||
|
,o.ming
|
||||||
|
,o.majs
|
||||||
|
,o.mins
|
||||||
|
,o.gldc
|
||||||
|
,o.glec
|
||||||
|
,o.harm
|
||||||
|
,o.clss
|
||||||
|
,o.brand
|
||||||
|
,o.assc
|
||||||
|
,o.fs_line
|
||||||
|
,o.r_currency
|
||||||
|
,o.r_rate
|
||||||
|
,o.c_currency
|
||||||
|
,o.c_rate
|
||||||
|
,o.ddqtoi
|
||||||
|
,o.ddqtsi
|
||||||
|
,o.fgqshp
|
||||||
|
,o.diqtsh
|
||||||
|
,sum(o.fb_qty) fb_qty
|
||||||
|
,sum(o.fb_cst_loc) fb_cst_loc
|
||||||
|
,sum(o.fb_cst_loc_cur) fb_cst_loc_cur
|
||||||
|
,sum(o.fb_cst_loc_fut) fb_cst_loc_fut
|
||||||
|
,sum(o.fb_val_loc) fb_val_loc
|
||||||
|
,sum(o.fb_val_loc_pl) fb_val_loc_pl
|
||||||
|
,o.calc_status
|
||||||
|
,o.flag
|
||||||
|
----these dates should already be snapped since the derive from the adjusted set
|
||||||
|
,o.orderdate + interval '1 year' orderdate
|
||||||
|
,o.requestdate + interval '1 year' requestdate
|
||||||
|
,o.shipdate + interval '1 year' shipdate
|
||||||
|
,o.adj_orderdate + interval '1 year' adj_orderdate
|
||||||
|
,o.adj_requestdate + interval '1 year' adj_requestdate
|
||||||
|
,o.adj_shipdate + interval '1 year' adj_shipdate
|
||||||
|
,'b20' "version"
|
||||||
|
,'copy' iter
|
||||||
|
FROM
|
||||||
|
cop o
|
||||||
|
LEFT OUTER JOIN gld ON
|
||||||
|
(o.adj_shipdate + interval '1 year') BETWEEN gld.sdat AND gld.edat
|
||||||
|
WHERE
|
||||||
|
adj_orderdate BETWEEN '2018-06-01' AND '2019-05-31'
|
||||||
|
GROUP BY
|
||||||
|
o.plnt
|
||||||
|
,o."ddord#"
|
||||||
|
,o."dditm#"
|
||||||
|
,o."fgbol#"
|
||||||
|
,o."fgent#"
|
||||||
|
,o."diinv#"
|
||||||
|
,o."dilin#"
|
||||||
|
,o.promo
|
||||||
|
,o.return_reas
|
||||||
|
,o.terms
|
||||||
|
,o.custpo
|
||||||
|
,o.dhincr
|
||||||
|
,o.diext
|
||||||
|
,o.ditdis
|
||||||
|
,o.dcodat
|
||||||
|
,o.ddqdat
|
||||||
|
,o.dcmdat
|
||||||
|
,o.dhidat
|
||||||
|
,gld.fspr
|
||||||
|
,o.remit_to
|
||||||
|
,o.bill_class
|
||||||
|
,o.bill_cust
|
||||||
|
,o.bill_rep
|
||||||
|
,o.bill_terr
|
||||||
|
,o.ship_class
|
||||||
|
,o.ship_cust
|
||||||
|
,o.ship_rep
|
||||||
|
,o.ship_terr
|
||||||
|
,o.quota_rep
|
||||||
|
,o.account
|
||||||
|
,o.shipgrp
|
||||||
|
,o.geo
|
||||||
|
,o.chan
|
||||||
|
,o.orig_ctry
|
||||||
|
,o.orig_prov
|
||||||
|
,o.orig_post
|
||||||
|
,o.dest_ctry
|
||||||
|
,o.dest_prov
|
||||||
|
,o.dest_post
|
||||||
|
,o.part
|
||||||
|
,o.ord_gldc
|
||||||
|
,o.majg
|
||||||
|
,o.ming
|
||||||
|
,o.majs
|
||||||
|
,o.mins
|
||||||
|
,o.gldc
|
||||||
|
,o.glec
|
||||||
|
,o.harm
|
||||||
|
,o.clss
|
||||||
|
,o.brand
|
||||||
|
,o.assc
|
||||||
|
,o.fs_line
|
||||||
|
,o.r_currency
|
||||||
|
,o.r_rate
|
||||||
|
,o.c_currency
|
||||||
|
,o.c_rate
|
||||||
|
,o.ddqtoi
|
||||||
|
,o.ddqtsi
|
||||||
|
,o.fgqshp
|
||||||
|
,o.diqtsh
|
||||||
|
,o.calc_status
|
||||||
|
,o.flag
|
||||||
|
,o.orderdate + interval '1 year'
|
||||||
|
,o.requestdate + interval '1 year'
|
||||||
|
,o.shipdate + interval '1 year'
|
||||||
|
,o.adj_orderdate + interval '1 year'
|
||||||
|
,o.adj_requestdate + interval '1 year'
|
||||||
|
,o.adj_shipdate + interval '1 year'
|
||||||
|
)
|
||||||
|
INSERT INTO rlarp.osmfs
|
||||||
|
SELECT * FROM incr
|
||||||
|
UNION ALL
|
||||||
|
SELECT * FROM cop;
|
||||||
|
|
||||||
|
---identify short ships: causes disconnect with actual sales-------------------------------------------------------------------
|
||||||
|
--UPDATE rlarp.osmfs SET iter = 'short ship' WHERE calc_status = 'CLOSED' AND flag = 'REMAINDER';
|
||||||
|
|
||||||
|
---identify goofy ship dates: causes disconnect with sales when splicing in a forecast that has this problem-------------------
|
||||||
|
--UPDATE rlarp.osmfs SET iter = 'bad date' WHERE adj_shipdate < adj_orderdate;
|
||||||
|
COMMIT;
|
120
route_sql/build/last_price.sql
Normal file
120
route_sql/build/last_price.sql
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
BEGIN;
|
||||||
|
|
||||||
|
with p AS (
|
||||||
|
SELECT
|
||||||
|
part
|
||||||
|
,bill_cust
|
||||||
|
,ship_cust
|
||||||
|
,round(fb_val_loc/fb_qty,10) AS price
|
||||||
|
,orderdate
|
||||||
|
,row_number() OVER (PARTITION BY part,bill_cust, ship_cust ORDER BY orderdate DESC) rn
|
||||||
|
FROM
|
||||||
|
rlarp.osm
|
||||||
|
WHERE
|
||||||
|
fs_line = '41010'
|
||||||
|
AND calc_status <> 'CANCELED'
|
||||||
|
AND COALESCE(part,'') <> ''
|
||||||
|
AND fb_qty <> 0
|
||||||
|
AND orderdate IS NOT NULL
|
||||||
|
ORDER BY
|
||||||
|
part
|
||||||
|
,bill_cust
|
||||||
|
,ship_cust
|
||||||
|
,orderdate
|
||||||
|
)
|
||||||
|
--SELECT * FROM p WHERE rn = 1
|
||||||
|
,incr AS (
|
||||||
|
SELECT
|
||||||
|
b.plnt
|
||||||
|
,b."ddord#"
|
||||||
|
,b."dditm#"
|
||||||
|
,b."fgbol#"
|
||||||
|
,b."fgent#"
|
||||||
|
,b."diinv#"
|
||||||
|
,b."dilin#"
|
||||||
|
,b.promo
|
||||||
|
,b.return_reas
|
||||||
|
,b.terms
|
||||||
|
,b.custpo
|
||||||
|
,b.dhincr
|
||||||
|
,b.diext
|
||||||
|
,b.ditdis
|
||||||
|
,b.dcodat
|
||||||
|
,b.ddqdat
|
||||||
|
,b.dcmdat
|
||||||
|
,b.dhidat
|
||||||
|
,b.fspr
|
||||||
|
,b.remit_to
|
||||||
|
,b.bill_class
|
||||||
|
,b.bill_cust
|
||||||
|
,b.bill_rep
|
||||||
|
,b.bill_terr
|
||||||
|
,b.ship_class
|
||||||
|
,b.ship_cust
|
||||||
|
,b.ship_rep
|
||||||
|
,b.ship_terr
|
||||||
|
,b.quota_rep
|
||||||
|
,b.account
|
||||||
|
,b.shipgrp
|
||||||
|
,b.geo
|
||||||
|
,b.chan
|
||||||
|
,b.orig_ctry
|
||||||
|
,b.orig_prov
|
||||||
|
,b.orig_post
|
||||||
|
,b.dest_ctry
|
||||||
|
,b.dest_prov
|
||||||
|
,b.dest_post
|
||||||
|
,b.part
|
||||||
|
,b.ord_gldc
|
||||||
|
,b.majg
|
||||||
|
,b.ming
|
||||||
|
,b.majs
|
||||||
|
,b.mins
|
||||||
|
,b.gldc
|
||||||
|
,b.glec
|
||||||
|
,b.harm
|
||||||
|
,b.clss
|
||||||
|
,b.brand
|
||||||
|
,b.assc
|
||||||
|
,b.fs_line
|
||||||
|
,b.r_currency
|
||||||
|
,b.r_rate
|
||||||
|
,b.c_currency
|
||||||
|
,b.c_rate
|
||||||
|
,b.ddqtoi
|
||||||
|
,b.ddqtsi
|
||||||
|
,b.fgqshp
|
||||||
|
,b.diqtsh
|
||||||
|
,0 fb_qty
|
||||||
|
,0 fb_cst_loc
|
||||||
|
,0 fb_cst_loc_cur
|
||||||
|
,0 fb_cst_loc_fut
|
||||||
|
,b.fb_qty * p.price - b.fb_val_loc fb_val_loc
|
||||||
|
,0 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"
|
||||||
|
,'last price paid' iter
|
||||||
|
FROM
|
||||||
|
rlarp.osmfs b
|
||||||
|
INNER JOIN p ON
|
||||||
|
p.part = b.part
|
||||||
|
AND p.bill_cust = b.bill_cust
|
||||||
|
AND p.ship_cust = b.ship_cust
|
||||||
|
AND p.rn = 1
|
||||||
|
WHERE
|
||||||
|
b.orderdate BETWEEN '2019-03-25' AND '2019-05-31'
|
||||||
|
OR b.orderdate BETWEEN '2020-03-25' AND '2020-05-31'
|
||||||
|
)
|
||||||
|
, ins AS (
|
||||||
|
INSERT INTO rlarp.osmfs SELECT * FROM incr RETURNING *
|
||||||
|
)
|
||||||
|
SELECT fspr, sum(fb_val_loc *r_rate) FROM ins GROUP BY fspr;
|
||||||
|
|
||||||
|
COMMIT;
|
17
route_sql/build/list_changes_table.sql
Normal file
17
route_sql/build/list_changes_table.sql
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
SELECT
|
||||||
|
iterdef->>'user' "user",
|
||||||
|
(iterdef->>'stamp')::timestamptz "stamp",
|
||||||
|
iterdef->>'mesasage' "comment",
|
||||||
|
round(SUM(fb_val_loc * r_rate)::numeric,2) sales,
|
||||||
|
jsonb_pretty(iterdef) def
|
||||||
|
FROM
|
||||||
|
rlarp.osm_fcpool
|
||||||
|
WHERE
|
||||||
|
iterdef IS NOT NULL
|
||||||
|
GROUP BY
|
||||||
|
iterdef->>'user',
|
||||||
|
iterdef->>'stamp',
|
||||||
|
iterdef->>'message',
|
||||||
|
iterdef
|
||||||
|
ORDER BY
|
||||||
|
"stamp" DESC
|
96
route_sql/build/open_timing.sql
Normal file
96
route_sql/build/open_timing.sql
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
BEGIN;
|
||||||
|
|
||||||
|
WITH
|
||||||
|
mseq AS (
|
||||||
|
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)
|
||||||
|
) x(m,s,cal,yr)
|
||||||
|
)
|
||||||
|
,alldates AS (
|
||||||
|
SELECT
|
||||||
|
shipgrp
|
||||||
|
,to_char(orderdate,'Mon') orderm
|
||||||
|
,extract(month FROM age(requestdate,orderdate)) rmo
|
||||||
|
,(sum((shipdate - requestdate)* (fb_val_loc * r_rate))/sum(fb_val_loc * r_rate))::int wav_lag
|
||||||
|
--,sum(fb_val_loc * r_rate) value_usd
|
||||||
|
FROM
|
||||||
|
rlarp.osm
|
||||||
|
WHERE
|
||||||
|
adj_orderdate >= '2017-06-01'
|
||||||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
|
AND adj_orderdate <= adj_shipdate
|
||||||
|
AND fspr IS NOT NULL
|
||||||
|
GROUP BY
|
||||||
|
shipgrp
|
||||||
|
,to_char(orderdate,'Mon')
|
||||||
|
,extract(month FROM age(requestdate,orderdate))
|
||||||
|
HAVING
|
||||||
|
sum(fb_val_loc * r_rate) <> 0
|
||||||
|
)
|
||||||
|
,lag AS (
|
||||||
|
SELECT
|
||||||
|
shipgrp
|
||||||
|
,orderm
|
||||||
|
,rmo
|
||||||
|
,wav_lag
|
||||||
|
FROM
|
||||||
|
alldates
|
||||||
|
ORDER BY
|
||||||
|
shipgrp
|
||||||
|
,orderm
|
||||||
|
,rmo
|
||||||
|
)
|
||||||
|
,opord AS (
|
||||||
|
SELECT
|
||||||
|
shipgrp
|
||||||
|
,orderdate
|
||||||
|
,requestdate
|
||||||
|
,shipdate
|
||||||
|
,to_char(orderdate,'Mon') orderm
|
||||||
|
,extract(month FROM age(requestdate,orderdate)) rmo
|
||||||
|
,sum(fb_val_loc * r_rate) value_usd
|
||||||
|
FROM
|
||||||
|
rlarp.osm
|
||||||
|
WHERE
|
||||||
|
calc_status NOT IN ('CANCELED','CLOSED')
|
||||||
|
GROUP BY
|
||||||
|
shipgrp
|
||||||
|
,orderdate
|
||||||
|
,requestdate
|
||||||
|
,shipdate
|
||||||
|
,to_char(orderdate,'Mon')
|
||||||
|
,extract(month FROM age(requestdate,orderdate))
|
||||||
|
ORDER BY
|
||||||
|
value_usd DESC
|
||||||
|
)
|
||||||
|
,upd AS (
|
||||||
|
UPDATE rlarp.osmfs o SET
|
||||||
|
adj_shipdate = greatest(shipdate + lag.wav_lag + 5 ,shipdate)
|
||||||
|
FROM
|
||||||
|
lag
|
||||||
|
WHERE
|
||||||
|
lag.shipgrp = o.shipgrp
|
||||||
|
AND lag.orderm = to_char(o.orderdate,'Mon')
|
||||||
|
AND lag.rmo = extract(month FROM age(o.requestdate,o.orderdate))
|
||||||
|
AND o.calc_status in ('BACKORDER','OPEN')
|
||||||
|
RETURNING *
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
sum(fb_val_loc *r_rate) filter (where adj_shipdate < '2019-04-01')
|
||||||
|
,sum(fb_val_loc *r_rate) filter (where adj_shipdate >= '2019-04-01')
|
||||||
|
from upd;
|
||||||
|
|
||||||
|
COMMIT;
|
29
route_sql/build/set_fspr_gld.sql
Normal file
29
route_sql/build/set_fspr_gld.sql
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
UPDATE
|
||||||
|
rlarp.osmfs f
|
||||||
|
SET
|
||||||
|
fspr = gld.fspr
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
N1COMP COMP
|
||||||
|
,N1CCYY FSYRq
|
||||||
|
,KPMAXP PERDS
|
||||||
|
,N1FSPP PERD
|
||||||
|
,to_char(N1FSYP,'FM0000') FSPR
|
||||||
|
,N1SD01 SDAT
|
||||||
|
,N1ED01 EDAT
|
||||||
|
,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
|
||||||
|
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
||||||
|
FROM
|
||||||
|
LGDAT.GLDATREF
|
||||||
|
INNER JOIN LGDAT.GLDATE ON
|
||||||
|
KPCOMP = N1COMP AND
|
||||||
|
KPCCYY = N1CCYY
|
||||||
|
WHERE
|
||||||
|
N1COMP = 93
|
||||||
|
--AND DIGITS(N1FSYP) = '1901'
|
||||||
|
) gld
|
||||||
|
WHERE
|
||||||
|
f.adj_shipdate BETWEEN gld.sdat AND gld.edat
|
21
route_sql/list_changes.sql
Normal file
21
route_sql/list_changes.sql
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
WITH
|
||||||
|
list AS (
|
||||||
|
SELECT
|
||||||
|
iterdef->>'user' "user",
|
||||||
|
iterdef->>'stamp' "stamp",
|
||||||
|
iterdef->>'mesasage' "comment",
|
||||||
|
round(SUM(fb_val_loc * r_rate)::numeric,2) sales,
|
||||||
|
jsonb_pretty(iterdef) def
|
||||||
|
FROM
|
||||||
|
rlarp.osm_fcpool
|
||||||
|
WHERE
|
||||||
|
iterdef IS NOT NULL
|
||||||
|
AND iterdef @> $$replace_user$$::jsonb
|
||||||
|
GROUP BY
|
||||||
|
iterdef->>'user',
|
||||||
|
iterdef->>'stamp',
|
||||||
|
iterdef->>'message',
|
||||||
|
iterdef
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
jsonb_agg(row_to_json(list)::jsonb) x from list
|
787
route_sql/new_basket.sql
Normal file
787
route_sql/new_basket.sql
Normal file
@ -0,0 +1,787 @@
|
|||||||
|
WITH
|
||||||
|
/*
|
||||||
|
the volume must be expressed in terms of units, since that is what it will be scaling
|
||||||
|
*/
|
||||||
|
target AS (select $$replace_request$$::json def)
|
||||||
|
--select * from newm
|
||||||
|
,GLD AS (
|
||||||
|
SELECT
|
||||||
|
N1COMP COMP
|
||||||
|
,N1CCYY FSYR
|
||||||
|
,KPMAXP PERDS
|
||||||
|
,N1FSPP PERD
|
||||||
|
,to_char(N1FSYP,'FM0000') FSPR
|
||||||
|
,N1SD01 SDAT
|
||||||
|
,N1ED01 EDAT
|
||||||
|
,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
|
||||||
|
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
||||||
|
FROM
|
||||||
|
LGDAT.GLDATREF
|
||||||
|
INNER JOIN LGDAT.GLDATE ON
|
||||||
|
KPCOMP = N1COMP AND
|
||||||
|
KPCCYY = N1CCYY
|
||||||
|
WHERE
|
||||||
|
N1COMP = 93
|
||||||
|
--AND DIGITS(N1FSYP) = '1901'
|
||||||
|
)
|
||||||
|
,mseq AS (
|
||||||
|
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)
|
||||||
|
) x(m,s,cal,yr)
|
||||||
|
)
|
||||||
|
,SEG AS (
|
||||||
|
SELECT
|
||||||
|
x.GLEC
|
||||||
|
,x.SEGM
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
VALUES
|
||||||
|
('1CU','Retail'),
|
||||||
|
('1GR','Greenhouse'),
|
||||||
|
('1NU','Nursery'),
|
||||||
|
('1RE','Retail'),
|
||||||
|
('2WI','Greenhouse'),
|
||||||
|
('3BM','Other'),
|
||||||
|
('3CO','Other'),
|
||||||
|
('3PE','Other'),
|
||||||
|
('3PP','Other'),
|
||||||
|
('4CO','Other'),
|
||||||
|
('4RA','Other'),
|
||||||
|
('9MI','Other'),
|
||||||
|
('9SA','Other'),
|
||||||
|
('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
|
||||||
|
,LTRIM(RTRIM(C.A9)) || ' - ' || C.A30 REPP
|
||||||
|
,COALESCE(Q.DIR,'Other') DIRECTOR
|
||||||
|
FROM
|
||||||
|
LGDAT.CODE C
|
||||||
|
LEFT OUTER JOIN RLARP.QRH Q ON
|
||||||
|
Q.QR = LTRIM(RTRIM(C.A9))
|
||||||
|
WHERE
|
||||||
|
C.A2 = 'MM'
|
||||||
|
)
|
||||||
|
--MOLD DESCRIPTIONS
|
||||||
|
,MD AS (
|
||||||
|
SELECT
|
||||||
|
U.MOLD
|
||||||
|
,MAX(U.DESCR) DESCR
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
SUBSTR(M.AVPART,1,8) MOLD
|
||||||
|
,MAX(M.AVDES1) DESCR
|
||||||
|
FROM
|
||||||
|
LGDAT.STKMM M
|
||||||
|
WHERE
|
||||||
|
LENGTH(M.AVPART) > 8
|
||||||
|
AND SUBSTR(M.AVGLED,1,1) <= '2'
|
||||||
|
GROUP BY
|
||||||
|
SUBSTR(M.AVPART,1,8)
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
SUBSTR(P.AWPART,1,8) MOLD
|
||||||
|
,MAX(P.AWDES1) DESCR
|
||||||
|
FROM
|
||||||
|
LGDAT.STKMP P
|
||||||
|
WHERE
|
||||||
|
LENGTH(P.AWPART) > 8
|
||||||
|
AND SUBSTR(P.AWGLED,1,1) <= '2'
|
||||||
|
GROUP BY
|
||||||
|
SUBSTR(P.AWPART,1,8)
|
||||||
|
) U
|
||||||
|
GROUP BY
|
||||||
|
U.MOLD
|
||||||
|
)
|
||||||
|
----------------------------------------------------sales major codes----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,SJ AS (
|
||||||
|
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') = ''
|
||||||
|
)
|
||||||
|
----------------------------------------------------sales minor codes----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,SI AS (
|
||||||
|
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') <> ''
|
||||||
|
)
|
||||||
|
,copr AS (
|
||||||
|
SELECT
|
||||||
|
LTRIM(RTRIM(A9)) AS COMP,
|
||||||
|
A30 AS DESCR,
|
||||||
|
SUBSTR(C.A249,242,2) CURR,
|
||||||
|
SUBSTR(C.A249,32,4) AS GL,
|
||||||
|
SUBSTR(C.A249,190,4) AS AR,
|
||||||
|
SUBSTR(C.A249,182,4) AS AP,
|
||||||
|
SUBSTR(C.A249,198,4) AS FA,
|
||||||
|
SUBSTR(C.A249,238,4) AS IC ,
|
||||||
|
SUBSTR(D.A249,9,5) CONS_FUNC
|
||||||
|
FROM
|
||||||
|
LGDAT.CODE
|
||||||
|
LEFT OUTER JOIN LGDAT.NAME C ON
|
||||||
|
'C0000'||LTRIM(RTRIM(A9)) = C.A7
|
||||||
|
LEFT OUTER JOIN LGDAT.NAME D ON
|
||||||
|
'D0000'||LTRIM(RTRIM(A9)) = D.A7
|
||||||
|
WHERE
|
||||||
|
A2 = 'AA' OR A2 IS NULL
|
||||||
|
)
|
||||||
|
,alldates AS (
|
||||||
|
SELECT
|
||||||
|
promo
|
||||||
|
,terms
|
||||||
|
,order_month
|
||||||
|
,mseq.s seq
|
||||||
|
,orderdate
|
||||||
|
,requestdate
|
||||||
|
,shipdate
|
||||||
|
,sum(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
rlarp.osm_fcpool
|
||||||
|
LEFT OUTER JOIN mseq ON
|
||||||
|
mseq.m = order_month
|
||||||
|
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
|
||||||
|
promo
|
||||||
|
,terms
|
||||||
|
,order_month
|
||||||
|
,mseq.s
|
||||||
|
,orderdate
|
||||||
|
,requestdate
|
||||||
|
,shipdate
|
||||||
|
HAVING
|
||||||
|
sum(value_usd) <> 0
|
||||||
|
)
|
||||||
|
--select * from alldates
|
||||||
|
,dom AS (
|
||||||
|
SELECT
|
||||||
|
extract(day FROM orderdate) DOM
|
||||||
|
,sum(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
alldates
|
||||||
|
GROUP BY
|
||||||
|
extract(day FROM orderdate)
|
||||||
|
)
|
||||||
|
---------------------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
|
||||||
|
,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(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
alldates
|
||||||
|
GROUP BY
|
||||||
|
to_char(orderdate,'Mon')
|
||||||
|
,seq
|
||||||
|
,promo
|
||||||
|
--,extract(day from orderdate)
|
||||||
|
--,requestdate-orderdate
|
||||||
|
--,shipdate - requestdate
|
||||||
|
)
|
||||||
|
,targm AS (
|
||||||
|
SELECT
|
||||||
|
je.key as month
|
||||||
|
,r.amount
|
||||||
|
,r.qty
|
||||||
|
,s
|
||||||
|
,cal
|
||||||
|
,yr
|
||||||
|
FROM
|
||||||
|
target
|
||||||
|
JOIN LATERAL json_each(def->'months') je ON true
|
||||||
|
JOIN LATERAL json_to_record(je.value) as r (amount numeric, qty numeric) ON TRUE
|
||||||
|
LEFT OUTER JOIN mseq ON
|
||||||
|
mseq.m = je.key
|
||||||
|
)
|
||||||
|
,mmixp AS (
|
||||||
|
SELECT
|
||||||
|
_month
|
||||||
|
,seq
|
||||||
|
,promo
|
||||||
|
,round((dom_wa/value_usd)::numeric,0)::int odom
|
||||||
|
,round((rlag_wa/value_usd)::numeric,0)::int rlag
|
||||||
|
,round((slag_wa/value_usd)::numeric,0)::int slag
|
||||||
|
,value_usd/sum(value_usd) over (partition by _month) momix
|
||||||
|
--,value_usd/SUM(value_usd) over (PARTITION BY _month) vperc
|
||||||
|
FROM
|
||||||
|
mmix
|
||||||
|
)
|
||||||
|
--month cross join mix
|
||||||
|
,mxm AS (
|
||||||
|
SELECT
|
||||||
|
t.month
|
||||||
|
,t.amount
|
||||||
|
,t.qty
|
||||||
|
,t.s
|
||||||
|
,t.cal
|
||||||
|
,t.yr
|
||||||
|
,x.momix
|
||||||
|
,x.odom
|
||||||
|
,x.rlag
|
||||||
|
,x.slag
|
||||||
|
,x.promo
|
||||||
|
FROM
|
||||||
|
targm t
|
||||||
|
LEFT OUTER JOIN mmixp x ON
|
||||||
|
x._month = (
|
||||||
|
SELECT
|
||||||
|
_month
|
||||||
|
FROM
|
||||||
|
mmixp
|
||||||
|
ORDER BY
|
||||||
|
abs(seq - t.s) ASC
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
--SELECT * FROM mxm
|
||||||
|
--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
|
||||||
|
,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
|
||||||
|
FROM
|
||||||
|
target
|
||||||
|
JOIN LATERAL json_array_elements(def->'basket') as ae(e) 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
|
||||||
|
LEFT OUTER JOIN gld od ON
|
||||||
|
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) BETWEEN od.sdat AND od.edat
|
||||||
|
LEFT OUTER JOIN gld rd ON
|
||||||
|
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag BETWEEN rd.sdat AND rd.edat
|
||||||
|
LEFT OUTER JOIN gld sd ON
|
||||||
|
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat
|
||||||
|
)
|
||||||
|
--SELECT * FROM basemix
|
||||||
|
,final AS (
|
||||||
|
SELECT
|
||||||
|
COALESCE(m.avdplt,p.awdplt) plnt --master data
|
||||||
|
,b."ddord#"
|
||||||
|
,b."dditm#"
|
||||||
|
,b."fgbol#"
|
||||||
|
,b."fgent#"
|
||||||
|
,b."diinv#"
|
||||||
|
,b."dilin#"
|
||||||
|
,b.promo --history
|
||||||
|
,b.return_reas
|
||||||
|
,bc.bvterm terms --history cust mix
|
||||||
|
,b.custpo
|
||||||
|
,b.dhincr
|
||||||
|
,b.diext
|
||||||
|
,b.ditdis
|
||||||
|
,b.dcodat
|
||||||
|
,b.ddqdat
|
||||||
|
,b.dcmdat
|
||||||
|
,b.dhidat
|
||||||
|
,b.fspr
|
||||||
|
,bc.bvcomp remit_to --master data
|
||||||
|
,bc.bvclas bill_class --master data
|
||||||
|
,b.bill_cust --history cust mix
|
||||||
|
,bc.bvsalm bill_rep --master data
|
||||||
|
,bc.bvterr bill_terr --master data
|
||||||
|
,sc.bvclas ship_class --master data
|
||||||
|
,b.ship_cust --history cust mix
|
||||||
|
,sc.bvsalm ship_rep --master data
|
||||||
|
,sc.bvterr ship_terr --master data
|
||||||
|
--quota rep--------------------------------------------
|
||||||
|
,RTRIM(
|
||||||
|
COALESCE(
|
||||||
|
--retail items go to currep, or if null go to 90005
|
||||||
|
CASE WHEN COALESCE(avgled,awgled) IN ('1RE','1CU') THEN
|
||||||
|
CASE WHEN bc.bvctry = 'CAN' THEN
|
||||||
|
--Rachel Bowman
|
||||||
|
'50300'
|
||||||
|
ELSE
|
||||||
|
--retail chain got to Mark Wilkinson
|
||||||
|
CASE COALESCE(cg.cgrp,bc.bvname)
|
||||||
|
WHEN 'THE HOME DEPOT' THEN '90005'
|
||||||
|
WHEN 'DO IT BEST' THEN '90005'
|
||||||
|
WHEN 'ACE HARDWARE' THEN '90005'
|
||||||
|
WHEN 'ALDI' THEN '90005'
|
||||||
|
WHEN 'AMAZON.COM' THEN '90005'
|
||||||
|
WHEN 'GARDEN RIDGE CORP' THEN '90005'
|
||||||
|
--all other retail goes to Doran Marable
|
||||||
|
ELSE '50200'
|
||||||
|
END
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
CASE WHEN COALESCE(avming,awming) = 'B52' THEN
|
||||||
|
'PW'
|
||||||
|
--gdir, ndir go to bill-to rep
|
||||||
|
ELSE
|
||||||
|
CASE WHEN bc.bvclas IN ('GDIR','NDIR') THEN
|
||||||
|
bc.bvsalm
|
||||||
|
ELSE
|
||||||
|
sc.bvsalm
|
||||||
|
END
|
||||||
|
END
|
||||||
|
END
|
||||||
|
,''
|
||||||
|
)
|
||||||
|
) quota_rep
|
||||||
|
,coalesce(cg.cgrp,bc.bvname) account
|
||||||
|
,coalesce(sg.cgrp,sc.bvname) shipgrp
|
||||||
|
,coalesce(t.geo,'UNDEFINED') geo
|
||||||
|
,coalesce(c.chan,'UNDEFINED') chan
|
||||||
|
,ad.qzcryc orig_ctry
|
||||||
|
,ad.qzprov orig_prov
|
||||||
|
,ad.qzpost orig_post
|
||||||
|
,sc.bvctry dest_ctry
|
||||||
|
,sc.bvprcd dest_prov
|
||||||
|
,sc.bvpost dest_post
|
||||||
|
,b.part --history part mix
|
||||||
|
,COALESCE(m.avglcd, p.awgldc) ord_gldc --master data
|
||||||
|
,COALESCE(m.avmajg,p.awmajg) majg --master data
|
||||||
|
,COALESCE(m.avming,p.awming) ming --master data
|
||||||
|
,COALESCE(m.avmajs,p.awmajs) majs --master data
|
||||||
|
,COALESCE(m.avmins,p.awmins) mins --master data
|
||||||
|
,COALESCE(m.avglcd,p.awgldc) gldc --master data
|
||||||
|
,COALESCE(m.avgled,p.awgled) glec --master data
|
||||||
|
,COALESCE(m.avharm,p.awharm) harm --master data
|
||||||
|
,COALESCE(m.avclss,p.awclss) clss --master data
|
||||||
|
,SUBSTR(COALESCE(m."avcpt#",p."awvpt#"),1,1) brand --master data
|
||||||
|
,COALESCE(m.avassc,p.awassc) assc --master data
|
||||||
|
,b.fs_line --master data
|
||||||
|
,bc.bvcurr r_currency --history cust mix
|
||||||
|
,rx.rate r_rate --master data
|
||||||
|
,copr.curr c_currency --master data
|
||||||
|
,cx.rate c_rate --master data
|
||||||
|
,b.ddqtoi
|
||||||
|
,b.ddqtsi
|
||||||
|
,b.fgqshp
|
||||||
|
,b.diqtsh
|
||||||
|
,b.fb_qty
|
||||||
|
,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty fb_cst_loc
|
||||||
|
,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty fb_cst_loc_cur
|
||||||
|
,COALESCE(im.cgstcs,ip.chstcs, ir.y0stcs)*b.fb_qty fb_cst_loc_fut
|
||||||
|
,b.fb_val_loc
|
||||||
|
,b.fb_val_loc_pl
|
||||||
|
,b.calc_status
|
||||||
|
,b.flag
|
||||||
|
,b.orderdate
|
||||||
|
,b.requestdate
|
||||||
|
,b.shipdate
|
||||||
|
,b.adj_orderdate
|
||||||
|
,b.adj_requestdate
|
||||||
|
,b.adj_shipdate
|
||||||
|
,b."version"
|
||||||
|
,b.iter
|
||||||
|
-----------------------ui columns--------------------------------
|
||||||
|
,b.iterdet
|
||||||
|
,b.iterdef
|
||||||
|
,b.order_season
|
||||||
|
,b.order_month
|
||||||
|
,b.ship_season
|
||||||
|
,b.ship_month
|
||||||
|
,b.request_season
|
||||||
|
,b.request_month
|
||||||
|
,b.part_descr
|
||||||
|
,SUBSTR(b.part,1,3)||coalesce(' - '||F.DESCR,'') part_family
|
||||||
|
,SUBSTRING(b.part,1,8)||coalesce(' - '||MD.DESCR,'') part_group
|
||||||
|
,COALESCE(MG.GRP,'Unbranded') branding
|
||||||
|
,CASE WHEN substring(COALESCE(m.avgled, p.awgled),1,1) <= '2' THEN SUBSTRING(b.part,9,3) ELSE '' END color
|
||||||
|
,COALESCE(SEG.SEGM,'Other') segm
|
||||||
|
,b.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
|
||||||
|
im.cgpart = b.part
|
||||||
|
AND im.cgplnt = a.v6plnt
|
||||||
|
LEFT OUTER JOIN lgdat.icstp ip ON
|
||||||
|
ip.chpart = b.part
|
||||||
|
AND ip.chplnt = a.v6plnt
|
||||||
|
LEFT OUTER JOIN lgdat.icstr ir ON
|
||||||
|
ir.y0part = b.part
|
||||||
|
AND ir.y0plnt = a.v6plnt
|
||||||
|
LEFT OUTER JOIN lgdat.plnt ON
|
||||||
|
yaplnt = a.v6plnt
|
||||||
|
LEFT OUTER JOIN copr ON
|
||||||
|
copr.comp = yacomp::text
|
||||||
|
LEFT OUTER JOIN rlarp.ffcret cx ON
|
||||||
|
cx.perd = '1910'
|
||||||
|
AND cx.rtyp = 'MA'
|
||||||
|
AND cx.fcur = copr.curr
|
||||||
|
AND cx.tcur = 'US'
|
||||||
|
LEFT OUTER JOIN rlarp.ffcret rx ON
|
||||||
|
rx.perd = '1910'
|
||||||
|
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 *
|
||||||
|
)
|
||||||
|
,insagg AS (
|
||||||
|
SELECT
|
||||||
|
bill_cust_descr
|
||||||
|
,billto_group
|
||||||
|
,ship_cust_descr
|
||||||
|
,shipto_group
|
||||||
|
,quota_rep_descr
|
||||||
|
,director_descr
|
||||||
|
,segm
|
||||||
|
,mod_chan
|
||||||
|
,mod_chansub
|
||||||
|
,majg_descr
|
||||||
|
,ming_descr
|
||||||
|
,majs_descr
|
||||||
|
,mins_descr
|
||||||
|
,brand
|
||||||
|
,part_family
|
||||||
|
,part_group
|
||||||
|
,branding
|
||||||
|
,color
|
||||||
|
,part_descr
|
||||||
|
,order_season
|
||||||
|
,order_month
|
||||||
|
,ship_season
|
||||||
|
,ship_month
|
||||||
|
,request_season
|
||||||
|
,request_month
|
||||||
|
,promo
|
||||||
|
,version
|
||||||
|
,iter
|
||||||
|
,sum(value_loc) value_loc
|
||||||
|
,sum(value_usd) value_usd
|
||||||
|
,sum(cost_loc) cost_loc
|
||||||
|
,sum(cost_usd) cost_usd
|
||||||
|
,sum(units) units
|
||||||
|
FROM
|
||||||
|
ins
|
||||||
|
GROUP BY
|
||||||
|
bill_cust_descr
|
||||||
|
,billto_group
|
||||||
|
,ship_cust_descr
|
||||||
|
,shipto_group
|
||||||
|
,quota_rep_descr
|
||||||
|
,director_descr
|
||||||
|
,segm
|
||||||
|
,mod_chan
|
||||||
|
,mod_chansub
|
||||||
|
,majg_descr
|
||||||
|
,ming_descr
|
||||||
|
,majs_descr
|
||||||
|
,mins_descr
|
||||||
|
,brand
|
||||||
|
,part_family
|
||||||
|
,part_group
|
||||||
|
,branding
|
||||||
|
,color
|
||||||
|
,part_descr
|
||||||
|
,order_season
|
||||||
|
,order_month
|
||||||
|
,ship_season
|
||||||
|
,ship_month
|
||||||
|
,request_season
|
||||||
|
,request_month
|
||||||
|
,promo
|
||||||
|
,version
|
||||||
|
,iter
|
||||||
|
)
|
||||||
|
SELECT json_agg(row_to_json(insagg)) x from insagg
|
803
route_sql/new_part.sql
Normal file
803
route_sql/new_part.sql
Normal file
@ -0,0 +1,803 @@
|
|||||||
|
WITH
|
||||||
|
/*
|
||||||
|
the volume must be expressed in terms of units, since that is what it will be scaling
|
||||||
|
*/
|
||||||
|
target AS (select $$replace_request$$::json def)
|
||||||
|
--select * from newm
|
||||||
|
,GLD AS (
|
||||||
|
SELECT
|
||||||
|
N1COMP COMP
|
||||||
|
,N1CCYY FSYR
|
||||||
|
,KPMAXP PERDS
|
||||||
|
,N1FSPP PERD
|
||||||
|
,to_char(N1FSYP,'FM0000') FSPR
|
||||||
|
,N1SD01 SDAT
|
||||||
|
,N1ED01 EDAT
|
||||||
|
,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
|
||||||
|
,to_char(CASE WHEN EXTRACT(MONTH FROM N1ED01) >= 6 THEN EXTRACT(MONTH FROM N1ED01) -5 ELSE EXTRACT(MONTH FROM N1ED01) +7 END,'00') SSPR
|
||||||
|
FROM
|
||||||
|
LGDAT.GLDATREF
|
||||||
|
INNER JOIN LGDAT.GLDATE ON
|
||||||
|
KPCOMP = N1COMP AND
|
||||||
|
KPCCYY = N1CCYY
|
||||||
|
WHERE
|
||||||
|
N1COMP = 93
|
||||||
|
--AND DIGITS(N1FSYP) = '1901'
|
||||||
|
)
|
||||||
|
,mseq AS (
|
||||||
|
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)
|
||||||
|
) x(m,s,cal,yr)
|
||||||
|
)
|
||||||
|
,SEG AS (
|
||||||
|
SELECT
|
||||||
|
x.GLEC
|
||||||
|
,x.SEGM
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
VALUES
|
||||||
|
('1CU','Retail'),
|
||||||
|
('1GR','Greenhouse'),
|
||||||
|
('1NU','Nursery'),
|
||||||
|
('1RE','Retail'),
|
||||||
|
('2WI','Greenhouse'),
|
||||||
|
('3BM','Other'),
|
||||||
|
('3CO','Other'),
|
||||||
|
('3PE','Other'),
|
||||||
|
('3PP','Other'),
|
||||||
|
('4CO','Other'),
|
||||||
|
('4RA','Other'),
|
||||||
|
('9MI','Other'),
|
||||||
|
('9SA','Other'),
|
||||||
|
('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
|
||||||
|
,LTRIM(RTRIM(C.A9)) || ' - ' || C.A30 REPP
|
||||||
|
,COALESCE(Q.DIR,'Other') DIRECTOR
|
||||||
|
FROM
|
||||||
|
LGDAT.CODE C
|
||||||
|
LEFT OUTER JOIN RLARP.QRH Q ON
|
||||||
|
Q.QR = LTRIM(RTRIM(C.A9))
|
||||||
|
WHERE
|
||||||
|
C.A2 = 'MM'
|
||||||
|
)
|
||||||
|
--MOLD DESCRIPTIONS
|
||||||
|
,MD AS (
|
||||||
|
SELECT
|
||||||
|
U.MOLD
|
||||||
|
,MAX(U.DESCR) DESCR
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
SUBSTR(M.AVPART,1,8) MOLD
|
||||||
|
,MAX(M.AVDES1) DESCR
|
||||||
|
FROM
|
||||||
|
LGDAT.STKMM M
|
||||||
|
WHERE
|
||||||
|
LENGTH(M.AVPART) > 8
|
||||||
|
AND SUBSTR(M.AVGLED,1,1) <= '2'
|
||||||
|
GROUP BY
|
||||||
|
SUBSTR(M.AVPART,1,8)
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
SUBSTR(P.AWPART,1,8) MOLD
|
||||||
|
,MAX(P.AWDES1) DESCR
|
||||||
|
FROM
|
||||||
|
LGDAT.STKMP P
|
||||||
|
WHERE
|
||||||
|
LENGTH(P.AWPART) > 8
|
||||||
|
AND SUBSTR(P.AWGLED,1,1) <= '2'
|
||||||
|
GROUP BY
|
||||||
|
SUBSTR(P.AWPART,1,8)
|
||||||
|
) U
|
||||||
|
GROUP BY
|
||||||
|
U.MOLD
|
||||||
|
)
|
||||||
|
----------------------------------------------------sales major codes----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,SJ AS (
|
||||||
|
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') = ''
|
||||||
|
)
|
||||||
|
----------------------------------------------------sales minor codes----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
,SI AS (
|
||||||
|
SELECT * FROM LGDAT.MMSL WHERE COALESCE(BSMNCD,'') <> ''
|
||||||
|
)
|
||||||
|
,copr AS (
|
||||||
|
SELECT
|
||||||
|
LTRIM(RTRIM(A9)) AS COMP,
|
||||||
|
A30 AS DESCR,
|
||||||
|
SUBSTR(C.A249,242,2) CURR,
|
||||||
|
SUBSTR(C.A249,32,4) AS GL,
|
||||||
|
SUBSTR(C.A249,190,4) AS AR,
|
||||||
|
SUBSTR(C.A249,182,4) AS AP,
|
||||||
|
SUBSTR(C.A249,198,4) AS FA,
|
||||||
|
SUBSTR(C.A249,238,4) AS IC ,
|
||||||
|
SUBSTR(D.A249,9,5) CONS_FUNC
|
||||||
|
FROM
|
||||||
|
LGDAT.CODE
|
||||||
|
LEFT OUTER JOIN LGDAT.NAME C ON
|
||||||
|
'C0000'||LTRIM(RTRIM(A9)) = C.A7
|
||||||
|
LEFT OUTER JOIN LGDAT.NAME D ON
|
||||||
|
'D0000'||LTRIM(RTRIM(A9)) = D.A7
|
||||||
|
WHERE
|
||||||
|
A2 = 'AA' OR A2 IS NULL
|
||||||
|
)
|
||||||
|
,alldates AS (
|
||||||
|
SELECT
|
||||||
|
promo
|
||||||
|
,terms
|
||||||
|
,order_month
|
||||||
|
,mseq.s seq
|
||||||
|
,orderdate
|
||||||
|
,requestdate
|
||||||
|
,shipdate
|
||||||
|
,sum(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
rlarp.osm_fcpool
|
||||||
|
LEFT OUTER JOIN mseq ON
|
||||||
|
mseq.m = order_month
|
||||||
|
WHERE
|
||||||
|
-----------------scenario----------------------------
|
||||||
|
where_clause
|
||||||
|
-----------------additional params-------------------
|
||||||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
|
AND adj_orderdate <= adj_shipdate
|
||||||
|
GROUP BY
|
||||||
|
promo
|
||||||
|
,terms
|
||||||
|
,order_month
|
||||||
|
,mseq.s
|
||||||
|
,orderdate
|
||||||
|
,requestdate
|
||||||
|
,shipdate
|
||||||
|
HAVING
|
||||||
|
sum(value_usd) <> 0
|
||||||
|
)
|
||||||
|
--select * from alldates
|
||||||
|
,dom AS (
|
||||||
|
SELECT
|
||||||
|
extract(day FROM orderdate) DOM
|
||||||
|
,sum(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
alldates
|
||||||
|
GROUP BY
|
||||||
|
extract(day FROM orderdate)
|
||||||
|
)
|
||||||
|
---------------------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
|
||||||
|
,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(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
alldates
|
||||||
|
GROUP BY
|
||||||
|
to_char(orderdate,'Mon')
|
||||||
|
,seq
|
||||||
|
,promo
|
||||||
|
--,extract(day from orderdate)
|
||||||
|
--,requestdate-orderdate
|
||||||
|
--,shipdate - requestdate
|
||||||
|
)
|
||||||
|
,targm AS (
|
||||||
|
SELECT
|
||||||
|
je.key as month
|
||||||
|
,r.amount
|
||||||
|
,r.qty
|
||||||
|
,s
|
||||||
|
,cal
|
||||||
|
,yr
|
||||||
|
FROM
|
||||||
|
target
|
||||||
|
JOIN LATERAL json_each(def->'months') je ON true
|
||||||
|
JOIN LATERAL json_to_record(je.value) as r (amount numeric, qty numeric) ON TRUE
|
||||||
|
LEFT OUTER JOIN mseq ON
|
||||||
|
mseq.m = je.key
|
||||||
|
)
|
||||||
|
,mmixp AS (
|
||||||
|
SELECT
|
||||||
|
_month
|
||||||
|
,seq
|
||||||
|
,promo
|
||||||
|
,round((dom_wa/value_usd)::numeric,0)::int odom
|
||||||
|
,round((rlag_wa/value_usd)::numeric,0)::int rlag
|
||||||
|
,round((slag_wa/value_usd)::numeric,0)::int slag
|
||||||
|
,value_usd/sum(value_usd) over (partition by _month) momix
|
||||||
|
--,value_usd/SUM(value_usd) over (PARTITION BY _month) vperc
|
||||||
|
FROM
|
||||||
|
mmix
|
||||||
|
)
|
||||||
|
--month cross join mix
|
||||||
|
,mxm AS (
|
||||||
|
SELECT
|
||||||
|
t.month
|
||||||
|
,t.amount
|
||||||
|
,t.qty
|
||||||
|
,t.s
|
||||||
|
,t.cal
|
||||||
|
,t.yr
|
||||||
|
,x.momix
|
||||||
|
,x.odom
|
||||||
|
,x.rlag
|
||||||
|
,x.slag
|
||||||
|
,x.promo
|
||||||
|
FROM
|
||||||
|
targm t
|
||||||
|
LEFT OUTER JOIN mmixp x ON
|
||||||
|
x._month = (
|
||||||
|
SELECT
|
||||||
|
_month
|
||||||
|
FROM
|
||||||
|
mmixp
|
||||||
|
ORDER BY
|
||||||
|
abs(seq - t.s) ASC
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
--SELECT * FROM mmixp order by seq asc, vperc desc
|
||||||
|
,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#"
|
||||||
|
,null::text 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
|
||||||
|
,null::text fspr
|
||||||
|
,remit_to
|
||||||
|
,bill_class
|
||||||
|
,bill_cust
|
||||||
|
,bill_rep
|
||||||
|
,bill_terr
|
||||||
|
,ship_class
|
||||||
|
,ship_cust
|
||||||
|
,ship_rep
|
||||||
|
,ship_terr
|
||||||
|
,quota_rep
|
||||||
|
,account
|
||||||
|
,shipgrp
|
||||||
|
,geo
|
||||||
|
,chan
|
||||||
|
,orig_ctry
|
||||||
|
,orig_prov
|
||||||
|
,orig_post
|
||||||
|
,dest_ctry
|
||||||
|
,dest_prov
|
||||||
|
,dest_post
|
||||||
|
,null::text part --history part mix
|
||||||
|
,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
|
||||||
|
,fs_line
|
||||||
|
,r_currency
|
||||||
|
,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
|
||||||
|
,0::numeric fb_qty --history value
|
||||||
|
,0::numeric fb_cst_loc --history part mix
|
||||||
|
,0::numeric fb_cst_loc_cur
|
||||||
|
,0::numeric fb_cst_loc_fut
|
||||||
|
,0::numeric fb_val_loc --history value
|
||||||
|
,0::numeric fb_val_loc_pl
|
||||||
|
,calc_status
|
||||||
|
,flag
|
||||||
|
,null::date orderdate --history
|
||||||
|
,null::date requestdate --history
|
||||||
|
,null::date shipdate --history
|
||||||
|
,null::date adj_orderdate --history
|
||||||
|
,null::date adj_requestdate --history
|
||||||
|
,null::date adj_shipdate --history
|
||||||
|
,null::text "version"
|
||||||
|
,null::text iter
|
||||||
|
---------------ui columns-------------------------
|
||||||
|
,null::numeric order_season
|
||||||
|
,null::text order_month
|
||||||
|
,null::numeric ship_season
|
||||||
|
,null::text ship_month
|
||||||
|
,null::numeric request_season
|
||||||
|
,null::text request_month
|
||||||
|
,null::text part_descr
|
||||||
|
,null::text part_family
|
||||||
|
,null::text part_group
|
||||||
|
,null::text branding
|
||||||
|
,null::text color
|
||||||
|
,null::text segm
|
||||||
|
,bill_cust_descr
|
||||||
|
,billto_group
|
||||||
|
,ship_cust_descr
|
||||||
|
,shipto_group
|
||||||
|
,null::text majg_descr
|
||||||
|
,null::text ming_descr
|
||||||
|
,null::text majs_descr
|
||||||
|
,null::text mins_descr
|
||||||
|
,mod_chan
|
||||||
|
,mod_chansub
|
||||||
|
,quota_rep_descr
|
||||||
|
,director_descr
|
||||||
|
,null::numeric value_loc
|
||||||
|
,null::numeric value_usd
|
||||||
|
,null::numeric cost_loc
|
||||||
|
,null::numeric cost_usd
|
||||||
|
,null::numeric units
|
||||||
|
,sum(coalesce(fb_val_loc * r_rate,0)) agg
|
||||||
|
FROM
|
||||||
|
rlarp.osm_fcpool
|
||||||
|
WHERE
|
||||||
|
-----------------scenario----------------------------
|
||||||
|
where_clause
|
||||||
|
-----------------additional params-------------------
|
||||||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
|
AND adj_orderdate <= adj_shipdate
|
||||||
|
GROUP BY
|
||||||
|
remit_to
|
||||||
|
,bill_class
|
||||||
|
,bill_cust
|
||||||
|
,bill_rep
|
||||||
|
,bill_terr
|
||||||
|
,ship_class
|
||||||
|
,ship_cust
|
||||||
|
,ship_rep
|
||||||
|
,ship_terr
|
||||||
|
,quota_rep
|
||||||
|
,account
|
||||||
|
,shipgrp
|
||||||
|
,geo
|
||||||
|
,chan
|
||||||
|
,orig_ctry
|
||||||
|
,orig_prov
|
||||||
|
,orig_post
|
||||||
|
,dest_ctry
|
||||||
|
,dest_prov
|
||||||
|
,dest_post
|
||||||
|
,fs_line
|
||||||
|
,r_currency
|
||||||
|
,r_rate
|
||||||
|
,calc_status
|
||||||
|
,flag
|
||||||
|
,bill_cust_descr
|
||||||
|
,billto_group
|
||||||
|
,ship_cust_descr
|
||||||
|
,shipto_group
|
||||||
|
,mod_chan
|
||||||
|
,mod_chansub
|
||||||
|
,quota_rep_descr
|
||||||
|
,director_descr
|
||||||
|
)
|
||||||
|
,applyx AS (
|
||||||
|
SELECT
|
||||||
|
b.plnt --master data
|
||||||
|
,b."ddord#"
|
||||||
|
,b."dditm#"
|
||||||
|
,b."fgbol#"
|
||||||
|
,b."fgent#"
|
||||||
|
,b."diinv#"
|
||||||
|
,b."dilin#"
|
||||||
|
,mxm.promo --history
|
||||||
|
,b.return_reas
|
||||||
|
,b.terms --history cust mix
|
||||||
|
,b.custpo
|
||||||
|
,b.dhincr
|
||||||
|
,b.diext
|
||||||
|
,b.ditdis
|
||||||
|
,b.dcodat
|
||||||
|
,b.ddqdat
|
||||||
|
,b.dcmdat
|
||||||
|
,b.dhidat
|
||||||
|
,sd.fspr fspr
|
||||||
|
,b.remit_to --master data
|
||||||
|
,b.bill_class --master data
|
||||||
|
,b.bill_cust --history cust mix
|
||||||
|
,b.bill_rep --master data
|
||||||
|
,b.bill_terr --master data
|
||||||
|
,b.ship_class --master data
|
||||||
|
,b.ship_cust --history cust mix
|
||||||
|
,b.ship_rep --master data
|
||||||
|
,b.ship_terr --master data
|
||||||
|
,b.quota_rep --master data
|
||||||
|
,b.account --master data
|
||||||
|
,b.shipgrp --master data
|
||||||
|
,b.geo --master data
|
||||||
|
,b.chan --master data
|
||||||
|
,b.orig_ctry --master data
|
||||||
|
,b.orig_prov --master data
|
||||||
|
,b.orig_post --master data
|
||||||
|
,b.dest_ctry --master data
|
||||||
|
,b.dest_prov --master data
|
||||||
|
,b.dest_post --master data
|
||||||
|
,(SELECT (regexp_match(def->>'newpart','(.*) - '::text))[1] FROM target) part --history part mix
|
||||||
|
,b.ord_gldc --master data
|
||||||
|
,b.majg --master data
|
||||||
|
,b.ming --master data
|
||||||
|
,b.majs --master data
|
||||||
|
,b.mins --master data
|
||||||
|
,b.gldc --master data
|
||||||
|
,b.glec --master data
|
||||||
|
,b.harm --master data
|
||||||
|
,b.clss --master data
|
||||||
|
,b.brand --master data
|
||||||
|
,b.assc --master data
|
||||||
|
,b.fs_line --master data
|
||||||
|
,b.r_currency --history cust mix
|
||||||
|
,b.r_rate --master data
|
||||||
|
,b.c_currency --master data
|
||||||
|
,b.c_rate --master data
|
||||||
|
,b.ddqtoi
|
||||||
|
,b.ddqtsi
|
||||||
|
,b.fgqshp
|
||||||
|
,b.diqtsh
|
||||||
|
,(b.agg/sum(b.agg) OVER (partition by mxm.*))*mxm.momix*mxm.qty fb_qty
|
||||||
|
,b.fb_cst_loc
|
||||||
|
,b.fb_cst_loc_cur
|
||||||
|
,b.fb_cst_loc_fut
|
||||||
|
,(b.agg/sum(b.agg) OVER (partition by mxm.*))*mxm.momix*mxm.amount fb_val_loc
|
||||||
|
,b.fb_val_loc_pl
|
||||||
|
,b.calc_status
|
||||||
|
,b.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
|
||||||
|
,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.value_loc
|
||||||
|
,b.value_usd
|
||||||
|
,b.cost_loc
|
||||||
|
,b.cost_usd
|
||||||
|
,b.units
|
||||||
|
--,(b.agg/sum(b.agg) OVER (partition by mxm.*)) bmix
|
||||||
|
--,mxm.*
|
||||||
|
FROM
|
||||||
|
basemix b
|
||||||
|
CROSS JOIN mxm
|
||||||
|
LEFT OUTER JOIN gld od ON
|
||||||
|
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) BETWEEN od.sdat AND od.edat
|
||||||
|
LEFT OUTER JOIN gld rd ON
|
||||||
|
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag BETWEEN rd.sdat AND rd.edat
|
||||||
|
LEFT OUTER JOIN gld sd ON
|
||||||
|
make_date(mxm.yr + 2020,mxm.cal,mxm.odom) + rlag + slag BETWEEN sd.sdat AND sd.edat
|
||||||
|
)
|
||||||
|
,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
|
||||||
|
,b.remit_to --master data
|
||||||
|
,b.bill_class --master data
|
||||||
|
,b.bill_cust --history cust mix
|
||||||
|
,b.bill_rep --master data
|
||||||
|
,b.bill_terr --master data
|
||||||
|
,b.ship_class --master data
|
||||||
|
,b.ship_cust --history cust mix
|
||||||
|
,b.ship_rep --master data
|
||||||
|
,b.ship_terr --master data
|
||||||
|
,b.quota_rep --master data
|
||||||
|
,b.account --master data
|
||||||
|
,b.shipgrp --master data
|
||||||
|
,b.geo --master data
|
||||||
|
,b.chan --master data
|
||||||
|
,b.orig_ctry --master data
|
||||||
|
,b.orig_prov --master data
|
||||||
|
,b.orig_post --master data
|
||||||
|
,b.dest_ctry --master data
|
||||||
|
,b.dest_prov --master data
|
||||||
|
,b.dest_post --master data
|
||||||
|
,(SELECT (regexp_match(def->>'newpart','(.*) - '::text))[1] FROM target) 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
|
||||||
|
,b.r_currency --history cust mix
|
||||||
|
,b.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 ||' - '|| RTRIM(COALESCE(m.AVDES1, p.AWDES1)) part_descr
|
||||||
|
,F.F3||' - '||F.DESCR part_family
|
||||||
|
,SUBSTRING(b.part,1,8)||' - '||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
|
||||||
|
,b.billto_group
|
||||||
|
,b.ship_cust_descr
|
||||||
|
,b.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 L.RETAIL
|
||||||
|
ELSE b.CHAN
|
||||||
|
END mod_chan
|
||||||
|
,CASE COALESCE(SEG.SEGM,'Other')
|
||||||
|
WHEN 'Retail' THEN L.RETAILSUB
|
||||||
|
ELSE ''
|
||||||
|
END mod_chansub
|
||||||
|
,b.quota_rep_descr
|
||||||
|
,b.director_descr
|
||||||
|
,b.fb_val_loc value_loc
|
||||||
|
,b.fb_val_loc *r_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
|
||||||
|
applyx 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 RLARP.FFCHNL L ON
|
||||||
|
L.BILL = b.BILL_CLASS
|
||||||
|
AND L.SHIP = b.SHIP_CLASS
|
||||||
|
LEFT OUTER JOIN LGDAT.CUST BC ON
|
||||||
|
BC.BVCUST = b.BILL_CUST
|
||||||
|
LEFT OUTER JOIN LGDAT.CUST SC ON
|
||||||
|
SC.BVCUST = b.BILL_CUST
|
||||||
|
LEFT OUTER JOIN REPC ON
|
||||||
|
REPC.RCODE = b.QUOTA_REP
|
||||||
|
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
|
||||||
|
LEFT OUTER JOIN lgdat.icstp ip ON
|
||||||
|
ip.chpart = b.part
|
||||||
|
AND ip.chplnt = a.v6plnt
|
||||||
|
LEFT OUTER JOIN lgdat.icstr ir ON
|
||||||
|
ir.y0part = b.part
|
||||||
|
AND ir.y0plnt = a.v6plnt
|
||||||
|
LEFT OUTER JOIN lgdat.plnt ON
|
||||||
|
yaplnt = a.v6plnt
|
||||||
|
LEFT OUTER JOIN copr ON
|
||||||
|
copr.comp = yacomp::text
|
||||||
|
LEFT OUTER JOIN rlarp.ffcret cx ON
|
||||||
|
cx.perd = '1910'
|
||||||
|
AND cx.rtyp = 'MA'
|
||||||
|
AND cx.fcur = copr.curr
|
||||||
|
AND cx.tcur = 'US'
|
||||||
|
)
|
||||||
|
,ins AS (
|
||||||
|
INSERT INTO rlarp.osm_fcpool SELECT * FROM final RETURNING *
|
||||||
|
)
|
||||||
|
,insagg AS (
|
||||||
|
SELECT
|
||||||
|
bill_cust_descr
|
||||||
|
,billto_group
|
||||||
|
,ship_cust_descr
|
||||||
|
,shipto_group
|
||||||
|
,quota_rep_descr
|
||||||
|
,director_descr
|
||||||
|
,segm
|
||||||
|
,mod_chan
|
||||||
|
,mod_chansub
|
||||||
|
,majg_descr
|
||||||
|
,ming_descr
|
||||||
|
,majs_descr
|
||||||
|
,mins_descr
|
||||||
|
,brand
|
||||||
|
,part_family
|
||||||
|
,part_group
|
||||||
|
,branding
|
||||||
|
,color
|
||||||
|
,part_descr
|
||||||
|
,order_season
|
||||||
|
,order_month
|
||||||
|
,ship_season
|
||||||
|
,ship_month
|
||||||
|
,request_season
|
||||||
|
,request_month
|
||||||
|
,promo
|
||||||
|
,version
|
||||||
|
,iter
|
||||||
|
,sum(value_loc) value_loc
|
||||||
|
,sum(value_usd) value_usd
|
||||||
|
,sum(cost_loc) cost_loc
|
||||||
|
,sum(cost_usd) cost_usd
|
||||||
|
,sum(units) units
|
||||||
|
FROM
|
||||||
|
ins
|
||||||
|
GROUP BY
|
||||||
|
bill_cust_descr
|
||||||
|
,billto_group
|
||||||
|
,ship_cust_descr
|
||||||
|
,shipto_group
|
||||||
|
,quota_rep_descr
|
||||||
|
,director_descr
|
||||||
|
,segm
|
||||||
|
,mod_chan
|
||||||
|
,mod_chansub
|
||||||
|
,majg_descr
|
||||||
|
,ming_descr
|
||||||
|
,majs_descr
|
||||||
|
,mins_descr
|
||||||
|
,brand
|
||||||
|
,part_family
|
||||||
|
,part_group
|
||||||
|
,branding
|
||||||
|
,color
|
||||||
|
,part_descr
|
||||||
|
,order_season
|
||||||
|
,order_month
|
||||||
|
,ship_season
|
||||||
|
,ship_month
|
||||||
|
,request_season
|
||||||
|
,request_month
|
||||||
|
,promo
|
||||||
|
,version
|
||||||
|
,iter
|
||||||
|
)
|
||||||
|
--SELECT * FROM insagg
|
||||||
|
SELECT json_agg(row_to_json(insagg)) x from insagg
|
23
route_sql/part_list.sql
Normal file
23
route_sql/part_list.sql
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
WITH
|
||||||
|
act As (
|
||||||
|
SELECT DISTINCT
|
||||||
|
v6part part
|
||||||
|
FROM
|
||||||
|
lgdat.stka
|
||||||
|
WHERE
|
||||||
|
v6stat = 'A'
|
||||||
|
)
|
||||||
|
,stkm AS (
|
||||||
|
SELECT
|
||||||
|
act.part || ' - ' ||rtrim(COALESCE(m.avdes1,p.awdes1)) part
|
||||||
|
--,COALESCE(m.avgled, p.awgled) glec
|
||||||
|
FROM
|
||||||
|
act
|
||||||
|
LEFT OUTER JOIN lgdat.stkmm m ON
|
||||||
|
m.avpart = act.part
|
||||||
|
LEFT OUTER JOIN lgdat.stkmp p ON
|
||||||
|
p.awpart = act.part
|
||||||
|
WHERE
|
||||||
|
substr(COALESCE(m.avgled, p.awgled),1,1) <= '2'
|
||||||
|
)
|
||||||
|
select part from stkm
|
@ -14,8 +14,8 @@ SELECT
|
|||||||
,terms
|
,terms
|
||||||
,''::text custpo --0
|
,''::text custpo --0
|
||||||
,'I' dhincr --0
|
,'I' dhincr --0
|
||||||
,sum(diext) diext
|
,null::numeric diext
|
||||||
,sum(ditdis) ditdis
|
,null::numeric ditdis
|
||||||
,null::date dcodat --calculated date mix
|
,null::date dcodat --calculated date mix
|
||||||
,null::date ddqdat --calculated date mix
|
,null::date ddqdat --calculated date mix
|
||||||
,null::date dcmdat --calculated date mix
|
,null::date dcmdat --calculated date mix
|
||||||
|
@ -14,8 +14,8 @@ SELECT
|
|||||||
,terms
|
,terms
|
||||||
,''::text custpo --0
|
,''::text custpo --0
|
||||||
,'I' dhincr --0
|
,'I' dhincr --0
|
||||||
,sum(diext) diext
|
,null::numeric diext
|
||||||
,sum(ditdis) ditdis
|
,null::numeric ditdis
|
||||||
,null::date dcodat --calculated date mix
|
,null::date dcodat --calculated date mix
|
||||||
,null::date ddqdat --calculated date mix
|
,null::date ddqdat --calculated date mix
|
||||||
,null::date dcmdat --calculated date mix
|
,null::date dcmdat --calculated date mix
|
||||||
|
@ -14,8 +14,8 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
,terms
|
,terms
|
||||||
,''::text custpo --0
|
,''::text custpo --0
|
||||||
,'I' dhincr --0
|
,'I' dhincr --0
|
||||||
,sum(diext) diext
|
,null::numeric diext
|
||||||
,sum(ditdis) ditdis
|
,null::numeric ditdis
|
||||||
,null::date dcodat --calculated date mix
|
,null::date dcodat --calculated date mix
|
||||||
,null::date ddqdat --calculated date mix
|
,null::date ddqdat --calculated date mix
|
||||||
,null::date dcmdat --calculated date mix
|
,null::date dcmdat --calculated date mix
|
||||||
@ -315,8 +315,7 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
SELECT
|
SELECT
|
||||||
(SELECT pincr::numeric FROM target) incr
|
(SELECT pincr::numeric FROM target) incr
|
||||||
,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
|
,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
|
||||||
,(SELECT pincr::numeric FROM target)/(SELECT sum(fb_val_loc) FROM volume) factor
|
,((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume) factor
|
||||||
,(select SUM(fb_qty) from volume) tvol
|
|
||||||
)
|
)
|
||||||
--select * from pscale
|
--select * from pscale
|
||||||
,pricing AS (
|
,pricing AS (
|
||||||
@ -381,10 +380,10 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
,b.ddqtsi --0
|
,b.ddqtsi --0
|
||||||
,b.fgqshp --0
|
,b.fgqshp --0
|
||||||
,b.diqtsh --0
|
,b.diqtsh --0
|
||||||
,b.fb_qty
|
,0 fb_qty
|
||||||
,b.fb_cst_loc
|
,0 fb_cst_loc
|
||||||
,b.fb_cst_loc_cur
|
,0 fb_cst_loc_cur
|
||||||
,b.fb_cst_loc_fut
|
,0 fb_cst_loc_fut
|
||||||
,b.fb_val_loc*s.factor fb_val_loc
|
,b.fb_val_loc*s.factor fb_val_loc
|
||||||
,b.fb_val_loc_pl*s.factor fb_val_loc_pl
|
,b.fb_val_loc_pl*s.factor fb_val_loc_pl
|
||||||
,b.calc_status --0
|
,b.calc_status --0
|
||||||
@ -395,11 +394,11 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
,b.adj_orderdate
|
,b.adj_orderdate
|
||||||
,b.adj_requestdate
|
,b.adj_requestdate
|
||||||
,b.adj_shipdate
|
,b.adj_shipdate
|
||||||
,b.version --calculated
|
,'replace_version' "version" --calculated
|
||||||
,b.iter --calculated
|
,'replace_source'||' price' iter
|
||||||
-----------------------ui columns--------------------------------
|
-----------------------ui columns--------------------------------
|
||||||
,b.iterdet
|
,'replace_iterdet' iterdet
|
||||||
,b.iterdef
|
,$$replace_iterdef$$::jsonb iterdef
|
||||||
,b.order_season
|
,b.order_season
|
||||||
,b.order_month
|
,b.order_month
|
||||||
,b.ship_season
|
,b.ship_season
|
||||||
@ -426,16 +425,16 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
,b.director_descr
|
,b.director_descr
|
||||||
,(b.fb_val_loc*s.factor)::numeric value_loc
|
,(b.fb_val_loc*s.factor)::numeric value_loc
|
||||||
,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
|
,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
|
||||||
,b.cost_loc
|
,0 cost_loc
|
||||||
,b.cost_usd
|
,0 cost_usd
|
||||||
,b.units
|
,0 units
|
||||||
FROM
|
FROM
|
||||||
volume b
|
volume b
|
||||||
CROSS JOIN pscale s
|
CROSS JOIN pscale s
|
||||||
)
|
)
|
||||||
--select sum(value_usd), sum(fb_qty) from pricing
|
--select sum(value_usd), sum(fb_qty) from pricing
|
||||||
, ins AS (
|
, ins AS (
|
||||||
INSERT INTO rlarp.osm_fcpool SELECT * FROM pricing RETURNING *
|
INSERT INTO rlarp.osm_fcpool (SELECT * FROM pricing UNION ALL SELECT * FROM volume) RETURNING *
|
||||||
)
|
)
|
||||||
,insagg AS (
|
,insagg AS (
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -36,6 +36,7 @@ FROM
|
|||||||
rlarp.osm_fcpool
|
rlarp.osm_fcpool
|
||||||
WHERE
|
WHERE
|
||||||
where_clause
|
where_clause
|
||||||
|
AND order_season IN (2019,2020)
|
||||||
GROUP BY
|
GROUP BY
|
||||||
order_season
|
order_season
|
||||||
,order_month
|
,order_month
|
||||||
@ -45,6 +46,30 @@ GROUP BY
|
|||||||
,bill_cust_descr
|
,bill_cust_descr
|
||||||
,ship_cust_descr
|
,ship_cust_descr
|
||||||
)
|
)
|
||||||
|
, basket1 AS (
|
||||||
|
SELECT
|
||||||
|
part_descr
|
||||||
|
,bill_cust_descr
|
||||||
|
,ship_cust_descr
|
||||||
|
,SUM(value_usd) value_usd
|
||||||
|
FROM
|
||||||
|
base
|
||||||
|
GROUP BY
|
||||||
|
part_descr
|
||||||
|
,bill_cust_descr
|
||||||
|
,ship_cust_descr
|
||||||
|
)
|
||||||
|
,basket AS (
|
||||||
|
SELECT
|
||||||
|
part_descr
|
||||||
|
,bill_cust_descr
|
||||||
|
,ship_cust_descr
|
||||||
|
,CASE WHEN sum(value_usd) over () = 0 THEN 0 ELSE value_usd/sum(value_usd) over () END mix
|
||||||
|
FROM
|
||||||
|
basket1
|
||||||
|
ORDER BY
|
||||||
|
mix DESC
|
||||||
|
)
|
||||||
,months AS (
|
,months AS (
|
||||||
SELECT
|
SELECT
|
||||||
order_season
|
order_season
|
||||||
@ -70,12 +95,12 @@ GROUP BY
|
|||||||
order_month
|
order_month
|
||||||
,seq
|
,seq
|
||||||
,SUM(units) FILTER (WHERE order_season = 2019) "2019 qty"
|
,SUM(units) FILTER (WHERE order_season = 2019) "2019 qty"
|
||||||
,SUM(units) FILTER (WHERE order_season = 2020 AND iter = 'copy') "2020 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 = 2020 AND iter <> 'copy') "2020 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 = 2020) "2020 tot qty"
|
,SUM(units) FILTER (WHERE order_season = 2020) "2020 tot qty"
|
||||||
,SUM(value_usd) FILTER (WHERE order_season = 2019) "2019 value_usd"
|
,SUM(value_usd) FILTER (WHERE order_season = 2019) "2019 value_usd"
|
||||||
,SUM(value_usd) FILTER (WHERE order_season = 2020 AND iter = 'copy') "2020 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 = 2020 AND iter <> 'copy') "2020 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 = 2020) "2020 tot value_usd"
|
,SUM(value_usd) FILTER (WHERE order_season = 2020) "2020 tot value_usd"
|
||||||
FROM
|
FROM
|
||||||
months
|
months
|
||||||
@ -123,8 +148,8 @@ SELECT
|
|||||||
,(SELECT jsonb_agg(row_to_json(months)::jsonb) FROM months)
|
,(SELECT jsonb_agg(row_to_json(months)::jsonb) FROM months)
|
||||||
,'mpvt'
|
,'mpvt'
|
||||||
,(SELECT jsonb_agg(row_to_json(mlist)::jsonb) FROM mlist)
|
,(SELECT jsonb_agg(row_to_json(mlist)::jsonb) FROM mlist)
|
||||||
,'base'
|
,'basket'
|
||||||
,(SELECT jsonb_agg(row_to_json(base)::jsonb) FROM base)
|
,(SELECT jsonb_agg(row_to_json(basket)::jsonb) FROM basket)
|
||||||
,'totals'
|
,'totals'
|
||||||
,(SELECT jsonb_agg(row_to_json(totals)::jsonb) FROM totals)
|
,(SELECT jsonb_agg(row_to_json(totals)::jsonb) FROM totals)
|
||||||
) package
|
) package
|
Loading…
Reference in New Issue
Block a user