From a4a01bdc516d9dc630aa6da6304f4a7b9f09e542 Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 26 May 2017 20:17:58 +0000 Subject: [PATCH] bug #8977 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@69361 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/FiscalDAO.java | 5 +- .../dao/hibernate/FiscalHibernateDAO.java | 195 ++++++++++++++---- .../ventaboletos/service/FiscalService.java | 5 +- .../service/impl/FiscalServiceImpl.java | 9 +- 4 files changed, 165 insertions(+), 49 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java index 0697ab8fe..ed64eb3a0 100644 --- a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java @@ -53,5 +53,8 @@ public interface FiscalDAO { public List getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd, String folio); - public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf); + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf, String folio); + + public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, Aidf aidf, String folio); + } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index f5c7e1738..682a4cf43 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -2361,17 +2361,54 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return retorno; } + + @Override + public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, Aidf aidf, String folio) { + + String def = null; + for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, aidf.getAidfId(), folio, false, false, true)) { + + StringBuilder sb = new StringBuilder(); + PreparedStatement pstmt = null; + try { + sb.append(" update boleto set rmd_id = ").append(def).append(", "); + sb.append(" foliormd = ").append(def).append(", "); + sb.append(" fecmodif = SYSDATE, usuario_id = ").append(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + sb.append(" where boleto_id = ").append(brp.getBoletoId()); + pstmt = connection.prepareStatement(sb.toString()); + + pstmt.executeUpdate(); + } catch (Exception e) { + log.error("", e); + } finally { + try { + pstmt.close(); + } catch (Exception e) { + log.error("", e); + } + } + } + } @Override - public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf) { + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf, String folio) { + + int cont = 0; + int rmdIterate = Integer.parseInt(folio); for (ImpressaoRMD imp : rmds) { + if (cont > 28) { + rmdIterate++; + cont = 0; + } + for (DetalhadoRMD det : imp.getDetalhada()) { StringBuilder sb = new StringBuilder(); PreparedStatement pstmt = null; try { sb.append(" update boleto set rmd_id = ").append(aidf.getAidfId()).append(", "); + sb.append(" foliormd = ").append(rmdIterate).append(", "); sb.append(" fecmodif = SYSDATE, usuario_id = ").append(UsuarioLogado.getUsuarioLogado().getUsuarioId()); sb.append(" where boleto_id = ").append(det.getBoletoId()); pstmt = connection.prepareStatement(sb.toString()); @@ -2387,6 +2424,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO } } } + + cont++; } } @@ -2404,7 +2443,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO ImpressaoRMD impRmd = null; - for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, false)) { + for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, null, null, true, false, false)) { if (serie == null) { impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), @@ -2439,7 +2478,6 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO BigDecimal baseCalculo = impRmd.getBaseCalculo() == null ? BigDecimal.ZERO : impRmd.getBaseCalculo().add( brp.getTarifa() == null ? BigDecimal.ZERO : brp.getTarifa()); -// BigDecimal aliquota = brp.getIcmsInterestadual(); BigDecimal aliquota = brp.getTributacaoImportacao(); BigDecimal icms = baseCalculo.multiply(aliquota.divide(BigDecimal.TEN.multiply(BigDecimal.TEN))); @@ -2473,59 +2511,38 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO // IMPRESSAO RMD ECF String serie = null; - Date data = null; - int anteriorFolio = 0; - + String datamov = null; ImpressaoRMD impRmd = null; - for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, true)) { + for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, null, null, false, true, false)) { if (serie == null) { impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio); serie = brp.getEcf(); - data = brp.getFechorVenta(); + datamov = brp.getDatamov(); - } else { + } else if (!(serie.equals(brp.getEcf()) && datamov.equals(brp.getDatamov()))) { + impRmd.setNumero(brp.getCcf()); + list.add(impRmd); - if (serie.equals(brp.getEcf()) && data.equals(brp.getFechorVenta())) { - int coo = Integer.parseInt(brp.getCcf()); - if (anteriorFolio + 1 == coo) { - - } else { - - impRmd.setNumero(brp.getCcf()); - list.add(impRmd); - - impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), - brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio); - serie = brp.getEcf(); - data = brp.getFechorVenta(); - } - - } else { - - impRmd.setNumero(brp.getCcf()); - list.add(impRmd); - - impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), - brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio); - serie = brp.getEcf(); - data = brp.getFechorVenta(); - - } + impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(), + brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio); + serie = brp.getEcf(); + datamov = brp.getDatamov(); } - + impRmd.getDetalhada().add(brp); - anteriorFolio = Integer.parseInt(brp.getCcf()); } - list.add(impRmd); + if (impRmd != null) + list.add(impRmd); + agruparImpressaoRMD(list); return list; } - + private void agruparImpressaoRMD(List list) { for (ImpressaoRMD impRmd : list) { @@ -2572,24 +2589,34 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return total; } - public List buscarRegistroImpressaoRMD(Connection connection, Date inicio, Date fim, - Integer empresaId, String cveestado, boolean isECF) { + public List buscarRegistroImpressaoRMD(Connection connection, Date inicio, Date fim, Integer empresaId, + String cveestado, Long rmdId, String foliormd, boolean isManual, boolean isECF, boolean isCancelamento) { List list = new ArrayList(); try { String sql = null; if (isECF) { sql = getSqlImpressaoRMDTipoECF(); - } else { + + } else if (isManual) { sql = getSqlImpressaoRMDTipoDVB(); + + } else if (isCancelamento) { + sql = getSqlCancelarRMDTipoECF(); } PreparedStatement ps = connection.prepareStatement(sql); + ps.setLong(1, Long.valueOf(empresaId)); ps.setTimestamp(2, new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime())); ps.setTimestamp(3, new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime())); ps.setString(4, cveestado); + if (isCancelamento) { + ps.setLong(5, rmdId); + ps.setString(6, foliormd); + } + ResultSet rs = ps.executeQuery(); while (rs.next()) { @@ -2645,7 +2672,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return list; } - public String getSqlImpressaoRMDTipoDVB() { + private String getSqlImpressaoRMDTipoDVB() { StringBuilder sql = new StringBuilder(); sql.append("select "); sql.append(" b.boleto_id as boletoId, "); @@ -2726,7 +2753,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return sql.toString(); } - public String getSqlImpressaoRMDTipoECF() { + private String getSqlImpressaoRMDTipoECF() { StringBuilder sql = new StringBuilder(); sql.append("select "); @@ -2808,7 +2835,85 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sql.append(" and b.empresacorrida_id = ? "); sql.append(" and b.fechorventa between ? and ? "); sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); - sql.append("order by estadoId, fechorVenta, ecf, coo "); + sql.append("order by estadoId, datamov, ecf, coo "); + + return sql.toString(); + } + + private String getSqlCancelarRMDTipoECF() { + + StringBuilder sql = new StringBuilder(); + sql.append("select "); + sql.append(" b.boleto_id as boletoId, "); + 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.fechorventa) as fechorVenta, "); + sql.append(" e.nombempresa as empresa, "); + sql.append(" e.cnpj as cnpjEmpresa, "); + sql.append(" e.logradouro || ', ' || e.numero || ' - ' || e.bairro || ', ' || ce.nombciudad "); + sql.append(" || ' - ' || ee.cveestado || ', ' || e.cep "); + sql.append(" 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("from boleto b "); + sql.append(" join empresa e on e.empresa_id = b.empresacorrida_id "); + sql.append(" join punto_venta pv on pv.puntoventa_id = b.puntoventa_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 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 empresa_imposto ei on ei.empresa_id = b.empresacorrida_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.serie = substr(b.numseriepreimpresa, 1, 3) "); + sql.append(" and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL "); + sql.append(" THEN eo.estado_id ELSE eos.estado_id END) "); + sql.append("where b.empresacorrida_id = ? "); + sql.append(" and b.fechorventa between ? and ? "); + sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? "); + sql.append(" and b.rmd_id = ? "); + sql.append(" and b.foliormd = ? "); return sql.toString(); } diff --git a/src/com/rjconsultores/ventaboletos/service/FiscalService.java b/src/com/rjconsultores/ventaboletos/service/FiscalService.java index 2a931a11e..fed11f87a 100644 --- a/src/com/rjconsultores/ventaboletos/service/FiscalService.java +++ b/src/com/rjconsultores/ventaboletos/service/FiscalService.java @@ -51,5 +51,8 @@ public interface FiscalService { public List getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, String rmd, String folio); - public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf); + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf, String folio); + + public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, Aidf aidf, String folio); + } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java index 55b8e3897..4618dd477 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java @@ -91,8 +91,13 @@ public class FiscalServiceImpl implements FiscalService { } @Override - public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf) { - fiscalDAO.gravarRMDBoleto(connection, rmds, aidf); + public void gravarRMDBoleto(Connection connection, List rmds, Aidf aidf, String folio) { + fiscalDAO.gravarRMDBoleto(connection, rmds, aidf, folio); + } + + @Override + public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, Aidf aidf, String folio) { + fiscalDAO.cancelarRMDBoleto(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado(), aidf, folio); } @Override