diff --git a/build/snap_cust_pool.sql b/build/snap_cust_pool.sql index dd6f565..937692b 100644 --- a/build/snap_cust_pool.sql +++ b/build/snap_cust_pool.sql @@ -1,70 +1,59 @@ BEGIN; ---SELECT dsm, director, quota_rep_descr, billto_group, shipto_group, sum(value_usd ), count(*) from rlarp.osm_pool where order_season = 2021 group by dsm, director, quota_rep_descr, billto_group, shipto_group; +--forego setting other customer attributes as they are not stored in osm_pool anyways + +UPDATE + RLARP.OSM_POOL S +SET + DSM = CR.QUOTA_REP +FROM +( + SELECT DISTINCT + VERSION, + COALESCE(SEGM,'') SEGM, + MING_DESCR, + BILL_CUST_DESCR, + SHIP_CUST_DESCR, + ------------quota rep column-------------- + CASE WHEN COALESCE(SUBSTRING(ming_descr,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(segm,'') = 'Retail' AND COALESCE(cu.currep,'') <> '' THEN + cu.currep + --default logic + ELSE + CASE SUBSTR(bc.bvclas,2,3) + WHEN 'DIS' THEN + sc.bvsalm + ELSE + bc.bvsalm + END + END + END QUOTA_REP + FROM + RLARP.OSM_POOL S + LEFT OUTER JOIN LGDAT.CUST BC ON + BC.BVCUST = (regexp_match(S.bill_cust_descr,'(.*) - .*'))[1] + LEFT OUTER JOIN LGDAT.CUST SC ON + SC.BVCUST = (regexp_match(S.ship_cust_descr,'(.*) - .*'))[1] + LEFT OUTER JOIN lgpgm.usrcust cu ON + cu.cucust = (regexp_match(S.bill_cust_descr,'(.*) - .*'))[1] + ) CR +WHERE + CR.VERSION = S.VERSION + AND CR.SEGM = COALESCE(S.SEGM,'') + AND CR.MING_DESCR = S.MING_DESCR + AND CR.BILL_CUST_DESCR = S.BILL_CUST_DESCR + AND CR.SHIP_CUST_DESCR = S.SHIP_CUST_DESCR + AND COALESCE(S.DSM,'') <> CR.QUOTA_REP; UPDATE rlarp.osm_pool o SET - chan = CASE SUBSTRING(b.bvclas,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(s.bvclas,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(b.bvclas,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(s.bvclas,2,3) - WHEN 'DIS' THEN 'WHS' - ELSE CASE SUBSTRING(s.bvclas,1,1) WHEN 'R' THEN 'RDP' ELSE 'DRP' END - END - WHEN 'MAS' THEN 'RMN' - WHEN 'NAT' THEN 'RMN' - ELSE CASE SUBSTRING(s.bvclas,1,1) WHEN 'R' THEN 'RDI' ELSE 'DIR' END - END, - dsm = - ------------quota rep column-------------- - CASE WHEN COALESCE(substring(ming_descr,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(o.segm,'') = 'Retail' AND COALESCE((SELECT currep FROM lgpgm.usrcust where cucust = b.bvcust),'') <> '' - THEN - (SELECT currep FROM lgpgm.usrcust where cucust = b.bvcust) - --default logic - ELSE - CASE SUBSTR(b.bvclas,2,3) - WHEN 'DIS' THEN s.bvsalm - ELSE b.bvsalm - END - END - END, - billto_group = CASE b.bvadr6 WHEN '' THEN b.bvname ELSE b.bvadr6 END, - shipto_group = CASE s.bvadr6 WHEN '' THEN s.bvname ELSE s.bvadr6 END + quota_rep_descr = (regexp_match(r.repp,'.* - (.*)$'))[1] FROM - lgdat.cust b, - lgdat.cust s + rlarp.repc r WHERE - b.bvcust = rtrim(substring(o.bill_cust_descr,1,8)) - AND s.bvcust = rtrim(substring(o.ship_cust_descr,1,8)); ---BEGIN; - -UPDATE - rlarp.osm_pool o -SET - quota_rep_descr = c.a30 - ,director = COALESCE(Q.DIR,'Other') -FROM - lgdat.code c - ,rlarp.qrh q -WHERE - LTRIM(RTRIM(c.a9)) = o.dsm - and c.a2 = 'MM' - AND q.qr = LTRIM(RTRIM(c.a9)); - + r.rcode = o.dsm + AND quota_rep_descr <> (regexp_match(r.repp,'.* - (.*)$'))[1]; + COMMIT; ---ROLLBACK; diff --git a/route_sql/swap_cust.sql b/route_sql/swap_cust.sql index ae52d1c..ea787a2 100644 --- a/route_sql/swap_cust.sql +++ b/route_sql/swap_cust.sql @@ -135,7 +135,7 @@ target AS (SELECT $$swap_doc$$::jsonb swap) ,o.terms ,COALESCE(c.bill_r||' - '||c.bill_dba,o.bill_cust_descr) bill_cust_descr ,COALESCE(c.ship_r||' - '||c.ship_dba,o.ship_cust_descr) ship_cust_descr - ,o.dsm + ,r.rcode dsm ,(regexp_match(r.repp,'.* - (.*)$'))[1] quota_rep_descr ,r.director ,COALESCE(c.bill_dba,o.billto_group) billto_group