populate dsm when swapping customers, rework pool quate rep snap

This commit is contained in:
Paul Trowbridge 2021-04-16 13:57:32 -04:00
parent d541ee16cc
commit e3722193c5
2 changed files with 51 additions and 62 deletions

View File

@ -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;

View File

@ -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