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


ЗЛ о назначении ЛП
WITH np as (
	select opaa.id as app, -- Заявление
		opd.id as dec, -- Решение
		case when opd.accepted is not null 
			then 'Да'
			else 'Нет'
		end as accepted_dec, -- Решение провередено
		opd.number as dec_numb, -- Номер решения
		opd.pension_date, -- Дата назначения
		opaa.appeal_date, -- Дата обращения
		ld.pension_value, -- Сумма выплат
		case when opaa.accepted is not null 
			then 'Да'
			else 'Нет'
		end as accepted, -- Заявление проведено
		opaa.number as reg_numb, -- Номер
		dpt.short_name, -- Тип выплат
		upper(i.last_name || ' ' || i.first_name || ' ' || i.middle_name) as fio_zl, -- ЗЛ
		i.insurance_number as i_zl, -- Снилс ЗЛ
		c.number as contract_numb, -- Договор ОПС
		pt.name as payment_way, -- Способ выплат
		a.address_text, -- Адрес регистрации
		aibd.personal_account, -- Лицевой счет
		aibd.bic, -- Бик
		br.bank_name, -- Наименования банка
		br.corraccount, -- Корр счет
		br.place || ' ' || br.address as bank_addres, -- Адрес банка
	aibd.accepted as br_date
	from ourpension.ops_pension_assignment_application opaa
	left join back_office.ops_payment_decision opd on opaa.id = opd.ops_pension_assignment_application_id 
	left join lateral (
		select coalesce(opdl.pension_value, opdla.pension_value, opdft.pension_value, opdo.payment_value) as pension_value,
			opd.date
		from back_office.ops_payment_decision opd		
		left join back_office.ops_payment_decision_lifetime opdl on opd.id = opdl.ops_payment_decision_id
		left join back_office.ops_payment_decision_lifetime_all opdla on opd.id = opdla.ops_payment_decision_id
		left join back_office.ops_payment_decision_fixed_term opdft on opd.id = opdft.ops_payment_decision_id
		left join back_office.ops_payment_decision_onetime opdo on opd.id = opdo.ops_payment_decision_id
		where opaa.id = opd.ops_pension_assignment_application_id 
			and opd.decision_type_code in ('УСТН','КОРР','ВОЗБ','ВОСТ')
			and opd.accepted is not null
			and opd.date < (
				select coalesce(min(d_min.date),cast('9999-12-31' as date))
				from back_office.ops_payment_decision d_min
				where opaa.id = d_min.ops_pension_assignment_application_id 
					and d_min.decision_type_code in ('ПРЕК', 'ПРОС')
					and opd.accepted is not null
			)
		order by opd.date desc 
		limit 1
	) ld on true
	left join ourpension.payment_type pt on opaa.payment_way = pt.code 
	join ourpension.sharer s on s.id = opaa.sharer_id 
	join ourpension.contract c on c.id = s.contract_id
	join ourpension.individual i on i.id = c.individual_id
	join ourpension.address a on i.registration_address_id = a.id
	join ourpension.decision_payment_type dpt on opaa.decision_payment_type_code = dpt.code 
	left join ourpension.application_individual_bank_detail aibd on opaa.bank_detail_id = aibd.id
	left join ourpension.bankru br on aibd.bic = br.bic
	where opaa.ops_payment_type_code in ('02', '04')
		and opd.date > :start_date
		and opd.date <= :end_date
	and aibd.accepted = coalesce(:br_date, aibd.accepted)
)
SELECT
  np.app as app,
  np.dec as dec,
  np.accepted_dec as accepted_dec,
  np.accepted as accepted,
  to_char(np.appeal_date, 'DD.MM.YYYY') as appeal_date,
  np.reg_numb as reg_numb,
  np.dec_numb as dec_numb,
  to_char(np.pension_date, 'DD.MM.YYYY') as pension_date,
  np.pension_value as pension_value,
  np.short_name as short_name,
  np.fio_zl as fio_zl,
  np.i_zl as i_zl,
  np.contract_numb as contract_numb,
  np.payment_way as payment_way,
  np.address_text as address_text,
  np.personal_account as personal_account,
  np.bic as bic,
  np.bank_name as bank_name,
  np.corraccount as corraccount,
  np.bank_addres as bank_addres,
  to_char(np.br_date, 'DD.MM.YYYY') as br_date 
FROM np


ПП ОПС
WITH pp as (
    select opa.id as application,
        oad.id as decision,
        p.payment_value, -- Сумма выплаты
        case when opa.accepted is not null
            then 'Да'
            else 'Нет'
        end as accepted, -- Заявление проведено
        opa.number as number_app, -- Номер заявления
        pt.name, -- Способ выплат
        opa.date, -- Дата заявления
        opa.registration, -- Дата регистрации
        opa.appeal_date, -- Дата обращения
        c.number as contract_number, -- Договор ОПС
        case when opa.assignee_type = 'LAW'
            then 'По закону'
            else 'По заявлению'
        end as assignee_type, -- Основание
        upper(i.last_name || ' ' || i.first_name || ' ' || i.middle_name) as fio_zl, -- ЗЛ
        i.insurance_number as i_zl, -- Снилс ЗЛ
        upper(ai.last_name || ' ' || ai.first_name || ' ' || ai.middle_name) as fio_pp, -- ПП
        ai.insurance_number as i_pp, -- Снилс ПП
        aibd.bic,
        br.bank_name,
        br.corraccount,
        aa.address_text as address_reg, -- Адрес регистрации
        aar.address_text as address_pay, -- Адрес для выплат
	aibd.accepted as br_date
    from ourpension.ops_assignee_payment opa
    left join back_office.ops_assignee_decision oad on opa.id = oad.ops_assignee_payment_id
    left join ourpension.payment_type pt on opa.payment_way = pt.code
    join ourpension.sharer s on s.id = opa.sharer_id
    join ourpension.contract c on c.id = s.contract_id
    join ourpension.individual i on i.id = c.individual_id
    join ourpension.individual ai on ai.id = opa.assignee_id
    join ourpension.address aa on ai.registration_address_id = aa.id
    left join ourpension.address aar on ai.residential_address_id = aar.id
    left join ourpension.application_individual_bank_detail aibd on opa.bank_detail_id = aibd.id
    left join ourpension.bankru br on aibd.bic = br.bic
    left join back_office.ops_assignee_decision_payment p on p.ops_assignee_decision_id = oad.id
    where oad.date > :start_date
        and oad.date <= :end_date
	and aibd.accepted = coalesce(:br_date, aibd.accepted)

)
SELECT
  pp.application as application,
  pp.decision as decision,
  pp.payment_value as payment_value,
  pp.accepted as accepted,
  pp.name as name,
  pp.number_app as number_app,
  to_char(pp.date, 'DD.MM.YYYY') as date,
  to_char(pp.registration, 'DD.MM.YYYY') as registration,
  to_char(pp.appeal_date, 'DD.MM.YYYY') as appeal_date,
  pp.contract_number as contract_number,
  pp.assignee_type as assignee_type,
  pp.fio_zl as fio_zl,
  pp.i_zl as i_zl,
  pp.fio_pp as fio_pp,
  pp.i_pp as i_pp,
  pp.bic as bic,
  pp.bank_name as bank_name,
  pp.corraccount as corraccount,
  pp.address_reg as address_reg,
  pp.address_pay as address_pay,
  to_char(pp.br_date, 'DD.MM.YYYY') as br_date 
FROM pp



ЗЛ о назначении СПВ
WITH spv as(
	select opaa.id,
		opaa.appeal_date, -- Дата обращения
		case when opaa.accepted is not null 
			then 'Да'
			else 'Нет'
		end as accepted, -- Заявление проведено
		opaa.number as reg_numb, -- Номер
		dpt.short_name, -- Тип выплат
		upper(i.last_name || ' ' || i.first_name || ' ' || i.middle_name) as fio_zl, -- ЗЛ
		i.insurance_number as i_zl, -- Снилс ЗЛ
		c.number as contract_numb, -- Договор ОПС
		pt.name as payment_way, -- Способ выплат
		a.address_text, -- Адрес регистрации
		aibd.personal_account, -- Лицевой счет
		aibd.bic, -- Бик
		br.bank_name, -- Наименования банка
		br.corraccount, -- Корр счет
		br.place || ' ' || br.address as bank_addres, -- Адрес банка
	aibd.accepted as br_date
	from ourpension.ops_pension_assignment_application opaa
	left join ourpension.payment_type pt on opaa.payment_way = pt.code 
	join ourpension.sharer s on s.id = opaa.sharer_id 
	join ourpension.contract c on c.id = s.contract_id
	join ourpension.individual i on i.id = c.individual_id
	join ourpension.address a on i.registration_address_id = a.id
	--join ourpension.decision_payment_type dpt on opaa.decision_payment_type_code = dpt.code 
	left join ourpension.decision_payment_type dpt on opaa.decision_payment_type_code = dpt.code 
	left join ourpension.application_individual_bank_detail aibd on opaa.bank_detail_id = aibd.id
	left join ourpension.bankru br on aibd.bic = br.bic
	where opaa.ops_payment_type_code = '05'
		and opaa.appeal_date <= :date_of_application
	--and aibd.accepted = coalesce(:br_date, aibd.accepted)
	and (
    cast(:br_date as date) is null
    or cast(aibd.accepted as date) = cast(:br_date as date)
)
)
SELECT
  spv.id as id,
  to_char(spv.appeal_date, 'DD.MM.YYYY') as appeal_date,
  spv.accepted as accepted,
  spv.reg_numb as reg_numb,
  spv.short_name as short_name,
  spv.fio_zl as fio_zl,
  spv.i_zl as i_zl,
  spv.contract_numb as contract_numb,
  spv.payment_way as payment_way,
  spv.address_text as address_text,
  spv.personal_account as personal_account,
  spv.bic as bic,
  spv.bank_name as bank_name,
  spv.corraccount as corraccount,
  spv.bank_addres as bank_addres,
  to_char(spv.br_date, 'DD.MM.YYYY') as br_date 
FROM spv