From acc7d4c87be8e9987445a88067da1c4994e3fbcd Mon Sep 17 00:00:00 2001 From: julio Date: Thu, 2 Aug 2018 21:17:00 +0000 Subject: [PATCH] bug#11600 dev: julio qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@83896 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/BpeHibernateDAO.java | 32 +++++++--- .../exportacao/bpe/ExportacaoBPEBase.java | 36 +++++++++++ .../exportacao/bpe/ExportacaoBPEVo.java | 61 ++++++++++++------- 3 files changed, 99 insertions(+), 30 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java index 10eaa98ba..53eb03409 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/BpeHibernateDAO.java @@ -60,8 +60,6 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { sql.append(" bpe.desconto as v_desconto, "); sql.append(" bpe.chbpe, "); sql.append(" coalesce(chbpe_substituicao, ' ') as chbpe_sub, "); - sql.append(" c.fechorventa, "); - sql.append(" c.feccreacion, "); sql.append(" to_char(c.feccreacion, 'yyyymmdd') as dhrecbto, "); sql.append(" coalesce(to_char(c.fechorviaje, 'yyyymmdd'), ' ') as dh_emisao, "); sql.append(" coalesce(bpe.tiposubstituicao, '0') as tp_bpe, "); @@ -72,6 +70,10 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { sql.append(" c.categoria_id, "); sql.append(" e.codestabelecimento as cod_estabelecimento, "); sql.append(" ep.crtbpe as crt, "); + sql.append(" co.codibge as municipio_origem, "); + sql.append(" eo.cveestado as estado_origem, "); + sql.append(" cd.codibge as municipio_destino, "); + sql.append(" ed.cveestado as estado_destino, "); sql.append(" ((case when coalesce(r.indtribtarifa,0) = 1 then c.preciopagado else 0 end) + (case when coalesce(r.indtribtaxaembarque,0) = 1 then c.importetaxaembarque else 0 end) + (case when coalesce(r.indtribpedagio,0) = 1 then c.importepedagio else 0 end)) as valortributado, "); sql.append(" ei.porcredbaseicms as red_base_calc_estadual, "); sql.append(" ei.porcredbaseicmsim as red_base_calc_municipal, "); @@ -85,9 +87,19 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { sql.append(" join estado e on e.codibge = bpe.uf "); sql.append(" join empresa ep on c.empresacorrida_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 "); + 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 = c.empresacorrida_id and ei.estado_id = e.estado_id "); sql.append("where c.activo = 1 and e.activo = 1 and ei.activo = 1 "); sql.append(" and bpe.tipoamb = 1 "); + sql.append(" and bpe.codstat <> 150 "); // não deve ser enviados os registros de contigencia sql.append(" and (case when ei.indtribviagem = 1 then c.fechorviaje else c.feccreacion end) >= to_date(?,'DD/MM/YYYY HH24:MI:SS') "); sql.append(" and (case when ei.indtribviagem = 1 then c.fechorviaje else c.feccreacion end) <= to_date(?,'DD/MM/YYYY HH24:MI:SS')"); sql.append(" and c.empresacorrida_id = ? "); @@ -138,6 +150,10 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { registro.setTipoevento(rs.getString("tipoevento")); registro.setCodigoContabilEstadual(rs.getString("codigocontabil_estadual")); registro.setCodigocontabilMunicipal(rs.getString("codigocontabil_municipal")); + registro.setMunicipioOrigem(rs.getString("municipio_origem")); + registro.setEstadoOrigem(rs.getString("estado_origem")); + registro.setMunicipioDestino(rs.getString("municipio_destino")); + registro.setEstadoDestino(rs.getString("estado_destino")); registro.setCrt(rs.getInt("crt")); registro.setValortributado(valortributado); registro.setValortotal(valortotal); @@ -152,10 +168,10 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { String xmlBpe = StringUtils.join(array); registro.setXml(xmlBpe); - boolean isCancelamento = exportacaoBPEVo.isItemCancelado(registro); - if (isCancelamento) { + if (exportacaoBPEVo.buscaXml(registro)) { String xmlAnterior = buscarXmlBPE(connection, (StringUtils.isBlank(registro.getChbpeSub()) ? registro.getChbpe() : registro.getChbpeSub())); registro.setXmlAnterior(xmlAnterior); + registro.setXml(null); } registros.add(registro); @@ -171,9 +187,9 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { List aux = new ArrayList(); for (ExportacaoBPEBase e1 : registros) { - if (exportacaoBPEVo.isItemCancelado(e1)) { + if (exportacaoBPEVo.isBpeCancelado(e1)) { for (ExportacaoBPEBase e2 : registros) { - if (e1.getChbpe().equals(e2.getChbpe()) && !exportacaoBPEVo.isItemCancelado(e2)) { + if (e1.getChbpe().equals(e2.getChbpe()) && !exportacaoBPEVo.isBpeCancelado(e2)) { aux.add(e1); break; } @@ -183,7 +199,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { boolean temItemCancelado = false; for (ExportacaoBPEBase e2 : registros) { - if (e1.getChbpe().equals(e2.getChbpe()) && exportacaoBPEVo.isItemCancelado(e2)) { + if (e1.getChbpe().equals(e2.getChbpe()) && exportacaoBPEVo.isBpeCancelado(e2)) { temItemCancelado = true; break; } @@ -218,7 +234,7 @@ public class BpeHibernateDAO extends HibernateDaoSupport implements BpeDAO { sql.append(" from bpe bpe "); sql.append(" where bpe.activo = 1 "); sql.append(" and bpe.tipoamb = 1 "); - sql.append(" and bpe.codstat in ('100', '150') "); + sql.append(" and bpe.codstat in ('100') "); sql.append(" and bpe.chbpe = ? "); try { diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEBase.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEBase.java index 1fb07b46a..a0db9d748 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEBase.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEBase.java @@ -20,6 +20,10 @@ public class ExportacaoBPEBase { private String numBpe; private String numSerieBpe; private String codEstabelecimento; + private String municipioOrigem; + private String estadoOrigem; + private String municipioDestino; + private String estadoDestino; private BigDecimal valortributado; private BigDecimal redBaseCalcEstadual; private BigDecimal redBaseCalcMunicipal; @@ -159,6 +163,38 @@ public class ExportacaoBPEBase { this.codEstabelecimento = codEstabelecimento; } + public String getMunicipioOrigem() { + return municipioOrigem; + } + + public void setMunicipioOrigem(String municipioOrigem) { + this.municipioOrigem = municipioOrigem; + } + + public String getEstadoOrigem() { + return estadoOrigem; + } + + public void setEstadoOrigem(String estadoOrigem) { + this.estadoOrigem = estadoOrigem; + } + + public String getMunicipioDestino() { + return municipioDestino; + } + + public void setMunicipioDestino(String municipioDestino) { + this.municipioDestino = municipioDestino; + } + + public String getEstadoDestino() { + return estadoDestino; + } + + public void setEstadoDestino(String estadoDestino) { + this.estadoDestino = estadoDestino; + } + public BigDecimal getValortributado() { return valortributado; } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEVo.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEVo.java index 8d2489d88..5494a69ab 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEVo.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacao/bpe/ExportacaoBPEVo.java @@ -50,26 +50,35 @@ public class ExportacaoBPEVo { return listaRegistroBaseBPE; } - public boolean isItemCancelado(ExportacaoBPEBase registro) { + public boolean buscaXml(ExportacaoBPEBase registro) { return (registro.getCodstatus() == null ? false : (registro.getCodstatus().equals(StatusBpe.EVENTOS))); } + public boolean isBpeCancelado(ExportacaoBPEBase registro) { + return (registro.getCodstatus() == null ? false : (registro.getCodstatus().equals(StatusBpe.EVENTOS))) && + (registro.getTipoevento() == null ? false : (registro.getTipoevento().equals(EventosBpe.CANCELAMENTO))); + } + public void gerarListas(ExportacaoBPEBase registro) { String indContribuicaoPrevidenciaria = "00000060"; - boolean isCancelamento = (registro.getCodstatus() == null ? false : (registro.getCodstatus().equals(StatusBpe.EVENTOS))); + boolean isCancelamento = isBpeCancelado(registro); TBPe tbpe = null; String xml = isCancelamento ? registro.getXmlAnterior() : registro.getXml(); - if (xml != null) + if (StringUtils.isNotBlank(xml)) tbpe = convertXmlToBpe(xml); - - String municipioOrigem = StringUtils.substring(tbpe.getInfBPe().getIde().getCMunIni(), 2); - String municipioDestino = StringUtils.substring(tbpe.getInfBPe().getIde().getCMunFim(), 2); - String estadoOrigem = tbpe.getInfBPe().getIde().getUFIni().value(); - String estadoDestino = tbpe.getInfBPe().getIde().getUFFim().value(); + try { + String municipioOrigem = StringUtils.substring((StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getCMunIni() : registro.getMunicipioOrigem()), 2); + } catch (Exception e) { + System.out.println(xml); + } + String municipioOrigem = StringUtils.substring((StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getCMunIni() : registro.getMunicipioOrigem()), 2); + String municipioDestino = StringUtils.substring((StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getCMunFim() : registro.getMunicipioDestino()), 2); + String estadoOrigem = (StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getUFIni().value() : registro.getEstadoOrigem()); + String estadoDestino = (StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getUFFim().value() : registro.getEstadoDestino()); boolean isInterMunicipal = estadoOrigem.equals(estadoDestino); String codigoContabil = isInterMunicipal ? registro.getCodigocontabilMunicipal() : registro.getCodigoContabilEstadual(); @@ -89,27 +98,37 @@ public class ExportacaoBPEVo { String vBC = null; String pICMS = null; String vICMS = null; - String vBP = null; + String cst = null; - 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(); - vBP = tbpe.getInfBPe().getInfValorBPe().getVBP(); + String vBP = null; + String vDesconto = 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(); + cst = tbpe.getInfBPe().getImp().getICMS().getICMS00().getCST(); + } + + if (tbpe.getInfBPe().getInfValorBPe() != null) { + vBP = tbpe.getInfBPe().getInfValorBPe().getVBP(); + vDesconto = tbpe.getInfBPe().getInfValorBPe().getVDesconto(); + } } String cstCofins = "01"; String cstPis = "01"; BigDecimal receitaTriCofins = new BigDecimal(vBC == null ? "0.0" : vBC); + BigDecimal valorBruto = StringUtils.isBlank(xml) ? registro.getValortotal() : new BigDecimal(vBP == null ? "0.0" : vBP); + BigDecimal desconto = StringUtils.isBlank(xml) ? registro.getvDesconto() : new BigDecimal(vDesconto == null ? "0.0" : vDesconto); - BigDecimal valorBruto = new BigDecimal(vBP == null ? "0.0" : vBP); - - String chbpeSub = tbpe.getInfBPe().getInfBPeSub() == null ? "" : tbpe.getInfBPe().getInfBPeSub().getChBPe(); - String tpBpe = (StringUtils.isBlank(tbpe.getInfBPe().getInfBPeSub() == null ? "" : tbpe.getInfBPe().getInfBPeSub().getChBPe()) ? "1" : "2"); + String chbpeSub = StringUtils.isBlank(xml) ? "" : (tbpe.getInfBPe().getInfBPeSub() == null ? "" : tbpe.getInfBPe().getInfBPeSub().getChBPe()); + String tpBpe = StringUtils.isBlank(xml) ? "" : (StringUtils.isBlank(tbpe.getInfBPe().getInfBPeSub() == null ? "" : tbpe.getInfBPe().getInfBPeSub().getChBPe()) ? "1" : "2"); ExportacaoBPETipoBPE tipoBPE = new ExportacaoBPETipoBPE(registro.getCodEstabelecimento(), registro.getChbpe(), registro.getNumSerieBpe(), registro.getNumBpe(), registro.getDhrecbto(), tpDoc, registro.getDhEmisao(), valorBruto, - registro.getvDesconto(), estadoOrigem, municipioOrigem, estadoDestino, municipioDestino, + desconto, estadoOrigem, municipioOrigem, estadoDestino, municipioDestino, cstCofins, receitaTriCofins, tpBpe, chbpeSub, codigoContabil, indContribuicaoPrevidenciaria, registro.getRetorno(), cstPis); @@ -131,10 +150,8 @@ public class ExportacaoBPEVo { BigDecimal baseCalculoICMS = new BigDecimal(vBC == null ? "0.0" : vBC); BigDecimal aliquotaICMS = new BigDecimal(pICMS == null ? "0.0" : pICMS); BigDecimal icms = new BigDecimal(vICMS == null ? "0.0" : vICMS); - BigDecimal isentas = registro.getValortotal().subtract(baseCalculoICMS); - - BigDecimal outras = ZERO; + BigDecimal outras = new BigDecimal(cst == null ? "0.0" : cst); ExportacaoBPETipoDPE tipoDPE = new ExportacaoBPETipoDPE(registro.getValortotal(), cfop, cstb, csosnb, baseCalculoICMS, aliquotaICMS, icms, isentas, outras);