From 301eb70c783ce2c928485be91cffee48288dcead Mon Sep 17 00:00:00 2001 From: julio Date: Wed, 17 Jul 2019 11:08:44 +0000 Subject: [PATCH] fixes bug#15005 dev: julio qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@95825 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/BpeHibernateDAO.java | 507 ++++++++++++++++-- 1 file changed, 477 insertions(+), 30 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java index 6f0ed27dc..2f8b691ea 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java @@ -29,12 +29,16 @@ import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.MoneyHelper; import com.rjconsultores.ventaboletos.utilerias.exportacao.bpe.ExportacaoBPEBase; import com.rjconsultores.ventaboletos.utilerias.exportacao.bpe.ExportacaoBPEVo; +import com.rjconsultores.ventaboletos.utilerias.exportacao.bpe.ExportacaoBPEVo.TipoComp; +import com.rjconsultores.ventaboletos.utilerias.exportacao.bpe.xml.BPeUtil; import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.DetalhadoFiscal; import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.FiscalRdi; import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.RdiValidacion; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; +import br.inf.portalfiscal.bpe.TBPe; + @Repository("bpeDAO") public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { private static Logger log = Logger.getLogger(BpeHibernateDAO.class); @@ -325,6 +329,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { return sql.toString(); } + @Deprecated private String queryXml() { StringBuilder sql = new StringBuilder(); sql.append("select distinct "); @@ -447,28 +452,41 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { List rdis = new ArrayList(); - StringBuilder sqlVendidos = new StringBuilder(); - sqlVendidos.append(sqlRelatorioRDIVendidos(ufs)); + boolean isNoXML = isNoXml(); - List listVendidos = montaRelatorioRDI(connection, inicio, fim, empresaId, ufs, sqlVendidos.toString()); - List rdiVendidos = calcularRelatorioRDI(listVendidos, isReceitaTerceiros); - rdis.addAll(rdiVendidos); + if (isNoXML) { + StringBuilder sqlVendidos = new StringBuilder(); + sqlVendidos.append(sqlRelatorioRDIVendidosNoXML(ufs)); - StringBuilder sql = new StringBuilder(); - sql.append(sqlRelatorioRDICanceladosSubstituidos(ufs)); - sql.append(" UNION ALL "); - sql.append(sqlRelatorioRDICancelados(ufs)); + List listVendidos = montaRelatorioRDINoXML(connection, inicio, fim, empresaId, ufs, sqlVendidos.toString()); + List rdiVendidos = calcularRelatorioRDINoXML(listVendidos, isReceitaTerceiros); + rdis.addAll(rdiVendidos); - List listCancelados = montaRelatorioRDI(connection, inicio, fim, empresaId, ufs, sql.toString()); - List rdiCancelados = calcularRelatorioRDI(listCancelados, isReceitaTerceiros); - rdis.addAll(rdiCancelados); + StringBuilder sql = new StringBuilder(); + sql.append(sqlRelatorioRDICanceladosSubstituidosNoXML(ufs)); + sql.append(" UNION ALL "); + sql.append(sqlRelatorioRDICanceladosNoXML(ufs)); - Collections.sort(rdis, new Comparator() { - @Override - public int compare(FiscalRdi m1, FiscalRdi m2) { - return m1.getEstado().compareTo(m2.getEstado()); - } - }); + List listCancelados = montaRelatorioRDINoXML(connection, inicio, fim, empresaId, ufs, sql.toString()); + List rdiCancelados = calcularRelatorioRDINoXML(listCancelados, isReceitaTerceiros); + rdis.addAll(rdiCancelados); + + Collections.sort(rdis, new Comparator() { + @Override + public int compare(FiscalRdi m1, FiscalRdi m2) { + return m1.getEstado().compareTo(m2.getEstado()); + } + }); + } else { + + StringBuilder sql = new StringBuilder(); + sql.append(sqlRelatorioRDIVendidosXML(ufs)); + sql.append(" union all "); + sql.append(sqlRelatorioRDICanceladosXML(ufs)); + + List list = montaRelatorioRDIXML(connection, inicio, fim, empresaId, ufs, sql.toString()); + rdis.addAll(calcularRelatorioRDIXML(list, isReceitaTerceiros)); + } return agrupaRdi(rdis); } @@ -564,7 +582,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { return agr; } - private List calcularRelatorioRDI(List list, boolean isReceitaTerceiros) { + private List calcularRelatorioRDINoXML(List list, boolean isReceitaTerceiros) { List rdis = new ArrayList(); @@ -623,17 +641,22 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { BigDecimal isentos = BigDecimal.ZERO; - isentos = isentos.add(isEstadual && !det.getIndPedagioEstdual() ? new BigDecimal(det.getVcomp02() == null ? "0.0" : det.getVcomp02()) : BigDecimal.ZERO); - isentos = isentos.add(!isEstadual && !det.getIndPedagioMunicipal() ? new BigDecimal(det.getVcomp02() == null ? "0.0" : det.getVcomp02()) : BigDecimal.ZERO); BigDecimal pedagio = isReceitaTerceiros ? new BigDecimal(det.getVcomp02() == null ? "0.0" : det.getVcomp02()) : BigDecimal.ZERO; + BigDecimal pedagioIsento = isEstadual && !det.getIndPedagioEstdual() ? pedagio : BigDecimal.ZERO; + if (pedagioIsento.compareTo(BigDecimal.ZERO) == 0) + pedagioIsento = !isEstadual && !det.getIndPedagioMunicipal() ? pedagio : BigDecimal.ZERO; - isentos = isentos.add(isEstadual && !det.getIndTxembarqueEstadual() ? new BigDecimal(det.getVcomp03() == null ? "0.0" : det.getVcomp03()) : BigDecimal.ZERO); - isentos = isentos.add(!isEstadual && !det.getIndTxembarqueMunicipal() ? new BigDecimal(det.getVcomp03() == null ? "0.0" : det.getVcomp03()) : BigDecimal.ZERO); BigDecimal taxaEmbarque = isReceitaTerceiros ? new BigDecimal(det.getVcomp03() == null ? "0.0" : det.getVcomp03()) : BigDecimal.ZERO; + BigDecimal taxaEmbarqueIsento = isEstadual && !det.getIndTxembarqueEstadual() ? taxaEmbarque : BigDecimal.ZERO; + if (taxaEmbarqueIsento.compareTo(BigDecimal.ZERO) == 0) + taxaEmbarqueIsento = !isEstadual && !det.getIndTxembarqueMunicipal() ? taxaEmbarque : BigDecimal.ZERO; - isentos = isentos.add(isEstadual && !det.getIndSeguroEstadual() ? new BigDecimal(det.getVcomp04() == null ? "0.0" : det.getVcomp04()) : BigDecimal.ZERO); - isentos = isentos.add(!isEstadual && !det.getIndSeguroMunicipal() ? new BigDecimal(det.getVcomp04() == null ? "0.0" : det.getVcomp04()) : BigDecimal.ZERO); BigDecimal seguro = isReceitaTerceiros ? new BigDecimal(det.getVcomp04() == null ? "0.0" : det.getVcomp04()) : BigDecimal.ZERO; + BigDecimal seguroIsento = isEstadual && !det.getIndSeguroEstadual() ? seguro : BigDecimal.ZERO; + if (seguroIsento.compareTo(BigDecimal.ZERO) == 0) + seguroIsento = isEstadual && !det.getIndSeguroEstadual() ? seguro : BigDecimal.ZERO; + + isentos = MoneyHelper.somar(isentos, pedagioIsento, taxaEmbarqueIsento, seguroIsento); BigDecimal aliquota = new BigDecimal(pICMS == null ? "0.0" : pICMS); @@ -670,7 +693,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { return rdis; } - private List montaRelatorioRDI(Connection connection, Date inicio, Date fim, Integer empresaId, String ufs, String sql) { + private List montaRelatorioRDINoXML(Connection connection, Date inicio, Date fim, Integer empresaId, String ufs, String sql) { log.info("Inicio da consulta busca RelatorioRDI BPe: " + new Date()); @@ -782,7 +805,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { return list; } - private String sqlRelatorioRDIVendidos(String ufs) { + private String sqlRelatorioRDIVendidosNoXML(String ufs) { StringBuilder sql = new StringBuilder(); sql.append("select /*+INDEX(BPE IDX__BPE_BOLETO)*/ "); @@ -874,7 +897,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { } - private String sqlRelatorioRDICanceladosSubstituidos(String ufs) { + private String sqlRelatorioRDICanceladosSubstituidosNoXML(String ufs) { StringBuilder sql = new StringBuilder(); sql.append("select /*+INDEX(BPE IDX__BPE_BOLETO)*/ "); @@ -973,7 +996,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { } - private String sqlRelatorioRDICancelados(String ufs) { + private String sqlRelatorioRDICanceladosNoXML(String ufs) { StringBuilder sql = new StringBuilder(); sql.append("select /*+INDEX(BPE IDX__BPE_BOLETO)*/ "); @@ -1072,4 +1095,428 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { return sql.toString(); } -} + @Deprecated + private List calcularRelatorioRDIXML(List list, boolean isReceitaTerceiros) { + + List rdis = new ArrayList(); + + BigDecimal aliquotaAnt = null; + for (DetalhadoFiscal det : list) { + + String xml = det.getXml(); + + BigDecimal tarifa = BigDecimal.ZERO; + BigDecimal taxaEmbarque = BigDecimal.ZERO; + BigDecimal pedagio = BigDecimal.ZERO; + BigDecimal seguro = BigDecimal.ZERO; + BigDecimal passagem = BigDecimal.ZERO; + BigDecimal isentos = BigDecimal.ZERO; + + boolean isEstadual = det.isInterEstadual(); + String tipoViagem = isEstadual ? "IE" : "IM"; + + TBPe tbpe = null; + if (StringUtils.isNotBlank(xml)) + tbpe = BPeUtil.convertXmlToBpe(xml); + + String vBC = null; + String pICMS = null; + String vICMS = null; + String pRedBC = null; + + if (StringUtils.isNotBlank(xml)) { + if (tbpe.getInfBPe().getImp().getICMS().getICMS00() != null) { + vBC = tbpe.getInfBPe().getImp().getICMS().getICMS00().getVBC(); + pICMS = tbpe.getInfBPe().getImp().getICMS().getICMS00().getPICMS(); + vICMS = tbpe.getInfBPe().getImp().getICMS().getICMS00().getVICMS(); + } else if (tbpe.getInfBPe().getImp().getICMS().getICMS20() != null) { + vBC = tbpe.getInfBPe().getImp().getICMS().getICMS20().getVBC(); + pICMS = tbpe.getInfBPe().getImp().getICMS().getICMS20().getPICMS(); + vICMS = tbpe.getInfBPe().getImp().getICMS().getICMS20().getVICMS(); + pRedBC = tbpe.getInfBPe().getImp().getICMS().getICMS20().getPRedBC(); + } + + if (tbpe.getInfBPe().getInfValorBPe() != null) { + + String vPgto = tbpe.getInfBPe().getInfValorBPe().getVPgto(); + passagem = new BigDecimal(vPgto == null ? "0.0" : vPgto); + + for (TBPe.InfBPe.InfValorBPe.Comp comp : tbpe.getInfBPe().getInfValorBPe().getComp()) { + if (comp.getTpComp().equals(TipoComp.TARIFA)) { + String vDesconto = tbpe.getInfBPe().getInfValorBPe().getVDesconto(); + tarifa = new BigDecimal(comp.getVComp() == null ? "0.0" : comp.getVComp()); + tarifa = tarifa.subtract(new BigDecimal(vDesconto == null ? "0.0" : vDesconto)); + } + + if (comp.getTpComp().equals(TipoComp.PEDAGIO)) { + pedagio = isReceitaTerceiros ? new BigDecimal(det.getVcomp02() == null ? "0.0" : det.getVcomp02()) : BigDecimal.ZERO; + BigDecimal pedagioIsento = isEstadual && !det.getIndPedagioEstdual() ? pedagio : BigDecimal.ZERO; + if (pedagioIsento.compareTo(BigDecimal.ZERO) == 0) + pedagioIsento = !isEstadual && !det.getIndPedagioMunicipal() ? pedagio : BigDecimal.ZERO; + + isentos = isentos.add(pedagioIsento); + } + + if (comp.getTpComp().equals(TipoComp.TAXA_EMBARQUE)) { + taxaEmbarque = isReceitaTerceiros ? new BigDecimal(det.getVcomp03() == null ? "0.0" : det.getVcomp03()) : BigDecimal.ZERO; + BigDecimal taxaEmbarqueIsento = isEstadual && !det.getIndTxembarqueEstadual() ? taxaEmbarque : BigDecimal.ZERO; + if (taxaEmbarqueIsento.compareTo(BigDecimal.ZERO) == 0) + taxaEmbarqueIsento = !isEstadual && !det.getIndTxembarqueMunicipal() ? taxaEmbarque : BigDecimal.ZERO; + + isentos = isentos.add(taxaEmbarqueIsento); + } + + if (comp.getTpComp().equals(TipoComp.SEGURO)) { + seguro = isReceitaTerceiros ? new BigDecimal(det.getVcomp04() == null ? "0.0" : det.getVcomp04()) : BigDecimal.ZERO; + BigDecimal seguroIsento = isEstadual && !det.getIndSeguroEstadual() ? seguro : BigDecimal.ZERO; + if (seguroIsento.compareTo(BigDecimal.ZERO) == 0) + seguroIsento = isEstadual && !det.getIndSeguroEstadual() ? seguro : BigDecimal.ZERO; + + isentos = isentos.add(seguroIsento); + } + } + } + } + + BigDecimal baseCalculo = new BigDecimal(vBC == null ? "0.0" : vBC); + + BigDecimal aliquota = new BigDecimal(pICMS == null ? "0.0" : pICMS); + aliquota = (aliquota.intValue() == 0 ? (aliquotaAnt == null ? aliquota : aliquotaAnt) : aliquota); + if (aliquota != null && aliquota.intValue() > 0) + aliquotaAnt = aliquota; + + BigDecimal icms = new BigDecimal(vICMS == null ? "0.0" : vICMS); + + BigDecimal cp = null; + if (isEstadual) { + cp = det.getPorcRedEstadual() == null ? BigDecimal.ZERO : det.getPorcRedEstadual(); + } else { + cp = det.getPorcRedMunicipal() == null ? BigDecimal.ZERO : det.getPorcRedMunicipal(); + } + + BigDecimal credPres = icms.multiply(cp.divide(BigDecimal.TEN.multiply(BigDecimal.TEN))); + BigDecimal icmsRec = icms.subtract(credPres); + BigDecimal vRedBC = det.getRedBaseCalcIcms(); + + BigDecimal outros = isentos.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : passagem.subtract(isentos).subtract(baseCalculo); + if (pRedBC != null) { + outros = passagem.subtract(baseCalculo); + outros = outros.subtract(isentos); + } + + rdis.add(new FiscalRdi(det.getEstadoOrigem(), tipoViagem, det.getTipoReceita(), tarifa, + seguro, taxaEmbarque, pedagio, passagem, isentos, outros, vRedBC, + baseCalculo, aliquota, icms, cp, credPres, icmsRec)); + } + + return rdis; + } + + @Deprecated + private List montaRelatorioRDIXML(Connection connection, Date inicio, Date fim, Integer empresaId, String ufs, String sql) { + + List list = new ArrayList(); + try { + + NamedParameterStatement ps = new NamedParameterStatement(connection, sql); + ps.setLong("EMPRESA_ID", Long.valueOf(empresaId)); + + ps.setTimestamp("DATE_INICIO", new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime())); + ps.setTimestamp("DATE_FIM", new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime())); + + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + + String xml_bpe = rs.getNString("xml_bpe"); + String xml_bpe_2 = rs.getNString("xml_bpe_2"); + String xml_bpe_3 = rs.getNString("xml_bpe_3"); + String xml = StringUtils.join(new String[] { xml_bpe, xml_bpe_2, xml_bpe_3 }); + + TBPe tbpe = null; + if (StringUtils.isNotBlank(xml)) + tbpe = BPeUtil.convertXmlToBpe(xml); + + DetalhadoFiscal df = new DetalhadoFiscal(); + df.setXml(xml); + + String municipioOrigem = StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getCMunIni() : rs.getString("municipioOrigem"); + String estadoOrigem = (StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getUFIni().value() : rs.getString("estadoOrigem")); + String estadoDestino = (StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getUFFim().value() : rs.getString("estadoDestino")); + + boolean isInterEstadual = !estadoOrigem.equals(estadoDestino); + df.setEstadoOrigem(estadoOrigem); + df.setEstadoDestino(estadoDestino); + df.setMunicipioOrigem(municipioOrigem); + df.setInterEstadual(isInterEstadual); + df.setCajaId(rs.getLong("cajaId")); + df.setTipoReceita(rs.getString("tipoReceita")); + df.setNumoperacion(rs.getString("numoperacion")); + df.setEstadoId(rs.getInt("estadoId")); + df.setFechorVenta(rs.getDate("fechorVenta")); + df.setIcmsInterestadual(rs.getBigDecimal("icmsInterestadual")); + df.setIcmsIntermunicipal(rs.getBigDecimal("icmsIntermunicipal")); + df.setIcmsInterestadual(rs.getBigDecimal("icmsInterestadual")); + df.setRedBaseCalcIcms(rs.getBigDecimal("redBaseCalcIcms")); + df.setPorcRedMunicipal(rs.getBigDecimal("porcRedMunicipal")); + df.setPorcRedEstadual(rs.getBigDecimal("porcRedEstadual")); + df.setTributacaoImportacao(rs.getBigDecimal("tributacaoImportacao")); + df.setIndTarifaMunicipal(rs.getBoolean("indtarifamunicipal")); + df.setIndSeguroMunicipal(rs.getBoolean("indseguromunicipal")); + df.setIndTxembarqueMunicipal(rs.getBoolean("indtxembarquemunicipal")); + df.setIndPedagioMunicipal(rs.getBoolean("indpedagiomunicipal")); + df.setIndTarifaEstadual(rs.getBoolean("indtarifaestadual")); + df.setIndSeguroEstadual(rs.getBoolean("indseguroestadual")); + df.setIndTxembarqueEstadual(rs.getBoolean("indtxembarqueestadual")); + df.setIndPedagioEstdual(rs.getBoolean("indpedagioestdual")); + df.setIsenta(rs.getBoolean("isenta")); + df.setTarifa(rs.getBigDecimal("tarifa")); + df.setTaxaEmbarque(rs.getBigDecimal("taxaEmbarque")); + df.setPedagio(rs.getBigDecimal("pedagio")); + df.setSeguro(rs.getBigDecimal("seguro")); + df.setOutros(rs.getBigDecimal("outros")); + df.setDatamov(rs.getString("datamov")); + list.add(df); + } + + rs.close(); + ps.close(); + + } catch (SQLException e) { + log.error("", e); + } + + return list; + } + + @Deprecated + private String sqlRelatorioRDIVendidosXML(String ufs) { + + StringBuilder sql = new StringBuilder(); + sql.append("select distinct "); + sql.append(" c.boleto_id as cajaId, "); + sql.append(" 'REC' as tipoReceita, "); + sql.append(" c.numoperacion as numoperacion, "); + sql.append(" trunc(c.feccreacion) as fechorVenta, "); + sql.append(" e.estado_id as estadoId, "); + sql.append(" ei.icms as icmsInterestadual, "); + sql.append(" ei.icmsim as icmsIntermunicipal, "); + sql.append(" e.cveestado as estadoOrigem, "); + sql.append(" ed.cveestado as estadoDestino, "); + sql.append(" co.codibge as municipioOrigem, "); + sql.append(" case when (e.cveestado = ed.cveestado) then 0 else 1 end as isInterEstadual, "); + sql.append(" 0 as isenta, "); + sql.append(" ei.porcredbaseicms as redBaseCalcIcms, "); + sql.append(" ei.porcredmunicipal as porcRedMunicipal, "); + sql.append(" ei.porcredestadual as porcRedEstadual, "); + sql.append(" ei.indtarifamunicipal as indtarifamunicipal, "); + sql.append(" ei.indseguromunicipal as indseguromunicipal, "); + sql.append(" ei.indtxembarquemunicipal as indtxembarquemunicipal, "); + sql.append(" ei.indpedagiomunicipal as indpedagiomunicipal, "); + sql.append(" ei.indtarifaestadual as indtarifaestadual, "); + sql.append(" ei.indseguroestadual as indseguroestadual, "); + sql.append(" ei.indtxembarqueestadual as indtxembarqueestadual, "); + sql.append(" ei.indpedagioestdual as indpedagioestdual, "); + sql.append(" ei.tributacaoImportacao as tributacaoImportacao, "); + 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(" to_char(trunc(c.feccreacion), 'yyyymmdd') as datamov, "); + sql.append(" DBMS_LOB.substr(coalesce(bpe.xmlregular, bpe.xmlcontingencia), 3000) as xml_bpe, "); + sql.append(" DBMS_LOB.substr(coalesce(bpe.xmlregular, bpe.xmlcontingencia), 3000, 3001) as xml_bpe_2, "); + sql.append(" DBMS_LOB.substr(coalesce(bpe.xmlregular, bpe.xmlcontingencia), 3000, 6001) as xml_bpe_3 "); + sql.append("from boleto c "); + sql.append(" join bpe bpe on c.boleto_id = bpe.boleto_id "); + sql.append(" and bpe.activo = (case when c.motivocancelacion_id = 17 and c.boletooriginal_id is null then 0 else 1 end) "); + sql.append(" left join bpe bpecan on bpecan.chbpe = bpe.chbpe and bpecan.codstat in ('101','135') and bpe.codstat = '100' "); + sql.append(" and (bpecan.tipoevento = '110111' or bpecan.tipoevento is null) and bpecan.activo = 1 "); + sql.append(" join estado e on e.codibge = bpe.uf "); + sql.append(" join marca ma on c.marca_id = ma.marca_id "); + sql.append(" join empresa ep on ma.empresa_id = ep.empresa_id "); + sql.append(" join ruta r on r.ruta_id = c.ruta_id "); + sql.append(" left join alias_servico ase on ase.origen_id = c.origen_id "); + sql.append(" and ase.destino_id = c.destino_id and ase.ruta_id = c.ruta_id and ase.activo = 1 and ase.corrida_id is null and ase.activo = 1 "); + sql.append(" inner join parada o on coalesce(ase.aliasorigen_id, c.origen_id) = o.parada_id "); + sql.append(" inner join ciudad co on o.ciudad_id = co.ciudad_id "); + sql.append(" inner join estado eo on eo.estado_id = co.estado_id "); + sql.append(" inner join parada d on coalesce(ase.aliasdestino_id, c.destino_id) = d.parada_id "); + sql.append(" inner join ciudad cd on d.ciudad_id = cd.ciudad_id "); + sql.append(" inner join estado ed on ed.estado_id = cd.estado_id "); + sql.append(" left join empresa_imposto ei on ei.empresa_id = ep.empresa_id and ei.estado_id = e.estado_id and ei.activo = 1 "); + sql.append("where c.activo = 1 and bpe.tipoamb = 1 and bpe.codstat in ('-1','100','102','150') "); + sql.append(" and (bpe.fecmodif < (case when (to_char(bpe.fecmodif, 'mm/yyyy') <> to_char(bpecan.fecmodif, 'mm/yyyy') ) "); + sql.append(" then bpecan.fecmodif else bpe.fecmodif end) or bpecan.fecmodif is null) "); + sql.append(" and c.feccreacion >= :DATE_INICIO "); + sql.append(" and c.feccreacion <= :DATE_FIM "); + sql.append(" and ep.empresa_id = :EMPRESA_ID "); + sql.append(" and e.cveestado in ( ").append(ufs).append(" ) "); + + return sql.toString(); + } + + @Deprecated + private String sqlRelatorioRDICanceladosXML(String ufs) { + + StringBuilder sql = new StringBuilder(); + sql.append("select distinct "); + sql.append(" b.boleto_id as cajaId, "); + sql.append(" 'DEV' as tipoReceita, "); + sql.append(" b.numoperacion as numoperacion, "); + sql.append(" trunc(bori.feccreacion) as fechorVenta, "); + sql.append(" est_bpe.estado_id as estadoId, "); + sql.append(" ei.icms as icmsInterestadual, "); + sql.append(" ei.icmsim as icmsIntermunicipal, "); + sql.append(" est_bpe.cveestado as estadoOrigem, "); + sql.append(" eds.cveestado as estadoDestino, "); + sql.append(" co.codibge as municipioOrigem, "); + sql.append(" case when (est_bpe.cveestado = eds.cveestado) then 0 else 1 end as isInterEstadual, "); + sql.append(" 0 as isenta, "); + sql.append(" ei.porcredbaseicms as redBaseCalcIcms, "); + sql.append(" ei.porcredmunicipal as porcRedMunicipal, "); + sql.append(" ei.porcredestadual as porcRedEstadual, "); + sql.append(" ei.indtarifamunicipal as indtarifamunicipal, "); + sql.append(" ei.indseguromunicipal as indseguromunicipal, "); + sql.append(" ei.indtxembarquemunicipal as indtxembarquemunicipal, "); + sql.append(" ei.indpedagiomunicipal as indpedagiomunicipal, "); + sql.append(" ei.indtarifaestadual as indtarifaestadual, "); + sql.append(" ei.indseguroestadual as indseguroestadual, "); + sql.append(" ei.indtxembarqueestadual as indtxembarqueestadual, "); + sql.append(" ei.indpedagioestdual as indpedagioestdual, "); + sql.append(" ei.tributacaoImportacao as tributacaoImportacao, "); + 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(" to_char(trunc(bori.feccreacion), 'yyyymmdd') as datamov, "); + sql.append(" dbms_lob.substr((case when bpeori.tipoevento is not null then bpeant.xmlregular else bpeori.xmlregular end), 3000) as xml_bpe, "); + sql.append(" dbms_lob.substr((case when bpeori.tipoevento is not null then bpeant.xmlregular else bpeori.xmlregular end), 3000, 3001) as xml_bpe_2, "); + sql.append(" dbms_lob.substr((case when bpeori.tipoevento is not null then bpeant.xmlregular else bpeori.xmlregular end), 3000, 6001) as xml_bpe_3 "); + sql.append("from boleto bori "); + sql.append(" inner join marca m on m.marca_id = bori.marca_id and m.activo = 1 "); + sql.append(" inner join empresa e on e.empresa_id = m.empresa_id "); + sql.append(" inner join bpe bpe on bpe.boleto_id = bori.boleto_id "); + sql.append(" and bpe.activo = (case when bori.motivocancelacion_id = 17 and bori.boletooriginal_id is null then 0 else 1 end) "); + sql.append(" inner join estado est_bpe on bpe.uf = est_bpe.codibge "); + sql.append(" left join bpe bpeori on bpeori.chbpe = bpe.chbpe_substituicao "); + sql.append(" and bpeori.activo = (case when bori.motivocancelacion_id = 17 and bori.boletooriginal_id is null then 0 else 1 end) "); + sql.append(" left join boleto b on b.boleto_id = bpeori.boleto_id "); + sql.append(" inner join punto_venta ptv on ptv.puntoventa_id = b.puntoventa_id "); + sql.append(" inner join parada ori on (b.origen_id = ori.parada_id ) "); + sql.append(" inner join parada des on (b.destino_id = des.parada_id ) "); + sql.append(" inner join ciudad co on (co.ciudad_id = ori.ciudad_id ) "); + sql.append(" inner join ciudad cd on (cd.ciudad_id = des.ciudad_id ) "); + sql.append(" inner join estado est on est.estado_id = co.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, est.estado_id) and ie.activo = 1 "); + sql.append(" join empresa_imposto ei on ei.empresa_id = e.empresa_id "); + sql.append(" and ei.estado_id = coalesce(eos.estado_id, est.estado_id) and ei.activo = 1 "); + sql.append(" left join aidf aidf on aidf.aidf_id = b.aidf_id and b.tipoventa_id = 3 "); + sql.append(" left join estado esaidf on esaidf.estado_id = aidf.estado_id "); + sql.append(" left join boleto bant on bant.boleto_id = (case when bpeori.tipoevento is not null then coalesce(b.boletoanterior_id, b.boletooriginal_id) else null end) "); + sql.append(" left join bpe bpeant on bpeant.boleto_id = bant.boleto_id "); + sql.append(" left join punto_venta ptvo on ptvo.puntoventa_id = coalesce(bant.puntoventa_id, bori.puntoventa_id,b.ptovtaventa_id) "); + sql.append("where ( (bpe.codstat in ('-1','100','101','102','135','150') and bpe.chbpe_substituicao is not null) "); + sql.append(" or (bpe.codstat in ('101','135') and to_char(b.feccreacion, 'mm/yyyy') < to_char(bori.feccreacion, 'mm/yyyy')) ) "); + sql.append(" and (bpe.codstat in ('-1','100','101','102','135','150') and bpe.tipoevento <> '110115' or bpe.tipoevento is null) "); + sql.append(" and (bpeori.codstat in ('-1','100','101','102','135','150') and bpeori.tipoevento <> '110115' or bpeori.tipoevento is null) "); + sql.append(" and bori.feccreacion >= :DATE_INICIO "); + sql.append(" and bori.feccreacion <= :DATE_FIM "); + sql.append(" and est_bpe.cveestado in ( ").append(ufs).append(" ) "); + sql.append(" and e.empresa_id = :EMPRESA_ID "); + sql.append(" "); + sql.append(" union all "); + sql.append(" "); + sql.append("select distinct "); + sql.append(" b.boleto_id as cajaId, "); + sql.append(" 'DEV' as tipoReceita, "); + sql.append(" b.numoperacion as numoperacion, "); + sql.append(" trunc(bori.feccreacion) as fechorVenta, "); + sql.append(" est_bpe.estado_id as estadoId, "); + sql.append(" ei.icms as icmsInterestadual, "); + sql.append(" ei.icmsim as icmsIntermunicipal, "); + sql.append(" est_bpe.cveestado as estadoOrigem, "); + sql.append(" eds.cveestado as estadoDestino, "); + sql.append(" co.codibge as municipioOrigem, "); + sql.append(" case when (est_bpe.cveestado = eds.cveestado) then 0 else 1 end as isInterEstadual, "); + sql.append(" 0 as isenta, "); + sql.append(" ei.porcredbaseicms as redBaseCalcIcms, "); + sql.append(" ei.porcredmunicipal as porcRedMunicipal, "); + sql.append(" ei.porcredestadual as porcRedEstadual, "); + sql.append(" ei.indtarifamunicipal as indtarifamunicipal, "); + sql.append(" ei.indseguromunicipal as indseguromunicipal, "); + sql.append(" ei.indtxembarquemunicipal as indtxembarquemunicipal, "); + sql.append(" ei.indpedagiomunicipal as indpedagiomunicipal, "); + sql.append(" ei.indtarifaestadual as indtarifaestadual, "); + sql.append(" ei.indseguroestadual as indseguroestadual, "); + sql.append(" ei.indtxembarqueestadual as indtxembarqueestadual, "); + sql.append(" ei.indpedagioestdual as indpedagioestdual, "); + sql.append(" ei.tributacaoImportacao as tributacaoImportacao, "); + 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(" to_char(trunc(bori.feccreacion), 'yyyymmdd') as datamov, "); + sql.append(" dbms_lob.substr((case when bpeori.tipoevento is not null then bpeant.xmlregular else bpeori.xmlregular end), 3000) as xml_bpe, "); + sql.append(" dbms_lob.substr((case when bpeori.tipoevento is not null then bpeant.xmlregular else bpeori.xmlregular end), 3000, 3001) as xml_bpe_2, "); + sql.append(" dbms_lob.substr((case when bpeori.tipoevento is not null then bpeant.xmlregular else bpeori.xmlregular end), 3000, 6001) as xml_bpe_3 "); + sql.append("from boleto bori "); + sql.append(" inner join marca m on m.marca_id = bori.marca_id and m.activo = 1 "); + sql.append(" inner join empresa e on e.empresa_id = m.empresa_id "); + sql.append(" inner join bpe bpe on bpe.boleto_id = bori.boleto_id "); + sql.append(" and bpe.activo = (case when bori.motivocancelacion_id = 17 and bori.boletooriginal_id is null then 0 else 1 end) "); + sql.append(" inner join estado est_bpe on bpe.uf = est_bpe.codibge "); + sql.append(" left join boleto b on b.boleto_id = (case when bori.motivocancelacion_id = 99 then bori.boletoanterior_id else bori.boletooriginal_id end) "); + sql.append(" left join bpe bpeori on b.boleto_id = bpeori.boleto_id "); + sql.append(" and bpeori.activo = (case when bori.motivocancelacion_id = 17 and bori.boletooriginal_id is null then 0 else 1 end) "); + sql.append(" inner join punto_venta ptv on ptv.puntoventa_id = bori.puntoventa_id "); + sql.append(" inner join parada ori on (b.origen_id = ori.parada_id ) "); + sql.append(" inner join parada des on (b.destino_id = des.parada_id ) "); + sql.append(" inner join ciudad co on (co.ciudad_id = ori.ciudad_id ) "); + sql.append(" inner join ciudad cd on (cd.ciudad_id = des.ciudad_id ) "); + sql.append(" inner join estado est on est.estado_id = co.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 and s.activo = 1 "); + 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, est.estado_id) and ie.activo = 1 "); + sql.append("join empresa_imposto ei on ei.empresa_id = e.empresa_id "); + sql.append(" and ei.estado_id = coalesce(eos.estado_id, est.estado_id) and ei.activo = 1 "); + sql.append("left join aidf aidf on aidf.aidf_id = b.aidf_id and b.tipoventa_id = 3 "); + sql.append("left join estado esaidf on esaidf.estado_id = aidf.estado_id "); + sql.append("left join boleto bant on bant.boleto_id = (case when bpeori.tipoevento is not null then coalesce(b.boletoanterior_id, b.boletooriginal_id) else null end) "); + sql.append("left join bpe bpeant on bpeant.boleto_id = bant.boleto_id "); + sql.append(" and bpeant.activo = (case when bori.motivocancelacion_id = 17 and bori.boletooriginal_id is null then 0 else 1 end) "); + sql.append("left join punto_venta ptvo on ptvo.puntoventa_id = coalesce(bant.puntoventa_id, bori.puntoventa_id,b.ptovtaventa_id) "); + sql.append("where "); + sql.append(" (bpe.codstat in ('101','135') and to_char(b.feccreacion, 'mm/yyyy') < to_char(bori.feccreacion, 'mm/yyyy')) "); + sql.append(" and (bpe.codstat in ('-1','100','101','102','135','150') and bpe.tipoevento <> '110115' or bpe.tipoevento is null) "); + sql.append(" and (bpeori.codstat in ('-1','100','101','102','135','150') and bpeori.tipoevento <> '110115' or bpeori.tipoevento is null) "); + sql.append(" and bori.feccreacion >= :DATE_INICIO "); + sql.append(" and bori.feccreacion <= :DATE_FIM "); + sql.append(" and est_bpe.cveestado in ( ").append(ufs).append(" ) "); + sql.append(" and e.empresa_id = :EMPRESA_ID "); + + sql.append("order by estadoId, isInterEstadual "); + + return sql.toString(); + } + +} \ No newline at end of file