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


1)
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 ('{"p_sPensionAccountId":"' || sh.sharer_id_1c || '", "p_sServiceType":"' || c.service_type || '"}' as jsonb)) t on true
  where sh.id = :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
order by y)

select m_nv.year, 'NONE' as type, coalesce(sum_by_year.value,0) as sum_income, null as sum_tax_deduction, null as date, 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 >= (
	select cast (date_part('year', c.date) as integer ) 
	from ourpension.contract c 
	join ourpension.sharer sh on c.id = sh.contract_id and sh.id = :sharer_id)
	order by m_nv.year

2)
FROM ourpension.application_termination_contract atc
                            join ourpension.sharer sh on atc.sharer_id = sh.id
                            join ourpension.contract c on c.id = sh.contract_id
                            join mgr.ft_dwh_get__pension_account_operation(cast ('{"p_sPensionAccountId":"' || sh.sharer_id_1c || '", "p_sServiceType":"' || c.service_type || '"}' as jsonb)) t on true
                            join ourpension.max_year_tax_deduction m_nv on m_nv.year = :p_year and sum_by_year.value >=0
                    WHERE atc.id = :p_application_termination_contract_id