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


WITH report_data as (
SELECT
	row_number() over(order by oad.id) as rn,
	im.id as individual_id,
  im.insurance_number as snils,
	c.id as contract_id,
  c.number as contract_number,
  c.date as contract_date,
	f.name_in_pfr,
  concat(im.last_name, ' ', im.first_name, ' ', im.middle_name) as fio_m,
  concat(ip.last_name, ' ', ip.first_name, ' ', ip.middle_name) as fio_p,
  oad.number as number,
  oad.date as date,
  coalesce(oadp.payment_value,0) as payment_value,
  coalesce(b.balance,0) as balance,
  coalesce(bm.balance,0) as balance_rs,
  coalesce(dr.ops,0)+coalesce(dr.ops_id,0) as rops,
  concat(a.last_name, ' ', substr(a.first_name,1,1), '. ', substr(a.middle_name,1,1)||'.') as fio_a 
FROM back_office.ops_assignee_decision oad 
join ourpension.ops_assignee_payment oap
  on oap.id = oad.ops_assignee_payment_id
join ourpension.sharer sh 
  on sh.id = oap.sharer_id
join ourpension.contract c 
  on c.id = sh.contract_id
left join ourpension.fund f
  on f.id = c.fund_id
join ourpension.individual im
  on im.id = sh.individual_id 
join ourpension.individual ip
  on ip.id = oap.assignee_id
join back_office.ops_assignee_decision_payment oadp
  on oadp.ops_assignee_decision_id = oad.id
join ourpension.agent a 
  on a.id = oad.agent_id
left join report.dia_rops dr
       on dr.dia_register_id = :dia_register_id
			and dr.insurance_number = im.insurance_number
left join lateral (
	   select a.owner_sharer_id , sum(b.total_credit)- sum(b.total_debit) as balance
     from  back_office."account" a 
     join back_office.balance b 
       on b.account_id = a.id
     where current_date between b.start_date and b.end_date 
       and a.owner_sharer_id = sh.id
     group by a.owner_sharer_id
) b on true
left join lateral (
	   select a.owner_sharer_id , sum(b.total_credit)- sum(b.total_debit) as balance
     from  back_office."account" a
	   join back_office.account_type act
       on act.id = a.account_type_id
     join back_office.account_type_group g
       on g.id = act.account_type_group_id
     join back_office.balance b 
       on b.account_id = a.id
     where current_date between b.start_date and b.end_date
	     and g.mnemonics = 'Р(С)'
       and a.owner_sharer_id = sh.id
     group by a.owner_sharer_id
) bm on true
WHERE :isShow
	and oad.accepted is not null
)
SELECT
  r.rn as rn,
  concat('<a target="_blank" href="view?viewCode=Client_list&id=', r.individual_id, '">', r.snils, '</a>') as snils,
  concat('<a target="_blank" href="view?viewCode=7HPZX8vF&id=', r.contract_id, '">', r.contract_number, '</a>') as contract_number,
  to_char(r.contract_date, 'DD.MM.YYYY') as contract_date,
  r.name_in_pfr as name_in_pfr,
  r.fio_m as fio_m,
  r.fio_p as fio_p,
  r.number as number,
  to_char(r.date, 'DD.MM.YYYY') as date,
  trim(to_char(coalesce(r.payment_value, 0), '99 999 999 999 999 990D99')) as payment_value,
  trim(to_char(coalesce(r.payment_value, 0), '99 999 999 999 999 990D99')) as payment_val,
  trim(to_char(coalesce(r.balance, 0), '99 999 999 999 999 990D99')) as balance,
  trim(to_char(coalesce(r.balance_rs, 0), '99 999 999 999 999 990D99')) as balance_rs,
  trim(to_char(coalesce(r.rops,0), '99 999 999 999 999 990D99')) as rops,
  trim(to_char(r.balance+r.balance_rs+r.rops - r.payment_value, '99 999 999 999 999 990D99')) as total,
  r.fio_a as fio_a 
FROM report_data r