pull sql from db instead of local file
This commit is contained in:
		
							parent
							
								
									9265777caf
								
							
						
					
					
						commit
						04f774027d
					
				
							
								
								
									
										18
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								index.js
									
									
									
									
									
								
							| @ -88,20 +88,24 @@ server.get('/baseline', bodyParser.json(), function(req, res) { | |||||||
|     var path = './routes/baseline/baseline.sql'; |     var path = './routes/baseline/baseline.sql'; | ||||||
|     var args = []; |     var args = []; | ||||||
| 
 | 
 | ||||||
|     fs.readFile(path, 'utf8', function(err, fileContents) { |     Postgres.query("SELECT t FROM fc.sql WHERE cmd = 'baseline'", []).then((result, error) => { | ||||||
| 
 | 
 | ||||||
|         if (err) { |         if (error) { | ||||||
|             console.log("fatal error pulling sql file"); |             console.log("fatal error pulling sql file"); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         sql = result.rows[0].t | ||||||
|  | 
 | ||||||
|         console.log(new Date().toISOString() + "-------------------------baseline build-----------------------------") |         console.log(new Date().toISOString() + "-------------------------baseline build-----------------------------") | ||||||
| 
 | 
 | ||||||
|         sql = SQLTemplate(fileContents, { |         sql = SQLTemplate(sql, { | ||||||
|             ...req.body, |             ...req.body, | ||||||
|             app_req: JSON.stringify(req.body) |             app_req: JSON.stringify(req.body) | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|  |         console.log(sql) | ||||||
|  | 
 | ||||||
|         Postgres.query(sql, []).then((result, error) => { |         Postgres.query(sql, []).then((result, error) => { | ||||||
|             res.json(result[1].rows[0]); |             res.json(result[1].rows[0]); | ||||||
|         }); |         }); | ||||||
| @ -119,13 +123,15 @@ server.get('/scale', bodyParser.json(), function(req, res) { | |||||||
|     var path = './routes/scale/scale.sql'; |     var path = './routes/scale/scale.sql'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     fs.readFile(path, 'utf8', function(err, data) { |     Postgres.query("SELECT t FROM fc.sql WHERE cmd = 'scale'", []).then((result, error) => { | ||||||
| 
 | 
 | ||||||
|         if (err) { |         if (error) { | ||||||
|             console.log("fatal error pulling sql file") |             console.log("fatal error pulling sql file") | ||||||
|             return |             return | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         sql = result.rows[0].t; | ||||||
|  | 
 | ||||||
|         ({ c: check, w: where } = build_where(req, check, where)); |         ({ c: check, w: where } = build_where(req, check, where)); | ||||||
|         //if there was no body sent, return with nothing
 |         //if there was no body sent, return with nothing
 | ||||||
|         //if (c == 1) {
 |         //if (c == 1) {
 | ||||||
| @ -134,7 +140,7 @@ server.get('/scale', bodyParser.json(), function(req, res) { | |||||||
|         //}
 |         //}
 | ||||||
|         console.log(new Date().toISOString() + "-------------------------scale type adjustment----------------------") |         console.log(new Date().toISOString() + "-------------------------scale type adjustment----------------------") | ||||||
| 
 | 
 | ||||||
|         let sql = SQLTemplate(data, { |         sql = SQLTemplate(sql, { | ||||||
|             app_req: JSON.stringify(req.body), |             app_req: JSON.stringify(req.body), | ||||||
|             app_forecast_name: req.body.app_forecast_name, |             app_forecast_name: req.body.app_forecast_name, | ||||||
|             app_where: where |             app_where: where | ||||||
|  | |||||||
| @ -1,119 +0,0 @@ | |||||||
| DELETE FROM fc.dcard WHERE app_version = 'app_forecast_name'; |  | ||||||
| WITH |  | ||||||
| req AS  (SELECT $$app_req$$::jsonb j) |  | ||||||
| ,ilog AS ( |  | ||||||
|     INSERT INTO |  | ||||||
|         fc.log (doc) |  | ||||||
|     SELECT |  | ||||||
|         req.j  |  | ||||||
|     FROM |  | ||||||
|         req |  | ||||||
|     RETURNING * |  | ||||||
| ) |  | ||||||
| ,baseline AS ( |  | ||||||
| SELECT |  | ||||||
|     null::integer AS id |  | ||||||
|     ,null::integer AS logid |  | ||||||
|     ,o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,sum(o."Amount") AS "Amount" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
|     ,sum(o.app_units) AS app_units |  | ||||||
|     ,'app_forecast_name' AS app_version |  | ||||||
|     ,'baseline' AS app_iter |  | ||||||
|     ,(SELECT id FROM ilog) AS app_logid |  | ||||||
| FROM |  | ||||||
|     fc.dcard o |  | ||||||
| WHERE |  | ||||||
|     ( |  | ||||||
|         --base period orders booked.... |  | ||||||
|         "Trans. Date" BETWEEN 'app_baseline_from_date'::date AND 'app_baseline_to_date'::date |  | ||||||
|         --...or any open orders currently booked before cutoff.... |  | ||||||
|         OR ("Description" IN (app_openstatus_code) and "Trans. Date" <= 'app_openorder_cutoff'::date) |  | ||||||
|         --...or anything that shipped in that period |  | ||||||
|         OR ("Post Date" BETWEEN 'app_baseline_from_date'::date AND 'app_baseline_to_date'::date) |  | ||||||
|     ) |  | ||||||
|     --be sure to pre-exclude unwanted items, like canceled orders, non-gross sales, and short-ships |  | ||||||
| GROUP BY |  | ||||||
|     o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
| UNION ALL |  | ||||||
| SELECT |  | ||||||
|     null::integer AS id |  | ||||||
|     ,null::integer AS logid |  | ||||||
|     ,o."Trans. Date" + interval '1 year' AS "Trans. Date" |  | ||||||
|     ,o."Post Date" + interval '1 year' AS "Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,sum(o."Amount") AS "Amount" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
|     ,sum(o.app_units) AS app_units |  | ||||||
|     ,'app_forecast_name' AS app_version |  | ||||||
|     ,'baseline' AS app_iter |  | ||||||
|     ,(SELECT id FROM ilog) AS app_logid |  | ||||||
| FROM |  | ||||||
|     fc.dcard o |  | ||||||
|     LEFT OUTER JOIN fc.perd tdate ON |  | ||||||
|         (o."Trans. Date" + interval '1 year' )::date <@ tdate.drange |  | ||||||
|     LEFT OUTER JOIN fc.perd pdate ON |  | ||||||
|         (o."Post Date" + interval '1 year' )::date <@ pdate.drange |  | ||||||
| WHERE |  | ||||||
|     "Trans. Date" BETWEEN 'app_plug_fromdate'::date AND 'app_plug_todate'::date |  | ||||||
|     --be sure to pre-exclude unwanted items, like canceled orders, non-gross sales, and short-ships |  | ||||||
| GROUP BY |  | ||||||
|     o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason") |  | ||||||
| ,incr AS ( |  | ||||||
| SELECT |  | ||||||
|     null::integer AS id |  | ||||||
|     ,null::integer AS logid |  | ||||||
|     ,o."Trans. Date" + interval '1 year' AS "Trans. Date" |  | ||||||
|     ,o."Post Date" + interval '1 year' AS "Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,sum(o."Amount") AS "Amount" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
|     ,sum(o.app_units) AS app_units |  | ||||||
|     ,'app_forecast_name' AS app_version |  | ||||||
|     ,'baseline' AS app_iter |  | ||||||
|     ,(SELECT id FROM ilog) AS app_logid |  | ||||||
| FROM |  | ||||||
|     baseline o |  | ||||||
| LEFT OUTER JOIN fc.perd tdate ON |  | ||||||
|         (o."Trans. Date" + interval '1 year' )::date <@ tdate.drange |  | ||||||
|     LEFT OUTER JOIN fc.perd pdate ON |  | ||||||
|         (o."Post Date" + interval '1 year' )::date <@ pdate.drange |  | ||||||
| GROUP BY |  | ||||||
|     o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
| ) |  | ||||||
| ,ins AS ( |  | ||||||
| INSERT INTO |  | ||||||
|     fc.dcard |  | ||||||
| SELECT |  | ||||||
|     * |  | ||||||
| FROM |  | ||||||
|     incr i |  | ||||||
| WHERE |  | ||||||
|     i."Trans. Date" >= 'app_first_forecast_date'::date |  | ||||||
|     OR i."Post Date" >= 'app_first_forecast_date'::date |  | ||||||
| RETURNING * |  | ||||||
| ) |  | ||||||
| SELECT COUNT(*) num_rows  FROM ins |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| # execure the sql for baseline which builds the sql and inserts into a table |  | ||||||
| #$PG -f routes/baseline/gen_baseline.sql |  | ||||||
| # pull the sql out of the table and write it to route directory |  | ||||||
| psql -h hptrow.me -p 54329 -d ubm -U ptrowbridge -c "SELECT t FROM fc.sql WHERE cmd = 'baseline'" -t -A -o routes/baseline/baseline.sql |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| # execure the sql for scale which builds the sql and inserts into a table |  | ||||||
| psql -h hptrow.me -p 54329 -d ubm -U ptrowbridge -f ./setup_sql/05_gen_scale.sql |  | ||||||
| # pull the sql out of the table and write it to route directory |  | ||||||
| psql -h hptrow.me -p 54329 -d ubm -U ptrowbridge -c "SELECT t FROM fc.sql WHERE cmd = 'scale'" -t -A -o ./routes/scale/scale.sql |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| { |  | ||||||
|     "app_scenario": { |  | ||||||
|         "chan": "WHS", |  | ||||||
|         "account": "GRIFFIN", |  | ||||||
|         "part": "XNS0T1G3G18B096", |  | ||||||
|         "iter": [ |  | ||||||
|             "baseline" |  | ||||||
|         ]    |  | ||||||
|     },   |  | ||||||
|     "stamp": "2020-02-19 17:03:38", |  | ||||||
|     "user": "Trowbridge, Paul", |  | ||||||
|     "source": "adj", |  | ||||||
|     "message": "2% on volume and price", |  | ||||||
|     "tag": "standard price", |  | ||||||
|     "version": "forecast_name", |  | ||||||
|     "type": "scale_vp", |  | ||||||
|     "app_vincr": 20000, |  | ||||||
|     "app_pincr": 10000 |  | ||||||
| } |  | ||||||
| @ -1,159 +0,0 @@ | |||||||
| WITH |  | ||||||
| req AS  (SELECT $$app_req$$::jsonb j) |  | ||||||
| ,target AS ( |  | ||||||
|     SELECT |  | ||||||
|         (req.j->>'app_vincr')::numeric vincr   --volume |  | ||||||
|         ,(req.j->>'app_pincr')::numeric pincr  --price |  | ||||||
|     FROM |  | ||||||
|         req |  | ||||||
| ) |  | ||||||
| -----this block is supposed to test for new products that might not be in baseline etc------- |  | ||||||
| ,test AS ( |  | ||||||
|     SELECT |  | ||||||
|         sum(app_units) FILTER (WHERE app_iter <> 'ACTUALS') total |  | ||||||
|         ,sum(app_units) FILTER (WHERE app_iter = 'baseline') base |  | ||||||
|     FROM |  | ||||||
|         fc.dcard o  |  | ||||||
|     WHERE |  | ||||||
|         app_where |  | ||||||
| ) |  | ||||||
| ,ilog AS ( |  | ||||||
|     INSERT INTO |  | ||||||
|         fc.log (doc) |  | ||||||
|     SELECT |  | ||||||
|         req.j  |  | ||||||
|     FROM |  | ||||||
|         req |  | ||||||
|     RETURNING * |  | ||||||
| ) |  | ||||||
| ------need to group basemix and forego any detail iterations |  | ||||||
| ,basemix AS ( |  | ||||||
| SELECT |  | ||||||
|     o.id |  | ||||||
|     ,o.logid |  | ||||||
|     ,o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,sum(o."Amount") AS "Amount" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
|     ,sum(o.app_units) AS app_units |  | ||||||
|     ,'app_forecast_name' AS app_version |  | ||||||
|     ,'scale' AS app_iter |  | ||||||
|     ,0::bigint AS app_logid |  | ||||||
| FROM |  | ||||||
|     fc.dcard o  |  | ||||||
| WHERE |  | ||||||
|     app_where |  | ||||||
| GROUP BY |  | ||||||
|     o.id |  | ||||||
|     ,o.logid |  | ||||||
|     ,o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
| ), |  | ||||||
| vscale AS ( |  | ||||||
|     SELECT |  | ||||||
|         (SELECT vincr FROM target) AS target_increment |  | ||||||
|         ,sum(app_units) AS units |  | ||||||
|         ,CASE WHEN sum(app_units) = 0 THEN 0 ELSE (SELECT vincr FROM target)/sum(app_units) END AS factor |  | ||||||
|     FROM |  | ||||||
|         basemix |  | ||||||
| ) |  | ||||||
| ,volume_only AS ( |  | ||||||
| SELECT |  | ||||||
|     o.id |  | ||||||
|     ,o.logid |  | ||||||
|     ,o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,round(o."Amount" * vscale.factor,2) AS "Amount" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
|     ,round(o.app_units * vscale.factor,5) AS app_units |  | ||||||
|     ,'app_forecast_name' AS app_version |  | ||||||
|     ,'scale volume' AS app_iter |  | ||||||
|     ,(SELECT id FROM ilog) AS app_logid |  | ||||||
| FROM |  | ||||||
|     basemix o |  | ||||||
|     CROSS JOIN vscale |  | ||||||
| WHERE |  | ||||||
|     vscale.factor <> 0 |  | ||||||
| ) |  | ||||||
| ,volume AS ( |  | ||||||
|     SELECT * FROM volume_only |  | ||||||
|     UNION ALL |  | ||||||
|     SELECT * FROM basemix WHERE (SELECT factor FROM vscale) = 0 |  | ||||||
| ) |  | ||||||
| ,pscale AS ( |  | ||||||
| SELECT |  | ||||||
|     (SELECT pincr FROM target) AS target_increment |  | ||||||
|     ,sum("Amount") AS value |  | ||||||
|     ,CASE WHEN (SELECT sum("Amount") FROM volume) = 0 THEN |  | ||||||
|         --if the base value is -0- scaling will not work, need to generate price, factor goes to -0- |  | ||||||
|         0 |  | ||||||
|     ELSE |  | ||||||
|         CASE WHEN (SELECT factor FROM vscale) = 0 |  | ||||||
|             --if the incoming volume dataset has just basemix data, then create an absolute factor and multiply by basemix |  | ||||||
|             THEN (SELECT pincr FROM target)/(SELECT sum("Amount") FROM volume) |  | ||||||
|             --if the incoming volume table already has an adjusment, just need to create a true-up factor |  | ||||||
|             --multiplying by the raw factor without adding 1 will work since this data set will be added to the volume data set |  | ||||||
|             ELSE ((SELECT pincr FROM target)-(SELECT sum("Amount") FROM volume))/(SELECT sum("Amount") FROM volume) |  | ||||||
|         END |  | ||||||
|     END factor |  | ||||||
|     ,CASE WHEN (SELECT sum("Amount") FROM volume) = 0 THEN |  | ||||||
|         CASE WHEN ((SELECT pincr::numeric FROM target) - (SELECT sum("Amount") 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("Amount") FROM volume))/(SELECT sum(app_units) FROM volume) |  | ||||||
|         ELSE |  | ||||||
|             0 |  | ||||||
|         END |  | ||||||
|     ELSE |  | ||||||
|         0 |  | ||||||
|     END mod_price |  | ||||||
| FROM |  | ||||||
|     volume |  | ||||||
| ) |  | ||||||
| ,pricing AS ( |  | ||||||
| SELECT |  | ||||||
|     o.id |  | ||||||
|     ,o.logid |  | ||||||
|     ,o."Trans. Date" |  | ||||||
|     ,o."Post Date" |  | ||||||
|     ,o."Description" |  | ||||||
|     ,round((CASE WHEN pscale.factor = 0 THEN o.app_units * pscale.mod_price ELSE o."Amount" * pscale.factor END)::numeric,2) AS "Amount" |  | ||||||
|     ,o."Category" |  | ||||||
|     ,o."Party" |  | ||||||
|     ,o."Reason" |  | ||||||
|     ,0::numeric AS app_units |  | ||||||
|     ,'app_forecast_name' AS app_version |  | ||||||
|     ,'scale price' AS app_iter |  | ||||||
|     ,(SELECT id FROM ilog) AS app_logid |  | ||||||
| FROM |  | ||||||
|     volume o |  | ||||||
|     CROSS JOIN pscale |  | ||||||
| WHERE |  | ||||||
|     pscale.factor <> 0 or pscale.mod_price <> 0 |  | ||||||
| ) |  | ||||||
| ,ins AS ( |  | ||||||
| INSERT INTO |  | ||||||
|     fc.dcard |  | ||||||
| SELECT  |  | ||||||
|     *  |  | ||||||
| FROM  |  | ||||||
|     volume_only |  | ||||||
| UNION ALL  |  | ||||||
| SELECT  |  | ||||||
|     *  |  | ||||||
| FROM  |  | ||||||
|     pricing |  | ||||||
| RETURNING * |  | ||||||
| ) |  | ||||||
| SELECT count(*) num_rows FROM ins |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @ -1,378 +0,0 @@ | |||||||
| WITH  |  | ||||||
| target AS (select target_vol vincr, target_prc pincr) |  | ||||||
| ,testv AS ( |  | ||||||
|     SELECT |  | ||||||
|         sum(units) tot |  | ||||||
|         ,sum(units) FILTER (WHERE iter = 'copy') base |  | ||||||
|         ,sum(units) FILTER (WHERE module = 'new basket') newpart |  | ||||||
|     FROM |  | ||||||
|         rlarp.osm_pool |  | ||||||
|     WHERE |  | ||||||
|         -----------------scenario---------------------------- |  | ||||||
|         where_clause |  | ||||||
|         -----------------additional params------------------- |  | ||||||
|         AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments |  | ||||||
|         AND order_date <= ship_date |  | ||||||
| 
 |  | ||||||
| ) |  | ||||||
| ,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 ( |  | ||||||
|     SELECT |  | ||||||
|         fspr |  | ||||||
|         ,plnt          ---master data  |  | ||||||
|         ,promo          --history date mix |  | ||||||
|         ,terms |  | ||||||
|         ,bill_cust_descr          --history cust mix |  | ||||||
|         ,ship_cust_descr          --history cust mix |  | ||||||
|         ,dsm |  | ||||||
|         ,quota_rep_descr          --master data  |  | ||||||
|         ,director |  | ||||||
|         ,billto_group          --master data  |  | ||||||
|         ,shipto_group |  | ||||||
|         ,chan          --master data  |  | ||||||
|         ,chansub |  | ||||||
|         ,chan_retail |  | ||||||
|         ,part |  | ||||||
|         ,part_descr |  | ||||||
|         ,part_group |  | ||||||
|         ,branding |  | ||||||
|         ,majg_descr |  | ||||||
|         ,ming_descr |  | ||||||
|         ,majs_descr |  | ||||||
|         ,mins_descr |  | ||||||
|         ,segm |  | ||||||
|         ,substance |  | ||||||
|         ,fs_line          --master data  |  | ||||||
|         ,r_currency          --history cust mix |  | ||||||
|         ,r_rate          --master data  |  | ||||||
|         ,c_currency          --master data  |  | ||||||
|         ,c_rate          --master data  |  | ||||||
|         ,sum(coalesce(units,0)) units          --history value |  | ||||||
|         ,sum(coalesce(value_loc,0)) value_loc          --history value |  | ||||||
|         ,sum(coalesce(value_usd,0)) value_usd          --0  |  | ||||||
|         ,sum(coalesce(cost_loc,0)) cost_loc          --history part mix |  | ||||||
|         ,sum(coalesce(cost_usd,0)) cost_usd |  | ||||||
|         ,calc_status          --0  |  | ||||||
|         ,flag          --0  |  | ||||||
|         ,order_date          --history date mix |  | ||||||
|         ,order_month |  | ||||||
|         ,order_season |  | ||||||
|         ,request_date          --history date mix |  | ||||||
|         ,request_month |  | ||||||
|         ,request_season |  | ||||||
|         ,ship_date          --history date mix |  | ||||||
|         ,ship_month |  | ||||||
|         ,ship_season |  | ||||||
|     FROM |  | ||||||
|         rlarp.osm_pool |  | ||||||
|     WHERE |  | ||||||
|         -----------------scenario---------------------------- |  | ||||||
|         where_clause |  | ||||||
|         -----------------additional params------------------- |  | ||||||
|         AND CASE (SELECT flag FROM flagv)  |  | ||||||
|                 WHEN 'scale all' THEN true |  | ||||||
|                 WHEN 'scale copy' THEN iter = 'copy' |  | ||||||
|                 WHEN 'scale new part' THEN module = 'new basket' |  | ||||||
|             END |  | ||||||
|         AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments |  | ||||||
|         AND order_date <= ship_date |  | ||||||
|     GROUP BY |  | ||||||
|                 fspr |  | ||||||
|         ,plnt          ---master data  |  | ||||||
|         ,promo          --history date mix |  | ||||||
|         ,terms |  | ||||||
|         ,bill_cust_descr          --history cust mix |  | ||||||
|         ,ship_cust_descr          --history cust mix |  | ||||||
|         ,dsm |  | ||||||
|         ,quota_rep_descr          --master data  |  | ||||||
|         ,director |  | ||||||
|         ,billto_group          --master data  |  | ||||||
|         ,shipto_group |  | ||||||
|         ,chan          --master data  |  | ||||||
|         ,chansub |  | ||||||
|         ,chan_retail |  | ||||||
|         ,part |  | ||||||
|         ,part_descr |  | ||||||
|         ,part_group |  | ||||||
|         ,branding |  | ||||||
|         ,majg_descr |  | ||||||
|         ,ming_descr |  | ||||||
|         ,majs_descr |  | ||||||
|         ,mins_descr |  | ||||||
|         ,segm |  | ||||||
|         ,substance |  | ||||||
|         ,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  |  | ||||||
|         ,order_date          --history date mix |  | ||||||
|         ,order_month |  | ||||||
|         ,order_season |  | ||||||
|         ,request_date          --history date mix |  | ||||||
|         ,request_month |  | ||||||
|         ,request_season |  | ||||||
|         ,ship_date          --history date mix |  | ||||||
|         ,ship_month |  | ||||||
|         ,ship_season |  | ||||||
| ) |  | ||||||
| ,vscale AS ( |  | ||||||
|     SELECT |  | ||||||
|         (SELECT vincr::numeric FROM target) incr |  | ||||||
|         ,(SELECT sum(units)::numeric FROM basemix) base |  | ||||||
|         ,(SELECT vincr::numeric FROM target)/(SELECT sum(units)::numeric FROM basemix) factor |  | ||||||
| ) |  | ||||||
| --select * from vscale |  | ||||||
| ,log AS ( |  | ||||||
|     INSERT INTO rlarp.osm_log(doc) SELECT $$replace_iterdef$$::jsonb doc RETURNING * |  | ||||||
| ) |  | ||||||
| ,volume AS ( |  | ||||||
|     SELECT |  | ||||||
|         fspr |  | ||||||
|         ,plnt          ---master data  |  | ||||||
|         ,promo          --history date mix |  | ||||||
|         ,terms |  | ||||||
|         ,bill_cust_descr          --history cust mix |  | ||||||
|         ,ship_cust_descr          --history cust mix |  | ||||||
|         ,dsm |  | ||||||
|         ,quota_rep_descr          --master data  |  | ||||||
|         ,director |  | ||||||
|         ,billto_group          --master data  |  | ||||||
|         ,shipto_group |  | ||||||
|         ,chan          --master data  |  | ||||||
|         ,chansub |  | ||||||
|         ,chan_retail |  | ||||||
|         ,part |  | ||||||
|         ,part_descr |  | ||||||
|         ,part_group |  | ||||||
|         ,branding |  | ||||||
|         ,majg_descr |  | ||||||
|         ,ming_descr |  | ||||||
|         ,majs_descr |  | ||||||
|         ,mins_descr |  | ||||||
|         ,segm |  | ||||||
|         ,substance |  | ||||||
|         ,fs_line          --master data  |  | ||||||
|         ,r_currency          --history cust mix |  | ||||||
|         ,r_rate          --master data  |  | ||||||
|         ,c_currency          --master data  |  | ||||||
|         ,c_rate          --master data  |  | ||||||
|         ,units*s.factor units |  | ||||||
|         ,value_loc*s.factor value_loc |  | ||||||
|         ,value_usd*s.factor value_usd |  | ||||||
|         ,cost_loc*s.factor cost_loc |  | ||||||
|         ,cost_usd*s.factor cost_usd |  | ||||||
|         ,calc_status          --0  |  | ||||||
|         ,flag          --0  |  | ||||||
|         ,order_date          --history date mix |  | ||||||
|         ,order_month |  | ||||||
|         ,order_season |  | ||||||
|         ,request_date          --history date mix |  | ||||||
|         ,request_month |  | ||||||
|         ,request_season |  | ||||||
|         ,ship_date          --history date mix |  | ||||||
|         ,ship_month |  | ||||||
|         ,ship_season |  | ||||||
|         ,'replace_version' "version" |  | ||||||
|         ,'replace_source'||' volume'  iter |  | ||||||
|         ,log.id |  | ||||||
|         ,COALESCE(log.doc->>'tag','') "tag" |  | ||||||
|         ,log.doc->>'message' "comment" |  | ||||||
|         ,log.doc->>'type' module |  | ||||||
| FROM |  | ||||||
|     basemix b |  | ||||||
|     CROSS JOIN vscale s |  | ||||||
|     CROSS JOIN log |  | ||||||
| ) |  | ||||||
| ,pscale AS ( |  | ||||||
|     SELECT |  | ||||||
|         (SELECT pincr::numeric FROM target) incr |  | ||||||
|         ,(SELECT sum(value_loc * r_rate) FROM volume) base |  | ||||||
|         ,CASE WHEN (SELECT sum(value_loc * r_rate) FROM volume) = 0 THEN |  | ||||||
|             --if the base value is -0- scaling will not work, need to generate price, factor goes to -0- |  | ||||||
|             0 |  | ||||||
|         ELSE |  | ||||||
|             --if the target $amount is not achieved, adjust further |  | ||||||
|             ((SELECT pincr::numeric FROM target)-(SELECT sum(value_loc * r_rate) FROM volume))/(SELECT sum(value_loc * r_rate) FROM volume) |  | ||||||
|         END factor |  | ||||||
|         ,CASE WHEN (SELECT sum(value_loc * r_rate) FROM volume) = 0 THEN |  | ||||||
|             CASE WHEN ((SELECT pincr::numeric FROM target) - (SELECT sum(value_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(value_loc * r_rate) FROM volume))/(SELECT sum(units) FROM volume) |  | ||||||
|             ELSE |  | ||||||
|                 0 |  | ||||||
|             END |  | ||||||
|         ELSE |  | ||||||
|             0 |  | ||||||
|         END mod_price |  | ||||||
| ) |  | ||||||
| --select * from pscale |  | ||||||
| ,pricing AS ( |  | ||||||
|     SELECT |  | ||||||
|         fspr |  | ||||||
|         ,plnt          ---master data  |  | ||||||
|         ,promo          --history date mix |  | ||||||
|         ,terms |  | ||||||
|         ,bill_cust_descr          --history cust mix |  | ||||||
|         ,ship_cust_descr          --history cust mix |  | ||||||
|         ,dsm |  | ||||||
|         ,quota_rep_descr          --master data  |  | ||||||
|         ,director |  | ||||||
|         ,billto_group          --master data  |  | ||||||
|         ,shipto_group |  | ||||||
|         ,chan          --master data  |  | ||||||
|         ,chansub |  | ||||||
|         ,chan_retail |  | ||||||
|         ,part |  | ||||||
|         ,part_descr |  | ||||||
|         ,part_group |  | ||||||
|         ,branding |  | ||||||
|         ,majg_descr |  | ||||||
|         ,ming_descr |  | ||||||
|         ,majs_descr |  | ||||||
|         ,mins_descr |  | ||||||
|         ,segm |  | ||||||
|         ,substance |  | ||||||
|         ,fs_line          --master data  |  | ||||||
|         ,r_currency          --history cust mix |  | ||||||
|         ,r_rate          --master data  |  | ||||||
|         ,c_currency          --master data  |  | ||||||
|         ,c_rate          --master data  |  | ||||||
|         ,0::numeric units |  | ||||||
|         ,(CASE WHEN s.factor = 0 THEN b.units * s.mod_price/b.r_rate ELSE b.value_loc*s.factor END)::numeric value_loc |  | ||||||
|         ,(CASE WHEN s.factor = 0 THEN b.units * s.mod_price ELSE b.value_usd*s.factor END)::numeric value_usd |  | ||||||
|         ,0::numeric cost_loc |  | ||||||
|         ,0::numeric cost_usd |  | ||||||
|         ,calc_status          --0  |  | ||||||
|         ,flag          --0  |  | ||||||
|         ,order_date          --history date mix |  | ||||||
|         ,order_month |  | ||||||
|         ,order_season |  | ||||||
|         ,request_date          --history date mix |  | ||||||
|         ,request_month |  | ||||||
|         ,request_season |  | ||||||
|         ,ship_date          --history date mix |  | ||||||
|         ,ship_month |  | ||||||
|         ,ship_season |  | ||||||
|         ,'replace_version' "version" |  | ||||||
|         ,'replace_source'||' price'  iter |  | ||||||
|         ,log.id |  | ||||||
|         ,COALESCE(log.doc->>'tag','') "tag" |  | ||||||
|         ,log.doc->>'message' "comment" |  | ||||||
|         ,log.doc->>'type' module |  | ||||||
|     FROM |  | ||||||
|         volume b |  | ||||||
|         CROSS JOIN pscale s |  | ||||||
|         CROSS JOIN log |  | ||||||
|     WHERE |  | ||||||
|         s.factor <> 0 or s.mod_price <> 0 |  | ||||||
| ) |  | ||||||
| --select sum(value_usd), sum(units) from pricing |  | ||||||
| , ins AS ( |  | ||||||
|     INSERT INTO rlarp.osm_pool (SELECT * FROM pricing UNION ALL SELECT * FROM volume) RETURNING * |  | ||||||
| ) |  | ||||||
| ,insagg AS ( |  | ||||||
|     SELECT |  | ||||||
|         ---------customer info----------------- |  | ||||||
|         bill_cust_descr |  | ||||||
|         ,billto_group |  | ||||||
|         ,ship_cust_descr |  | ||||||
|         ,shipto_group |  | ||||||
|         ,quota_rep_descr |  | ||||||
|         ,director |  | ||||||
|         ,segm |  | ||||||
|         ,substance |  | ||||||
|         ,chan |  | ||||||
|         ,chansub |  | ||||||
|         ---------product info------------------ |  | ||||||
|         ,majg_descr |  | ||||||
|         ,ming_descr |  | ||||||
|         ,majs_descr |  | ||||||
|         ,mins_descr |  | ||||||
|         --,brand |  | ||||||
|         --,part_family |  | ||||||
|         ,part_group |  | ||||||
|         ,branding |  | ||||||
|         --,color |  | ||||||
|         ,part_descr |  | ||||||
|         ---------dates------------------------- |  | ||||||
|         ,order_season |  | ||||||
|         ,order_month |  | ||||||
|         ,ship_season |  | ||||||
|         ,ship_month |  | ||||||
|         ,request_season |  | ||||||
|         ,request_month |  | ||||||
|         ,promo |  | ||||||
|         ,version |  | ||||||
|         ,iter |  | ||||||
|         ,logid |  | ||||||
|         ,tag |  | ||||||
|         ,comment |  | ||||||
|         --------values------------------------- |  | ||||||
|         ,sum(value_loc) value_loc |  | ||||||
|         ,sum(value_usd) value_usd |  | ||||||
|         ,sum(cost_loc) cost_loc |  | ||||||
|         ,sum(cost_usd) cost_usd |  | ||||||
|         ,sum(units) units |  | ||||||
|     FROM |  | ||||||
|         ins |  | ||||||
|     GROUP BY |  | ||||||
|         ---------customer info----------------- |  | ||||||
|         bill_cust_descr |  | ||||||
|         ,billto_group |  | ||||||
|         ,ship_cust_descr |  | ||||||
|         ,shipto_group |  | ||||||
|         ,quota_rep_descr |  | ||||||
|         ,director |  | ||||||
|         ,segm |  | ||||||
|         ,substance |  | ||||||
|         ,chan |  | ||||||
|         ,chansub |  | ||||||
|         ---------product info------------------ |  | ||||||
|         ,majg_descr |  | ||||||
|         ,ming_descr |  | ||||||
|         ,majs_descr |  | ||||||
|         ,mins_descr |  | ||||||
|         --,brand |  | ||||||
|         --,part_family |  | ||||||
|         ,part_group |  | ||||||
|         ,branding |  | ||||||
|         --,color |  | ||||||
|         ,part_descr |  | ||||||
|         ---------dates------------------------- |  | ||||||
|         ,order_season |  | ||||||
|         ,order_month |  | ||||||
|         ,ship_season |  | ||||||
|         ,ship_month |  | ||||||
|         ,request_season |  | ||||||
|         ,request_month |  | ||||||
|         ,promo |  | ||||||
|         ,version |  | ||||||
|         ,iter |  | ||||||
|         ,logid |  | ||||||
|         ,tag |  | ||||||
|         ,comment |  | ||||||
| ) |  | ||||||
| SELECT json_agg(row_to_json(insagg)) x from insagg |  | ||||||
							
								
								
									
										0
									
								
								routes/baseline/curl.sh → test/baseline/curl.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								routes/baseline/curl.sh → test/baseline/curl.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										0
									
								
								routes/scale/curl_route.sh → test/scale/curl_route.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								routes/scale/curl_route.sh → test/scale/curl_route.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user