Merge branch 'bugfix/div0'
This commit is contained in:
commit
8cf8490887
4
index.js
4
index.js
@ -196,7 +196,7 @@ server.post('/addmonth_v', bodyParser.json(), function (req, res) {
|
|||||||
console.log(req.body);
|
console.log(req.body);
|
||||||
//console.log(args);
|
//console.log(args);
|
||||||
sql = sql.replace(new RegExp("scenario = target_scenario",'g'),w);
|
sql = sql.replace(new RegExp("scenario = target_scenario",'g'),w);
|
||||||
sql = sql.replace(new RegExp("target_increment",'g'),req.body.amount);
|
sql = sql.replace(new RegExp("target_increment",'g'),req.body.qty);
|
||||||
sql = sql.replace(new RegExp("target_month",'g'),req.body.month);
|
sql = sql.replace(new RegExp("target_month",'g'),req.body.month);
|
||||||
sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version);
|
sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version);
|
||||||
sql = sql.replace(new RegExp("replace_source",'g'),req.body.source);
|
sql = sql.replace(new RegExp("replace_source",'g'),req.body.source);
|
||||||
@ -272,7 +272,7 @@ server.post('/scale_v', bodyParser.json(), function (req, res) {
|
|||||||
console.log(req.body);
|
console.log(req.body);
|
||||||
//console.log(args);
|
//console.log(args);
|
||||||
sql = sql.replace(new RegExp("where_clause",'g'),w);
|
sql = sql.replace(new RegExp("where_clause",'g'),w);
|
||||||
sql = sql.replace(new RegExp("target_increment",'g'),req.body.amount);
|
sql = sql.replace(new RegExp("incr_qty",'g'),req.body.qty);
|
||||||
sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version);
|
sql = sql.replace(new RegExp("replace_version",'g'),req.body.scenario.version);
|
||||||
sql = sql.replace(new RegExp("replace_source",'g'),req.body.source);
|
sql = sql.replace(new RegExp("replace_source",'g'),req.body.source);
|
||||||
sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body));
|
sql = sql.replace(new RegExp("replace_iterdef",'g'),JSON.stringify(req.body));
|
||||||
|
@ -7,6 +7,58 @@ target_month
|
|||||||
|
|
||||||
WITH
|
WITH
|
||||||
target AS (select target_increment incr)
|
target AS (select target_increment incr)
|
||||||
|
,testv AS (
|
||||||
|
SELECT
|
||||||
|
sum(fb_qty) tot
|
||||||
|
,sum(fb_qty) FILTER (WHERE iter = 'copy') base
|
||||||
|
,COALESCE(sum(fb_qty) FILTER (WHERE iterdef->>'type' = 'new basket'),0) newpart
|
||||||
|
,sum(fb_val_loc *r_rate) totsales
|
||||||
|
,sum(fb_val_loc *r_rate) FILTER (WHERE iter = 'copy') basesales
|
||||||
|
,COALESCE(sum(fb_val_loc *r_rate) FILTER (WHERE iterdef->>'type' = 'new basket'),0) newpartsales
|
||||||
|
FROM
|
||||||
|
rlarp.osm_fcpool
|
||||||
|
WHERE
|
||||||
|
-----------------scenario----------------------------
|
||||||
|
scenario = target_scenario
|
||||||
|
-----------------additional params-------------------
|
||||||
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
|
AND adj_orderdate <= adj_shipdate
|
||||||
|
|
||||||
|
)
|
||||||
|
,flagv AS (
|
||||||
|
SELECT
|
||||||
|
tot
|
||||||
|
,base
|
||||||
|
,newpart
|
||||||
|
,CASE WHEN tot = 0 THEN
|
||||||
|
CASE WHEN base = 0 THEN
|
||||||
|
CASE WHEN newpart = 0 THEN
|
||||||
|
'unclean data. tested -> does not exist'
|
||||||
|
ELSE
|
||||||
|
'scale new part'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale copy'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale all'
|
||||||
|
END flag
|
||||||
|
,CASE WHEN totsales = 0 THEN
|
||||||
|
CASE WHEN basesales = 0 THEN
|
||||||
|
CASE WHEN newpartsales = 0 THEN
|
||||||
|
'no price'
|
||||||
|
ELSE
|
||||||
|
'scale new part'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale copy'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale all'
|
||||||
|
END flagsales
|
||||||
|
FROM
|
||||||
|
testv
|
||||||
|
)
|
||||||
,GLD AS (
|
,GLD AS (
|
||||||
SELECT
|
SELECT
|
||||||
N1COMP COMP
|
N1COMP COMP
|
||||||
@ -56,7 +108,7 @@ target AS (select target_increment incr)
|
|||||||
,orderdate
|
,orderdate
|
||||||
,requestdate
|
,requestdate
|
||||||
,shipdate
|
,shipdate
|
||||||
,sum(value_usd) value_usd
|
,sum(CASE (SELECT flagsales FROM flagv) WHEN 'no price'THEN 1.0 ELSE value_usd END) value_usd
|
||||||
FROM
|
FROM
|
||||||
rlarp.osm_fcpool
|
rlarp.osm_fcpool
|
||||||
LEFT OUTER JOIN mseq ON
|
LEFT OUTER JOIN mseq ON
|
||||||
@ -66,7 +118,11 @@ target AS (select target_increment incr)
|
|||||||
scenario = target_scenario
|
scenario = target_scenario
|
||||||
-----------------additional params-------------------
|
-----------------additional params-------------------
|
||||||
AND version = 'b20'
|
AND version = 'b20'
|
||||||
AND iter = 'copy'
|
AND CASE (SELECT flag FROM flagv)
|
||||||
|
WHEN 'scale all' THEN true
|
||||||
|
WHEN 'scale copy' THEN iter = 'copy'
|
||||||
|
WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
|
||||||
|
END
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
AND adj_orderdate <= adj_shipdate
|
AND adj_orderdate <= adj_shipdate
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -78,7 +134,7 @@ target AS (select target_increment incr)
|
|||||||
,requestdate
|
,requestdate
|
||||||
,shipdate
|
,shipdate
|
||||||
HAVING
|
HAVING
|
||||||
sum(value_usd) <> 0
|
sum(CASE (SELECT flagsales FROM flagv) WHEN 'no price'THEN 1.0 ELSE value_usd END) <> 0
|
||||||
)
|
)
|
||||||
--select * from alldates
|
--select * from alldates
|
||||||
,dom AS (
|
,dom AS (
|
||||||
@ -249,6 +305,11 @@ SELECT
|
|||||||
-----------------scenario----------------------------
|
-----------------scenario----------------------------
|
||||||
scenario = target_scenario
|
scenario = target_scenario
|
||||||
-----------------additional params-------------------
|
-----------------additional params-------------------
|
||||||
|
AND CASE (SELECT flag FROM flagv)
|
||||||
|
WHEN 'scale all' THEN true
|
||||||
|
WHEN 'scale copy' THEN iter = 'copy'
|
||||||
|
WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
|
||||||
|
END
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
AND adj_orderdate <= adj_shipdate
|
AND adj_orderdate <= adj_shipdate
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -315,8 +376,8 @@ SELECT
|
|||||||
,scale AS (
|
,scale AS (
|
||||||
SELECT
|
SELECT
|
||||||
(SELECT incr::numeric FROM target) incr
|
(SELECT incr::numeric FROM target) incr
|
||||||
,(SELECT sum(fb_val_loc *r_rate) FROM basemix) base
|
,(SELECT sum(fb_qty) FROM basemix) base
|
||||||
,(SELECT incr::numeric FROM target)/(SELECT sum(fb_val_loc *r_rate) FROM basemix) factor
|
,(SELECT incr::numeric FROM target)/(SELECT sum(fb_qty) FROM basemix) factor
|
||||||
)
|
)
|
||||||
,final AS (
|
,final AS (
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -3,6 +3,58 @@ WITH
|
|||||||
the volume must be expressed in terms of units, since that is what it will be scaling
|
the volume must be expressed in terms of units, since that is what it will be scaling
|
||||||
*/
|
*/
|
||||||
target AS (select target_volume vincr, target_price pincr)
|
target AS (select target_volume vincr, target_price pincr)
|
||||||
|
,testv AS (
|
||||||
|
SELECT
|
||||||
|
sum(fb_qty) tot
|
||||||
|
,sum(fb_qty) FILTER (WHERE iter = 'copy') base
|
||||||
|
,COALESCE(sum(fb_qty) FILTER (WHERE iterdef->>'type' = 'new basket'),0) newpart
|
||||||
|
,sum(fb_val_loc *r_rate) totsales
|
||||||
|
,sum(fb_val_loc *r_rate) FILTER (WHERE iter = 'copy') basesales
|
||||||
|
,COALESCE(sum(fb_val_loc *r_rate) FILTER (WHERE iterdef->>'type' = 'new basket'),0) newpartsales
|
||||||
|
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
|
||||||
|
|
||||||
|
)
|
||||||
|
,flagv AS (
|
||||||
|
SELECT
|
||||||
|
tot
|
||||||
|
,base
|
||||||
|
,newpart
|
||||||
|
,CASE WHEN tot = 0 THEN
|
||||||
|
CASE WHEN base = 0 THEN
|
||||||
|
CASE WHEN newpart = 0 THEN
|
||||||
|
'unclean data. tested -> does not exist'
|
||||||
|
ELSE
|
||||||
|
'scale new part'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale copy'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale all'
|
||||||
|
END flag
|
||||||
|
,CASE WHEN totsales = 0 THEN
|
||||||
|
CASE WHEN basesales = 0 THEN
|
||||||
|
CASE WHEN newpartsales = 0 THEN
|
||||||
|
'no price'
|
||||||
|
ELSE
|
||||||
|
'scale new part'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale copy'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale all'
|
||||||
|
END flagsales
|
||||||
|
FROM
|
||||||
|
testv
|
||||||
|
)
|
||||||
,GLD AS (
|
,GLD AS (
|
||||||
SELECT
|
SELECT
|
||||||
N1COMP COMP
|
N1COMP COMP
|
||||||
@ -52,7 +104,7 @@ target AS (select target_volume vincr, target_price pincr)
|
|||||||
,orderdate
|
,orderdate
|
||||||
,requestdate
|
,requestdate
|
||||||
,shipdate
|
,shipdate
|
||||||
,sum(value_usd) value_usd
|
,sum(CASE (SELECT flagsales FROM flagv) WHEN 'no price'THEN 1.0 ELSE value_usd END) value_usd
|
||||||
FROM
|
FROM
|
||||||
rlarp.osm_fcpool
|
rlarp.osm_fcpool
|
||||||
LEFT OUTER JOIN mseq ON
|
LEFT OUTER JOIN mseq ON
|
||||||
@ -61,6 +113,11 @@ target AS (select target_volume vincr, target_price pincr)
|
|||||||
-----------------scenario----------------------------
|
-----------------scenario----------------------------
|
||||||
where_clause
|
where_clause
|
||||||
-----------------additional params-------------------
|
-----------------additional params-------------------
|
||||||
|
AND CASE (SELECT flag FROM flagv)
|
||||||
|
WHEN 'scale all' THEN true
|
||||||
|
WHEN 'scale copy' THEN iter = 'copy'
|
||||||
|
WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
|
||||||
|
END
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
AND adj_orderdate <= adj_shipdate
|
AND adj_orderdate <= adj_shipdate
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -72,7 +129,7 @@ target AS (select target_volume vincr, target_price pincr)
|
|||||||
,requestdate
|
,requestdate
|
||||||
,shipdate
|
,shipdate
|
||||||
HAVING
|
HAVING
|
||||||
sum(value_usd) <> 0
|
sum(CASE (SELECT flagsales FROM flagv) WHEN 'no price'THEN 1.0 ELSE value_usd END) <> 0
|
||||||
)
|
)
|
||||||
--select * from alldates
|
--select * from alldates
|
||||||
,dom AS (
|
,dom AS (
|
||||||
@ -245,6 +302,11 @@ SELECT
|
|||||||
-----------------scenario----------------------------
|
-----------------scenario----------------------------
|
||||||
where_clause
|
where_clause
|
||||||
-----------------additional params-------------------
|
-----------------additional params-------------------
|
||||||
|
AND CASE (SELECT flag FROM flagv)
|
||||||
|
WHEN 'scale all' THEN true
|
||||||
|
WHEN 'scale copy' THEN iter = 'copy'
|
||||||
|
WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
|
||||||
|
END
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
AND adj_orderdate <= adj_shipdate
|
AND adj_orderdate <= adj_shipdate
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -445,8 +507,21 @@ 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
|
||||||
--(target_sales - current_state)/current state = adjustment factor
|
,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM volume) = 0 THEN
|
||||||
,((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume) factor
|
0
|
||||||
|
ELSE
|
||||||
|
((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume)
|
||||||
|
END factor
|
||||||
|
,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM volume) = 0 THEN
|
||||||
|
CASE WHEN ((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume)) <> 0 THEN
|
||||||
|
--if the base value is -0- but the target value hasn't been achieved, derive a price to apply
|
||||||
|
((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_qty) FROM volume)
|
||||||
|
ELSE
|
||||||
|
0
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
0
|
||||||
|
END mod_price
|
||||||
)
|
)
|
||||||
,price AS (
|
,price AS (
|
||||||
SELECT
|
SELECT
|
||||||
@ -552,14 +627,16 @@ SELECT
|
|||||||
,b.mod_chansub
|
,b.mod_chansub
|
||||||
,b.quota_rep_descr
|
,b.quota_rep_descr
|
||||||
,b.director_descr
|
,b.director_descr
|
||||||
,b.fb_val_loc*p.factor value_loc
|
,(CASE WHEN p.factor = 0 THEN b.fb_qty * p.mod_price/b.r_rate ELSE b.fb_val_loc*p.factor END)::numeric value_loc
|
||||||
,b.fb_val_loc*p.factor*r_rate value_usd
|
,(CASE WHEN p.factor = 0 THEN b.fb_qty * p.mod_price ELSE b.fb_val_loc*p.factor END)::numeric value_usd
|
||||||
,0 cost_loc
|
,0 cost_loc
|
||||||
,0 cost_usd
|
,0 cost_usd
|
||||||
,0 units
|
,0 units
|
||||||
FROM
|
FROM
|
||||||
volume b
|
volume b
|
||||||
CROSS JOIN pscale p
|
CROSS JOIN pscale p
|
||||||
|
WHERE
|
||||||
|
p.factor <> 0 or p.mod_price <> 0
|
||||||
)
|
)
|
||||||
, ins AS (
|
, ins AS (
|
||||||
INSERT INTO rlarp.osm_fcpool (SELECT * FROM price UNION ALL SELECT * FROM volume) RETURNING *
|
INSERT INTO rlarp.osm_fcpool (SELECT * FROM price UNION ALL SELECT * FROM volume) RETURNING *
|
||||||
|
@ -193,8 +193,22 @@ SELECT
|
|||||||
,scale AS (
|
,scale AS (
|
||||||
SELECT
|
SELECT
|
||||||
(SELECT incr::numeric FROM target) incr
|
(SELECT incr::numeric FROM target) incr
|
||||||
,(SELECT sum(fb_val_loc *r_rate) FROM basemix) base
|
,(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
|
,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM basemix) = 0 THEN
|
||||||
|
0
|
||||||
|
ELSE
|
||||||
|
((SELECT incr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM basemix))/(SELECT sum(fb_val_loc * r_rate) FROM basemix)
|
||||||
|
END factor
|
||||||
|
,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM basemix) = 0 THEN
|
||||||
|
CASE WHEN ((SELECT incr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM basemix)) <> 0 THEN
|
||||||
|
--if the base value is -0- but the target value hasn't been achieved, derive a price to apply
|
||||||
|
((SELECT incr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM basemix))/(SELECT sum(fb_qty) FROM basemix)
|
||||||
|
ELSE
|
||||||
|
0
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
0
|
||||||
|
END mod_price
|
||||||
)
|
)
|
||||||
,final AS (
|
,final AS (
|
||||||
SELECT
|
SELECT
|
||||||
@ -301,14 +315,16 @@ SELECT
|
|||||||
,b.mod_chansub
|
,b.mod_chansub
|
||||||
,b.quota_rep_descr
|
,b.quota_rep_descr
|
||||||
,b.director_descr
|
,b.director_descr
|
||||||
,(b.fb_val_loc*s.factor)::numeric value_loc
|
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc*s.factor END)::numeric value_loc
|
||||||
,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
|
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price ELSE b.fb_val_loc*s.factor END)::numeric value_usd
|
||||||
,0 cost_loc
|
,0 cost_loc
|
||||||
,0 cost_usd
|
,0 cost_usd
|
||||||
,0 units
|
,0 units
|
||||||
FROM
|
FROM
|
||||||
basemix b
|
basemix b
|
||||||
CROSS JOIN scale s
|
CROSS JOIN scale s
|
||||||
|
WHERE
|
||||||
|
s.factor <> 0 or s.mod_price <> 0
|
||||||
)
|
)
|
||||||
--select sum(value_usd), count(*) from final
|
--select sum(value_usd), count(*) from final
|
||||||
, ins AS (
|
, ins AS (
|
||||||
|
@ -1,5 +1,42 @@
|
|||||||
WITH
|
WITH
|
||||||
target AS (select target_increment incr)
|
target AS (select incr_qty qincr)
|
||||||
|
,testv AS (
|
||||||
|
SELECT
|
||||||
|
sum(fb_qty) tot
|
||||||
|
,sum(fb_qty) FILTER (WHERE iter = 'copy') base
|
||||||
|
,sum(fb_qty) FILTER (WHERE iterdef->>'type' = 'new basket') newpart
|
||||||
|
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
|
||||||
|
|
||||||
|
)
|
||||||
|
,flagv AS (
|
||||||
|
SELECT
|
||||||
|
tot
|
||||||
|
,base
|
||||||
|
,newpart
|
||||||
|
,CASE WHEN tot = 0 THEN
|
||||||
|
CASE WHEN base = 0 THEN
|
||||||
|
CASE WHEN newpart = 0 THEN
|
||||||
|
'unclean data. tested -> does not exist'
|
||||||
|
ELSE
|
||||||
|
'scale new part'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale copy'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale all'
|
||||||
|
END flag
|
||||||
|
FROM
|
||||||
|
testv
|
||||||
|
)
|
||||||
|
--ever need receive a target of -0- qty but value <> 0?
|
||||||
,basemix AS (
|
,basemix AS (
|
||||||
SELECT
|
SELECT
|
||||||
plnt ---master data
|
plnt ---master data
|
||||||
@ -76,8 +113,8 @@ SELECT
|
|||||||
,adj_orderdate --history
|
,adj_orderdate --history
|
||||||
,adj_requestdate --history
|
,adj_requestdate --history
|
||||||
,adj_shipdate --history
|
,adj_shipdate --history
|
||||||
,'b20' "version" --calculated
|
,null::text "version" --calculated
|
||||||
,'adjustment' iter --calculated
|
,null::text iter --calculated
|
||||||
---------------ui columns-------------------------
|
---------------ui columns-------------------------
|
||||||
,order_season
|
,order_season
|
||||||
,order_month
|
,order_month
|
||||||
@ -114,6 +151,11 @@ SELECT
|
|||||||
-----------------scenario----------------------------
|
-----------------scenario----------------------------
|
||||||
where_clause
|
where_clause
|
||||||
-----------------additional params-------------------
|
-----------------additional params-------------------
|
||||||
|
AND CASE (SELECT flag FROM flagv)
|
||||||
|
WHEN 'scale all' THEN true
|
||||||
|
WHEN 'scale copy' THEN iter = 'copy'
|
||||||
|
WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
|
||||||
|
END
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
AND adj_orderdate <= adj_shipdate
|
AND adj_orderdate <= adj_shipdate
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -190,12 +232,14 @@ SELECT
|
|||||||
,quota_rep_descr
|
,quota_rep_descr
|
||||||
,director_descr
|
,director_descr
|
||||||
)
|
)
|
||||||
|
--SELECT * FROM basemix
|
||||||
,scale AS (
|
,scale AS (
|
||||||
SELECT
|
SELECT
|
||||||
(SELECT incr::numeric FROM target) incr
|
(SELECT qincr::numeric FROM target) incr
|
||||||
,(SELECT sum(fb_val_loc *r_rate) FROM basemix) base
|
,(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
|
,(SELECT qincr FROM target)/(SELECT SUM(fb_qty) FROM basemix) factor
|
||||||
)
|
)
|
||||||
|
--select * from scale
|
||||||
,final AS (
|
,final AS (
|
||||||
SELECT
|
SELECT
|
||||||
b.plnt --master data
|
b.plnt --master data
|
||||||
|
@ -1,5 +1,41 @@
|
|||||||
WITH
|
WITH
|
||||||
target AS (select target_vol vincr, target_prc pincr)
|
target AS (select target_vol vincr, target_prc pincr)
|
||||||
|
,testv AS (
|
||||||
|
SELECT
|
||||||
|
sum(fb_qty) tot
|
||||||
|
,sum(fb_qty) FILTER (WHERE iter = 'copy') base
|
||||||
|
,sum(fb_qty) FILTER (WHERE iterdef->>'type' = 'new basket') newpart
|
||||||
|
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
|
||||||
|
|
||||||
|
)
|
||||||
|
,flagv AS (
|
||||||
|
SELECT
|
||||||
|
tot
|
||||||
|
,base
|
||||||
|
,newpart
|
||||||
|
,CASE WHEN tot = 0 THEN
|
||||||
|
CASE WHEN base = 0 THEN
|
||||||
|
CASE WHEN newpart = 0 THEN
|
||||||
|
'unclean data. tested -> does not exist'
|
||||||
|
ELSE
|
||||||
|
'scale new part'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale copy'
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
'scale all'
|
||||||
|
END flag
|
||||||
|
FROM
|
||||||
|
testv
|
||||||
|
)
|
||||||
,basemix AS (
|
,basemix AS (
|
||||||
SELECT
|
SELECT
|
||||||
plnt ---master data
|
plnt ---master data
|
||||||
@ -76,8 +112,8 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
,adj_orderdate --history
|
,adj_orderdate --history
|
||||||
,adj_requestdate --history
|
,adj_requestdate --history
|
||||||
,adj_shipdate --history
|
,adj_shipdate --history
|
||||||
,'b20' "version" --calculated
|
,null::text "version" --calculated
|
||||||
,'adjustment' iter --calculated
|
,null::text iter --calculated
|
||||||
---------------ui columns-------------------------
|
---------------ui columns-------------------------
|
||||||
,order_season
|
,order_season
|
||||||
,order_month
|
,order_month
|
||||||
@ -114,6 +150,11 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
-----------------scenario----------------------------
|
-----------------scenario----------------------------
|
||||||
where_clause
|
where_clause
|
||||||
-----------------additional params-------------------
|
-----------------additional params-------------------
|
||||||
|
AND CASE (SELECT flag FROM flagv)
|
||||||
|
WHEN 'scale all' THEN true
|
||||||
|
WHEN 'scale copy' THEN iter = 'copy'
|
||||||
|
WHEN 'scale new part' THEN iterdef->>'type' = 'new basket'
|
||||||
|
END
|
||||||
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
|
||||||
AND adj_orderdate <= adj_shipdate
|
AND adj_orderdate <= adj_shipdate
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -315,7 +356,21 @@ 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 * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume) factor
|
,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM volume) = 0 THEN
|
||||||
|
0
|
||||||
|
ELSE
|
||||||
|
((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume)
|
||||||
|
END factor
|
||||||
|
,CASE WHEN (SELECT sum(fb_val_loc * r_rate) FROM volume) = 0 THEN
|
||||||
|
CASE WHEN ((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume)) <> 0 THEN
|
||||||
|
--if the base value is -0- but the target value hasn't been achieved, derive a price to apply
|
||||||
|
((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_qty) FROM volume)
|
||||||
|
ELSE
|
||||||
|
0
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
0
|
||||||
|
END mod_price
|
||||||
)
|
)
|
||||||
--select * from pscale
|
--select * from pscale
|
||||||
,pricing AS (
|
,pricing AS (
|
||||||
@ -423,14 +478,16 @@ target AS (select target_vol vincr, target_prc pincr)
|
|||||||
,b.mod_chansub
|
,b.mod_chansub
|
||||||
,b.quota_rep_descr
|
,b.quota_rep_descr
|
||||||
,b.director_descr
|
,b.director_descr
|
||||||
,(b.fb_val_loc*s.factor)::numeric value_loc
|
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price/b.r_rate ELSE b.fb_val_loc*s.factor END)::numeric value_loc
|
||||||
,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
|
,(CASE WHEN s.factor = 0 THEN b.fb_qty * s.mod_price ELSE b.fb_val_loc*s.factor END)::numeric value_usd
|
||||||
,0 cost_loc
|
,0 cost_loc
|
||||||
,0 cost_usd
|
,0 cost_usd
|
||||||
,0 units
|
,0 units
|
||||||
FROM
|
FROM
|
||||||
volume b
|
volume b
|
||||||
CROSS JOIN pscale s
|
CROSS JOIN pscale s
|
||||||
|
WHERE
|
||||||
|
s.factor <> 0 or s.mod_price <> 0
|
||||||
)
|
)
|
||||||
--select sum(value_usd), sum(fb_qty) from pricing
|
--select sum(value_usd), sum(fb_qty) from pricing
|
||||||
, ins AS (
|
, ins AS (
|
||||||
|
Loading…
Reference in New Issue
Block a user