CREATE OR REPLACE FUNCTION integration.get_available_applications_api(
id text
)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE
v_id integer;
v_apps jsonb;
v_unv_data jsonb;
v_unv_available boolean;
BEGIN
/* Идентификатор клиента из входного JSON */
v_id := (id::json ->> 'id')::integer;
/* Существующий набор доступных заявлений */
v_apps :=
ourpension.f_get_available_applications(
v_id,
true
)::jsonb;
/* Доступные договоры и периоды УНВ */
v_unv_data :=
integration.get_unv_available_contracts_api(
jsonb_build_object(
'id',
v_id
)::text
)::jsonb;
/* УНВ доступен, если найден хотя бы один договор */
v_unv_available :=
COALESCE(
jsonb_array_length(
COALESCE(
v_unv_data -> 'contracts',
'[]'::jsonb
)
) > 0,
false
);
/* Добавляем УНВ к существующему ответу */
v_apps :=
v_apps ||
jsonb_build_object(
'unv',
v_unv_available,
'unv_comment',
CASE
WHEN v_unv_available
THEN ''
ELSE
'нет доступных договоров и налоговых периодов для упрощённого налогового вычета'
END
);
RETURN v_apps::text;
END;
$function$;