#set ($sharer = $db.find("
select sh.id as sharer_id,
sh.sharer_id_1c,
c.service_type
from ourpension.application_termination_contract atc
join ourpension.sharer sh on sh.id = atc.sharer_id
join ourpension.contract c on c.id = sh.contract_id
where atc.id = :p_application_termination_contract_id
"))
#set ($jsonParam = '{"p_sPensionAccountId":"' + $sharer.sharer_id_1c + '", "p_sServiceType":"' + $sharer.service_type + '"}')
#set ($data = $db.find("
with sum_by_year (year, value) as (
select date_part('year', t.period_date) y,
sum(t.amount) op_y_total
from ourpension.contract c
join ourpension.sharer sh on c.id = sh.contract_id
join mgr.ft_dwh_get__pension_account_operation(cast('$jsonParam' as jsonb)) t on true
where sh.id = $sharer.sharer_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
)
select coalesce(sum_by_year.value, 0) as sum_income,
m_nv.value as max_tax_deduction
from ourpension.max_year_tax_deduction m_nv
left join sum_by_year on sum_by_year.year = m_nv.year
and sum_by_year.value >= 0
where m_nv.year = :p_year
"))