#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)
)
"))