From eaf91fbacf030505fa4ecc174f784cfeeafcb66b Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Tue, 17 Oct 2023 16:06:42 -0400 Subject: [PATCH] vault backup: 2023-10-17 16:06:42 --- sql/budgetc.sql | 100 +++++++++++++++++++++----- sql/prep_budget.sql | 113 +++++++++++++++++++++++++++++ sql/schema.pg.sql | 26 ++++++- sql/snap_rep.sql | 172 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 390 insertions(+), 21 deletions(-) create mode 100644 sql/prep_budget.sql create mode 100644 sql/snap_rep.sql diff --git a/sql/budgetc.sql b/sql/budgetc.sql index 10f6e02..4dac1c9 100644 --- a/sql/budgetc.sql +++ b/sql/budgetc.sql @@ -1,20 +1,82 @@ -WITH x AS ( - SELECT - version, - oseas, - customer, - sum(sales_usd), - sum(pounds) - --string_agg(distinct mold,', ') - FROM b - left outer join rlarp.molds m ON - m.stlc = b.mold - WHERE - oseas = 2024 - AND version = 'Forecats' - GROUP BY - version, - oseas, - customer +WITH +act as ( +SELECT + bill_dba + ,ship_dba + ,dsm + --,os.glec + --,m.biggroup + --,os.priceg + ,COALESCE(sum(pounds) filter (WHERE sseas = 2023 AND version = 'Actual' AND SUBSTRING(smon,1,2) <= '08'),0) "Actual 2023" + ,COALESCE(sum(pounds) filter (WHERE sseas = 2024 AND version = 'Actual'),0) "Actual 2024" + ,COALESCE(sum(pounds) filter (WHERE version = 'Actual' AND ostatus LIKE 'Open%' AND rseas <= 2024),0) "Open Ord" + ,COALESCE(sum(pounds) filter (WHERE version = 'Quotes'),0) "Quotes" +FROM + rlarp.osm_stack os + LEFT OUTER JOIN rlarp.molds m ON + m.stlc = substring(os.product ,1,8) +WHERE + ( + ( + sseas IN (2023,2024) + AND version = 'Actual' + AND ostatus = 'Shipped' + ) + OR ( + version = 'Quotes' + AND odate >= '2023-05-01'::date + ) + OR (ostatus LIKE 'Open%') + ) + AND calc_status <> 'CANCELED' + AND substring(os.glec,1,1) <= '2' + AND os.fs_line = '41010' + AND COALESCE(ship_dba,'') <> '' +GROUP BY + bill_dba + ,ship_dba + ,dsm + --,os.glec + --,m.biggroup + --,os.priceg ) -SELECT * FROM X +,bgt AS ( + SELECT + bill_dba + ,ship_dba + ,dsm + ,sum(sales_usd) sales + ,sum(pounds) pounds + --string_agg(distinct mold,', ') + FROM + rlarp.osm_stack + WHERE + version = 'Budget' + AND oseas = '2024' + GROUP BY + bill_dba + ,ship_dba + ,dsm +) +,agg AS ( + SELECT + COALESCE(act.bill_dba,TRIM(bgt.bill_dba)) bill_dba + ,COALESCE(act.ship_dba,TRIM(bgt.ship_dba)) ship_dba + ,COALESCE(act.dsm ,TRIM(bgt.dsm )) dsm + ,SUM(bgt.pounds ) "Budget 2024" + ,SUM(act."Actual 2023") "Actual 2023" + ,SUM(act."Actual 2024") "Actual 2024" + ,SUM(act."Open Ord" ) "Open Ord" + ,SUM(act."Quotes" ) "Quotes" + FROM + act + FULL OUTER JOIN bgt ON + TRIM(bgt.bill_dba) = act.bill_dba + AND TRIM(bgt.ship_dba) = act.ship_dba + AND TRIM(bgt.dsm ) = act.dsm + GROUP BY + COALESCE(act.bill_dba,TRIM(bgt.bill_dba)) + ,COALESCE(act.ship_dba,TRIM(bgt.ship_dba)) + ,COALESCE(act.dsm ,TRIM(bgt.dsm )) +) +SELECT * FROM agg diff --git a/sql/prep_budget.sql b/sql/prep_budget.sql new file mode 100644 index 0000000..264ff8e --- /dev/null +++ b/sql/prep_budget.sql @@ -0,0 +1,113 @@ +DELETE FROM rlarp.osmp where version = 'b24r1'; + +INSERT INTO + rlarp.osmp +SELECT + ordnum + ,NULL::integer + ,NULL::integer + ,NULL::integer + ,invnum + ,NULL::integer + ,quoten + ,NULL::integer + ,NULL::date + ,NULL::date + ,NULL::date + ,NULL::date + ,NULL::date + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::jsonb + ,NULL::text + ,plnt + ,promo + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,bill_class + ,bill_cust + ,NULL::text + ,NULL::text + ,ship_class + ,ship_cust + ,NULL::text + ,NULL::text + ,NULL::text + ,bill_dba + ,ship_dba + ,geo + ,chan + ,chansub + ,NULL::text + ,NULL::text + ,NULL::text + ,bill_ctry + ,bill_prov + ,bill_post + ,dest_ctry + ,dest_prov + ,dest_post + ,part + ,mold + ,colcd + ,colgrp + ,coltierd + ,NULL::text + ,sizc + ,uomp + ,suffixd + ,accs_ps + ,brnd + ,majgd + ,mingd + ,majsd + ,minsd + ,NULL::text + ,NULL::text + ,glec + ,NULL::text + ,clss + ,NULL::text + ,NULL::text + ,NULL::text + ,NULL::text + ,case when coalesce(qty,0) = 0 then 0 else pounds/qty end + ,pallets + ,plcd + ,fs_line + ,'US' + ,1 + ,'US' + ,1 + ,qty + ,sales_usd + ,NULL::numeric + ,NULL::numeric + ,NULL::numeric + ,NULL::numeric + ,stdcost_usd + ,stdcost_cur_usd + ,NULL::numeric + ,calc_status + ,flag + ,odate + ,oseas + ,sdate + ,sseas + ,rdate + ,rseas + ,pdate + ,pseas + ,'b24r1' + ,iter +FROM + public.b; diff --git a/sql/schema.pg.sql b/sql/schema.pg.sql index 4ef173b..cd3a4dd 100644 --- a/sql/schema.pg.sql +++ b/sql/schema.pg.sql @@ -23,7 +23,7 @@ DROP MATERIALIZED VIEW IF EXISTS rlarp.sales_walk_agg ; CREATE MATERIALIZED VIEW rlarp.sales_walk_agg AS WITH -agg as ( +act as ( SELECT bill_dba ,ship_dba @@ -64,7 +64,29 @@ GROUP BY --,m.biggroup --,os.priceg ) -SELECT * FROM agg; +,bgt AS ( + SELECT + bill_dba + ,ship_dba + ,dsm + ,sum(sales_usd) + ,sum(pounds) + --string_agg(distinct mold,', ') + FROM b + left outer join rlarp.molds m ON + m.stlc = b.mold + WHERE + oseas = 2024 + AND version = 'Forecats' + GROUP BY + version, + oseas, + customer +) +,agg AS ( + SELECT +) +SELECT * FROM agg ------------------------------------------sales walk------------------------------------------------------- CREATE OR REPLACE VIEW rlarp.sales_walk AS diff --git a/sql/snap_rep.sql b/sql/snap_rep.sql new file mode 100644 index 0000000..58908dc --- /dev/null +++ b/sql/snap_rep.sql @@ -0,0 +1,172 @@ +----------------------------SET BILL-TO REP------------------------------------ + +UPDATE + public.b S +SET + BILL_REP = C.BVSALM + ,BILL_CLASS = C.BVCLAS +FROM + LGDAT.CUST C +WHERE + C.BVCUST = S.BILL_CUST + AND ( + COALESCE(S.BILL_REP,'') <> C.BVSALM + OR COALESCE(S.BILL_CLASS,'') <> C.BVCLAS + ); + +----------------------------SET SHIP-TO REP------------------------------------ + +UPDATE + public.b S +SET + SHIP_REP = C.BVSALM + ,SHIP_CLASS = C.BVCLAS +FROM + LGDAT.CUST C +WHERE + C.BVCUST = S.SHIP_CUST + AND ( + COALESCE(S.SHIP_REP,'') <> C.BVSALM + OR COALESCE(S.SHIP_CLASS,'') <> C.BVCLAS + ); + +----------------------------SET BILLTO GROUP------------------------------------ + +UPDATE + public.b O +SET + BILL_DBA = CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END +FROM + LGDAT.CUST C +WHERE + C.BVCUST = O.BILL_CUST + AND CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END <> O.ACCOUNT; + + +----------------------------SET SHIPTO GROUP------------------------------------ + +UPDATE + public.b O +SET + SHIP_DBA = CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END +FROM + LGDAT.CUST C +WHERE + C.BVCUST = O.SHIP_CUST + AND CASE BVADR6 WHEN '' THEN BVNAME ELSE BVADR6 END <> O.SHIPGRP; + + +---------------------------SET GEOGRAPHY---------------------------------------- + +UPDATE + public.b o +SET + geo = t.geo +FROM + rlarp.ffterr t +WHERE + t.CTRY = o.DEST_CTRY + AND t.PROV = o.DEST_PROV + AND o.GEO <> t.GEO; + + +---------------------------SET CHANNEL----------------------------------------- + + +UPDATE + public.b +SET + CHAN = CASE SUBSTRING(BILL_CLASS,2,3) + --if the bill to class is ditsributor, then it's either warehouse or drop + WHEN 'DIS' THEN + --if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse + CASE SUBSTRING(SHIP_CLASS,2,3) + WHEN 'DIS' THEN 'WHS' + ELSE 'DRP' + END + --CASE WHEN RTRIM(SUBSTRING(LTRIM(SC.BVADR7)||SC.BVNAME,1,30)) = RTRIM(SUBSTRING(LTRIM(BC.BVADR7)||BC.BVNAME,1,30)) THEN 'DIS' ELSE 'DRP' END + --everything else does not involve a distributor and is considered direct + ELSE 'DIR' + END, + CHANSUB = CASE SUBSTRING(BILL_CLASS,2,3) + WHEN 'DIS' THEN + --if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse + CASE SUBSTRING(SHIP_CLASS,2,3) + WHEN 'DIS' THEN 'WHS' + ELSE CASE SUBSTRING(SHIP_CLASS,1,1) WHEN 'R' THEN 'RDP' ELSE 'DRP' END + END + WHEN 'MAS' THEN 'RMN' + WHEN 'NAT' THEN 'RMN' + ELSE CASE SUBSTRING(SHIP_CLASS,1,1) WHEN 'R' THEN 'RDI' ELSE 'DIR' END + END +WHERE + COALESCE(CHAN,'') <> CASE SUBSTRING(BILL_CLASS,2,3) + --if the bill to class is ditsributor, then it's either warehouse or drop + WHEN 'DIS' THEN + --if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse + CASE SUBSTRING(SHIP_CLASS,2,3) + WHEN 'DIS' THEN 'WHS' + ELSE 'DRP' + END + --CASE WHEN RTRIM(SUBSTRING(LTRIM(SC.BVADR7)||SC.BVNAME,1,30)) = RTRIM(SUBSTRING(LTRIM(BC.BVADR7)||BC.BVNAME,1,30)) THEN 'DIS' ELSE 'DRP' END + --everything else does not involve a distributor and is considered direct + ELSE 'DIR' + END + OR + COALESCE(CHANSUB,'') <> CASE SUBSTRING(BILL_CLASS,2,3) + WHEN 'DIS' THEN + --if the ship-to is a different name than the bill-to then it's drop, otherwise it's warehouse + CASE SUBSTRING(SHIP_CLASS,2,3) + WHEN 'DIS' THEN 'WHS' + ELSE CASE SUBSTRING(SHIP_CLASS,1,1) WHEN 'R' THEN 'RDP' ELSE 'DRP' END + END + WHEN 'MAS' THEN 'RMN' + WHEN 'NAT' THEN 'RMN' + ELSE CASE SUBSTRING(SHIP_CLASS,1,1) WHEN 'R' THEN 'RDI' ELSE 'DIR' END + END; + + +---------------------------SET QUOTA REP--------------------------------------- + + +UPDATE + public.b S +SET + DSM = CR.QUOTA_REP +FROM +( + SELECT DISTINCT + VERSION, + COALESCE(GLEC,'') GLEC, + SUBSTRING(mingd,1,3), + BILL_CUST, + SHIP_CUST, + ------------quota rep column-------------- + CASE WHEN COALESCE(SUBSTRING(mingd,1,3),'') = 'B52' THEN 'PW' ELSE + --if the gl expense code is 1RE use the retail rep assigned to the bill-to customer if available + CASE WHEN COALESCE(glec,'') = '1RE' AND COALESCE(cu.currep,'') <> '' THEN + cu.currep + --default logic + ELSE + CASE SUBSTR(bill_class,2,3) + WHEN 'DIS' THEN + ship_rep + ELSE + bill_rep + END + END + END QUOTA_REP + FROM + public.b S + LEFT OUTER JOIN LGDAT.CUST ON + BVCUST = BILL_CUST + LEFT OUTER JOIN lgpgm.usrcust cu ON + cu.cucust = s.bill_cust + ) CR +WHERE + CR.VERSION = S.VERSION + AND CR.GLEC = COALESCE(S.GLEC,'') + AND CR.SUBSTRING(mingd,1,3) = S.SUBSTRING(mingd,1,3) + AND CR.BILL_CUST = S.BILL_CUST + AND CR.SHIP_CUST = S.SHIP_CUST + AND COALESCE(S.DSM,'') <> CR.QUOTA_REP;