Загрузка данных
WITH /* --task 45797
(id, balanceN, balance) as (
select
a.owner_sharer_id,
sum(case when atg.mnemonics = 'Н' then b.total_credit - b.total_debit end) as balanceN,
sum(b.total_credit - b.total_debit)
from back_office.account a
join back_office.account_type at on a.account_type_id = at.id
join back_office.account_type_group atg on at.account_type_group_id = atg.id
and atg.mnemonics in ('Н', 'Р(С)', 'Р(П)', 'Р(Е)', 'Р ПП', 'Р Н')
join back_office.balance b on a.id = b.account_id
and coalesce(:fEffectiveDate, current_date) between b.start_date and b.end_date
group by a.owner_sharer_id
),
*/ --end task 45797
/* br (id, balance) as (
select
a.owner_sharer_id,
sum(b.total_credit - b.total_debit)
from back_office.account a
join back_office.account_type at on a.account_type_id = at.id
join back_office.account_type_group atg on at.account_type_group_id = atg.id
and atg.mnemonics in ('Р(С)', 'Р(П)', 'Р(Е)', 'Р ПП', 'Р Н')
join back_office.balance b on a.id = b.account_id
and coalesce(:fEffectiveDate, current_date) between b.start_date and b.end_date
group by a.owner_sharer_id
),*/ /*first_deposit(sharer_id, effective_date) as (
select
a.owner_sharer_id,
min(t.effective_date)
from back_office.transaction t
join back_office.account a on t.credit_account_id = a.id
join back_office.account_type at on a.account_type_id = at.id
join back_office.account_type_group atg on at.account_type_group_id = atg.id
and atg.mnemonics in ('Н')
group by
a.owner_sharer_id
),*/
employees_list_member(employees_list_member_id, employees_list_id, sharer_id, periodicity_code, retiree, program_id, scheme_id, num) as (
select
elm.id,
el.id,
elm.sharer_id,
elm.periodicity_code,
elm.retiree,
el.program_id,
el.scheme_id,
row_number() over (partition by elm.sharer_id order by el.version desc)
from ourpension.employees_list_member elm
join ourpension.employees_list el on el.id = elm.employees_list_id
where el.accepted is not null
and el.canceled is null
and el.rejected is null
),
-- , closure_regain (sharer_closure_regain_id, sharer_id, restore_date, close_date, num) as (
-- select
-- t.id,
-- t.sharer_id,
-- t.restore_date,
-- t.close_date,
-- row_number() over (partition by t.sharer_id order by t.restore_date desc)
-- from ourpension.sharer_closure_regain t
--
-- )
cte_sharer_info as
(
SELECT
s.id,
c.id as contract_id,
c.number as contract_number,
c.date as contract_date,
c.client_type,
c.service_type,
i.insurance_number,
c.entity_id,
c.individual_id AS contract_individual,
s.number as sharer_number,
s.individual_id,
i.last_name,
i.first_name,
i.middle_name,
ourpension.current_sharer_status(s.id) as status_code,
s.open_date as sharer_date,
trim(to_char(coalesce(b1s.balance, 0) /*+ coalesce(br.balance, 0)*/, '99 999 999 999 999 990D99')) as balance,
trim(to_char(coalesce(b.balance, 0) /*+ coalesce(br.balance, 0)*/, '99 999 999 999 999 990D99')) as balance360,
trim(to_char(coalesce(b1s.balanceN, 0) /*+ coalesce(br.balance, 0)*/, '99 999 999 999 999 990D99'))
/* ||
case when security.user_has_any_roles(:user_id, string_to_array('ROLE_ADMIN',',')) then
' | ' ||
case when coalesce(b.balanceN, 0) < 999999999 then
lpad( trim(to_char(coalesce(b.balanceN, 0) /*+ coalesce(br.balance, 0)*/, '99 999 999 999 999 990D99')) , 15, chr(160))
else
trim(to_char(coalesce(b.balanceN, 0) /*+ coalesce(br.balance, 0)*/, '99 999 999 999 999 990D99'))
end
else ''
end*/
/*
trim(to_char(coalesce(b1s.balanceN, 0), '99 999 999 999 999 990D99')) || ' | ' || trim(to_char(coalesce(b.balanceN, 0), '99 999 999 999 999 990D99'))
*/ as balanceN,
to_char(coalesce(b.balanceN, 0) /*+ coalesce(br.balance, 0)*/, '99 999 999 999 999 990D99') as balanceN360,
s.close_date as sharer_close_date,
cr.name as close_reason,
clr.restore_date as regain_restore_date,
clr.close_date as regain_close_date,
i.certificate_series,
i.certificate_number,
aa.address_text as actual_address,
ar.address_text as registration_address,
ps.number as scheme_number,
c.pension_rule_id,
m.program_id,
acc.id as account_id
FROM ourpension.sharer s
join ourpension.contract c on s.contract_id = c.id
join ourpension.individual i on i.id = s.individual_id
left join ourpension.individual ii on ii.id = c.individual_id
left join ourpension.entity e on e.id = c.entity_id
left join lateral (
select *
from back_office.account ac
where ac.owner_sharer_id = s.id
order by id desc limit 1
) acc on true
-- left join b on b.id = s.id -- -- task 45797
--left join br on br.id = s.id
--left join first_deposit f on f.sharer_id = s.id
left join ourpension.contract_close_reason cr on cr.id=s.closed_reason_id
left join employees_list_member m on m.sharer_id = s.id and m.num = 1
left join ourpension.address ar on i.registration_address_id = ar.id
left join ourpension.address aa on i.actual_address_id = aa.id
left join ourpension.pension_scheme ps on ps.id = s.scheme_id
--left join closure_regain clr on clr.sharer_id = s.id and clr.num = 1
left join lateral (
select t.id sharer_closure_regain_id,
t.sharer_id sharer_id,
t.restore_date restore_date,
t.close_date close_date,
row_number() over (partition by t.sharer_id order by t.restore_date desc) num
from ourpension.sharer_closure_regain t
where t.sharer_id = s.id
) clr on true and clr.num = 1
-- task 45797
left join lateral (
select
a.owner_sharer_id as id,
sum(case when atg.mnemonics = 'Н' then b.total_credit - b.total_debit end) as balanceN,
sum(b.total_credit - b.total_debit) as balance
from back_office.account a
join back_office.account_type at on a.account_type_id = at.id
join back_office.account_type_group atg on at.account_type_group_id = atg.id
--and atg.mnemonics in ('Н', 'Р(С)', 'Р(П)', 'Р(Е)', 'Р ПП', 'Р Н')
join back_office.balance b on a.id = b.account_id
and coalesce(:fEffectiveDate, current_date) between b.start_date and b.end_date -- заменить null на :fEffectiveDate,
where a.owner_sharer_id = s.id
group by a.owner_sharer_id
) b on true
--end task 45797
--start task 63978
left join lateral(
select id, sum(balanceN) balanceN, sum(balance) balance from (
select
sh.id as id,
sum(case when atg.mnemonics = 'Н' then io.val_num end) as balanceN,
sum(io.val_num) as balance
from mgr.imp_obj io
join ourpension.sharer sh on sh.id = s.id and io.npf360_id = sh.contract_id
join back_office.account_type at on io.code = at.mnemonics
join back_office.account_type_group atg on at.account_type_group_id = atg.id
-- and atg.mnemonics in ('Н', 'Р(С)', 'Р(П)', 'Р(Е)', 'Р ПП', 'Р Н')
where io.service_type = 'OPS'
group by sh.id
union all
select
sh.id as id,
sum(io.val_num) as balanceN,
sum(io.val_num) as balance
from mgr.imp_obj io
join ourpension.sharer sh on sh.id = s.id and io.npf360_id = sh.contract_id
where io.service_type <> 'OPS'
group by sh.id
)
group by id
) b1s on true
--end task 63978
--start task 40805
--left join utils.get_sharer_state_ops_on_date(null, null, null) state on s.id = state.sharer_id and c.service_type = 'OPS'
--end task 40805
WHERE
false
)
SELECT
csi.id as id,
csi.id as contractId,
'<a target="_blank" href="view?viewCode=7HPZX8vF&id='||csi.contract_id||'">'||csi.contract_number||'</a>' as contractNumber,
to_char(csi.contract_date, 'DD.MM.YYYY') as contractDate,
case
when csi.client_type = 0 and csi.service_type = 'NPO' then
'<span data-toggle="tooltip" title="НПО индивидуальный" class="label label-success">НПО</span>'
when csi.service_type = 'NPO' then
'<span data-toggle="tooltip" title="НПО корпоративный" class="label label-primary">НПО</span>'
when csi.service_type = 'PDS' then
'<span data-toggle="tooltip" title="ПДС" class="label label-success">ПДС</span>'
else '<span data-toggle="tooltip" title="ОПС" class="label label-primary">ОПС</span>'
end as clientType,
csi.insurance_number as insurance_number,
case when (csi.entity_id is null)
then /*'<a target="_blank" href="view?viewCode=Client_list&id='||ii.id||'">'||rtrim(ii.last_name || ' ' || ii.first_name || ' ' || coalesce(ii.middle_name, ''))||'</a>'*/ (select concat_ws(' ', trim(ii.last_name),trim(ii.first_name),trim(ii.middle_name)) from ourpension.individual ii where ii.id = csi.individual_id)
else /*'<a target="_blank" href="view?viewCode=NCIuIMAW&id='||e.id||'">'||e.short_name||'</a>'*/ (select e.short_name from ourpension.entity e where e.id = csi.entity_id)
end as investor,
csi.sharer_number as sharerNumber,
'<a target="_blank" href="view?viewCode=Client_list&id='||csi.individual_id||'">'||rtrim(csi.last_name || ' ' || csi.first_name || ' ' || coalesce(csi.middle_name, ''))||'</a>' as sharer,
ss.name as state,
to_char(csi.sharer_date, 'DD.MM.YYYY') as sharerDate,
csi.balance as balance,
csi.balance360 as balance360,
csi.balanceN as balanceN,
csi.balanceN360 as balanceN360,
to_char(csi.sharer_close_date, 'DD.MM.YYYY') as closeDate,
csi.individual_id as individual_id,
csi.close_reason as closeReasone,
to_char(csi.regain_restore_date, 'DD.MM.YYYY') as regainRestoreDate,
to_char(csi.regain_close_date, 'DD.MM.YYYY') as regainCloseDate,
csi.certificate_series || csi.certificate_number as certificate,
csi.actual_address as actualAddress,
csi.registration_address as registrationAddress,
csi.service_type as serviceType,
csi.scheme_number as scheme_number,
(select rmn.brief from ourpension.pension_rule pr
join prod_line.regulatory_model_npf rmn on rmn.id = pr.regulatory_model_npf_id
where pr.id = csi.pension_rule_id
) as regulatory_model_name,
csi.contract_individual as contract_individual
FROM cte_sharer_info csi
INNER JOIN ourpension.sharer_statuses ss
ON ss.code = csi.status_code
WHERE true