Загрузка данных


CREATE OR REPLACE FUNCTION integration.get_available_applications_api(id text)
RETURNS text
LANGUAGE plpgsql
AS $function$
DECLARE
    row_data jsonb;
    applications text[];
    result_json json;
    v_id int;

    -- Новые переменные для УНВ
    v_apps jsonb;
    v_unv_data jsonb;
    v_unv_available boolean;
BEGIN
    v_id := (id::json ->> 'id')::int;

    -- Сохраняем всю существующую логику доступности заявлений
    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 :=
        jsonb_array_length(
            COALESCE(v_unv_data -> 'contracts', '[]'::jsonb)
        ) > 0;

    -- Добавляем к прежнему ответу только два новых поля
    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;

/*
    select row_to_json(t)
    into row_data
    from ourpension.f_get_avialable_application(v_id) t;

    select array(
        select key
        from jsonb_each_text(row_data)
        where value = 'true'
        --and key in ('pp', 'rv', 'np_spv')
    )
    into applications;

    return array_to_json(applications)::text;
*/
END;
$function$;