diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 53248956f..f8f8e40e7 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -1565,8 +1565,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO valorICMSDebitado = MoneyHelper.multiplicar(valorBaseCalculoICMS, aTributacao_importacao); } - BigDecimal valorICMSIsento = valorTotal.subtract(valorBaseCalculoICMS); - BigDecimal valorICMSOutros = BigDecimal.ZERO; + BigDecimal valorICMSIsento = BigDecimal.ZERO; + BigDecimal valorICMSOutros = valorTotal.subtract(valorBaseCalculoICMS); String ecf = rs.getString("ecf"); String datamov = rs.getString("datamov"); @@ -1581,7 +1581,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO if (rs.getInt("isenta") == 1) { codigoSituacaoTribColunaB = 40; - valorICMSIsento = valorTotal; + valorICMSOutros = valorTotal; } ufDestino = rs.getString("estado_destino"); diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java index 4f7148407..e30068b1b 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java @@ -164,26 +164,49 @@ public class ExportacaoFiscal { int linhas = listaRegistroECFTipoCFC.size() + listaRegistroECFTipoCCF.size() + listaRegistroECFTipoICF.size() + listaRegistroECFTipoPRC.size() + 1 + 1; + Map valoresBaseCalculoICMS = new HashMap(0); + for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) { adicionarLinhaCFC(writer, registro); itensCCF = groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao()); + BigDecimal totalBaseCalculoICMS = BigDecimal.ZERO; + if (itensCCF != null) { for (ExportacaoECFTipoCCF itemCCF : itensCCF) { + BigDecimal baseCalculoICMS = BigDecimal.ZERO; + + if (valoresBaseCalculoICMS.containsKey(itemCCF.getUfDestino())) { + baseCalculoICMS = valoresBaseCalculoICMS.get(itemCCF.getUfDestino()); + } + + baseCalculoICMS = baseCalculoICMS.add(itemCCF.getValorBaseCalculoICMS().setScale(2, BigDecimal.ROUND_HALF_EVEN)); + + valoresBaseCalculoICMS.put(itemCCF.getUfDestino(), baseCalculoICMS); + adicionarLinhaCCF(writer, itemCCF); + + totalBaseCalculoICMS = totalBaseCalculoICMS.add(itemCCF.getValorBaseCalculoICMS().setScale(2, BigDecimal.ROUND_HALF_EVEN)); } } - BigDecimal total = BigDecimal.ZERO; + BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; + BigDecimal valorICMS = BigDecimal.ZERO; itensICF = groupICF.get(registro.getEcf() + "|" + registro.getDataEmissao()); if (itensICF != null) { for (ExportacaoECFTipoICF itemICF : itensICF) { - total = total.add(itemICF.getValorICMSDebitado().setScale(2, BigDecimal.ROUND_HALF_EVEN)); + valorICMS = valorICMS.add(itemICF.getValorICMSDebitado().setScale(2, BigDecimal.ROUND_HALF_EVEN)); + + valorBaseCalculoICMS = BigDecimal.ZERO; - adicionarLinhaICF(writer, itemICF); + if (valoresBaseCalculoICMS.containsKey(itemICF.getUfDestino())) { + valorBaseCalculoICMS = valoresBaseCalculoICMS.get(itemICF.getUfDestino()); + } + + adicionarLinhaICF(writer, itemICF, valorBaseCalculoICMS); } } @@ -191,7 +214,7 @@ public class ExportacaoFiscal { if (itensPRC != null) { for (ExportacaoECFTipoPRC itemPRC : itensPRC) { - adicionarLinhaPRC(writer, itemPRC, total); + adicionarLinhaPRC(writer, itemPRC, totalBaseCalculoICMS, valorICMS); } } } @@ -309,11 +332,11 @@ public class ExportacaoFiscal { writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); } - private void adicionarLinhaICF(PrintWriter writer, ExportacaoECFTipoICF item) { + private void adicionarLinhaICF(PrintWriter writer, ExportacaoECFTipoICF item, BigDecimal valorBaseCalculoICMS) { BigDecimal valorTotal = item.getValorTotal(); String ufDestino = item.getUfDestino(); Integer cfop = item.getCfop(); // IM=5357; Serviço IE= 6357 - BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS(); +// BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS(); BigDecimal aliquotaICMS = item.getAliquotaICMS(); BigDecimal valorICMSDebitado = item.getValorICMSDebitado(); BigDecimal valorICMSIsento = item.getValorICMSIsento(); @@ -351,12 +374,12 @@ public class ExportacaoFiscal { writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); } - private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item, BigDecimal total) { + private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item, BigDecimal valorBaseCalculoICMS, BigDecimal valorICMS) { String ufOrigem = item.getUfOrigem(); String municipioOrigem = item.getMunicipioOrigem() == null ? null : item.getMunicipioOrigem().toString(); BigDecimal valorTotal = item.getValorTotal(); - BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS(); - BigDecimal valorICMS = item.getValorICMS(); +// BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS(); +// BigDecimal valorICMS = item.getValorICMS(); if (municipioOrigem != null && municipioOrigem.length() > 5) { municipioOrigem = municipioOrigem.substring(municipioOrigem.length() - 5, municipioOrigem.length()); @@ -368,7 +391,7 @@ public class ExportacaoFiscal { sb.append(formataNumerico(municipioOrigem, true, 5)).append(SEPARADOR); sb.append(formataValor(valorTotal, 15)).append(SEPARADOR); sb.append(formataValor(valorBaseCalculoICMS, 15)).append(SEPARADOR); - sb.append(formataValor(total, 15)); // sb.append(formataValor(valorICMS, 15)); + sb.append(formataValor(valorICMS, 15)); writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); }