Exportação Fiscal : ECF e RMD (issue 8120)

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@65317 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2017-01-25 20:46:34 +00:00
parent 2a07a0f16b
commit d1f4e53493
3 changed files with 266 additions and 55 deletions

View File

@ -29,6 +29,7 @@ import com.rjconsultores.ventaboletos.dao.FiscalDAO;
import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.Aidf;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.MoneyHelper;
import com.rjconsultores.ventaboletos.utilerias.StringHelper; import com.rjconsultores.ventaboletos.utilerias.StringHelper;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCCF; import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCCF;
@ -50,7 +51,7 @@ import com.rjconsultores.ventaboletos.vo.impressaofiscal.SituacaoTributaria;
@Repository("fiscalDAO") @Repository("fiscalDAO")
public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO { public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO {
public static final String DATE_FORMAT_FISCAL = "yyyyMMdd"; private static final String DATE_FORMAT_FISCAL = "yyyyMMdd";
private static Logger log = Logger.getLogger(FiscalHibernateDAO.class); private static Logger log = Logger.getLogger(FiscalHibernateDAO.class);
@ -1524,33 +1525,46 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
Map<String, ExportacaoECFTipoICF> group = new HashMap<String, ExportacaoECFTipoICF>(); Map<String, ExportacaoECFTipoICF> group = new HashMap<String, ExportacaoECFTipoICF>();
while (rs.next()) { while (rs.next()) {
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100); BigDecimal valorTotal = MoneyHelper.dividir(MoneyHelper.instanciar(rs.getString("valortotal")), BigDecimal.valueOf(100d));
BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms"); BigDecimal red_base_calc_icms = MoneyHelper.instanciar(rs.getBigDecimal("red_base_calc_icms"));
BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal"); BigDecimal porc_red_municipal = MoneyHelper.instanciar(rs.getBigDecimal("porc_red_municipal"));
BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual"); BigDecimal porc_red_estadual = MoneyHelper.instanciar(rs.getBigDecimal("porc_red_estadual"));
BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); BigDecimal tributacao_importacao = MoneyHelper.instanciar(rs.getBigDecimal("tributacao_importacao"));
BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO;
if (red_base_calc_icms != null) { if (red_base_calc_icms != null) {
valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d)))); BigDecimal aRed_base_calc_icms = MoneyHelper.dividir(red_base_calc_icms, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = MoneyHelper.subtrair(valorTotal, MoneyHelper.multiplicar(valorTotal, aRed_base_calc_icms));
} else { } else {
if (tributacao_importacao != null) { if (tributacao_importacao != null) {
if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) {
if (porc_red_municipal != null) { if (porc_red_municipal != null) {
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d)))); BigDecimal aPorc_red_municipal = MoneyHelper.dividir(porc_red_municipal, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); BigDecimal porc = MoneyHelper.subtrair(tributacao_importacao, MoneyHelper.multiplicar(tributacao_importacao, aPorc_red_municipal));
BigDecimal aPorc = MoneyHelper.dividir(porc, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = MoneyHelper.multiplicar(valorTotal, aPorc);
} }
} else { } else {
if (porc_red_estadual != null) { if (porc_red_estadual != null) {
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d)))); BigDecimal aPorc_red_estadual = MoneyHelper.dividir(porc_red_estadual, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); BigDecimal porc = MoneyHelper.subtrair(tributacao_importacao, MoneyHelper.multiplicar(tributacao_importacao, aPorc_red_estadual));
BigDecimal aPorc = MoneyHelper.dividir(porc, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = MoneyHelper.multiplicar(valorTotal, aPorc);
} }
} }
} }
} }
BigDecimal valorICMSDebitado = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao.divide(BigDecimal.valueOf(100d)))); BigDecimal valorICMSDebitado = BigDecimal.ZERO;
if (tributacao_importacao != null) {
BigDecimal aTributacao_importacao = MoneyHelper.dividir(tributacao_importacao, BigDecimal.valueOf(100d));
valorICMSDebitado = MoneyHelper.multiplicar(valorBaseCalculoICMS, aTributacao_importacao);
}
BigDecimal valorICMSIsento = valorTotal.subtract(valorBaseCalculoICMS); BigDecimal valorICMSIsento = valorTotal.subtract(valorBaseCalculoICMS);
BigDecimal valorICMSOutros = BigDecimal.ZERO; BigDecimal valorICMSOutros = BigDecimal.ZERO;
@ -1693,37 +1707,48 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
Map<String, ExportacaoECFTipoPRC> group = new HashMap<String, ExportacaoECFTipoPRC>(); Map<String, ExportacaoECFTipoPRC> group = new HashMap<String, ExportacaoECFTipoPRC>();
while (rs.next()) { while (rs.next()) {
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100); BigDecimal valorTotal = MoneyHelper.dividir(MoneyHelper.instanciar(rs.getString("valortotal")), BigDecimal.valueOf(100d));
BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms"); BigDecimal red_base_calc_icms = MoneyHelper.instanciar(rs.getBigDecimal("red_base_calc_icms"));
BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal"); BigDecimal porc_red_municipal = MoneyHelper.instanciar(rs.getBigDecimal("porc_red_municipal"));
BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual"); BigDecimal porc_red_estadual = MoneyHelper.instanciar(rs.getBigDecimal("porc_red_estadual"));
BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); BigDecimal tributacao_importacao = MoneyHelper.instanciar(rs.getBigDecimal("tributacao_importacao"));
BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO;
if (tributacao_importacao != null) { if (tributacao_importacao != null) {
tributacao_importacao = tributacao_importacao.divide(BigDecimal.valueOf(100d)); tributacao_importacao = MoneyHelper.dividir(tributacao_importacao, BigDecimal.valueOf(100d));
} }
if (red_base_calc_icms != null) { if (red_base_calc_icms != null) {
valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d)))); BigDecimal aRed_base_calc_icms = MoneyHelper.dividir(red_base_calc_icms, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = MoneyHelper.subtrair(valorTotal, MoneyHelper.multiplicar(valorTotal, aRed_base_calc_icms));
} else { } else {
if (tributacao_importacao != null) { if (tributacao_importacao != null) {
if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) {
if (porc_red_municipal != null) { if (porc_red_municipal != null) {
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d)))); BigDecimal aPorc_red_municipal = MoneyHelper.dividir(porc_red_municipal, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); BigDecimal porc = MoneyHelper.subtrair(tributacao_importacao, MoneyHelper.multiplicar(tributacao_importacao, aPorc_red_municipal));
BigDecimal aPorc = MoneyHelper.dividir(porc, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = MoneyHelper.multiplicar(valorTotal, aPorc);
} }
} else { } else {
if (porc_red_estadual != null) { if (porc_red_estadual != null) {
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d)))); BigDecimal aPorc_red_estadual = MoneyHelper.dividir(porc_red_estadual, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); BigDecimal porc = MoneyHelper.subtrair(tributacao_importacao, MoneyHelper.multiplicar(tributacao_importacao, aPorc_red_estadual));
BigDecimal aPorc = MoneyHelper.dividir(porc, BigDecimal.valueOf(100d));
valorBaseCalculoICMS = MoneyHelper.multiplicar(valorTotal, aPorc);
} }
} }
} }
} }
BigDecimal valorICMS = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao)); BigDecimal valorICMS = BigDecimal.ZERO;
if (tributacao_importacao != null) {
valorICMS = MoneyHelper.multiplicar(valorBaseCalculoICMS, tributacao_importacao);
}
String key = rs.getString("ecf") + "|" + rs.getString("datamov") + "|" + rs.getString("estado_origem") + "|" + rs.getString("municipio_origem"); String key = rs.getString("ecf") + "|" + rs.getString("datamov") + "|" + rs.getString("estado_origem") + "|" + rs.getString("municipio_origem");
@ -1767,7 +1792,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
return retorno; return retorno;
} }
@Override @Override
public List<ExportacaoRMDTipoPAR> buscarRegistroRMDTipoPAR(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { public List<ExportacaoRMDTipoPAR> buscarRegistroRMDTipoPAR(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) {
List<ExportacaoRMDTipoPAR> retorno = new ArrayList<ExportacaoRMDTipoPAR>(); List<ExportacaoRMDTipoPAR> retorno = new ArrayList<ExportacaoRMDTipoPAR>();

View File

@ -0,0 +1,178 @@
package com.rjconsultores.ventaboletos.utilerias;
import java.math.BigDecimal;
import java.math.MathContext;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Clase MoneyHelper
*
* Referência: http://www.javapractices.com/topic/TopicAction.do?Id=13
*
* @author RJ Consultores
*/
public class MoneyHelper {
private static Logger log = LoggerFactory.getLogger(MoneyHelper.class);
private static int DECIMALS = 4;
private static int ROUNDING_MODE = BigDecimal.ROUND_HALF_EVEN;
private static BigDecimal HUNDRED = new BigDecimal("100");
private static int MATH_CONTEXT = 4;
public MoneyHelper() {
}
public static BigDecimal instanciar(String aValor) {
return arredondar(BigDecimal.valueOf(Float.valueOf(aValor)));
}
public static BigDecimal instanciar(BigDecimal aValor) {
return arredondar(aValor);
}
public static BigDecimal somar(BigDecimal ... aAmount) {
BigDecimal total = BigDecimal.ZERO;
for(BigDecimal value : aAmount){
BigDecimal fAmountOne = value == null ? BigDecimal.ZERO:arredondar(value);
total = total.add(fAmountOne);
}
return total;
}
public static BigDecimal somar(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal fAmountOne = aAmountOne == null ? BigDecimal.ZERO:arredondar(aAmountOne);
BigDecimal fAmountTwo =aAmountTwo == null ? BigDecimal.ZERO: arredondar(aAmountTwo);
return fAmountOne.add(fAmountTwo);
}
public static BigDecimal subtrair(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal fAmountOne = arredondar(aAmountOne);
BigDecimal fAmountTwo = arredondar(aAmountTwo);
return fAmountOne.subtract(fAmountTwo);
}
public static BigDecimal dividir(BigDecimal aAmount, BigDecimal aDivisor) {
BigDecimal fAmount = arredondar(aAmount);
BigDecimal fDivisor = arredondar(aDivisor);
return fAmount.divide(fDivisor, DECIMALS, ROUNDING_MODE);
}
public static BigDecimal multiplicar(BigDecimal aAmount, BigDecimal aMultiplicand) {
BigDecimal fAmount = arredondar(aAmount);
BigDecimal fMultiplicand = arredondar(aMultiplicand);
return fAmount.multiply(fMultiplicand, new MathContext(ROUNDING_MODE));
}
public static BigDecimal arredondar(BigDecimal aNumber) {
if (aNumber != null) {
return aNumber.setScale(DECIMALS, ROUNDING_MODE);
} else {
return null;
}
}
public static BigDecimal arredondar(BigDecimal aNumber, int decimals, int rounding_mode) {
if (aNumber != null) {
return aNumber.setScale(decimals, rounding_mode);
} else {
return null;
}
}
public static BigDecimal arredondar(Float aNumber) {
return BigDecimal.valueOf(aNumber).setScale(DECIMALS, ROUNDING_MODE);
}
public static boolean isMaior(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal fAmountOne = arredondar(aAmountOne);
BigDecimal fAmountTwo = arredondar(aAmountTwo);
return fAmountOne.compareTo(fAmountTwo) > 0;
}
public static boolean isMaiorIgual(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal fAmountOne = arredondar(aAmountOne);
BigDecimal fAmountTwo = arredondar(aAmountTwo);
return fAmountOne.compareTo(fAmountTwo) >= 0;
}
public static boolean isMenor(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal fAmountOne = arredondar(aAmountOne);
BigDecimal fAmountTwo = arredondar(aAmountTwo);
return fAmountOne.compareTo(fAmountTwo) < 0;
}
public static boolean isMenorIgual(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal fAmountOne = arredondar(aAmountOne);
BigDecimal fAmountTwo = arredondar(aAmountTwo);
return fAmountOne.compareTo(fAmountTwo) <= 0;
}
public static boolean isIgual(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal fAmountOne = arredondar(aAmountOne);
BigDecimal fAmountTwo = arredondar(aAmountTwo);
return fAmountOne.compareTo(fAmountTwo) == 0;
}
public static BigDecimal getDiferenca(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
return aAmountTwo.subtract(aAmountOne);
}
public static BigDecimal getPercentual(BigDecimal aAmountOne, BigDecimal aAmountTwo) {
BigDecimal diferenca = getDiferenca(aAmountOne, aAmountTwo);
BigDecimal fractionalChange = BigDecimal.ZERO;
if ( diferenca!=null && ( diferenca.compareTo(BigDecimal.ZERO) != 0) && (aAmountOne.compareTo(BigDecimal.ZERO) != 0) ){
fractionalChange = diferenca.divide(aAmountOne, new MathContext(MATH_CONTEXT));
}
return arredondar(fractionalChange.multiply(HUNDRED)).abs();
}
public static BigDecimal getValorDescontadoPercentual(BigDecimal valor, BigDecimal percdesconto) {
BigDecimal valorDescontado = multiplicar(valor, percdesconto).divide(HUNDRED);
return arredondar(subtrair(valor, valorDescontado));
}
public static BigDecimal getPercentualValor(BigDecimal valorTotal, BigDecimal valorPercentual) {
if(valorTotal != null && valorPercentual != null) {
return dividir(dividir(multiplicar(valorTotal, valorPercentual), HUNDRED), HUNDRED);
}
return BigDecimal.ZERO;
}
/**
* Converte uma string no formato de moeda em um {@link BigDecimal}
* @param valor
* @return
*/
public static BigDecimal getValor(String valor) {
try {
if(StringUtils.isNotBlank(valor)) {
NumberFormat nf = DecimalFormat.getCurrencyInstance(Locale.getDefault());
nf.setMinimumFractionDigits(DECIMALS);
nf.setMaximumFractionDigits(DECIMALS);
return arredondar(nf.parse(valor).floatValue());
}
} catch (ParseException e) {
log.error(e.getMessage(), e);
}
return null;
}
}

View File

@ -88,33 +88,33 @@ public class ExportacaoFiscal {
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
} }
@SuppressWarnings("unused") // @SuppressWarnings("unused")
private void adicionarRegistroECFTipoCFC(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC) { // private void adicionarRegistroECFTipoCFC(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC) {
for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) { // for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) {
adicionarLinhaCFC(writer, registro); // adicionarLinhaCFC(writer, registro);
} // }
} // }
//
@SuppressWarnings("unused") // @SuppressWarnings("unused")
private void adicionarRegistroECFTipoCCF(PrintWriter writer, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF) { // private void adicionarRegistroECFTipoCCF(PrintWriter writer, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF) {
for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) { // for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) {
adicionarLinhaCCF(writer, registro); // adicionarLinhaCCF(writer, registro);
} // }
} // }
//
@SuppressWarnings("unused") // @SuppressWarnings("unused")
private void adicionarRegistroECFTipoICF(PrintWriter writer, final List<ExportacaoECFTipoICF> listaRegistroECFTipoICF) { // private void adicionarRegistroECFTipoICF(PrintWriter writer, final List<ExportacaoECFTipoICF> listaRegistroECFTipoICF) {
for (ExportacaoECFTipoICF registro : listaRegistroECFTipoICF) { // for (ExportacaoECFTipoICF registro : listaRegistroECFTipoICF) {
adicionarLinhaICF(writer, registro); // adicionarLinhaICF(writer, registro);
} // }
} // }
//
@SuppressWarnings("unused") // @SuppressWarnings("unused")
private void adicionarRegistroECFTipoPRC(PrintWriter writer, final List<ExportacaoECFTipoPRC> listaRegistroECFTipoPRC) { // private void adicionarRegistroECFTipoPRC(PrintWriter writer, final List<ExportacaoECFTipoPRC> listaRegistroECFTipoPRC) {
for (ExportacaoECFTipoPRC registro : listaRegistroECFTipoPRC) { // for (ExportacaoECFTipoPRC registro : listaRegistroECFTipoPRC) {
adicionarLinhaPRC(writer, registro); // adicionarLinhaPRC(writer, registro);
} // }
} // }
private void adicionarRegistroECF(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF, private void adicionarRegistroECF(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF,
List<ExportacaoECFTipoICF> listaRegistroECFTipoICF, List<ExportacaoECFTipoPRC> listaRegistroECFTipoPRC) { List<ExportacaoECFTipoICF> listaRegistroECFTipoICF, List<ExportacaoECFTipoPRC> listaRegistroECFTipoPRC) {
@ -162,6 +162,8 @@ public class ExportacaoFiscal {
groupPRC.put(registro.getEcf() + "|" + registro.getDataEmissao(), itensPRC); groupPRC.put(registro.getEcf() + "|" + registro.getDataEmissao(), itensPRC);
} }
int linhas = listaRegistroECFTipoCFC.size() + listaRegistroECFTipoCCF.size() + listaRegistroECFTipoICF.size() + listaRegistroECFTipoPRC.size() + 1 + 1;
for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) { for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) {
adicionarLinhaCFC(writer, registro); adicionarLinhaCFC(writer, registro);
@ -173,10 +175,14 @@ public class ExportacaoFiscal {
} }
} }
BigDecimal total = BigDecimal.ZERO;
itensICF = groupICF.get(registro.getEcf() + "|" + registro.getDataEmissao()); itensICF = groupICF.get(registro.getEcf() + "|" + registro.getDataEmissao());
if (itensICF != null) { if (itensICF != null) {
for (ExportacaoECFTipoICF itemICF : itensICF) { for (ExportacaoECFTipoICF itemICF : itensICF) {
total = total.add(itemICF.getValorICMSDebitado().setScale(2, BigDecimal.ROUND_HALF_EVEN));
adicionarLinhaICF(writer, itemICF); adicionarLinhaICF(writer, itemICF);
} }
} }
@ -185,10 +191,12 @@ public class ExportacaoFiscal {
if (itensPRC != null) { if (itensPRC != null) {
for (ExportacaoECFTipoPRC itemPRC : itensPRC) { for (ExportacaoECFTipoPRC itemPRC : itensPRC) {
adicionarLinhaPRC(writer, itemPRC); adicionarLinhaPRC(writer, itemPRC, total);
} }
} }
} }
writer.print("TRA|" + linhas + UtiliteriasFiscal.QUEBRA_LINHA);
} }
private void adicionarLinhaCFC(PrintWriter writer, ExportacaoECFTipoCFC registro) { private void adicionarLinhaCFC(PrintWriter writer, ExportacaoECFTipoCFC registro) {
@ -343,7 +351,7 @@ public class ExportacaoFiscal {
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
} }
private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item) { private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item, BigDecimal total) {
String ufOrigem = item.getUfOrigem(); String ufOrigem = item.getUfOrigem();
String municipioOrigem = item.getMunicipioOrigem() == null ? null : item.getMunicipioOrigem().toString(); String municipioOrigem = item.getMunicipioOrigem() == null ? null : item.getMunicipioOrigem().toString();
BigDecimal valorTotal = item.getValorTotal(); BigDecimal valorTotal = item.getValorTotal();
@ -360,7 +368,7 @@ public class ExportacaoFiscal {
sb.append(formataNumerico(municipioOrigem, true, 5)).append(SEPARADOR); sb.append(formataNumerico(municipioOrigem, true, 5)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR); sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataValor(valorBaseCalculoICMS, 15)).append(SEPARADOR); sb.append(formataValor(valorBaseCalculoICMS, 15)).append(SEPARADOR);
sb.append(formataValor(valorICMS, 15)); sb.append(formataValor(total, 15)); // sb.append(formataValor(valorICMS, 15));
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
} }