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$