From 260cfc451eeb10aa549771585751f108cdabb358 Mon Sep 17 00:00:00 2001 From: alberto Date: Wed, 29 Mar 2017 18:08:03 +0000 Subject: [PATCH] =?UTF-8?q?Exporta=C3=A7=C3=A3o=20Fiscal=20:=20ECF=20e=20R?= =?UTF-8?q?MD=20(issue=208120)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@67354 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/FiscalHibernateDAO.java | 7 +++-- .../exportacaofiscal/ExportacaoFiscal.java | 31 +++++++++++++------ .../vo/ExportacaoECFTipoCCF.java | 11 ++++++- .../vo/ExportacaoECFTipoPRC.java | 19 +++++++++--- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 0b190537d..e4fe759a1 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -1349,7 +1349,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" r5.numserie20 as ecf,"); sb.append(" r5.datamov as datamov,"); sb.append(" r5.coo as coo,"); - sb.append(" r5.impunitario as valortarifa,"); + sb.append(" r5.imptotalliquido as valortarifa,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN co.codibge ELSE cos.codibge END) as municipio_origem,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) as estado_origem,"); sb.append(" (CASE WHEN s.aliasdestino_id IS NULL THEN cd.codibge ELSE cds.codibge END) as municipio_destino,"); @@ -1359,7 +1359,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredestadual ELSE eis.porcredestadual END) as porc_red_estadual,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.tributacaoimportacao ELSE eis.tributacaoimportacao END) as tributacao_importacao,"); sb.append(" (CASE WHEN (nvl((CASE WHEN s.aliasorigen_id IS NULL THEN po.regionmetropolitana_id ELSE pos.regionmetropolitana_id END),-1) = nvl((CASE WHEN s.aliasdestino_id IS NULL THEN pd.regionmetropolitana_id ELSE pds.regionmetropolitana_id END),-2)) THEN 1 ELSE 0 END) as isenta,"); - sb.append(" r4.impsubtotal as valortotal"); + sb.append(" r4.impsubtotal as valortotal,"); + sb.append(" b.numfoliosistema as numfoliosistema"); sb.append(" from fiscal_r5 r5"); sb.append(" join fiscal_r4 r4 on r4.numserie20 = r5.numserie20 and r4.coo = r5.coo"); sb.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov"); @@ -1402,6 +1403,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO registro.setCodigoParticipante(null); registro.setSituacaoCOO(0); // 0 - Documento Regular; 2 - Documento Cancelado registro.setAcrescimo(null); + registro.setNumFolioSistema(rs.getString("numFolioSistema")); registro.setCodigoSituacaoTribColunaB(null); @@ -1782,6 +1784,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO registro.setValorTotal(valorTotal); registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); registro.setValorICMS(valorICMS); + registro.setTributacao(tributacao_importacao); } group.put(key, registro); diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java index 302a081aa..7f6581461 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java @@ -21,6 +21,7 @@ import org.springframework.stereotype.Service; import com.rjconsultores.ventaboletos.constantes.Constantes; import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.utilerias.MoneyHelper; import com.rjconsultores.ventaboletos.utilerias.UtiliteriasFiscal; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCCF; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCFC; @@ -166,12 +167,14 @@ public class ExportacaoFiscal { Map valoresBaseCalculoICMS = new HashMap(0); + Map totalBaseCalculoICMS = new HashMap(0); + for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) { adicionarLinhaCFC(writer, registro); itensCCF = groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao()); - BigDecimal totalBaseCalculoICMS = BigDecimal.ZERO; + totalBaseCalculoICMS.clear(); if (itensCCF != null) { for (ExportacaoECFTipoCCF itemCCF : itensCCF) { @@ -187,19 +190,24 @@ public class ExportacaoFiscal { adicionarLinhaCCF(writer, itemCCF); - totalBaseCalculoICMS = totalBaseCalculoICMS.add(itemCCF.getValorBaseCalculoICMS().setScale(2, BigDecimal.ROUND_HALF_EVEN)); + BigDecimal valor = BigDecimal.ZERO; + + if (totalBaseCalculoICMS.containsKey(itemCCF.getMunicipioOrigem())) { + valor = totalBaseCalculoICMS.get(itemCCF.getMunicipioOrigem()); + } + + valor = valor.add(itemCCF.getValorBaseCalculoICMS().setScale(2, BigDecimal.ROUND_HALF_EVEN)); + + totalBaseCalculoICMS.put(itemCCF.getMunicipioOrigem(), valor); } } BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; - BigDecimal valorICMS = BigDecimal.ZERO; itensICF = groupICF.get(registro.getEcf() + "|" + registro.getDataEmissao()); if (itensICF != null) { for (ExportacaoECFTipoICF itemICF : itensICF) { - valorICMS = valorICMS.add(itemICF.getValorICMSDebitado().setScale(2, BigDecimal.ROUND_HALF_EVEN)); - valorBaseCalculoICMS = BigDecimal.ZERO; if (valoresBaseCalculoICMS.containsKey(itemICF.getUfDestino())) { @@ -214,7 +222,7 @@ public class ExportacaoFiscal { if (itensPRC != null) { for (ExportacaoECFTipoPRC itemPRC : itensPRC) { - adicionarLinhaPRC(writer, itemPRC, totalBaseCalculoICMS, valorICMS); + adicionarLinhaPRC(writer, itemPRC, totalBaseCalculoICMS); } } } @@ -295,6 +303,7 @@ public class ExportacaoFiscal { Integer tributacaoICMS = item.getTributacaoICMS(); // 1 - Demais; 2 - Região Metropolitanao ou seja, quando o campo CSTB for "40", esse campo deve vir "2". Do contrário, deve vir "1" BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS(); BigDecimal aliquotaICMS = item.getAliquotaICMS(); + String numFolioSistema = item.getNumFolioSistema(); if (municipioOrigem != null && municipioOrigem.length() > 5) { municipioOrigem = municipioOrigem.substring(municipioOrigem.length() - 5, municipioOrigem.length()); @@ -302,7 +311,7 @@ public class ExportacaoFiscal { StringBuilder sb = new StringBuilder(); sb.append("CCF").append(SEPARADOR); - sb.append(formataNumerico(coo.toString(), true, 6)).append(SEPARADOR); + sb.append(formataCaracter(numFolioSistema, true, 6)).append(SEPARADOR); sb.append(formataValor(valorServico, 15)).append(SEPARADOR); sb.append(descontoGlobal == null ? "" : formataValor(descontoGlobal, 15)).append(SEPARADOR); sb.append(codigoParticipante == null ? "" : formataNumerico(codigoParticipante, true, 15)).append(SEPARADOR); @@ -380,17 +389,21 @@ public class ExportacaoFiscal { writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); } - private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item, BigDecimal valorBaseCalculoICMSSoma, BigDecimal valorICMSSoma) { + private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item, Map totalBaseCalculoICMS) { String ufOrigem = item.getUfOrigem(); String municipioOrigem = item.getMunicipioOrigem() == null ? null : item.getMunicipioOrigem().toString(); BigDecimal valorTotal = item.getValorTotal(); - BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS(); + BigDecimal valorBaseCalculoICMS = totalBaseCalculoICMS.containsKey(item.getMunicipioOrigem()) ? totalBaseCalculoICMS.get(item.getMunicipioOrigem()) : item.getValorBaseCalculoICMS(); BigDecimal valorICMS = item.getValorICMS(); if (municipioOrigem != null && municipioOrigem.length() > 5) { municipioOrigem = municipioOrigem.substring(municipioOrigem.length() - 5, municipioOrigem.length()); } + if (item.getTributacao() != null && item.getTributacao().compareTo(BigDecimal.ZERO) > 0) { + valorICMS = MoneyHelper.multiplicar(valorBaseCalculoICMS, item.getTributacao()); + } + StringBuilder sb = new StringBuilder(); sb.append("PRC").append(SEPARADOR); sb.append(formataCaracter(ufOrigem, true, 2)).append(SEPARADOR); diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java index 42e784283..fcb785b89 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java @@ -20,6 +20,7 @@ public class ExportacaoECFTipoCCF { private BigDecimal aliquotaICMS; private String ecf; private String dataEmissao; + private String numFolioSistema; public ExportacaoECFTipoCCF() { @@ -161,8 +162,16 @@ public class ExportacaoECFTipoCCF { this.dataEmissao = dataEmissao; } + public String getNumFolioSistema() { + return numFolioSistema; + } + + public void setNumFolioSistema(String numFolioSistema) { + this.numFolioSistema = numFolioSistema; + } + @Override public String toString() { - return "ExportacaoECFTipoCCF [coo=" + coo + ", valorServico=" + valorServico + ", descontoGlobal=" + descontoGlobal + ", codigoParticipante=" + codigoParticipante + ", situacaoCOO=" + situacaoCOO + ", acrescimo=" + acrescimo + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", ufDestino=" + ufDestino + ", cfop=" + cfop + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", valorTotal=" + valorTotal + ", tributacaoICMS=" + tributacaoICMS + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", ecf=" + ecf + ", dataEmissao=" + dataEmissao + "]"; + return "ExportacaoECFTipoCCF [coo=" + coo + ", valorServico=" + valorServico + ", descontoGlobal=" + descontoGlobal + ", codigoParticipante=" + codigoParticipante + ", situacaoCOO=" + situacaoCOO + ", acrescimo=" + acrescimo + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", ufDestino=" + ufDestino + ", cfop=" + cfop + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", valorTotal=" + valorTotal + ", tributacaoICMS=" + tributacaoICMS + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", ecf=" + ecf + ", dataEmissao=" + dataEmissao + ", numFolioSistema=" + numFolioSistema + "]"; } } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoPRC.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoPRC.java index 63252605e..488a87d90 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoPRC.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoPRC.java @@ -10,6 +10,7 @@ public class ExportacaoECFTipoPRC { private BigDecimal valorICMS; private String ecf; private String dataEmissao; + private BigDecimal tributacao; public ExportacaoECFTipoPRC() { @@ -55,11 +56,6 @@ public class ExportacaoECFTipoPRC { this.valorICMS = valorICMS; } - @Override - public String toString() { - return "ExportacaoECFTipoPRC [ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", valorTotal=" + valorTotal + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", valorICMS=" + valorICMS + "]"; - } - public String getEcf() { return ecf; } @@ -75,4 +71,17 @@ public class ExportacaoECFTipoPRC { public void setDataEmissao(String dataEmissao) { this.dataEmissao = dataEmissao; } + + public BigDecimal getTributacao() { + return tributacao; + } + + public void setTributacao(BigDecimal tributacao) { + this.tributacao = tributacao; + } + + @Override + public String toString() { + return "ExportacaoECFTipoPRC [ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", valorTotal=" + valorTotal + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", valorICMS=" + valorICMS + ", ecf=" + ecf + ", dataEmissao=" + dataEmissao + ", tributacao=" + tributacao + "]"; + } }