From 10083c58f2d3f42856849e1031ffe2fb7eeb250c Mon Sep 17 00:00:00 2001 From: julio Date: Tue, 31 May 2016 17:38:42 +0000 Subject: [PATCH] bug #7500 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@56516 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/FiscalHibernateDAO.java | 103 ++++++++-------- .../service/impl/FiscalServiceImpl.java | 110 +++++++++++------- .../impressaofiscal/ImportacionFiscalVO.java | 9 ++ .../vo/impressaofiscal/ItemFiscalVO.java | 3 +- 4 files changed, 130 insertions(+), 95 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 2d170fe0f..054e9d1ff 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -410,6 +410,7 @@ public class FiscalHibernateDAO implements FiscalDAO { sql.append(" b.importeseguro as importeseguro, "); sql.append(" cs.descclase as claseServicio, "); sql.append(" translate(fi.numcnpj, ' / - . ', ' ') as cnpjEcf, "); + sql.append(" ei.icms as impostoEstado, "); sql.append(" 'N' as status "); sql.append(" FROM fiscal_r4 r4 "); sql.append(" LEFT JOIN fiscal_r5 r5 ON r4.numserie20 = r5.numserie20 AND r4.coo = r5.coo "); @@ -422,6 +423,7 @@ public class FiscalHibernateDAO implements FiscalDAO { sql.append(" INNER JOIN parada o ON coalesce(ase.aliasorigen_id, b.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(" LEFT JOIN empresa_imposto ei ON ei.estado_id = eo.estado_id AND b.marca_id = ei.empresa_id "); sql.append(" INNER JOIN parada d ON coalesce(ase.aliasdestino_id, b.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 "); @@ -457,7 +459,8 @@ public class FiscalHibernateDAO implements FiscalDAO { sql.append(" b.importepedagio, "); sql.append(" b.importeseguro, "); sql.append(" cs.descclase, "); - sql.append(" fi.numcnpj "); + sql.append(" fi.numcnpj, "); + sql.append(" ei.icms "); sql.append(" ORDER BY r4.datainicialemissao, "); sql.append(" r4.numserie20, "); sql.append(" r4.coo, "); @@ -512,6 +515,8 @@ public class FiscalHibernateDAO implements FiscalDAO { if (isCancelados) { item.setMotivocancelacion(rset.getInt("motivocancelacion")); item.setValorMulta(rset.getBigDecimal("valorMulta")); + } else { + item.setImpostoEstado(rset.getBigDecimal("impostoEstado")); } // TODO: Estes atributos foram criados, por motivo de divergencia no valorTotal com o valor unitario na tabela FISCAL_R5 @@ -520,6 +525,8 @@ public class FiscalHibernateDAO implements FiscalDAO { item.setValorEmbarque(rset.getBigDecimal("importetaxaembarque")); item.setValorSeguro(rset.getBigDecimal("importeseguro")); + + ImportacionFiscalVO novoFiscal = item; codProduto = item.getCodProduto(); @@ -600,63 +607,49 @@ public class FiscalHibernateDAO implements FiscalDAO { itensFiscais.add(item); } - if (inconsistencia) { - ItemFiscalVO novaInconsistencia = new ItemFiscalVO(fiscal); - novaInconsistencia.setInconsistencia(inconsistencia); - novaInconsistencia.setCodProduto(codProduto + "-TX"); - novaInconsistencia.setTipoPassagem("E"); + int numeroItem = 1; + if (temTarifa && !tarifaCriada) { + ItemFiscalVO novoTarifa = new ItemFiscalVO(fiscal); + novoTarifa.setCodProduto(codProduto + "-TA"); + novoTarifa.setTipoPassagem("E"); + novoTarifa.setValorItem(fiscal.getValorTarifa()); + novoTarifa.setRepTributado("N1"); + novoTarifa.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); + novoTarifa.setInconsistencia(inconsistencia); + itensFiscais.add(novoTarifa); + } - BigDecimal total = fiscal.getValorTarifa().add(fiscal.getValorPedagio()).add(fiscal.getValorEmbarque()).add(fiscal.getValorSeguro()); - novaInconsistencia.setValorItem(total); + if (temEmbarque && !embarqueCriada) { + ItemFiscalVO novoEmbarque = new ItemFiscalVO(fiscal); + novoEmbarque.setCodProduto(codProduto + "-TX"); + novoEmbarque.setTipoPassagem("E"); + novoEmbarque.setValorItem(fiscal.getValorEmbarque()); + novoEmbarque.setRepTributado("N1"); + novoEmbarque.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); + novoEmbarque.setInconsistencia(inconsistencia); + itensFiscais.add(novoEmbarque); + } - novaInconsistencia.setRepTributado("N1"); - novaInconsistencia.setNumItem(StringHelper.preencherZeroEsquerda((1) + "", 3)); - itensFiscais.add(novaInconsistencia); + if (temPedagio && !pedagioCriada) { + ItemFiscalVO novoPedagio = new ItemFiscalVO(fiscal); + novoPedagio.setCodProduto(codProduto + "-PE"); + novoPedagio.setTipoPassagem("E"); + novoPedagio.setValorItem(fiscal.getValorPedagio()); + novoPedagio.setRepTributado("N1"); + novoPedagio.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); + novoPedagio.setInconsistencia(inconsistencia); + itensFiscais.add(novoPedagio); + } - } else { - - int numeroItem = 1; - if (temTarifa && !tarifaCriada) { - ItemFiscalVO novoTarifa = new ItemFiscalVO(fiscal); - novoTarifa.setCodProduto(codProduto + "-TA"); - novoTarifa.setTipoPassagem("E"); - novoTarifa.setValorItem(fiscal.getValorTarifa()); - novoTarifa.setRepTributado("N1"); - novoTarifa.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); - itensFiscais.add(novoTarifa); - } - - if (temEmbarque && !embarqueCriada) { - ItemFiscalVO novoEmbarque = new ItemFiscalVO(fiscal); - novoEmbarque.setCodProduto(codProduto + "-TX"); - novoEmbarque.setTipoPassagem("E"); - novoEmbarque.setValorItem(fiscal.getValorEmbarque()); - novoEmbarque.setRepTributado("N1"); - novoEmbarque.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); - itensFiscais.add(novoEmbarque); - } - - if (temPedagio && !pedagioCriada) { - ItemFiscalVO novoPedagio = new ItemFiscalVO(fiscal); - novoPedagio.setCodProduto(codProduto + "-PE"); - novoPedagio.setTipoPassagem("E"); - novoPedagio.setValorItem(fiscal.getValorPedagio()); - novoPedagio.setRepTributado("N1"); - novoPedagio.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); - - itensFiscais.add(novoPedagio); - } - - if (temSeguro && !seguroCriada) { - ItemFiscalVO novoSeguro = new ItemFiscalVO(fiscal); - novoSeguro.setCodProduto(codProduto + "-SE"); - novoSeguro.setTipoPassagem("E"); - novoSeguro.setValorItem(fiscal.getValorSeguro()); - novoSeguro.setRepTributado("N1"); - novoSeguro.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); - - itensFiscais.add(novoSeguro); - } + if (temSeguro && !seguroCriada) { + ItemFiscalVO novoSeguro = new ItemFiscalVO(fiscal); + novoSeguro.setCodProduto(codProduto + "-SE"); + novoSeguro.setTipoPassagem("E"); + novoSeguro.setValorItem(fiscal.getValorSeguro()); + novoSeguro.setRepTributado("N1"); + novoSeguro.setNumItem(StringHelper.preencherZeroEsquerda((numeroItem++) + "", 3)); + novoSeguro.setInconsistencia(inconsistencia); + itensFiscais.add(novoSeguro); } return itensFiscais; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java index 235d8a4b2..23839b21d 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java @@ -71,7 +71,7 @@ public class FiscalServiceImpl implements FiscalService { @Autowired private FiscalDAO fiscalDAO; - + @Autowired private DataSource dataSourceRead; @@ -105,10 +105,10 @@ public class FiscalServiceImpl implements FiscalService { inicio = DateUtil.inicioFecha(inicio); fim = DateUtil.fimFecha(fim); - - connection = DataSourceUtils.getConnection(dataSourceRead); - - List list = agruparItensFiscaisManual(fiscalDAO.buscaDatosFiscaisECFManual(inicio, fim, empresa.getEmpresaId(),connection)); + + connection = DataSourceUtils.getConnection(dataSourceRead); + + List list = agruparItensFiscaisManual(fiscalDAO.buscaDatosFiscaisECFManual(inicio, fim, empresa.getEmpresaId(), connection)); for (ImportacionManualFiscalVO imf : list) { qtdDoc++; @@ -200,13 +200,13 @@ public class FiscalServiceImpl implements FiscalService { log.error("", e); } catch (SQLException e) { log.error("", e); - }finally{ + } finally { try { - if (connection != null && !connection.isClosed()){ + if (connection != null && !connection.isClosed()) { connection.close(); } } catch (SQLException e) { - log.error("error fechar conexão",e); + log.error("error fechar conexão", e); throw new RuntimeException(e); } } @@ -333,7 +333,7 @@ public class FiscalServiceImpl implements FiscalService { public File importacionFiscalReducaoZ(Date inicio, Date fim, Empresa empresa) { Connection connection = null; - + try { String nomeArquivo = "fiscal_reducao_z_" + DateUtil.getStringDate(Calendar.getInstance().getTime(), "yyyyMMddhhmmss"); File arquivo = File.createTempFile(nomeArquivo, ".txt"); @@ -350,9 +350,9 @@ public class FiscalServiceImpl implements FiscalService { String abertura = aberturaDeArquivo("0", dataAgora, cnpjFilial, brancos371, sequencial); gravarArq.print(abertura + QUEBRA_LINHA); - connection = DataSourceUtils.getConnection(dataSourceRead); - - List list = agruparReducaoZ(fiscalDAO.buscaDatosFiscaisReducaoZ(inicio, fim, empresa.getEmpresaId(),connection)); + connection = DataSourceUtils.getConnection(dataSourceRead); + + List list = agruparReducaoZ(fiscalDAO.buscaDatosFiscaisReducaoZ(inicio, fim, empresa.getEmpresaId(), connection)); for (ImportacionFiscalReducaoZVO ifrZ : list) { @@ -438,13 +438,13 @@ public class FiscalServiceImpl implements FiscalService { log.error("", e); } catch (SQLException e) { log.error("", e); - }finally{ + } finally { try { - if (connection != null && !connection.isClosed()){ + if (connection != null && !connection.isClosed()) { connection.close(); } } catch (SQLException e) { - log.error("error fechar conexão",e); + log.error("error fechar conexão", e); throw new RuntimeException(e); } } @@ -505,7 +505,7 @@ public class FiscalServiceImpl implements FiscalService { private File importacionFiscalECFGenerico(Date inicio, Date fim, Empresa empresa, boolean isCancelados) { Connection connection = null; - + try { String nomeArquivo = "fiscal_ecf_" + DateUtil.getStringDate(Calendar.getInstance().getTime(), "yyyyMMddhhmmss"); File arquivo = File.createTempFile(nomeArquivo, ".txt"); @@ -527,10 +527,10 @@ public class FiscalServiceImpl implements FiscalService { String header = null; List itensDocs = new ArrayList(); - - connection = DataSourceUtils.getConnection(dataSourceRead); - - List list = fiscalDAO.buscaDatosFiscaisECF(inicio, fim, empresa.getEmpresaId(), isCancelados,connection); + + connection = DataSourceUtils.getConnection(dataSourceRead); + + List list = fiscalDAO.buscaDatosFiscaisECF(inicio, fim, empresa.getEmpresaId(), isCancelados, connection); for (ImportacionFiscalVO item : list) { @@ -640,17 +640,17 @@ public class FiscalServiceImpl implements FiscalService { log.error("", e); } catch (SQLException e) { log.error("", e); - }finally{ + } finally { try { - if (connection != null && !connection.isClosed()){ + if (connection != null && !connection.isClosed()) { connection.close(); } } catch (SQLException e) { - log.error("error fechar conexão",e); + log.error("error fechar conexão", e); throw new RuntimeException(e); } } - + return null; } @@ -680,7 +680,7 @@ public class FiscalServiceImpl implements FiscalService { private String montarItensFiscais(ItemFiscalVO item, Integer seq, Integer seqItem) { String tipoPassagem = null; - + String repTributado = item.getRepTributado() == null ? SituacaoTributaria.NAO_TRIBUTADO.getValue() : item.getRepTributado(); if (repTributado.length() == 7 && repTributado.substring(2, 3).equals(SituacaoTributaria.TRIBUTADO.getValue())) { tipoPassagem = item.getTipoPassagem(); @@ -727,11 +727,6 @@ public class FiscalServiceImpl implements FiscalService { valorItem = item.getValorSeguro() == null ? valorItem : item.getValorSeguro(); } - boolean inconsistente = item.getInconsistencia() == null ? false : item.getInconsistencia(); - if (inconsistente) { - valorItem = item.getValorTarifa().add(item.getValorPedagio()).add(item.getValorEmbarque()).add(item.getValorSeguro()); - } - valorItem = UtileriasFiscal.arredondar(valorItem); String valorUnitario = UtileriasFiscal.formataZeroDecimal(valorItem, 15); item.setValorItem(new BigDecimal(valorUnitario)); @@ -778,6 +773,24 @@ public class FiscalServiceImpl implements FiscalService { aliquotaItem = UtileriasFiscal.formataZeroDecimal(null, 7); } + boolean inconsistente = item.getInconsistencia() == null ? false : item.getInconsistencia(); + if (inconsistente) { + if (codProduto.indexOf("TA") >= 0) { + BigDecimal aliquotaCalc = item.getImpostoEstado() == null ? BigDecimal.ZERO : item.getImpostoEstado(); + aliquotaCalc = UtileriasFiscal.arredondar(aliquotaCalc); + + BigDecimal baseCalculo = valorItem; + baseCalculo = UtileriasFiscal.arredondar(baseCalculo); + + BigDecimal valorImposto = baseCalculo.multiply(aliquotaCalc.divide(CEM)); + valorImposto = UtileriasFiscal.arredondar(valorImposto); + + impostoItem = UtileriasFiscal.formataZeroDecimal(valorImposto, 15); + aliquotaItem = UtileriasFiscal.formataZeroDecimal(null, 7); + totalICMSNaotributadoItem = StringHelper.preencherZeroEsquerda(null, 15); + } + } + String aliquotaPIS = StringHelper.preencherZeroEsquerda(null, 7); String valorPIS = StringHelper.preencherZeroEsquerda(null, 15); String aliquotaCofins = StringHelper.preencherZeroEsquerda(null, 7); @@ -902,8 +915,27 @@ public class FiscalServiceImpl implements FiscalService { imposto = UtileriasFiscal.formataZeroDecimal(valorImposto, 14); aliquota = UtileriasFiscal.formataZeroDecimal(aliquotaCalc, 14); } - } + boolean inconsistente = item.getInconsistencia() == null ? false : item.getInconsistencia(); + if (inconsistente) { + if (codProduto.indexOf("TA") >= 0) { + BigDecimal aliquotaCalc = item.getImpostoEstado() == null ? BigDecimal.ZERO : item.getImpostoEstado(); + aliquotaCalc = UtileriasFiscal.arredondar(aliquotaCalc); + + BigDecimal baseCalculo = valorItem; + baseCalculo = UtileriasFiscal.arredondar(baseCalculo); + + BigDecimal valorImposto = baseCalculo.multiply(aliquotaCalc.divide(CEM)); + valorImposto = UtileriasFiscal.arredondar(valorImposto); + + imposto = UtileriasFiscal.formataZeroDecimal(valorImposto, 14); + aliquota = UtileriasFiscal.formataZeroDecimal(aliquotaCalc, 14); + totalICMSIsento = null; + totalICMSNaotributado = null; + } + } + + } if (StringUtils.isBlank(aliquota)) aliquota = StringHelper.preencherZeroEsquerda(null, 14); @@ -1081,21 +1113,21 @@ public class FiscalServiceImpl implements FiscalService { public File importacionNaoFiscal(Date inicio, Date fim, Empresa empresa) { Connection connection = null; try { - connection = DataSourceUtils.getConnection(dataSourceRead); - - List importacionNaoFiscalVOs = fiscalDAO.buscaDatosNaoFiscais(inicio, fim, empresa.getEmpresaId(),connection); - + connection = DataSourceUtils.getConnection(dataSourceRead); + + List importacionNaoFiscalVOs = fiscalDAO.buscaDatosNaoFiscais(inicio, fim, empresa.getEmpresaId(), connection); + return new ArchivoIntegracionNaoFiscal().gerarArquivo(empresa.getCnpj(), importacionNaoFiscalVOs); - + } catch (Exception e) { log.error(e.getMessage(), e); - }finally{ + } finally { try { - if (connection != null && !connection.isClosed()){ + if (connection != null && !connection.isClosed()) { connection.close(); } } catch (SQLException e) { - log.error("error fechar conexão",e); + log.error("error fechar conexão", e); throw new RuntimeException(e); } } diff --git a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java index 50eb661b9..028227e5d 100644 --- a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java @@ -30,6 +30,7 @@ public class ImportacionFiscalVO { private BigDecimal valorEmbarque; private BigDecimal valorSeguro; private String cnpjEcf; + private BigDecimal impostoEstado; private List itensFiscais; @@ -303,4 +304,12 @@ public class ImportacionFiscalVO { this.cnpjEcf = cnpjEcf; } + public BigDecimal getImpostoEstado() { + return impostoEstado; + } + + public void setImpostoEstado(BigDecimal impostoEstado) { + this.impostoEstado = impostoEstado; + } + } diff --git a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java index 6ca6e7b5c..22df8027b 100644 --- a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java @@ -21,6 +21,7 @@ public class ItemFiscalVO extends ImportacionFiscalVO { item.getDestinoUf(), item.getNumpdv(), item.getModeloImpressora(), item.getNumCaixa(), item.getStatus(), item.getMotivocancelacion(), item.getValorMulta(), item.getValorTarifa(), item.getValorPedagio(), item.getValorEmbarque(), item.getValorSeguro(), item.getClaseServicio()); + super.setImpostoEstado(item.getImpostoEstado()); } public String getNumItem() { @@ -109,7 +110,7 @@ public class ItemFiscalVO extends ImportacionFiscalVO { return inconsistencia; } - public void setInconsistencia(Boolean inconsistencia) { + public void setInconsistencia(Boolean inconsistencia) { if (inconsistencia == null) this.inconsistencia = Boolean.FALSE; else