work on getting errors out
This commit is contained in:
		
							parent
							
								
									cb5a1dc6b5
								
							
						
					
					
						commit
						3e94851aea
					
				
							
								
								
									
										18
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								index.js
									
									
									
									
									
								
							@ -106,9 +106,7 @@ server.get('/scale', bodyParser.json(), function(req, res) {
 | 
				
			|||||||
    var args = [];
 | 
					    var args = [];
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
    var app_pincr    =  req.body.app_pincr;
 | 
					    var app_pincr    =  req.body.app_pincr;
 | 
				
			||||||
    var app_req      =  req.body.app_req;
 | 
					    var app_req      =  JSON.stringify(req.body);
 | 
				
			||||||
    var app_scenario =  req.body.app_scenario;
 | 
					 | 
				
			||||||
    var app_units    =  req.body.app_units;
 | 
					 | 
				
			||||||
    var app_vincr    =  req.body.app_vincr;
 | 
					    var app_vincr    =  req.body.app_vincr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var callback = function(arg) {
 | 
					    var callback = function(arg) {
 | 
				
			||||||
@ -125,8 +123,6 @@ server.get('/scale', bodyParser.json(), function(req, res) {
 | 
				
			|||||||
        //sql = sql.replace(new RegExp("where_clause", 'g'), w)
 | 
					        //sql = sql.replace(new RegExp("where_clause", 'g'), w)
 | 
				
			||||||
        sql = sql.replace(new RegExp("app_pincr", 'g'),    app_pincr);
 | 
					        sql = sql.replace(new RegExp("app_pincr", 'g'),    app_pincr);
 | 
				
			||||||
        sql = sql.replace(new RegExp("app_req", 'g'),      app_req);
 | 
					        sql = sql.replace(new RegExp("app_req", 'g'),      app_req);
 | 
				
			||||||
        sql = sql.replace(new RegExp("app_scenario", 'g'), app_scenario);
 | 
					 | 
				
			||||||
        sql = sql.replace(new RegExp("app_units", 'g'),    app_units);
 | 
					 | 
				
			||||||
        sql = sql.replace(new RegExp("app_vincr", 'g'),    app_vincr);
 | 
					        sql = sql.replace(new RegExp("app_vincr", 'g'),    app_vincr);
 | 
				
			||||||
        sql = sql.replace(new RegExp("app_where", 'g'),    w);
 | 
					        sql = sql.replace(new RegExp("app_where", 'g'),    w);
 | 
				
			||||||
        //execute the sql and send the result
 | 
					        //execute the sql and send the result
 | 
				
			||||||
@ -151,7 +147,7 @@ function build_where(req, c, w, d, args) {
 | 
				
			|||||||
    //loop through each top level item expected to be a simple key/value list reflecting the column and the target value
 | 
					    //loop through each top level item expected to be a simple key/value list reflecting the column and the target value
 | 
				
			||||||
    // "part":"XFRM500", "customer":"Sanford and Son" --> SQL -->     part = 'XFRM500'
 | 
					    // "part":"XFRM500", "customer":"Sanford and Son" --> SQL -->     part = 'XFRM500'
 | 
				
			||||||
    //                                                            AND customer = 'Sanford and Son'
 | 
					    //                                                            AND customer = 'Sanford and Son'
 | 
				
			||||||
    for (var i in req.body.scenario) {
 | 
					    for (var i in req.body.app_scenario) {
 | 
				
			||||||
        //console.log(i);
 | 
					        //console.log(i);
 | 
				
			||||||
        ///console.log(req.body[i]);
 | 
					        ///console.log(req.body[i]);
 | 
				
			||||||
        //this step applies the AND seperator only
 | 
					        //this step applies the AND seperator only
 | 
				
			||||||
@ -160,22 +156,22 @@ function build_where(req, c, w, d, args) {
 | 
				
			|||||||
                `
 | 
					                `
 | 
				
			||||||
            AND `;
 | 
					            AND `;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (Array.isArray(req.body.scenario[i])) {
 | 
					        if (Array.isArray(req.body.app_scenario[i])) {
 | 
				
			||||||
            //if the scenario key has a value that is an array of items, push it into an `IN` statement
 | 
					            //if the scenario key has a value that is an array of items, push it into an `IN` statement
 | 
				
			||||||
            //iter = [stage1, stage2]   -->  SQL  -->  iter IN ('stag1', stage2')
 | 
					            //iter = [stage1, stage2]   -->  SQL  -->  iter IN ('stag1', stage2')
 | 
				
			||||||
            w = w + i + " IN (";
 | 
					            w = w + i + " IN (";
 | 
				
			||||||
            for (var j in req.body.scenario[i]) {
 | 
					            for (var j in req.body.app_scenario[i]) {
 | 
				
			||||||
                if (d > 1) {
 | 
					                if (d > 1) {
 | 
				
			||||||
                    w = w + ",";
 | 
					                    w = w + ",";
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                w = w + "'" + req.body.scenario[i][j] + "'";
 | 
					                w = w + "'" + req.body.app_scenario[i][j] + "'";
 | 
				
			||||||
                d = d + 1;
 | 
					                d = d + 1;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            w = w + ")";
 | 
					            w = w + ")";
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            w = w + i + " = '" + req.body.scenario[i] + "'";
 | 
					            w = w + i + " = '" + req.body.app_scenario[i] + "'";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        args.push(req.body.scenario[i]);
 | 
					        args.push(req.body.app_scenario[i]);
 | 
				
			||||||
        c = c + 1;
 | 
					        c = c + 1;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    return { c, w, d };
 | 
					    return { c, w, d };
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,7 @@ SELECT
 | 
				
			|||||||
    string_agg(
 | 
					    string_agg(
 | 
				
			||||||
        --create the column reference
 | 
					        --create the column reference
 | 
				
			||||||
        'o.'||format('%I',cname)||
 | 
					        'o.'||format('%I',cname)||
 | 
				
			||||||
        CASE WHEN appcol IN ('units', 'value', 'cost') THEN ' * vscale.factor' ELSE '' END,
 | 
					        CASE WHEN appcol IN ('units', 'value', 'cost') THEN ' * vscale.factor AS '||format('%I',cname) ELSE '' END,
 | 
				
			||||||
        --delimiter
 | 
					        --delimiter
 | 
				
			||||||
        E'\n    ,' 
 | 
					        E'\n    ,' 
 | 
				
			||||||
        --sort column ordinal
 | 
					        --sort column ordinal
 | 
				
			||||||
@ -79,10 +79,10 @@ SELECT
 | 
				
			|||||||
$$WITH
 | 
					$$WITH
 | 
				
			||||||
req AS  (SELECT $$||'$$app_req$$::jsonb)'||$$
 | 
					req AS  (SELECT $$||'$$app_req$$::jsonb)'||$$
 | 
				
			||||||
-----this block is supposed to test for new products that might not be in baseline etc-------
 | 
					-----this block is supposed to test for new products that might not be in baseline etc-------
 | 
				
			||||||
test AS (
 | 
					,test AS (
 | 
				
			||||||
    SELECT
 | 
					    SELECT
 | 
				
			||||||
        sum(app_units) FILTER WHERE (version <> 'ACTUALS') total
 | 
					        sum($$||_units_col||$$) FILTER (WHERE version <> 'ACTUALS') total
 | 
				
			||||||
        ,sum(app_units) FILTER (WHERE iter = 'baseline') base
 | 
					        ,sum($$||_units_col||$$) FILTER (WHERE iter = 'baseline') base
 | 
				
			||||||
    FROM
 | 
					    FROM
 | 
				
			||||||
        fc.live
 | 
					        fc.live
 | 
				
			||||||
    WHERE
 | 
					    WHERE
 | 
				
			||||||
@ -91,20 +91,24 @@ test AS (
 | 
				
			|||||||
,basemix AS (
 | 
					,basemix AS (
 | 
				
			||||||
SELECT
 | 
					SELECT
 | 
				
			||||||
    $$||_clist||$$
 | 
					    $$||_clist||$$
 | 
				
			||||||
 | 
					FROM
 | 
				
			||||||
 | 
					    fc.live o 
 | 
				
			||||||
WHERE
 | 
					WHERE
 | 
				
			||||||
    app_scenario
 | 
					    app_where
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
vscale AS (
 | 
					vscale AS (
 | 
				
			||||||
    SELECT
 | 
					    SELECT
 | 
				
			||||||
        app_vincr AS target_increment
 | 
					        app_vincr AS target_increment
 | 
				
			||||||
        ,sum($$||_units_col||') AS units'||$$
 | 
					        ,sum($$||_units_col||') AS units'||$$
 | 
				
			||||||
        ,app_vincr/sum($$||_units_col||$$) AS factor
 | 
					        ,app_vincr/sum($$||_units_col||$$) AS factor
 | 
				
			||||||
 | 
					    FROM
 | 
				
			||||||
 | 
					        basemix
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
,volume AS (
 | 
					,volume AS (
 | 
				
			||||||
SELECT
 | 
					SELECT
 | 
				
			||||||
    $$||_clist_vol||$$
 | 
					    $$||_clist_vol||$$
 | 
				
			||||||
FROM
 | 
					FROM
 | 
				
			||||||
    baseline
 | 
					    basemix o
 | 
				
			||||||
    CROSS JOIN vscale
 | 
					    CROSS JOIN vscale
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
,pscale AS (
 | 
					,pscale AS (
 | 
				
			||||||
@ -128,6 +132,8 @@ SELECT
 | 
				
			|||||||
    ELSE
 | 
					    ELSE
 | 
				
			||||||
        0
 | 
					        0
 | 
				
			||||||
    END mod_price
 | 
					    END mod_price
 | 
				
			||||||
 | 
					FROM
 | 
				
			||||||
 | 
					    volume
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
,pricing AS (
 | 
					,pricing AS (
 | 
				
			||||||
SELECT
 | 
					SELECT
 | 
				
			||||||
 | 
				
			|||||||
@ -1,19 +1,11 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "scenario": {
 | 
					    "app_scenario": {
 | 
				
			||||||
        "quota_rep_descr": "TINA PETTIGREW",
 | 
					 | 
				
			||||||
        "substance": "Plastic",
 | 
					 | 
				
			||||||
        "chan": "DIR",
 | 
					        "chan": "DIR",
 | 
				
			||||||
        "billto_group": "H&A MASTRONARDI",
 | 
					        "account": "H&A MASTRONARDI",
 | 
				
			||||||
        "shipto_group": "H&A MASTRONARDI",
 | 
					        "shipgrp": "H&A MASTRONARDI",
 | 
				
			||||||
        "majg_descr": "110 - INJECTION",
 | 
					        "part": "HWA13000E21B025LZBLD",
 | 
				
			||||||
        "part_descr": "HWA13000E21B025LZBLD - 13.00 WRAPT HP CHOCOLATE",
 | 
					 | 
				
			||||||
        "version": "b21",
 | 
					 | 
				
			||||||
        "iter": [
 | 
					        "iter": [
 | 
				
			||||||
            "copy",
 | 
					            "baseline"
 | 
				
			||||||
            "adj volume",
 | 
					 | 
				
			||||||
            "adj price",
 | 
					 | 
				
			||||||
            "upload volume",
 | 
					 | 
				
			||||||
            "upload price"
 | 
					 | 
				
			||||||
        ]   
 | 
					        ]   
 | 
				
			||||||
    },  
 | 
					    },  
 | 
				
			||||||
    "stamp": "2020-02-19 17:03:38",
 | 
					    "stamp": "2020-02-19 17:03:38",
 | 
				
			||||||
@ -21,7 +13,7 @@
 | 
				
			|||||||
    "source": "adj",
 | 
					    "source": "adj",
 | 
				
			||||||
    "message": "2% on volume and price",
 | 
					    "message": "2% on volume and price",
 | 
				
			||||||
    "tag": "standard price",
 | 
					    "tag": "standard price",
 | 
				
			||||||
    "version": "b21",
 | 
					    "version": "forecast_name",
 | 
				
			||||||
    "type": "scale_vp",
 | 
					    "type": "scale_vp",
 | 
				
			||||||
    "app_vincr": 453.60,
 | 
					    "app_vincr": 453.60,
 | 
				
			||||||
    "app_pincr": 728.43624
 | 
					    "app_pincr": 728.43624
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +1,10 @@
 | 
				
			|||||||
WITH
 | 
					WITH
 | 
				
			||||||
req AS  (SELECT $$app_req$$::jsonb)
 | 
					req AS  (SELECT $$app_req$$::jsonb)
 | 
				
			||||||
-----this block is supposed to test for new products that might not be in baseline etc-------
 | 
					-----this block is supposed to test for new products that might not be in baseline etc-------
 | 
				
			||||||
test AS (
 | 
					,test AS (
 | 
				
			||||||
    SELECT
 | 
					    SELECT
 | 
				
			||||||
        sum(app_units) FILTER WHERE (version <> 'ACTUALS') total
 | 
					        sum(fb_qty) FILTER (WHERE version <> 'ACTUALS') total
 | 
				
			||||||
        ,sum(app_units) FILTER (WHERE iter = 'baseline') base
 | 
					        ,sum(fb_qty) FILTER (WHERE iter = 'baseline') base
 | 
				
			||||||
    FROM
 | 
					    FROM
 | 
				
			||||||
        fc.live
 | 
					        fc.live
 | 
				
			||||||
    WHERE
 | 
					    WHERE
 | 
				
			||||||
@ -113,14 +113,18 @@ SELECT
 | 
				
			|||||||
    ,o.rseas
 | 
					    ,o.rseas
 | 
				
			||||||
    ,o.sdate
 | 
					    ,o.sdate
 | 
				
			||||||
    ,o.sseas
 | 
					    ,o.sseas
 | 
				
			||||||
 | 
					FROM
 | 
				
			||||||
 | 
					    fc.live o 
 | 
				
			||||||
WHERE
 | 
					WHERE
 | 
				
			||||||
    app_scenario
 | 
					    app_where
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
vscale AS (
 | 
					vscale AS (
 | 
				
			||||||
    SELECT
 | 
					    SELECT
 | 
				
			||||||
        app_vincr AS target_increment
 | 
					        app_vincr AS target_increment
 | 
				
			||||||
        ,sum(fb_qty) AS units
 | 
					        ,sum(fb_qty) AS units
 | 
				
			||||||
        ,app_vincr/sum(fb_qty) AS factor
 | 
					        ,app_vincr/sum(fb_qty) AS factor
 | 
				
			||||||
 | 
					    FROM
 | 
				
			||||||
 | 
					        basemix
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
,volume AS (
 | 
					,volume AS (
 | 
				
			||||||
SELECT
 | 
					SELECT
 | 
				
			||||||
@ -208,13 +212,13 @@ SELECT
 | 
				
			|||||||
    ,o.r_rate
 | 
					    ,o.r_rate
 | 
				
			||||||
    ,o.c_currency
 | 
					    ,o.c_currency
 | 
				
			||||||
    ,o.c_rate
 | 
					    ,o.c_rate
 | 
				
			||||||
    ,o.fb_qty * vscale.factor
 | 
					    ,o.fb_qty * vscale.factor AS fb_qty
 | 
				
			||||||
    ,o.fb_val_loc * vscale.factor
 | 
					    ,o.fb_val_loc * vscale.factor AS fb_val_loc
 | 
				
			||||||
    ,o.fb_val_loc_dis
 | 
					    ,o.fb_val_loc_dis
 | 
				
			||||||
    ,o.fb_val_loc_qt
 | 
					    ,o.fb_val_loc_qt
 | 
				
			||||||
    ,o.fb_val_loc_pl
 | 
					    ,o.fb_val_loc_pl
 | 
				
			||||||
    ,o.fb_val_loc_tar
 | 
					    ,o.fb_val_loc_tar
 | 
				
			||||||
    ,o.fb_cst_loc * vscale.factor
 | 
					    ,o.fb_cst_loc * vscale.factor AS fb_cst_loc
 | 
				
			||||||
    ,o.fb_cst_loc_cur
 | 
					    ,o.fb_cst_loc_cur
 | 
				
			||||||
    ,o.fb_cst_loc_fut
 | 
					    ,o.fb_cst_loc_fut
 | 
				
			||||||
    ,o.calc_status
 | 
					    ,o.calc_status
 | 
				
			||||||
@ -226,7 +230,7 @@ SELECT
 | 
				
			|||||||
    ,o.sdate
 | 
					    ,o.sdate
 | 
				
			||||||
    ,o.sseas
 | 
					    ,o.sseas
 | 
				
			||||||
FROM
 | 
					FROM
 | 
				
			||||||
    baseline
 | 
					    basemix o
 | 
				
			||||||
    CROSS JOIN vscale
 | 
					    CROSS JOIN vscale
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
,pscale AS (
 | 
					,pscale AS (
 | 
				
			||||||
@ -250,6 +254,8 @@ SELECT
 | 
				
			|||||||
    ELSE
 | 
					    ELSE
 | 
				
			||||||
        0
 | 
					        0
 | 
				
			||||||
    END mod_price
 | 
					    END mod_price
 | 
				
			||||||
 | 
					FROM
 | 
				
			||||||
 | 
					    volume
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
,pricing AS (
 | 
					,pricing AS (
 | 
				
			||||||
SELECT
 | 
					SELECT
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user