select
to_char(o.ef_date, 'DD.MM.YYYY') as effective_date,
ot.name,
case
-- Возврат выплаты уменьшает сумму выплат
when ot.code = 'PDS_RETURN_LUMP_SUM_PAYMENT'
then -o.value
-- Налог и его возврат выводим только в НДФЛ
when ot.code in (
'PDS_NDFL_REDEMPTION_PAYMENT',
'PDS_NDFL_LUMP_SUM_PAYMENT',
'PDS_RETURN_NDFL_LUMP_SUM'
)
or coalesce(o.cred_mnemonics, '') like '%НДФЛ%'
then null
else o.value
end as value,
o.ef_date,
case
-- Возврат налога уменьшает НДФЛ
when ot.code = 'PDS_RETURN_NDFL_LUMP_SUM'
then -o.value
-- Возврат выплаты относится к колонке «Сумма»
when ot.code = 'PDS_RETURN_LUMP_SUM_PAYMENT'
then null
when ot.code in (
'PDS_NDFL_REDEMPTION_PAYMENT',
'PDS_NDFL_LUMP_SUM_PAYMENT'
)
or coalesce(o.cred_mnemonics, '') like '%НДФЛ%'
then o.value
else null
end as ndfl
from operation o
join back_office.operation_type ot
on ot.id = o.operation_type_id
where (
o.deb_mnemonics is not null
or ot.code in (
'PDS_RETURN_LUMP_SUM_PAYMENT',
'PDS_RETURN_NDFL_LUMP_SUM'
)
)
order by o.ef_date, o.id;