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


#set ($rez1 = $db.eval("
SELECT ourpension.f_merge_year_tax_deduction(
    CAST(NULLIF(CAST(:p_application_termination_contract_id AS text), '') AS integer),
    CAST(CASE WHEN CAST(:p_date AS text) = '9999-99-99' OR CAST(:p_date AS text) = '' THEN NULL
         ELSE CAST(:p_date AS text) END AS date),
    CAST(NULLIF(CAST(:p_individual_id AS text), '') AS integer),
    (select m_nv.value from ourpension.max_year_tax_deduction m_nv where m_nv.year = :p_year),
    (select coalesce(sum_by_year.value, 0)
     from ourpension.max_year_tax_deduction m_nv
     left join (
         select date_part('year', t.period_date) as y, sum(t.amount) as value
         from ourpension.contract c
         join ourpension.sharer sh on c.id = sh.contract_id
         join ourpension.application_termination_contract atc on atc.sharer_id = sh.id
         join mgr.ft_dwh_get__pension_account_operation(
             jsonb_build_object('p_sPensionAccountId', sh.sharer_id_1c, 'p_sServiceType', c.service_type)
         ) t on true
         where atc.id = :p_application_termination_contract_id
         and case 
             when c.service_type = 'NPO' then t.operation_type_name in ('Ч/з банк', 'От работодателя')
             when c.service_type = 'PDS' then t.operation_type_name = 'Сберегательные взносы'
             else false 
         end
         group by y
     ) sum_by_year on sum_by_year.y = m_nv.year and sum_by_year.value >= 0
     where m_nv.year = :p_year),
    CAST(CASE WHEN CAST(:p_sum_tax_deduction AS text) = '-1' OR CAST(:p_sum_tax_deduction AS text) = '' THEN NULL
         ELSE CAST(:p_sum_tax_deduction AS text) END AS numeric),
    CAST(:p_type AS text),
    CAST(NULLIF(CAST(:p_year AS text), '') AS integer),
    CAST(:username AS text),
    CAST(NULLIF(CAST(:user_id AS text), '') AS integer),
    CAST(NULLIF(CAST(:p_batch_id AS text), '') AS integer)
)
"))