left join lateral (
select
opd.id,
opd.decision_payment_type_code,
opd.date as decision_date
from back_office.ops_payment_decision opd
where opd.ops_pension_assignment_application_id = opaa.id
and opd.decision_payment_type_code in ('01', '16')
and opd.rejected is null
and opd.canceled is null
order by
opd.date desc nulls last,
opd.id desc
limit 1
) ev_decision on true
join ourpension.decision_payment_type dpt
on dpt.code = case
when opaa.ops_payment_type_code = '01'
then opaa.decision_payment_type_code
else ev_decision.decision_payment_type_code
end
where (
(
opaa.ops_payment_type_code = '01'
and opaa.appeal_date between :start_date and :end_date
)
or
(
opaa.ops_payment_type_code = '02'
and ev_decision.id is not null
and (
opaa.appeal_date between :start_date and :end_date
or ev_decision.decision_date between :start_date and :end_date
)
)
)
and aibd.accepted = coalesce(:br_date, aibd.accepted)