select t.COD_MODALIDADE,
t.COD_TARIFA,
t.DTA_ATUALIZACAO,
t.DTA_CRIACAO,
t.DTA_FIM,
t.DTA_INI,
t.ID_CONVENIO,
t.NME_LOGIN,
t.VLR_TARIFA,
null DSC_MODALIDADE,
null COD_MODALIDADE1,
null COD_MODALIDADE2,
null TPO_ARREC,
'A'
from tarifa t, modalidade_tarifa m
where t.id_convenio = :idConvenioExecParam
and t.cod_modalidade = m.cod_modalidade
and trunc(sysdate) BETWEEN T.DTA_INI AND T.DTA_FIM
and decode(:dtaInicialExecParam, null, 1, 2) = decode(:dtaInicialExecParam, null, 1, 3)
union
select t.COD_MODALIDADE,
t.COD_TARIFA,
t.DTA_ATUALIZACAO,
t.DTA_CRIACAO,
t.DTA_FIM,
t.DTA_INI,
t.ID_CONVENIO,
t.NME_LOGIN,
t.VLR_TARIFA,
null DSC_MODALIDADE,
null COD_MODALIDADE1,
null COD_MODALIDADE2,
null TPO_ARREC,
'B'
from tarifa t, modalidade_tarifa m
where t.id_convenio = :idConvenioExecParam
and t.cod_modalidade = m.cod_modalidade
and t.dta_ini < trunc(sysdate)
and t.dta_fim is null
and decode(:dtaInicialExecParam, null, 1, 2) = decode(:dtaInicialExecParam, null, 1, 3)
union
SELECT Tarifa.COD_MODALIDADE,
Tarifa.COD_TARIFA,
Tarifa.DTA_ATUALIZACAO,
Tarifa.DTA_CRIACAO,
Tarifa.DTA_FIM,
Tarifa.DTA_INI,
Tarifa.ID_CONVENIO,
Tarifa.NME_LOGIN,
Tarifa.VLR_TARIFA,
ModalidadeTarifa.DSC_MODALIDADE,
ModalidadeTarifa.COD_MODALIDADE AS COD_MODALIDADE1,
ModalidadeTarifa.COD_MODALIDADE AS COD_MODALIDADE2,
ModalidadeTarifa.TPO_ARREC,
'C'
FROM TARIFA Tarifa, MODALIDADE_TARIFA ModalidadeTarifa
WHERE Tarifa.cod_modalidade = ModalidadeTarifa.cod_modalidade
and (:idConvenioExecParam is null or Tarifa.id_convenio = :idConvenioExecParam)
and ( ( :dtaInicialExecParam is null and Tarifa.dta_ini >= trunc(sysdate) ) or Tarifa.dta_ini >= :dtaInicialExecParam )
and ( :dtaFinalExecParam is null or (Tarifa.dta_fim <= :dtaFinalExecParam or Tarifa.dta_fim is null) )
ORDER BY DSC_MODALIDADE,dta_ini,dta_fim;