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


WITH target_transaction as materialized (
    select
        t.*
    from back_office.transaction as t
    where t.operation_id = :operation_id

    union all

    select
        t.*
    from back_office.transaction_without_effective_date as t
    where t.operation_id = :operation_id
)
SELECT
  t.id as id,
  trim(to_char(t.value, '99 999 999 999 999 990D99')) as value,
  case 
  when a_cr.owner_sharer_id is not null then 'Участник'
  when a_cr.owner_contract_id is not null then 'Договор'
  when a_cr.owner_individual_id is not null then 'Физическое лицо'
  when a_cr.owner_entity_id is not null then 'Юридическое лицо'
end as accountLevelCredit,
  case
when at_cr.mnemonics = 'Р(П) ИД' then 'Выплатной резерв'
when at_cr.mnemonics = 'Р(С) ИД' then 'Резерв срочных выплат'
end as accountType,
  at_cr.mnemonics as accountTypeCredit,
  case 
  when a_cr.owner_sharer_id is not null
  then 
   '<a target="_blank" href="view?viewCode=Client_list&id='||si_cr.id||'">'||rtrim(si_cr.last_name || ' ' || si_cr.first_name || ' ' || 
  coalesce(si_cr.middle_name, ''))||'</a>' 
  when a_cr.owner_contract_id is not null 
 then
 '<a target="_blank" href="view?viewCode=7HPZX8vF&id='||c_cr.id||'"target="_blank">'||c_cr.number||'</a>'
  when a_cr.owner_individual_id is not null
  then 
  '<a target="_blank" href="view?viewCode=Client_list&id='||i_cr.id||'">'||rtrim(i_cr.last_name || ' ' || i_cr.first_name || ' ' || 
   coalesce(i_cr.middle_name, ''))||'</a>' 
  when a_cr.owner_entity_id is not null 
  then
  e_cr.short_name
end as accountOwnerCredit,
  CASE 
WHEN p.accrual_repurchase_id is not null THEN '<a target="_blank" href="view?viewCode=fCwI2nmi&id=' || ap.id || '"target="_blank">Начисление выкуп. суммы № '  || ap.id|| '</a>'

WHEN p.accrual_pension_id is not null THEN '<a target="_blank" href="view?viewCode=s4s34pY2&id=' || al.id || '"target="_blank">Начисление пенсии № '  || al.id|| '</a>'
END as accrual_document,
  case when a_cr.owner_sharer_id is not null then
'<a target="_blank" href="view?viewCode=7HPZX8vF&id='|| sc_cr.id||'"target="_blank">'|| sc_cr.number||'</a>'
end as sharerContractCredit,
  case when a_cr.owner_sharer_id is not null then
'<a target="_blank" href="view?viewCode=Pzbmp8Pg&id='|| s_cr.id||'"target="_blank">'|| s_cr.number||'</a>'
end as sharerCredit,
  ot.name as operationTypeName,
  at_db.mnemonics as accountTypeDebit,
  case when a_db.owner_sharer_id is not null then 'Участник' when a_db.owner_contract_id is not null then 'Договор' when a_db.owner_individual_id is not null then 'Физическое лицо' when a_db.owner_entity_id is not null then 'Юридическое лицо' end as accountLevelDebit,
  case 
  when a_db.owner_sharer_id is not null then '<a target="_blank" href="view?viewCode=Client_list&id='||si_db.id||'">'||rtrim(si_db.last_name || ' ' || si_db.first_name || ' ' || coalesce(si_db.middle_name, ''))||'</a>' 
  when a_db.owner_contract_id is not null then '<a target="_blank" href="view?viewCode=7HPZX8vF&id='||c_db.id||'"target="_blank">'||c_db.number||'</a>'
  when a_db.owner_individual_id is not null then '<a target="_blank" href="view?viewCode=Client_list&id='||i_db.id||'">'||rtrim(i_db.last_name || ' ' || i_db.first_name || ' ' || coalesce(i_db.middle_name, ''))||'</a>' 
  when a_db.owner_entity_id is not null then e_db.short_name
end as accountOwnerDebit,
  case when a_db.owner_sharer_id is not null then sc_db.number end as sharerContractDebit,
  case when a_db.owner_sharer_id is not null then
'<a target="_blank" href="view?viewCode=Pzbmp8Pg&id='|| s_db.id||'"target="_blank">'|| s_db.number||'</a>'
end as sharerDebit,
  to_char(t.effective_date, 'dd.MM.yyyy') as effectiveDate,
  to_char(t.operation_date, 'dd.MM.yyyy') as operationDate,
  to_char(t.period_date, 'dd.MM.yyyy') as periodDate,
  t.comment as comment,
  to_char(t.version, 'DD.MM.YYYY HH24:MI:SS') as version 
FROM target_transaction as t
	join back_office.operation o on t.operation_id = o.id
	join back_office.operation_type ot on o.operation_type_id = ot.id

	-- счет, кредит
	left join back_office.account a_cr on t.credit_account_id = a_cr.id
	left join back_office.account_type at_cr on a_cr.account_type_id = at_cr.id
	-- счет участника, кредит
	left join ourpension.sharer s_cr on s_cr.id = a_cr.owner_sharer_id
	left join ourpension.contract sc_cr on sc_cr.id = s_cr.contract_id
	left join ourpension.individual si_cr on si_cr.id = s_cr.individual_id
	-- счет договора, кредит
	left join ourpension.contract c_cr on c_cr.id = a_cr.owner_contract_id
	-- счет фл, кредит
	left join ourpension.individual i_cr on i_cr.id = a_cr.owner_individual_id
	-- счет юл, кредит
	left join ourpension.entity e_cr on e_cr.id = a_cr.owner_entity_id

	-- счет, дебит
	left join back_office.account a_db on t.debit_account_id = a_db.id
	left join back_office.account_type at_db on a_db.account_type_id = at_db.id
	-- счет участника, дебит
	left join ourpension.sharer s_db on s_db.id = a_db.owner_sharer_id
	left join ourpension.contract sc_db on sc_db.id = s_db.contract_id
	left join ourpension.individual si_db on si_db.id = s_db.individual_id
	-- счет договора, дебит
	left join ourpension.contract c_db on c_db.id = a_db.owner_contract_id
	-- счет фл, дебит
	left join ourpension.individual i_db on i_db.id = a_db.owner_individual_id
	-- счет юл, дебит
	left join ourpension.entity e_db on e_db.id = a_db.owner_entity_id
	
	-- 1. new! Документ начисления 
	left join back_office.payment p on   p.id = t.payment_id
		-- 1.1 Начисление выкупной суммы
	 left join back_office.accrual_repurchase_amount_payments_details pd on pd.id = p.accrual_repurchase_id
	 left join back_office.accrual_repurchase_amount_payments ap on ap.id = pd.accrual_repurchase_amount_payments_id
	
	  --  1.2 Начисление пенсии
	 left join back_office.accrual_detail ad on ad.id = p.accrual_pension_id
	 left join back_office.accrual_list al  on al.id  = ad.accrual_list_id