CREATE OR REPLACE FUNCTION core.update_shipping_address_code_trigger()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
DECLARE _counter integer;
BEGIN
IF TG_OP='INSERT' THEN
SELECT COALESCE(MAX(shipping_address_code::integer), 0) + 1
INTO _counter
FROM core.shipping_addresses
WHERE party_id=NEW.party_id;
NEW.shipping_address_code := trim(to_char(_counter, '000'));
RETURN NEW;
END IF;
END
$function$