BEGIN;

--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
    quota_rep_descr = (regexp_match(r.repp,'.* - (.*)$'))[1]
    ,director = r.director
FROM
    rlarp.repc r
WHERE
    r.rcode = o.dsm
    AND (
        quota_rep_descr <> (regexp_match(r.repp,'.* - (.*)$'))[1]
        OR o.director <> r.director
    );
COMMIT;  
