Загрузка данных
with ops_sharer(id/*, individual_id*/, individual_death_date) as NOT MATERIALIZED (
select s.id/*, s.individual_id*/, death_info.death_date
from ourpension.sharer s
join ourpension.contract c on s.contract_id = c.id
join report.dia_param p on true
join lateral (
select a.death_date
from ourpension.application_death_info a
where a.individual_id = s.individual_id
and a.accepted is not null
and a.canceled is null
and a.rejected is null
order by a.version desc
limit 1
)death_info on true
left join lateral(
select d.sharer_id
from back_office.ops_transfer_details d
join back_office.ops_transfer_register tr on tr.id = d.ops_transfer_register_id
join back_office.operation o on o.ops_transfer_register_id = tr.id
where d.sharer_id = s.id
and o.approved is not null
/*and o.deleted is null and */
and o.effective_date <= p.report_date
limit 1
)transfer on true
where c.service_type = 'OPS'
and death_info.death_date <= p.report_date
and transfer.sharer_id is null
),t_balance_all as (
select
da.owner_sharer_id as sharer_id,
sum(t.value) balance,
sum(case when dat.mnemonics in ('ОПС', 'ОПС ГВ', 'ОПС КП', 'Р ПП ОПС') then t.value else 0 end) ops,
sum(case when dat.mnemonics in ('ОПС ИД','ОПС ФР', 'Р ПП ОПС ИД') then t.value else 0 end) ops_id,
sum(case when dat.mnemonics in ('ДПС Г', 'ДПС Г ГВ', 'ДПС Г КП', 'Р ПП ДПС Г') then t.value else 0 end) dps_g,
sum(case when dat.mnemonics in ('ДПС Г ИД', 'ДПС Г ФР', 'Р ПП ДПС Г ИД') then t.value else 0 end) dps_g_id,
sum(case when dat.mnemonics in ('ДПС Л', 'ДПС Л ГВ', 'ДПС Л КП', 'Р ПП ДПС Л' ) then t.value else 0 end) dps_l,
sum(case when dat.mnemonics in ('ДПС Л ИД', 'ДПС Л ФР', 'Р ПП ДПС Л ИД') then t.value else 0 end) dps_l_id,
sum(case when dat.mnemonics in ('ДПС МК', 'ДПС МК ГВ', 'ДПС МК КП', 'Р ПП ДПС МК') then t.value else 0 end) dps_mk,
sum(case when dat.mnemonics in ('ДПС МК ИД', 'ДПС МК ФР', 'Р ПП ДПС МК ИД') then t.value else 0 end) dps_mk_id
from ops_sharer s
join back_office.account da on da.owner_sharer_id = s.id
join back_office.account_type dat on dat.id = da.account_type_id
join back_office.transaction t on t.debit_account_id = da.id
/*join back_office.operation o on o.id = t.operation_id*/
join back_office.account ca on t.credit_account_id = ca.id
join back_office.account_type cat on cat.id = ca.account_type_id
where dat.mnemonics in
('ОПС', 'ОПС ГВ', 'ОПС КП', 'Р ПП ОПС',
'ОПС ИД','ОПС ФР', 'Р ПП ОПС ИД',
'ДПС Г', 'ДПС Г ГВ', 'ДПС Г КП', 'Р ПП ДПС Г',
'ДПС Г ИД', 'ДПС Г ФР', 'Р ПП ДПС Г ИД',
'ДПС Л', 'ДПС Л ГВ', 'ДПС Л КП', 'Р ПП ДПС Л',
'ДПС Л ИД', 'ДПС Л ФР', 'Р ПП ДПС Л ИД',
'ДПС МК', 'ДПС МК ГВ', 'ДПС МК КП', 'Р ПП ДПС МК',
'ДПС МК ИД', 'ДПС МК ФР', 'Р ПП ДПС МК ИД')
and cat.mnemonics in ('Р ОПС', 'Р ОПС ИД')
group by da.owner_sharer_id
/*исходная версия без ограничения по дате операции/транзации и проверки на то что операция авторизована*/
union all
select
ca.owner_sharer_id sharer_id,
- sum(t.value) balance,
- sum(case when cat.mnemonics in ('ОПС', 'ОПС ГВ', 'ОПС КП', 'Р ПП ОПС') then t.value else 0 end) ops,
- sum(case when cat.mnemonics in ('ОПС ИД','ОПС ФР', 'Р ПП ОПС ИД') then t.value else 0 end) ops_id,
- sum(case when cat.mnemonics in ('ДПС Г', 'ДПС Г ГВ', 'ДПС Г КП', 'Р ПП ДПС Г') then t.value else 0 end) dps_g,
- sum(case when cat.mnemonics in ('ДПС Г ИД', 'ДПС Г ФР', 'Р ПП ДПС Г ИД') then t.value else 0 end) dps_g_id,
- sum(case when cat.mnemonics in ('ДПС Л', 'ДПС Л ГВ', 'ДПС Л КП', 'Р ПП ДПС Л' ) then t.value else 0 end) dps_l,
- sum(case when cat.mnemonics in ('ДПС Л ИД', 'ДПС Л ФР', 'Р ПП ДПС Л ИД') then t.value else 0 end) dps_l_id,
- sum(case when cat.mnemonics in ('ДПС МК', 'ДПС МК ГВ', 'ДПС МК КП', 'Р ПП ДПС МК') then t.value else 0 end) dps_mk,
- sum(case when cat.mnemonics in ('ДПС МК ИД', 'ДПС МК ФР', 'Р ПП ДПС МК ИД') then t.value else 0 end) dps_mk_id
from ops_sharer s
join back_office.account ca on ca.owner_sharer_id = s.id
join back_office.account_type cat on cat.id = ca.account_type_id
join back_office.transaction t on t.credit_account_id = ca.id
/*join back_office.operation o on o.id = t.operation_id*/
join back_office.account da on t.debit_account_id = da.id
join back_office.account_type dat on dat.id = da.account_type_id
where cat.mnemonics in
('ОПС', 'ОПС ГВ', 'ОПС КП', 'Р ПП ОПС',
'ОПС ИД','ОПС ФР', 'Р ПП ОПС ИД',
'ДПС Г', 'ДПС Г ГВ', 'ДПС Г КП', 'Р ПП ДПС Г',
'ДПС Г ИД', 'ДПС Г ФР', 'Р ПП ДПС Г ИД',
'ДПС Л', 'ДПС Л ГВ', 'ДПС Л КП', 'Р ПП ДПС Л',
'ДПС Л ИД', 'ДПС Л ФР', 'Р ПП ДПС Л ИД',
'ДПС МК', 'ДПС МК ГВ', 'ДПС МК КП', 'Р ПП ДПС МК',
'ДПС МК ИД', 'ДПС МК ФР', 'Р ПП ДПС МК ИД')
and dat.mnemonics in ('Р ОПС', 'Р ОПС ИД')
group by ca.owner_sharer_id
/*исходная версия без ограничения по дате операции/транзации и проверки на то что операция авторизована*/
)
insert into report.dia_rops(
id,
dia_register_id,
insurance_number,
sharer_number,
death_date,
ops,
ops_id,
dps_l,
dps_l_id,
dps_g,
dps_g_id,
dps_mk,
dps_mk_id,
total,
sharer_id
)
select
nextval('report.dia_rops_id_sequence') id,
currval('report.dia_register_id_sequence') dia_register_id,
i.insurance_number insurance_number,
s.number sharer_number,
death_info.death_date ,
b.ops,
b.ops_id,
b.dps_l,
b.dps_l_id,
b.dps_g,
b.dps_g_id,
b.dps_mk,
b.dps_mk_id,
b.balance as total,
s.id sharer_id
from
(select sharer_id, sum(ops), sum(ops_id), sum(dps_g), sum(dps_g_id), sum(dps_l), sum(dps_l_id), sum(dps_mk), sum(dps_mk_id), sum(balance)
from t_balance_all b
group by sharer_id) as b(sharer_id, ops, ops_id, dps_g, dps_g_id, dps_l, dps_l_id, dps_mk, dps_mk_id, balance)
join ourpension.sharer s on s.id = b.sharer_id
join ourpension.individual i on s.individual_id = i.id
join lateral (
select a.death_date
from ourpension.application_death_info a
where a.individual_id = s.individual_id
and a.accepted is not null
and a.canceled is null
and a.rejected is null
order by a.version desc
limit 1
)death_info on true
where b.balance <>0
update dev.unique_number
set serial_number = serial_number+1
where code = 'dia_rops'
UPDATE report.dia_register SET register_kind = 'OPS', load_end = clock_timestamp() WHERE id = currval('report.dia_register_id_sequence')