diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 37f5cb997..b20524f69 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -3673,7 +3673,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO if (isECF) { sql = getSqlImpressaoRMDTipoECF(isCancelamento); } else if (isManual) { - sql = getSqlImpressaoRMDTipoBPR(isManual); + sql = getSqlImpressaoRMDTipoBPR(isCancelamento); } NamedParameterStatement ps = new NamedParameterStatement(connection, sql); @@ -3681,11 +3681,6 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO ps.setInt("EMPRESA_ID", empresaId); ps.setString("CVEESTADO", cveestado); - if (isECF) { - ps.setString("DATE_INICIO_STR", DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)); - ps.setString("DATE_FIM_STR", DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)); - } - ps.setTimestamp("DATE_INICIO", new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime())); ps.setTimestamp("DATE_FIM", new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime())); @@ -3796,7 +3791,9 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" coalesce(b.importetaxaembarque, 0) as taxaEmbarque, "); sql.append(" coalesce(b.importepedagio, 0) as pedagio, "); sql.append(" coalesce(b.importeseguro, 0) as seguro, "); - sql.append(" coalesce(b.importeoutros, 0) as outros "); + sql.append(" coalesce(b.importeoutros, 0) as outros ").append(isCancelamento ? ", " : " "); + sql.append(isCancelamento ? " b.rmd_id as rmd_id, " : " "); + sql.append(isCancelamento ? " b.foliormd as foliormd " : " "); sql.append("from caja b "); sql.append(" join marca m on b.marca_id = m.marca_id "); sql.append(" join empresa e on e.empresa_id = m.empresa_id "); @@ -3828,11 +3825,13 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" and ei.estado_id = coalesce(ae.estado_id, eos.estado_id) and ei.activo = 1 "); sql.append("where "); sql.append(" b.tipoventa_id = 3 "); - sql.append(" and b.rmd_id is null "); sql.append(" and b.indstatusboleto = 'V' "); sql.append(" and b.empresacorrida_id = :EMPRESA_ID "); sql.append(" and b.feccreacion between :DATE_INICIO and :DATE_FIM "); sql.append(" and coalesce(ae.cveestado, eos.cveestado) = :CVEESTADO "); + sql.append(isCancelamento ? "" : " and b.rmd_id is null "); + sql.append(isCancelamento ? " and b.rmd_id = :RMD_ID " : " "); + sql.append(isCancelamento ? " and b.foliormd between :FOLIO_INICIAL and :FOLIO_FINAL " : " "); sql.append("order by estadoId, fechorVenta, nombPuntoVenta, numPuntoVenta "); return sql.toString(); @@ -3842,23 +3841,20 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO StringBuilder sql = new StringBuilder(); sql.append("select distinct "); - sql.append(" r4.caja_id as cajaId, "); - sql.append(" b.numoperacion as numoperacion, "); - sql.append(" b.numseriepreimpresa as serieCompl, "); - sql.append(" b.numfoliopreimpreso as folio, "); - sql.append(" a.acfiscal as numAidf, "); - sql.append(" a.serie as serieAidf, "); - sql.append(" a.subserie as subSerieAidf, "); - sql.append(" trunc(b.feccreacion) as fechorVenta, "); - sql.append(" e.nombempresa as empresa, "); - sql.append(" coalesce(ie.cnpj, e.cnpj) as cnpjEmpresa, "); - sql.append(" case when ie.logradouro is null "); - sql.append(" then (e.logradouro || ', ' || e.numero || ' - ' || e.bairro || ', ' || ce.nombciudad "); - sql.append(" || ' - ' || ee.cveestado || ', ' || e.cep ) "); - sql.append(" else (ie.logradouro || ', ' || ie.numero || ' - ' || ie.bairro || ', ' || cie.nombciudad "); - sql.append(" || ' - ' || eie.cveestado || ', ' || ie.cep ) end as enderecoEmpresa, "); - sql.append(" pv.nombpuntoventa as nombPuntoVenta, "); - sql.append(" pv.numpuntoventa as numPuntoVenta, "); + sql.append(" c.caja_id as cajaId, "); + sql.append(" c.numoperacion as numoperacion, "); + sql.append(" c.numseriepreimpresa as serieCompl, "); + sql.append(" c.numfoliopreimpreso as folio, "); + sql.append(" '' as numAidf, "); + sql.append(" '' as serieAidf, "); + sql.append(" '' as subSerieAidf, "); + sql.append(" trunc(c.feccreacion) as fechorVenta, "); + sql.append(" ep.nombempresa as empresa, "); + sql.append(" ie.cnpj as cnpjEmpresa, "); + sql.append(" (ie.logradouro || ', ' || ie.numero || ' - ' || ie.bairro || ', ' || cie.nombciudad "); + sql.append(" || ' - ' || eie.cveestado || ', ' || ie.cep ) as enderecoEmpresa, "); + sql.append(" '' as nombPuntoVenta, "); + sql.append(" '' as numPuntoVenta, "); sql.append(" ie.numinscricaoestadual as ieEmpresa, "); sql.append(" coalesce(eos.estado_id, eo.estado_id) as estadoId, "); sql.append(" coalesce(eis.icms, ei.icms) as icmsInterestadual, "); @@ -3873,161 +3869,64 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" eis.tributacaoimportacao as tributacaoImportacao, "); sql.append(" case when (coalesce(pos.regionmetropolitana_id, po.regionmetropolitana_id, -1) = "); sql.append(" coalesce(pds.regionmetropolitana_id, pd.regionmetropolitana_id, -2)) then 1 else 0 end as isenta, "); - sql.append(" coalesce(b.preciopagado, 0) as tarifa, "); - sql.append(" coalesce(b.importetaxaembarque, 0) as taxaEmbarque, "); - sql.append(" coalesce(b.importepedagio, 0) as pedagio, "); - sql.append(" coalesce(b.importeseguro, 0) as seguro, "); - sql.append(" coalesce(b.importeoutros, 0) as outros, "); + sql.append(" coalesce(c.preciopagado, 0) as tarifa, "); + sql.append(" coalesce(c.importetaxaembarque, 0) as taxaEmbarque, "); + sql.append(" coalesce(c.importepedagio, 0) as pedagio, "); + sql.append(" coalesce(c.importeseguro, 0) as seguro, "); + sql.append(" coalesce(c.importeoutros, 0) as outros, "); sql.append(" r4.numserie20 as ecf, "); - sql.append(" to_char(b.feccreacion, 'YYYYMMDD') as datamov, "); + sql.append(" to_char(c.feccreacion, 'YYYYMMDD') as datamov, "); sql.append(" r4.coo as coo, "); sql.append(" r4.contador as ccf, "); sql.append(" r4.impsubtotal as totalFiscal, "); sql.append(" r2.coo as cooredz, "); sql.append(" epv.cveestado as estadoImpressora ").append(isCancelamento ? ", " : " "); - sql.append(isCancelamento ? " b.rmd_id as rmd_id, " : " "); - sql.append(isCancelamento ? " b.foliormd as foliormd " : " "); - sql.append("from fiscal_r4 r4 "); - sql.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov "); - sql.append(" join fiscal_impressora imp on imp.numserie20 = r4.numserie20 "); - sql.append(" join boleto b on b.boleto_id = r4.boleto_id "); - sql.append(" join marca m on b.marca_id = m.marca_id "); - sql.append(" join empresa e on e.empresa_id = m.empresa_id "); - sql.append(" join ciudad ce on ce.ciudad_id = e.ciudad_id "); - sql.append(" join estado ee on ee.estado_id = ce.estado_id "); - sql.append(" join punto_venta pv on pv.puntoventa_id = b.puntoventa_id "); - sql.append(" left join parada ppv on ppv.parada_id = pv.parada_id "); - sql.append(" left join ciudad cpv on cpv.ciudad_id = ppv.ciudad_id "); - sql.append(" left join estado epv on epv.estado_id = cpv.estado_id "); - sql.append(" join boleto b on b.boleto_id = r4.boleto_id "); - sql.append(" join parada po on po.parada_id = b.origen_id "); - sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); - sql.append(" join estado eo on eo.estado_id = co.estado_id "); - sql.append(" join parada pd on pd.parada_id = b.destino_id "); - sql.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id "); - sql.append(" join estado ed on ed.estado_id = cd.estado_id "); - sql.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id and ei.estado_id = co.estado_id "); - sql.append(" left join alias_servico s on s.origen_id = b.origen_id and s.destino_id = b.destino_id and (s.corrida_id = b.corrida_id or s.corrida_id is null) and s.ruta_id = b.ruta_id "); - sql.append(" left join parada pos on pos.parada_id = s.aliasorigen_id "); - sql.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id "); - sql.append(" left join estado eos on eos.estado_id = cos.estado_id "); - sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); - sql.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id "); - sql.append(" left join estado eds on eds.estado_id = cds.estado_id "); - sql.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = cos.estado_id and eis.activo = 1 "); - sql.append(" left join estado e on e.estado_id = imp.estadolocal_id "); - sql.append(" join inscricao_estadual ie on e.empresa_id = ie.empresa_id "); - sql.append(" and ie.estado_id = coalesce(eos.estado_id, eo.estado_id) and ie.activo = 1 "); - sql.append(" join ciudad cie on cie.ciudad_id = ie.ciudad_id "); - sql.append(" join estado eie on eie.estado_id = cie.estado_id "); - sql.append(" left join aidf a on a.aidf_id = b.aidf_id "); - sql.append("where b.activo = 1 "); - sql.append(isCancelamento ? "" : " and b.rmd_id is null "); - sql.append(" and nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 "); - sql.append(" and coalesce(r4.indcancelamento, 'N') <> 'S' "); - sql.append(" and r4.datamov >= :DATE_INICIO_STR and r4.datamov <= :DATE_FIM_STR "); - sql.append(" and b.empresacorrida_id = :EMPRESA_ID "); - sql.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = :CVEESTADO ) "); - sql.append(isCancelamento ? " and b.rmd_id = :RMD_ID " : " "); - sql.append(isCancelamento ? " and b.foliormd between :FOLIO_INICIAL and :FOLIO_FINAL " : " "); + sql.append(isCancelamento ? " c.rmd_id as rmd_id, " : " "); + sql.append(isCancelamento ? " c.foliormd as foliormd " : " "); + sql.append(" "); + sql.append(" from caja c "); + sql.append(" join ruta r on r.ruta_id = c.ruta_id "); + sql.append(" join parada po on po.parada_id = c.origen_id "); + sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); + sql.append(" join estado eo on eo.estado_id = co.estado_id "); + sql.append(" join parada pd on pd.parada_id = c.destino_id "); + sql.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id "); + sql.append(" join estado ed on ed.estado_id = cd.estado_id "); + sql.append(" join empresa_imposto ei on ei.empresa_id = c.empresacorrida_id and ei.estado_id = eo.estado_id "); + sql.append(" join fiscal_impressora imp on imp.numserie = c.serieimpfiscal "); + sql.append(" left join estado e on e.estado_id = imp.estadolocal_id "); + sql.append(" left join alias_servico s on s.origen_id = c.origen_id and s.destino_id = c.destino_id and (s.corrida_id = c.corrida_id or s.corrida_id is null) and s.ruta_id = c.ruta_id "); + sql.append(" left join parada pos on pos.parada_id = s.aliasorigen_id "); + sql.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id "); + sql.append(" left join estado eos on eos.estado_id = cos.estado_id "); + sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); + sql.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id "); + sql.append(" left join estado eds on eds.estado_id = cds.estado_id "); + sql.append(" left join empresa_imposto eis on eis.empresa_id = c.empresacorrida_id and eis.estado_id = eos.estado_id "); + sql.append(" left join fiscal_r4 r4 on r4.caja_id = c.caja_id "); + sql.append(" left join fiscal_r2 r2 on r2.numserie20 = imp.numserie20 and r2.datamov = to_char(c.feccreacion, 'YYYYMMDD') "); + sql.append(" join inscricao_estadual ie on c.empresacorrida_id = ie.empresa_id and ie.estado_id = coalesce(eos.estado_id, eo.estado_id) and ie.activo = 1 "); + sql.append(" join ciudad cie on cie.ciudad_id = ie.ciudad_id "); + sql.append(" join estado eie on eie.estado_id = cie.estado_id "); + sql.append(" join marca ma on c.marca_id = ma.marca_id "); + sql.append(" join empresa ep on ep.empresa_id = ma.empresa_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); + sql.append(" left join parada ppv on ppv.parada_id = pv.parada_id "); + sql.append(" left join ciudad cpv on cpv.ciudad_id = ppv.ciudad_id "); + sql.append(" left join estado epv on epv.estado_id = cpv.estado_id "); sql.append(" "); - sql.append(" union "); - sql.append(" "); - sql.append("select distinct "); - sql.append(" b.caja_id as cajaId, "); - sql.append(" b.numoperacion as numoperacion, "); - sql.append(" b.numseriepreimpresa as serieCompl, "); - sql.append(" b.numfoliopreimpreso as folio, "); - sql.append(" a.acfiscal as numAidf, "); - sql.append(" a.serie as serieAidf, "); - sql.append(" a.subserie as subSerieAidf, "); - sql.append(" trunc(b.feccreacion) as fechorVenta, "); - sql.append(" e.nombempresa as empresa, "); - sql.append(" coalesce(ie.cnpj, e.cnpj) as cnpjEmpresa, "); - sql.append(" case when ie.logradouro is null "); - sql.append(" then (e.logradouro || ', ' || e.numero || ' - ' || e.bairro || ', ' || ce.nombciudad "); - sql.append(" || ' - ' || ee.cveestado || ', ' || e.cep ) "); - sql.append(" else (ie.logradouro || ', ' || ie.numero || ' - ' || ie.bairro || ', ' || cie.nombciudad "); - sql.append(" || ' - ' || eie.cveestado || ', ' || ie.cep ) end as enderecoEmpresa, "); - sql.append(" pv.nombpuntoventa as nombPuntoVenta, "); - sql.append(" pv.numpuntoventa as numPuntoVenta, "); - sql.append(" ie.numinscricaoestadual as ieEmpresa, "); - sql.append(" coalesce(eos.estado_id, eo.estado_id) as estadoId, "); - sql.append(" coalesce(ei.icms, eo.icms) as icmsInterestadual, "); - sql.append(" ei.icmsim as icmsIntermunicipal, "); - sql.append(" coalesce(eos.cveestado, eo.cveestado) as estadoOrigem, "); - sql.append(" coalesce(eds.cveestado, ed.cveestado) as estadoDestino, "); - sql.append(" coalesce(cos.codibge, co.codibge) as municipioOrigem, "); - sql.append(" case when((coalesce(eos.cveestado, eo.cveestado)) = "); - sql.append(" (coalesce(eds.cveestado, ed.cveestado))) "); - sql.append(" then 0 else 1 "); - sql.append(" end as isInterEstadual, "); - sql.append(" ei.porcredbaseicms as redBaseCalcIcms, "); - sql.append(" ei.porcredmunicipal as porcRedMunicipal, "); - sql.append(" ei.porcredestadual as porcRedEstadual, "); - sql.append(" ei.tributacaoimportacao as tributacaoImportacao, "); - sql.append(" case when (coalesce(pos.regionmetropolitana_id, po.regionmetropolitana_id, -1) = "); - sql.append(" coalesce(pds.regionmetropolitana_id, pd.regionmetropolitana_id, -2)) "); - sql.append(" then 1 else 0 end as isenta, "); - sql.append(" coalesce(b.preciopagado, 0) as tarifa, "); - sql.append(" coalesce(b.importetaxaembarque, 0) as taxaEmbarque, "); - sql.append(" coalesce(b.importepedagio, 0) as pedagio, "); - sql.append(" coalesce(b.importeseguro, 0) as seguro, "); - sql.append(" coalesce(b.importeoutros, 0) as outros, "); - sql.append(" coalesce(r2.numserie20, imp.numserie20) as ecf, "); - sql.append(" to_char(b.feccreacion, 'YYYYMMDD') as datamov, "); - sql.append(" case when r2.numserie20 is null then '000001' else r2.coo end as coo, "); - sql.append(" '000000' as ccf, "); - sql.append(" null as totalFiscal, "); - sql.append(" case when r2.numserie20 is null then '000001' else r2.coo end as cooredz, "); - sql.append(" epv.cveestado as estadoImpressora "); - sql.append("from caja b "); - sql.append(" join fiscal_impressora imp on imp.numserie = b.serieimpfiscal "); - sql.append(" left join fiscal_r2 r2 on r2.numserie20 = imp.numserie20 and r2.datamov = to_char(b.feccreacion, 'YYYYMMDD') "); - sql.append(" left join fiscal_r4 r4 on b.caja_id = r4.caja_id "); - sql.append(" join marca m on b.marca_id = m.marca_id "); - sql.append(" join empresa e on e.empresa_id = m.empresa_id "); - sql.append(" join ciudad ce on ce.ciudad_id = e.ciudad_id "); - sql.append(" join estado ee on ee.estado_id = ce.estado_id "); - sql.append(" join punto_venta pv on pv.puntoventa_id = b.puntoventa_id "); - sql.append(" left join parada ppv on ppv.parada_id = pv.parada_id "); - sql.append(" left join ciudad cpv on cpv.ciudad_id = ppv.ciudad_id "); - sql.append(" left join estado epv on epv.estado_id = cpv.estado_id "); - sql.append(" join parada po on po.parada_id = b.origen_id "); - sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id "); - sql.append(" join estado eo on eo.estado_id = co.estado_id "); - sql.append(" join parada pd on pd.parada_id = b.destino_id "); - sql.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id "); - sql.append(" join estado ed on ed.estado_id = cd.estado_id "); - sql.append(" left join alias_servico s on s.origen_id = b.origen_id "); - sql.append(" and s.destino_id = b.destino_id and (s.corrida_id = b.corrida_id or s.corrida_id is null) "); - sql.append(" and s.ruta_id = b.ruta_id "); - sql.append(" left join parada pos on pos.parada_id = s.aliasorigen_id "); - sql.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id "); - sql.append(" left join estado eos on eos.estado_id = cos.estado_id "); - sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id "); - sql.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id "); - sql.append(" left join estado eds on eds.estado_id = cds.estado_id "); - sql.append(" join inscricao_estadual ie on e.empresa_id = ie.empresa_id "); - sql.append(" and ie.estado_id = coalesce(eos.estado_id, eo.estado_id) and ie.activo = 1 "); - sql.append(" join ciudad cie on cie.ciudad_id = ie.ciudad_id "); - sql.append(" join estado eie on eie.estado_id = cie.estado_id "); - sql.append(" join empresa_imposto ei on ei.empresa_id = e.empresa_id "); - sql.append(" and ei.estado_id = coalesce(eos.estado_id, eo.estado_id) and ei.activo = 1 "); - sql.append(" left join aidf a on a.aidf_id = b.aidf_id "); - sql.append("where b.tipoventa_id <> 3 "); - sql.append(isCancelamento ? "" : " and b.rmd_id is null "); - sql.append(" and b.preciopagado > 0 "); - sql.append(" and b.serieimpfiscal is not null and r4.caja_id is null "); - sql.append(" and ((b.indreimpresion = 0 and b.motivocancelacion_id is null and b.numfoliosistema is not null) or (b.indstatusboleto = 'E' and b.indreimpresion = 1)) "); - sql.append(" and b.empresacorrida_id = :EMPRESA_ID "); - sql.append(" and b.feccreacion between :DATE_INICIO and :DATE_FIM "); - sql.append(" and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = :CVEESTADO ) "); - sql.append(isCancelamento ? " and b.rmd_id = :RMD_ID " : " "); - sql.append(isCancelamento ? " and b.foliormd between :FOLIO_INICIAL and :FOLIO_FINAL " : " "); - sql.append(" "); - sql.append("order by estadoId, datamov, ecf, coo "); - + sql.append(" where c.activo = 1 and po.activo = 1 and co.activo = 1 and eo.activo = 1 and ei.activo = 1 "); + sql.append(" and coalesce(case when s.aliasorigen_id is null then ei.activo else eis.activo end, 0) = 1 "); + sql.append(" and c.serieimpfiscal is not null "); + sql.append(" and ((c.indreimpresion = 0 and c.motivocancelacion_id is null and c.numfoliosistema is not null) or (c.indstatusboleto = 'E' and c.indreimpresion = 1)) "); + sql.append(" and (coalesce(c.preciopagado,0) + coalesce(c.importetaxaembarque,0) + coalesce(c.importeseguro,0) + coalesce(c.importepedagio,0) + coalesce(c.importeoutros,0)) > 0 "); + sql.append(" and c.feccreacion >= :DATE_INICIO and c.feccreacion <= :DATE_FIM "); + sql.append(" and c.empresacorrida_id = :EMPRESA_ID "); + sql.append(" and ((case when s.aliasorigen_id is null then eo.cveestado else eos.cveestado end) = :CVEESTADO ) "); + sql.append(isCancelamento ? "" : " and c.rmd_id is null "); + sql.append(isCancelamento ? " and c.rmd_id = :RMD_ID " : " "); + sql.append(isCancelamento ? " and c.foliormd between :FOLIO_INICIAL and :FOLIO_FINAL " : " "); + sql.append(" order by estadoId, datamov, ecf, coo "); return sql.toString(); } @@ -4287,7 +4186,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO } private String sqlRelatorioRDIVendidos(String ufs) { - + StringBuilder sql = new StringBuilder(); sql.append("select distinct "); sql.append(" b.caja_id as cajaId, "); @@ -4398,7 +4297,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" coalesce(b.importepedagio, 0) as pedagio, "); sql.append(" coalesce(b.importeseguro, 0) as seguro, "); sql.append(" coalesce(b.importeoutros, 0) as outros, "); - sql.append(" coalesce(r4.datamov, to_char(trunc(b.feccreacion), 'yyyymmdd')) as datamov "); + sql.append(" coalesce(r4.datamov, to_char(trunc(b.feccreacion), 'yyyymmdd')) as datamov "); sql.append("from fiscal_r4 r4 "); sql.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov "); sql.append(" join fiscal_impressora imp on imp.numserie20 = r4.numserie20 ");