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


with operations (id,ef_year, cred_mnemonics, deb_mnemonics, value,operation_type_id,acc_name,owner_sharer_id) as (
    select
    o.id,
    extract(year from o.effective_date),
    cat.mnemonics as cred_mnemonics,
    dat.mnemonics as deb_mnemonics,
    t.value,
    o.operation_type_id,
    dat.name as acc_name,
    ca.owner_sharer_id
from back_office.operation o
    join back_office.transaction t on t.operation_id = o.id
    left join back_office.account da on da.id = t.debit_account_id
    left join back_office.account ca on ca.id = t.credit_account_id
    left join back_office.account_type dat on dat.id = da.account_type_id
    left join back_office.account_type cat on cat.id = ca.account_type_id
where o.effective_date between cast($P{bDate} as date) and cast($P{eDate} as date)
        and da.owner_sharer_id = $P{sharerId}
        and da.owner_sharer_id <> coalesce(ca.owner_sharer_id, 0)
    
union all

select
    o.id,
    extract(year from o.effective_date),
    cat.mnemonics,
    dat.mnemonics,
    t.value,
    o.operation_type_id,
    dat.name,
    ca.owner_sharer_id
from back_office.operation o
    join back_office.transaction t on t.operation_id = o.id
    join back_office.account ca on ca.id = t.credit_account_id
    left join back_office.account da on da.id = t.debit_account_id
    left join back_office.account_type dat on dat.id = da.account_type_id
    left join back_office.account_type cat on cat.id = ca.account_type_id
where o.effective_date between cast($P{bDate} as date) and cast($P{eDate} as date)
        and ca.owner_sharer_id = $P{sharerId}

    union all

-- Возврат ОПС
    select
    o.id,
    extract(year from o.effective_date),
    cat.mnemonics,
    dat.mnemonics,
    t.value,
    o.operation_type_id,
    dat.name,
    ca.owner_sharer_id
    from back_office.operation o
     join back_office.ops_payment_return r on r.id = o.ops_payment_return_id
     join back_office.ops_payment_register_decision rd on rd.id = r.ops_payment_register_decision_id
     join back_office.ops_payment_decision d on d.id = rd.ops_payment_decision_id
     join ourpension.ops_pension_assignment_application a on a.id = d.ops_pension_assignment_application_id    
    
    join back_office.transaction t on t.operation_id = o.id
    join back_office.account da on da.id = t.debit_account_id
    join back_office.account ca on ca.id = t.credit_account_id
    join back_office.account_type dat on dat.id = da.account_type_id
    join back_office.account_type cat on cat.id = ca.account_type_id
    
where o.effective_date between cast($P{bDate} as date) and cast($P{eDate} as date)
        and ca.owner_individual_id = rd.recipient_individual_id
        and a.sharer_id = $P{sharerId}
        
    union all
    
     -- Возврат НПО
    select
    o.id,
    extract(year from o.effective_date),
    cat.mnemonics,
    dat.mnemonics,
    t.value,
    o.operation_type_id,
    dat.name,
    ca.owner_sharer_id
    from back_office.operation o
     join back_office.payment_return pr on pr.id = o.payment_return_id
     join back_office.payment p on p.id = pr.payment_id
     join back_office.payment_register r on p.payment_register_id = r.id
    
    join back_office.transaction t on t.operation_id = o.id
    join back_office.account da on da.id = t.debit_account_id
    join back_office.account ca on ca.id = t.credit_account_id
    join back_office.account_type dat on dat.id = da.account_type_id
    join back_office.account_type cat on cat.id = ca.account_type_id
    
where o.effective_date between cast($P{bDate} as date) and cast($P{eDate} as date)
        and ca.owner_individual_id = p.recipient_individual_id
        and p.sharer_id = $P{sharerId}

    union all

-- Повторная выплата возврата
    select
    o.id,
    extract(year from o.effective_date),
    cat.mnemonics,
    dat.mnemonics,
    t.value,
    o.operation_type_id,
    dat.name,
    ca.owner_sharer_id
    from back_office.operation o
     join back_office.ops_payment_register_decision rd on rd.ops_payment_register_id = o.ops_payment_register_id
     join back_office.ops_payment_return r on r.id = rd.ops_payment_return_id
     join back_office.ops_payment_decision d on d.id = rd.ops_payment_decision_id
     join ourpension.ops_pension_assignment_application a on a.id = d.ops_pension_assignment_application_id
     join back_office.transaction t on t.operation_id = o.id
     join back_office.account da on da.id = t.debit_account_id
     join back_office.account ca on ca.id = t.credit_account_id
     join back_office.account_type dat on dat.id = da.account_type_id
     join back_office.account_type cat on cat.id = ca.account_type_id
where o.effective_date between cast($P{bDate} as date) and cast($P{eDate} as date)
        and ca.owner_individual_id = rd.recipient_individual_id
        and a.sharer_id = $P{sharerId}
)
select
    cast(o.ef_year as varchar(4)) as year_name,
    concat(ot.name, ' ', sh.number) as name,
    sum(o.value) as sum_value,
    sum(n.value) as sum_ndfl
from operations o
join back_office.operation_type ot
    on ot.id = o.operation_type_id
left join operations n
    on o.id = n.id
and n.cred_mnemonics like '%НДФЛ%'
left join ourpension.sharer sh
    on o.owner_sharer_id = sh.id
where o.deb_mnemonics is not null
and o.deb_mnemonics not like '%СВ%'
and o.deb_mnemonics not like '%ПП%'
and ot.name not like '%Выплата%'
and o.operation_type_id not in (106, 103, 101, 111, 104)
and coalesce(o.cred_mnemonics, '') not like '%НДФЛ%'
group by o.ef_year, ot.name, sh.number
order by o.ef_year, ot.name, sh.number