populate dsm when swapping customers, rework pool quate rep snap
This commit is contained in:
		
							parent
							
								
									d541ee16cc
								
							
						
					
					
						commit
						e3722193c5
					
				@ -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;
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user