WITH 
target AS (select target_vol vincr, target_prc pincr)
,basemix AS (
    SELECT
        plnt          ---master data 
        ,0::numeric(11,0) "ddord#"          --0 
        ,0::numeric(11,0) "dditm#"          --0 
        ,0::numeric(11,0) "fgbol#"          --0 
        ,0::numeric(11,0) "fgent#"          --0 
        ,0::numeric(9,0) "diinv#"          --0 
        ,0::numeric(3,0) "dilin#"          --0 
        ,null::text promo          --history date mix
        ,null::text return_reas          --0 
        ,terms
        ,''::text custpo          --0 
        ,'I' dhincr          --0 
        ,null::numeric diext
        ,null::numeric ditdis
        ,null::date dcodat          --calculated date mix
        ,null::date ddqdat          --calculated date mix
        ,null::date dcmdat          --calculated date mix
        ,null::date dhidat          --calculated date mix
        ,null::text fspr          --calculated date mix
        ,remit_to          --master data 
        ,bill_class          --master data 
        ,bill_cust          --history cust mix
        ,bill_rep          --master data 
        ,bill_terr          --master data 
        ,ship_class          --master data 
        ,ship_cust          --history cust mix
        ,ship_rep          --master data 
        ,ship_terr          --master data 
        ,quota_rep          --master data 
        ,account          --master data 
        ,shipgrp          --master data 
        ,geo          --master data 
        ,chan          --master data 
        ,orig_ctry          --master data 
        ,orig_prov          --master data 
        ,orig_post          --master data 
        ,dest_ctry          --master data 
        ,dest_prov          --master data 
        ,dest_post          --master data 
        ,part          --history part mix
        ,ord_gldc          --master data 
        ,majg          --master data 
        ,ming          --master data 
        ,majs          --master data 
        ,mins          --master data 
        ,gldc          --master data 
        ,glec          --master data 
        ,harm          --master data 
        ,clss          --master data 
        ,brand          --master data 
        ,assc          --master data 
        ,fs_line          --master data 
        ,r_currency          --history cust mix
        ,r_rate          --master data 
        ,c_currency          --master data 
        ,c_rate          --master data 
        ,0::numeric(15,5) ddqtoi          --0 
        ,0::numeric(15,5) ddqtsi          --0 
        ,0::numeric(15,5) fgqshp          --0 
        ,0::numeric(15,5) diqtsh          --0 
        ,sum(coalesce(fb_qty,0)) fb_qty          --history value
        ,sum(coalesce(fb_cst_loc,0)) fb_cst_loc          --history part mix
        ,sum(coalesce(fb_cst_loc_cur,0)) fb_cst_loc_cur          --master data 
        ,sum(coalesce(fb_cst_loc_fut,0)) fb_cst_loc_fut          --master data 
        ,sum(coalesce(fb_val_loc,0)) fb_val_loc          --history value
        ,sum(coalesce(fb_val_loc_pl,0)) fb_val_loc_pl          --0 
        ,calc_status          --0 
        ,flag          --0 
        ,orderdate          --history date mix
        ,requestdate          --history date mix
        ,shipdate          --history date mix
        ,adj_orderdate          --history 
        ,adj_requestdate          --history 
        ,adj_shipdate          --history 
        ,'b20' "version"          --calculated 
        ,'adjustment' iter          --calculated 
        ---------------ui columns-------------------------
        ,order_season
        ,order_month
        ,ship_season
        ,ship_month
        ,request_season
        ,request_month
        ,part_descr
        ,part_family
        ,part_group
        ,branding
        ,color
        ,segm
        ,bill_cust_descr
        ,billto_group
        ,ship_cust_descr
        ,shipto_group
        ,majg_descr
        ,ming_descr
        ,majs_descr
        ,mins_descr
        ,mod_chan
        ,mod_chansub
        ,quota_rep_descr
        ,director_descr
        ,null value_loc
        ,null value_usd
        ,null cost_loc
        ,null cost_usd
        ,null units
    FROM
        rlarp.osm_fcpool
    WHERE
        -----------------scenario----------------------------
        where_clause
        -----------------additional params-------------------
        AND calc_status||flag <> 'CLOSEDREMAINDER' --exclude short ships when building order adjustments
        AND adj_orderdate <= adj_shipdate
    GROUP BY
        plnt          ---master data 
        ,terms
        ,remit_to          --master data 
        ,bill_class          --master data 
        ,bill_cust          --history cust mix
        ,bill_rep          --master data 
        ,bill_terr          --master data 
        ,ship_class          --master data 
        ,ship_cust          --history cust mix
        ,ship_rep          --master data 
        ,ship_terr          --master data 
        ,quota_rep          --master data 
        ,account          --master data 
        ,shipgrp          --master data 
        ,geo          --master data 
        ,chan          --master data 
        ,orig_ctry          --master data 
        ,orig_prov          --master data 
        ,orig_post          --master data 
        ,dest_ctry          --master data 
        ,dest_prov          --master data 
        ,dest_post          --master data 
        ,part          --history part mix
        ,ord_gldc          --master data 
        ,majg          --master data 
        ,ming          --master data 
        ,majs          --master data 
        ,mins          --master data 
        ,gldc          --master data 
        ,glec          --master data 
        ,harm          --master data 
        ,clss          --master data 
        ,brand          --master data 
        ,assc          --master data 
        ,fs_line          --master data 
        ,r_currency          --history cust mix
        ,r_rate          --master data 
        ,c_currency          --master data 
        ,c_rate          --master data 
        ,calc_status          --0 
        ,flag          --0 
        ,orderdate          --history date mix
        ,requestdate          --history date mix
        ,shipdate          --history date mix
        ,adj_orderdate          --history 
        ,adj_requestdate          --history 
        ,adj_shipdate          --history 
        ---------------ui columns-------------------------
        ,order_season
        ,order_month
        ,ship_season
        ,ship_month
        ,request_season
        ,request_month
        ,part_descr
        ,part_family
        ,part_group
        ,branding
        ,color
        ,segm
        ,bill_cust_descr
        ,billto_group
        ,ship_cust_descr
        ,shipto_group
        ,majg_descr
        ,ming_descr
        ,majs_descr
        ,mins_descr
        ,mod_chan
        ,mod_chansub
        ,quota_rep_descr
        ,director_descr
)
,vscale AS (
    SELECT
        (SELECT vincr::numeric FROM target) incr
        ,(SELECT sum(fb_qty)::numeric FROM basemix) base
        ,(SELECT vincr::numeric FROM target)/(SELECT sum(fb_qty)::numeric FROM basemix) factor
)
--select * from vscale
,volume AS (
    SELECT
        b.plnt          --master data 
        ,b."ddord#"          --0 
        ,b."dditm#"          --0 
        ,b."fgbol#"          --0 
        ,b."fgent#"          --0 
        ,b."diinv#"          --0 
        ,b."dilin#"          --0 
        ,b.promo          --history date mix
        ,b.return_reas          --0 
        ,b.terms          --history cust mix
        ,b.custpo          --0 
        ,b.dhincr          --0 
        ,b.diext          --0 
        ,b.ditdis          --0 
        ,b.dcodat          --calculated date mix
        ,b.ddqdat          --calculated date mix
        ,b.dcmdat          --calculated date mix
        ,b.dhidat          --calculated date mix
        ,b.fspr          --calculated date mix
        ,b.remit_to          --master data 
        ,b.bill_class          --master data 
        ,b.bill_cust          --history cust mix
        ,b.bill_rep          --master data 
        ,b.bill_terr          --master data 
        ,b.ship_class          --master data 
        ,b.ship_cust          --history cust mix
        ,b.ship_rep          --master data 
        ,b.ship_terr          --master data 
        ,b.quota_rep          --master data 
        ,b.account          --master data 
        ,b.shipgrp          --master data 
        ,b.geo          --master data 
        ,b.chan          --master data 
        ,b.orig_ctry          --master data 
        ,b.orig_prov          --master data 
        ,b.orig_post          --master data 
        ,b.dest_ctry          --master data 
        ,b.dest_prov          --master data 
        ,b.dest_post          --master data 
        ,b.part          --history part mix
        ,b.ord_gldc          --master data 
        ,b.majg          --master data 
        ,b.ming          --master data 
        ,b.majs          --master data 
        ,b.mins          --master data 
        ,b.gldc          --master data 
        ,b.glec          --master data 
        ,b.harm          --master data 
        ,b.clss          --master data 
        ,b.brand          --master data 
        ,b.assc          --master data 
        ,b.fs_line          --master data 
        ,b.r_currency          --history cust mix
        ,b.r_rate          --master data 
        ,b.c_currency          --master data 
        ,b.c_rate          --master data 
        ,b.ddqtoi          --0 
        ,b.ddqtsi          --0 
        ,b.fgqshp          --0 
        ,b.diqtsh          --0 
        ,b.fb_qty*s.factor fb_qty
        ,b.fb_cst_loc*s.factor fb_cst_loc
        ,b.fb_cst_loc_cur*s.factor fb_cst_loc_cur
        ,b.fb_cst_loc_fut*s.factor fb_cst_loc_fut
        ,b.fb_val_loc*s.factor fb_val_loc
        ,b.fb_val_loc_pl*s.factor fb_val_loc_pl
        ,b.calc_status          --0 
        ,b.flag          --0 
        ,b.orderdate
        ,b.requestdate
        ,b.shipdate
        ,b.adj_orderdate
        ,b.adj_requestdate
        ,b.adj_shipdate
        ,'replace_version' "version"          --calculated 
        ,'replace_source'||' volume' iter
        -----------------------ui columns--------------------------------
        ,'replace_iterdet' iterdet
        ,$$replace_iterdef$$::jsonb iterdef
        ,b.order_season
        ,b.order_month
        ,b.ship_season
        ,b.ship_month
        ,b.request_season
        ,b.request_month
        ,b.part_descr
        ,b.part_family
        ,b.part_group
        ,b.branding
        ,b.color
        ,b.segm
        ,b.bill_cust_descr
        ,b.billto_group
        ,b.ship_cust_descr
        ,b.shipto_group
        ,b.majg_descr
        ,b.ming_descr
        ,b.majs_descr
        ,b.mins_descr
        ,b.mod_chan
        ,b.mod_chansub
        ,b.quota_rep_descr
        ,b.director_descr
        ,(b.fb_val_loc*s.factor)::numeric value_loc
        ,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
        ,(b.fb_cst_loc*s.factor)::numeric cost_loc
        ,(b.fb_cst_loc*s.factor*c_rate)::numeric cost_usd
        ,(b.fb_qty*s.factor)::numeric units
    FROM
        basemix b
        CROSS JOIN vscale s
)
,pscale AS (
    SELECT
        (SELECT pincr::numeric FROM target) incr
        ,(SELECT sum(fb_val_loc * r_rate) FROM volume) base
        ,((SELECT pincr::numeric FROM target) - (SELECT sum(fb_val_loc * r_rate) FROM volume))/(SELECT sum(fb_val_loc * r_rate) FROM volume) factor
)
--select * from pscale
,pricing AS (
    SELECT
        b.plnt          --master data 
        ,b."ddord#"          --0 
        ,b."dditm#"          --0 
        ,b."fgbol#"          --0 
        ,b."fgent#"          --0 
        ,b."diinv#"          --0 
        ,b."dilin#"          --0 
        ,b.promo          --history date mix
        ,b.return_reas          --0 
        ,b.terms          --history cust mix
        ,b.custpo          --0 
        ,b.dhincr          --0 
        ,b.diext          --0 
        ,b.ditdis          --0 
        ,b.dcodat          --calculated date mix
        ,b.ddqdat          --calculated date mix
        ,b.dcmdat          --calculated date mix
        ,b.dhidat          --calculated date mix
        ,b.fspr          --calculated date mix
        ,b.remit_to          --master data 
        ,b.bill_class          --master data 
        ,b.bill_cust          --history cust mix
        ,b.bill_rep          --master data 
        ,b.bill_terr          --master data 
        ,b.ship_class          --master data 
        ,b.ship_cust          --history cust mix
        ,b.ship_rep          --master data 
        ,b.ship_terr          --master data 
        ,b.quota_rep          --master data 
        ,b.account          --master data 
        ,b.shipgrp          --master data 
        ,b.geo          --master data 
        ,b.chan          --master data 
        ,b.orig_ctry          --master data 
        ,b.orig_prov          --master data 
        ,b.orig_post          --master data 
        ,b.dest_ctry          --master data 
        ,b.dest_prov          --master data 
        ,b.dest_post          --master data 
        ,b.part          --history part mix
        ,b.ord_gldc          --master data 
        ,b.majg          --master data 
        ,b.ming          --master data 
        ,b.majs          --master data 
        ,b.mins          --master data 
        ,b.gldc          --master data 
        ,b.glec          --master data 
        ,b.harm          --master data 
        ,b.clss          --master data 
        ,b.brand          --master data 
        ,b.assc          --master data 
        ,b.fs_line          --master data 
        ,b.r_currency          --history cust mix
        ,b.r_rate          --master data 
        ,b.c_currency          --master data 
        ,b.c_rate          --master data 
        ,b.ddqtoi          --0 
        ,b.ddqtsi          --0 
        ,b.fgqshp          --0 
        ,b.diqtsh          --0 
        ,0 fb_qty
        ,0 fb_cst_loc
        ,0 fb_cst_loc_cur
        ,0 fb_cst_loc_fut
        ,b.fb_val_loc*s.factor fb_val_loc
        ,b.fb_val_loc_pl*s.factor fb_val_loc_pl
        ,b.calc_status          --0 
        ,b.flag          --0 
        ,b.orderdate
        ,b.requestdate
        ,b.shipdate
        ,b.adj_orderdate
        ,b.adj_requestdate
        ,b.adj_shipdate
        ,'replace_version' "version"          --calculated 
        ,'replace_source'||' price' iter
        -----------------------ui columns--------------------------------
        ,'replace_iterdet' iterdet
        ,$$replace_iterdef$$::jsonb iterdef
        ,b.order_season
        ,b.order_month
        ,b.ship_season
        ,b.ship_month
        ,b.request_season
        ,b.request_month
        ,b.part_descr
        ,b.part_family
        ,b.part_group
        ,b.branding
        ,b.color
        ,b.segm
        ,b.bill_cust_descr
        ,b.billto_group
        ,b.ship_cust_descr
        ,b.shipto_group
        ,b.majg_descr
        ,b.ming_descr
        ,b.majs_descr
        ,b.mins_descr
        ,b.mod_chan
        ,b.mod_chansub
        ,b.quota_rep_descr
        ,b.director_descr
        ,(b.fb_val_loc*s.factor)::numeric value_loc
        ,(b.fb_val_loc*s.factor*r_rate)::numeric value_usd
        ,0 cost_loc
        ,0 cost_usd
        ,0 units
    FROM
        volume b
        CROSS JOIN pscale s
)
--select sum(value_usd), sum(fb_qty) from pricing
, ins AS (
    INSERT INTO rlarp.osm_fcpool (SELECT * FROM pricing UNION ALL SELECT * FROM volume) RETURNING *
)
,insagg AS (
SELECT
    bill_cust_descr
    ,billto_group
    ,ship_cust_descr
    ,shipto_group
    ,quota_rep_descr
    ,director_descr
    ,segm
    ,mod_chan
    ,mod_chansub
    ,majg_descr
    ,ming_descr
    ,majs_descr
    ,mins_descr
    ,brand
    ,part_family
    ,part_group
    ,branding
    ,color
    ,part_descr
    ,order_season
    ,order_month
    ,ship_season
    ,ship_month
    ,request_season
    ,request_month
    ,promo
    ,version
    ,iter
    ,sum(value_loc) value_loc
    ,sum(value_usd) value_usd
    ,sum(cost_loc) cost_loc
    ,sum(cost_usd) cost_usd
    ,sum(units) units
FROM
    ins
GROUP BY
    bill_cust_descr
    ,billto_group
    ,ship_cust_descr
    ,shipto_group
    ,quota_rep_descr
    ,director_descr
    ,segm
    ,mod_chan
    ,mod_chansub
    ,majg_descr
    ,ming_descr
    ,majs_descr
    ,mins_descr
    ,brand
    ,part_family
    ,part_group
    ,branding
    ,color
    ,part_descr
    ,order_season
    ,order_month
    ,ship_season
    ,ship_month
    ,request_season
    ,request_month
    ,promo
    ,version
    ,iter
)
SELECT json_agg(row_to_json(insagg)) x from insagg