----takes 2 DBA's and returns the channel----------
CREATE OR REPLACE FUNCTION rlarp.get_cust(billcode text, shipcode text)
RETURNS jsonb
LANGUAGE plpgsql AS
$func$
DECLARE
    _chan         text;
    _chantp       text;
    _bill_class   text;
    _ship_class   text;
    _bill_dba     text;
    _ship_dba     text;
    _cust         text;
    _bill_curr    text;
    _bill_rate    numeric;
    _crec         jsonb;
    _ret          jsonb;
    _record       jsonb;

BEGIN
    SELECT jsonb_agg(row_to_json(c)::jsonb) INTO _crec FROM rlarp.cust c WHERE code IN (billcode, shipcode);
    
    --RAISE NOTICE '%', jsonb_pretty(_crec);

    FOR _record IN SELECT * FROM jsonb_array_elements(_crec)
    LOOP
        -- Check if the record is for billcode or shipcode and assign values accordingly
        IF (_record->>'code')::text = billcode THEN
            _bill_dba := (_record->>'dba')::text;
            _bill_class := (_record->>'cclass')::text;
            _bill_curr := (_record->>'currency')::text;
            _bill_rate := (_record->>'fxcurr')::text;
            -- Add other billcode related assignments here
        END IF;

        IF (_record->>'code')::text = shipcode THEN
            _ship_dba := (_record->>'dba')::text;
            _ship_class := (_record->>'cclass')::text;
            -- Add other shipcode related assignments here
        END IF;
    END LOOP;

    SELECT
        CASE WHEN SUBSTRING(_bill_class,2,3) = 'DIS' 
            THEN CASE WHEN SUBSTRING(_ship_class,2,3) = 'DIS' THEN 'WHS' ELSE 'DRP' END
            ELSE 'DIR'
        END
    INTO
        _chan;

    SELECT
        CASE WHEN SUBSTRING(_bill_class,2,3) = 'DIS' 
            THEN CASE WHEN SUBSTRING(_ship_class,2,3) = 'DIS' THEN 'DISTRIBUTOR' ELSE 'DISTRIB DROP SHIP' END
            ELSE 'DIRECT'
        END
    INTO
        _chantp;

    SELECT
        CASE WHEN _chan = 'DRP' THEN _ship_dba ELSE _bill_dba END
    INTO
        _cust;

    _ret := jsonb_build_object('customer',
                jsonb_build_object(
                    'cust',_cust,
                    'chan',_chan,
                    'chantp',_chantp,
                    'curr',_bill_curr,
                    'fxrate',_bill_rate,
                    'bill_dba',_bill_dba,
                    'ship_dba',_ship_dba
                )
    );

    RETURN _ret;

END
$func$;
