Annotation: core.get_party_code

CREATE OR REPLACE FUNCTION core.get_party_code(text, text, text)
RETURNS text

Information: core.get_party_code

Schema core
Function Name get_party_code
Arguments text, text, text
Owner postgres
Result Type text
Description

Implementation: core.get_party_code

CREATE OR REPLACE FUNCTION core.get_party_code(text, text, text)
 RETURNS text
 LANGUAGE plpgsql
AS $function$
    DECLARE _party_code TEXT;
BEGIN
    SELECT INTO 
        _party_code 
            party_code
    FROM
        core.parties
    WHERE
        party_code LIKE 
            UPPER(left($1,2) ||
            CASE
                WHEN $2 IS NULL or $2 = '' 
                THEN left($3,3)
            ELSE 
                left($2,1) || left($3,2)
            END 
            || '%')
    ORDER BY party_code desc
    LIMIT 1;

    _party_code :=
                    UPPER
                    (
                        left($1,2)||
                        CASE
                            WHEN $2 IS NULL or $2 = '' 
                            THEN left($3,3)
                        ELSE 
                            left($2,1)||left($3,2)
                        END
                    ) 
                    || '-' ||
                    CASE
                        WHEN _party_code IS NULL 
                        THEN '0001'
                    ELSE 
                        to_char(CAST(right(_party_code,4) AS integer)+1,'FM0000')
                    END;
    RETURN _party_code;
END;
$function$