many changes
This commit is contained in:
		
							parent
							
								
									b7eb94202c
								
							
						
					
					
						commit
						e376a9df2e
					
				| @ -1,4 +1,4 @@ | ||||
| --BEGIN; | ||||
| BEGIN; | ||||
| 
 | ||||
| WITH  | ||||
| ------------------goal price increases--------------------- | ||||
| @ -345,7 +345,7 @@ SELECT | ||||
|              END | ||||
|     END rate | ||||
|     ,ms.avg_price target | ||||
|     ,JSONB_AGG(DISTINCT plist.jcpric/1000) jcpric | ||||
|     ,JSONB_AGG(DISTINCT plist.jcpric/1000) jcprice | ||||
|     --,CASE WHEN sum(val_usd) FILTER (WHERE oseas = 2020) IS NULL  | ||||
|     --    THEN CASE WHEN sum(units) FILTER (WHERE oseas = 2021) IS NULL | ||||
|     --        THEN 'unknown' | ||||
| @ -412,149 +412,315 @@ GROUP BY | ||||
| --SELECT * FROM test_unique where cnt > 1 | ||||
| --SELECT * FROM pivot LIMIT 1000 | ||||
| --------------join forecast price------------------- | ||||
| ,fcp AS ( | ||||
|     SELECT | ||||
|          pp.productt | ||||
|         ,pp.product | ||||
|         ,pp.majg | ||||
|         ,pp.quota_rep_descr | ||||
|         ,pp.order_season | ||||
|         ,pp.billto_group | ||||
|         ,pp.shipto_group | ||||
|         ,pp.chgrp | ||||
|         ,pp.fc_units | ||||
|         ,pp.fc_price | ||||
|         ,pp.iters | ||||
|         --,p.item | ||||
|         ,p.py_gasp | ||||
|         ,p.cy_units | ||||
|         ,p.py_asp | ||||
|         ,p.last_price | ||||
|         ,p.last_order | ||||
|         ,p.target | ||||
|         ,p.rate | ||||
|         ,p.jcpric | ||||
|         --need to link in targets pricing and price list for cap purposes--------- | ||||
|         --also need to link regional price lists so we don't blow past those------ | ||||
|         ,least( | ||||
|             min( | ||||
|                 COALESCE(p.py_asp,p.last_price), | ||||
|                 COALESCE(py_gasp,target) | ||||
|             ) * (1 + p.rate), | ||||
|             jcprice->>0 | ||||
|         ) fc_price | ||||
|         --last season price + % capped at list or py_gasp + % | ||||
|         --last price + % capped at list or pg_gasp + % | ||||
|     FROM     | ||||
|         poolprice pp | ||||
|         LEFT OUTER JOIN pivot p ON | ||||
|                 pp.productt               = p.productt | ||||
|             AND pp.majg                   = p.majg     | ||||
|             AND pp.chgrp                  = p.chgrp    | ||||
|             AND pp.billto_group           = p.account | ||||
|             AND pp.shipto_group           = p.shipgrp | ||||
| ) | ||||
| SELECT * FROM fcp limit 1000 | ||||
| ----------------create a log entry-------------------- | ||||
| --,log AS ( | ||||
| --    INSERT INTO | ||||
| --           rlarp.osm_log(doc) | ||||
| --,fcp AS ( | ||||
| --    SELECT | ||||
| --        $${ | ||||
| --            "message":"application of last price and target increases to all forecast orders", | ||||
| --            "tag":"last price", | ||||
| --            "type":"build"  | ||||
| --        }$$::jsonb doc  | ||||
| --    RETURNING * | ||||
| --) | ||||
| ---------------build the iteration rows---------------- | ||||
| --,ins AS ( | ||||
| --SELECT | ||||
| --     o.fspr | ||||
| --    ,o.plnt          ---master data  | ||||
| --    ,o.promo          --history date mix | ||||
| --    ,o.terms | ||||
| --    ,o.bill_cust_descr          --history cust mix | ||||
| --    ,o.ship_cust_descr          --history cust mix | ||||
| --    ,o.dsm | ||||
| --    ,o.quota_rep_descr          --master data  | ||||
| --    ,o.director | ||||
| --    ,o.billto_group          --master data  | ||||
| --    ,o.shipto_group | ||||
| --    ,o.chan          --master data  | ||||
| --    ,o.chansub | ||||
| --    ,o.chan_retail | ||||
| --    ,o.part | ||||
| --    ,o.part_descr | ||||
| --    ,o.part_group | ||||
| --    ,o.branding | ||||
| --    ,o.majg_descr | ||||
| --    ,o.ming_descr | ||||
| --    ,o.majs_descr | ||||
| --    ,o.mins_descr | ||||
| --    ,o.segm | ||||
| --    ,o.substance | ||||
| --    ,o.fs_line          --master data  | ||||
| --    ,o.r_currency          --history cust mix | ||||
| --    ,o.r_rate          --master data  | ||||
| --    ,o.c_currency          --master data  | ||||
| --    ,o.c_rate          --master data  | ||||
| --    ,0::numeric units | ||||
| --    ,ROUND(o.units * (a.price_increment/o.r_rate),2) value_loc | ||||
| --    ,ROUND(o.units * a.price_increment,2) value_usd | ||||
| --    ,0::numeric cost_loc | ||||
| --    ,0::numeric cost_usd | ||||
| --    ,o.calc_status          --0  | ||||
| --    ,o.flag          --0  | ||||
| --    ,o.order_date          --history date mix | ||||
| --    ,o.order_month | ||||
| --    ,o.order_season | ||||
| --    ,o.request_date          --history date mix | ||||
| --    ,o.request_month | ||||
| --    ,o.request_season | ||||
| --    ,o.ship_date          --history date mix | ||||
| --    ,o.ship_month | ||||
| --    ,o.ship_season | ||||
| --    ,o.version | ||||
| --    ---this iteration has to be listed in the master template file in order to be effectively included--- | ||||
| --    ,'upload price' iter | ||||
| --    ,log.id | ||||
| --    ,COALESCE(log.doc->>'tag','') "tag" | ||||
| --    ,log.doc->>'message' "comment" | ||||
| --    ,log.doc->>'type' module | ||||
| --    -----------debug columns--------- | ||||
| --    --,value_usd/units price | ||||
| --    --,a.py_gasp | ||||
| --    --,a.rate | ||||
| --    --,a.last_price | ||||
| --    --,a.price_increment | ||||
| --         pp.productt | ||||
| --        ,pp.product | ||||
| --        ,pp.majg | ||||
| --        ,pp.quota_rep_descr | ||||
| --        ,pp.order_season | ||||
| --        ,pp.billto_group | ||||
| --        ,pp.shipto_group | ||||
| --        ,pp.chgrp | ||||
| --        ,pp.fc_units | ||||
| --        ,pp.fc_price | ||||
| --        ,pp.iters | ||||
| --        --,p.item | ||||
| --        ,p.py_gasp | ||||
| --        ,p.cy_units | ||||
| --        ,p.py_asp | ||||
| --        ,p.last_price | ||||
| --        ,p.last_order | ||||
| --        ,p.target | ||||
| --        ,p.rate | ||||
| --        ,p.jcprice | ||||
| --        --need to link in targets pricing and price list for cap purposes--------- | ||||
| --        --also need to link regional price lists so we don't blow past those------ | ||||
| --        ,least( | ||||
| --            least( | ||||
| --                COALESCE(p.py_asp,p.last_price), | ||||
| --                COALESCE(py_gasp,target) | ||||
| --            ) * (1 + p.rate), | ||||
| --            (jcprice->>0)::numeric | ||||
| --        ) rev_price | ||||
| --        ,greatest( | ||||
| --            least( | ||||
| --                least( | ||||
| --                    COALESCE(p.py_asp,p.last_price), | ||||
| --                    COALESCE(py_gasp,target) | ||||
| --                ) * (1 + p.rate), | ||||
| --                (jcprice->>0)::numeric | ||||
| --            ) - fc_price | ||||
| --            ,0 | ||||
| --        ) fc_adj | ||||
| --        --last season price + % capped at list or py_gasp + % | ||||
| --        --last price + % capped at list or pg_gasp + % | ||||
| --    FROM     | ||||
| --    rlarp.osm_pool o | ||||
| --    ,rlarp.itemmv i | ||||
| --    ,adj a  | ||||
| --    ,log | ||||
| --        poolprice pp | ||||
| --        LEFT OUTER JOIN pivot p ON | ||||
| --                pp.productt               = p.productt | ||||
| --            AND pp.majg                   = p.majg     | ||||
| --            AND pp.chgrp                  = p.chgrp    | ||||
| --            AND pp.billto_group           = p.account | ||||
| --            AND pp.shipto_group           = p.shipgrp | ||||
| --    WHERE | ||||
| --    i.item = o.part | ||||
| --    AND a.product = i.stlc||'.'||i.colgrp||substring(i.sizc,1,3) | ||||
| --    AND a.account = o.billto_group | ||||
| --    AND a.shipgrp = o.shipto_group | ||||
| --    AND a.price_increment <> 0 | ||||
| --    AND o.units <> 0 | ||||
| --    ---only apply to 2022 orders---- | ||||
| --    AND o.order_date >= '2021-06-01' | ||||
| --    --only include baseline stuff--- | ||||
| --    AND iter <> 'upload price' | ||||
| --        greatest( | ||||
| --            least( | ||||
| --                least( | ||||
| --                    COALESCE(p.py_asp,p.last_price), | ||||
| --                    COALESCE(py_gasp,target) | ||||
| --                ) * (1 + p.rate), | ||||
| --                (jcprice->>0)::numeric | ||||
| --            ) - fc_price | ||||
| --            ,0 | ||||
| --        ) <> 0 | ||||
| --) | ||||
| -------------aggregate the impact------------ | ||||
| ----SELECT * FROM ins limit 10000 | ||||
| ----SELECT | ||||
| ----    order_season | ||||
| ----    ,sum(value_loc) val_loc | ||||
| ----    ,sum(value_usd) val_usd | ||||
| ----FROM | ||||
| ----    ins | ||||
| ----GROUP BY | ||||
| ----    order_season; | ||||
| --SELECT * FROM fcp LIMIT 1000 | ||||
| ----------------create a log entry-------------------- | ||||
| ,log AS ( | ||||
|     INSERT INTO | ||||
|            rlarp.osm_log(doc) | ||||
|     SELECT  | ||||
|         $${ | ||||
|             "message":"application of last price and target increases to all forecast orders", | ||||
|             "tag":"last price", | ||||
|             "type":"build"  | ||||
|         }$$::jsonb doc  | ||||
|     RETURNING * | ||||
| ) | ||||
| ---------collapse iterations----------------------- | ||||
| ,collapse AS ( | ||||
|     SELECT | ||||
|          o.fspr | ||||
|         ,o.plnt          ---master data  | ||||
|         ,o.promo          --history date mix | ||||
|         ,o.terms | ||||
|         ,o.bill_cust_descr          --history cust mix | ||||
|         ,o.ship_cust_descr          --history cust mix | ||||
|         ,o.dsm | ||||
|         ,o.quota_rep_descr          --master data  | ||||
|         ,o.director | ||||
|         ,o.billto_group          --master data  | ||||
|         ,o.shipto_group | ||||
|         ,o.chan          --master data  | ||||
|         ,o.chansub | ||||
|         ,o.chan_retail | ||||
|         ,o.part | ||||
|         ,o.part_descr | ||||
|         ,i.stlc||'.'||i.coltier||substring(i.sizc,1,3) productt | ||||
|         ,o.part_group | ||||
|         ,o.branding | ||||
|         ,o.majg_descr | ||||
|         ,o.ming_descr | ||||
|         ,o.majs_descr | ||||
|         ,o.mins_descr | ||||
|         ,o.segm | ||||
|         ,o.substance | ||||
|         ,o.fs_line           | ||||
|         ,o.r_currency       | ||||
|         ,o.r_rate            | ||||
|         ,o.c_currency        | ||||
|         ,o.c_rate            | ||||
|         ,SUM(o.units)                      units | ||||
|         ,SUM(o.value_loc)                  value_loc | ||||
|         ,SUM(o.value_usd)                  value_usd | ||||
|         ,SUM(o.value_loc)/SUM(o.units)     price_loc | ||||
|         ,SUM(o.cost_loc)                   cost_loc | ||||
|         ,SUM(o.cost_usd)                   cost_usd | ||||
|         ,o.calc_status      --0  | ||||
|         ,o.flag             --0  | ||||
|         ,o.order_date       --history date mix | ||||
|         ,o.order_month | ||||
|         ,o.order_season | ||||
|         ,o.request_date     --history date mix | ||||
|         ,o.request_month | ||||
|         ,o.request_season | ||||
|         ,o.ship_date        --history date mix | ||||
|         ,o.ship_month | ||||
|         ,o.ship_season | ||||
|     FROM | ||||
|         rlarp.osm_pool o | ||||
|         --need to join to itemm to get the product from osm_pool | ||||
|         ,rlarp.itemmv i | ||||
|     WHERE | ||||
|         i.item = o.part | ||||
|     GROUP BY  | ||||
|          o.fspr | ||||
|         ,o.plnt          ---master data  | ||||
|         ,o.promo          --history date mix | ||||
|         ,o.terms | ||||
|         ,o.bill_cust_descr          --history cust mix | ||||
|         ,o.ship_cust_descr          --history cust mix | ||||
|         ,o.dsm | ||||
|         ,o.quota_rep_descr          --master data  | ||||
|         ,o.director | ||||
|         ,o.billto_group          --master data  | ||||
|         ,o.shipto_group | ||||
|         ,o.chan          --master data  | ||||
|         ,o.chansub | ||||
|         ,o.chan_retail | ||||
|         ,o.part | ||||
|         ,o.part_descr | ||||
|         ,i.stlc||'.'||i.coltier||substring(i.sizc,1,3) | ||||
|         ,o.part_group | ||||
|         ,o.branding | ||||
|         ,o.majg_descr | ||||
|         ,o.ming_descr | ||||
|         ,o.majs_descr | ||||
|         ,o.mins_descr | ||||
|         ,o.segm | ||||
|         ,o.substance | ||||
|         ,o.fs_line           | ||||
|         ,o.r_currency       | ||||
|         ,o.r_rate            | ||||
|         ,o.c_currency        | ||||
|         ,o.c_rate            | ||||
|         ,o.calc_status      --0  | ||||
|         ,o.flag             --0  | ||||
|         ,o.order_date          --history date mix | ||||
|         ,o.order_month | ||||
|         ,o.order_season | ||||
|         ,o.request_date          --history date mix | ||||
|         ,o.request_month | ||||
|         ,o.request_season | ||||
|         ,o.ship_date          --history date mix | ||||
|         ,o.ship_month | ||||
|         ,o.ship_season | ||||
|     HAVING | ||||
|         sum(o.units) <> 0 | ||||
| ) | ||||
| -------------build the iteration rows---------------- | ||||
| ,ins AS ( | ||||
| SELECT | ||||
|      o.fspr | ||||
|     ,o.plnt          ---master data  | ||||
|     ,o.promo          --history date mix | ||||
|     ,o.terms | ||||
|     ,o.bill_cust_descr          --history cust mix | ||||
|     ,o.ship_cust_descr          --history cust mix | ||||
|     ,o.dsm | ||||
|     ,o.quota_rep_descr          --master data  | ||||
|     ,o.director | ||||
|     ,o.billto_group          --master data  | ||||
|     ,o.shipto_group | ||||
|     ,o.chan          --master data  | ||||
|     ,o.chansub | ||||
|     ,o.chan_retail | ||||
|     ,o.part | ||||
|     ,o.part_descr | ||||
|     ,o.part_group | ||||
|     ,o.branding | ||||
|     ,o.majg_descr | ||||
|     ,o.ming_descr | ||||
|     ,o.majs_descr | ||||
|     ,o.mins_descr | ||||
|     ,o.segm | ||||
|     ,o.substance | ||||
|     ,o.fs_line          --master data  | ||||
|     ,o.r_currency          --history cust mix | ||||
|     ,o.r_rate          --master data  | ||||
|     ,o.c_currency          --master data  | ||||
|     ,o.c_rate          --master data  | ||||
|     --,o.units | ||||
|     ,0::numeric units | ||||
|     ,greatest( | ||||
|         round(least( | ||||
|             least( | ||||
|                 COALESCE(a.py_asp,o.price_loc), | ||||
|                 COALESCE(a.py_gasp,a.target) | ||||
|             ) * (1 + a.rate), | ||||
|             (a.jcprice->>0)::numeric | ||||
|         )*o.units - o.value_loc,2) | ||||
|     ,0) AS value_loc | ||||
|     ,greatest( | ||||
|         round((least( | ||||
|             least( | ||||
|                 COALESCE(a.py_asp,o.price_loc), | ||||
|                 COALESCE(a.py_gasp,a.target) | ||||
|             ) * (1 + a.rate), | ||||
|             (a.jcprice->>0)::numeric | ||||
|         )*o.units - o.value_loc) * r_rate,2) | ||||
|     ,0) AS value_usd | ||||
|     ----debug--- | ||||
|     --,least( | ||||
|     --    least( | ||||
|     --        COALESCE(a.py_asp,o.price_loc), | ||||
|     --        COALESCE(a.py_gasp,a.target) | ||||
|     --    ) * (1 + a.rate), | ||||
|     --    (a.jcprice->>0)::numeric | ||||
|     --) AS rev_price | ||||
|     --,o.units | ||||
|     --,o.value_loc | ||||
|     --,o.value_usd | ||||
|     --,o.price_loc | ||||
|     --,a.last_price | ||||
|     --,a.target | ||||
|     --,a.jcprice | ||||
|     --,a.rate | ||||
|     --,a.py_asp | ||||
|     --,a.py_gasp | ||||
|     ----------- | ||||
|     ,0::numeric cost_loc | ||||
|     ,0::numeric cost_usd | ||||
|     ,o.calc_status          --0  | ||||
|     ,o.flag          --0  | ||||
|     ,o.order_date          --history date mix | ||||
|     ,o.order_month | ||||
|     ,o.order_season | ||||
|     ,o.request_date          --history date mix | ||||
|     ,o.request_month | ||||
|     ,o.request_season | ||||
|     ,o.ship_date          --history date mix | ||||
|     ,o.ship_month | ||||
|     ,o.ship_season | ||||
|     --,o.version | ||||
|     ---this iteration has to be listed in the master template file in order to be effectively included--- | ||||
|     ,'b22' AS version | ||||
|     ,'upload price' iter | ||||
|     ,log.id | ||||
|     ,COALESCE(log.doc->>'tag','') "tag" | ||||
|     ,log.doc->>'message' "comment" | ||||
|     ,log.doc->>'type' module | ||||
|     -----------debug columns--------- | ||||
|     --,value_usd/units price | ||||
|     --,a.py_gasp | ||||
|     --,a.rate | ||||
|     --,a.last_price | ||||
|     --,a.price_increment | ||||
| FROM | ||||
|     collapse o | ||||
|     --need to join to itemm to get the product from osm_pool | ||||
|     --,fcp a  | ||||
|     ,pivot a | ||||
|     ,log | ||||
| WHERE | ||||
|     --    a.productt = o.productt | ||||
|     --AND a.quota_rep_descr = o.quota_rep_descr | ||||
|     --AND a.majg = SUBSTRING(o.majg_descr,1,3) | ||||
|     --AND a.billto_group = o.billto_group | ||||
|     --AND a.shipto_group = o.shipto_group | ||||
|     --AND a.chgrp = substring(o.chan,1,1) | ||||
|     ---only apply to 2022 orders---- | ||||
|     ---join p | ||||
|         a.productt               = o.productt | ||||
|     AND a.majg                   = SUBSTRING(o.majg_descr,1,3) | ||||
|     AND a.chgrp                  = substring(o.chan,1,1) | ||||
|     AND a.account                = o.billto_group | ||||
|     AND a.shipgrp                = o.shipto_group | ||||
|     AND o.order_date >= '2021-06-01' | ||||
| ) | ||||
| --SELECT order_season, order_month, sum(value_usd) from ins group by order_season, order_month; | ||||
| INSERT INTO rlarp.osm_pool SELECT * FROM ins; | ||||
| -----------aggregate the impact------------ | ||||
| --SELECT * FROM ins limit 10000 | ||||
| --SELECT | ||||
| --    order_season | ||||
| --    ,sum(value_loc) val_loc | ||||
| --    ,sum(value_usd) val_usd | ||||
| --FROM | ||||
| --    ins | ||||
| --GROUP BY | ||||
| --    order_season; | ||||
| --,del AS ( | ||||
| --    DELETE FROM rlarp.osm_pool WHERE iter = 'upload price' RETURNING * | ||||
| --) | ||||
| @ -562,4 +728,4 @@ SELECT * FROM fcp limit 1000 | ||||
| --    rlarp.osm_pool | ||||
| --SELECT * FROM ins; | ||||
| -- | ||||
| --COMMIT; | ||||
| COMMIT; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user