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

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@64234 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2016-12-27 20:26:04 +00:00
parent ea7975519a
commit f607592fcb
4 changed files with 195 additions and 117 deletions

View File

@ -1224,7 +1224,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
@Override
public List<ExportacaoECFTipoCFC> buscarRegistroECFTipoCFC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) {
List<ExportacaoECFTipoCFC> retorno = new ArrayList<ExportacaoECFTipoCFC>();
StringBuilder sb = new StringBuilder();
sb.append(" select distinct");
sb.append(" imp.numserie20 as ecf,");
@ -1264,7 +1264,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join parada post on post.parada_id = st.aliasorigen_id");
sb.append(" left join ciudad cost on cost.ciudad_id = post.ciudad_id");
sb.append(" left join estado eost on eost.estado_id = cost.estado_id");
sb.append(" where r4t.numserie20 = r2.numserie20 and r4t.datamov = r2.datamov and ((CASE WHEN eost.cveestado IS NULL THEN eot.cveestado ELSE eost.cveestado END) = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END))");
sb.append(" where r4t.numserie20 = r2.numserie20 and r4t.datamov = r2.datamov and ((CASE WHEN s.aliasorigen_id IS NULL THEN eot.cveestado ELSE eost.cveestado END) = (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END))");
sb.append(" ) as totalvenda");
sb.append(" from fiscal_r4 r4");
sb.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov");
@ -1280,7 +1280,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join estado eos on eos.estado_id = cos.estado_id");
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = cos.estado_id");
sb.append(" left join estado e on e.estado_id = imp.estadolocal_id");
sb.append(" where r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" where nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" order by r2.datamov");
try {
@ -1305,12 +1305,13 @@ public class FiscalHibernateDAO implements FiscalDAO {
registro.setEstabelecimento(rs.getInt("codestabelecimento"));
registro.setDataEmissao(rs.getString("datamov"));
registro.setNumeroIdentificacaoECF(rs.getInt("numeroidentificacao"));
registro.setEcf(rs.getString("ecf"));
registro.setCooReducaoZ(Integer.valueOf(rs.getString("coo")));
registro.setCooInicial(Integer.valueOf(rs.getString("cooinicial")));
registro.setCooFinal(Integer.valueOf(rs.getString("coofinal")));
registro.setContadorReducao(Integer.valueOf(rs.getString("crz")));
registro.setCro(Integer.valueOf(rs.getString("cro")));
registro.setValorTotal(BigDecimal.valueOf(Double.valueOf(rs.getString("totalvenda")) / 100));
registro.setValorTotal(BigDecimal.valueOf(Double.valueOf(rs.getString("vendabrutadiaria")) / 100));
registro.setValorIsentas(totalIsenta);
registro.setEstabelecimentoECF(rs.getInt("codestabelecimentoimpressora"));
@ -1334,6 +1335,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
StringBuilder sb = new StringBuilder();
sb.append(" select distinct");
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(" (CASE WHEN s.aliasorigen_id IS NULL THEN co.codibge ELSE cos.codibge END) as municipio_origem,");
@ -1365,7 +1367,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id");
sb.append(" left join estado eds on eds.estado_id = cds.estado_id");
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id");
sb.append(" where r5.codproduto like '%-TA' and r5.datamov >= ? and r5.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" where nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r5.codproduto like '%-TA' and r5.datamov >= ? and r5.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
@ -1380,6 +1382,8 @@ public class FiscalHibernateDAO implements FiscalDAO {
while (rs.next()) {
registro = new ExportacaoECFTipoCCF();
registro.setEcf(rs.getString("ecf"));
registro.setDataEmissao(rs.getString("datamov"));
registro.setCoo(Integer.valueOf(rs.getString("coo")));
registro.setValorServico(BigDecimal.valueOf(Double.valueOf(rs.getString("valortarifa")) / 100));
registro.setDescontoGlobal(null);
@ -1492,7 +1496,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id");
sb.append(" left join estado eds on eds.estado_id = cds.estado_id");
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id");
sb.append(" where r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" where nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
@ -1534,7 +1538,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
}
}
BigDecimal valorICMSDebitado = valorBaseCalculoICMS.multiply(tributacao_importacao);
BigDecimal valorICMSDebitado = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao));
BigDecimal valorICMSIsento = BigDecimal.ZERO;
BigDecimal valorICMSOutros = BigDecimal.ZERO;
@ -1616,16 +1620,18 @@ public class FiscalHibernateDAO implements FiscalDAO {
List<ExportacaoECFTipoPRC> retorno = new ArrayList<ExportacaoECFTipoPRC>();
StringBuilder sb = new StringBuilder();
sb.append(" select municipio_origem, estado_origem, red_base_calc_icms, porc_red_municipal, porc_red_estadual, SUM(valortotal) as valortotal");
sb.append(" select municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, SUM(valortotal) as valortotal");
sb.append(" from (");
sb.append(" select");
sb.append(" r4.numserie20 as ecf,");
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.aliasorigen_id IS NULL THEN ed.cveestado ELSE eds.cveestado END) as estado_destino,");
sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredbaseicms ELSE eis.porcredbaseicms END) as red_base_calc_icms,");
sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredmunicipal ELSE eis.porcredmunicipal END) as porc_red_municipal,");
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(" r4.impsubtotal as valortotal");
sb.append(" from fiscal_r4 r4");
sb.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov");
@ -1641,10 +1647,13 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join parada pos on pos.parada_id = s.aliasorigen_id");
sb.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id");
sb.append(" left join estado eos on eos.estado_id = cos.estado_id");
sb.append(" left join parada pds on pds.parada_id = s.aliasdestino_id");
sb.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id");
sb.append(" left join estado eds on eds.estado_id = cds.estado_id");
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id");
sb.append(" where r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" where nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" ) group by municipio_origem, estado_origem, red_base_calc_icms, porc_red_municipal, porc_red_estadual");
sb.append(" ) group by municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
@ -1684,7 +1693,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
}
}
BigDecimal valorICMS = valorBaseCalculoICMS.multiply(tributacao_importacao);
BigDecimal valorICMS = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao));
registro = new ExportacaoECFTipoPRC();
registro.setUfOrigem(rs.getString("estado_origem"));
@ -1800,7 +1809,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id and ei.estado_id = co.estado_id");
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = cos.estado_id");
sb.append(" where");
sb.append(" b.activo = 1");
sb.append(" b.activo = 1 and");
sb.append(" and b.tipoventa_id = 3");
sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END) = 1");
sb.append(" and (b.indstatusboleto like 'V' or b.indstatusboleto like 'C')");
@ -2014,7 +2023,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id and ei.estado_id = eo.estado_id");
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id");
sb.append(" where");
sb.append(" b.activo = 1");
sb.append(" b.activo = 1 and");
sb.append(" and b.tipoventa_id = 3");
sb.append(" and (b.indstatusboleto like 'V' or b.indstatusboleto like 'C')");
sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END) = 1");

View File

@ -7,9 +7,12 @@ import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
@ -48,8 +51,9 @@ public class ExportacaoFiscal {
PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(arquivo), Constantes.UTF_8));
adicionarRegistroECFTipoCAB(writer, dataInicial, dataFinal, nomeEmpresa);
adicionarRegistroECFTipoCFC(writer, listaRegistroECFTipoCFC);
adicionarRegistroECFTipoCCF(writer, listaRegistroECFTipoCCF);
// adicionarRegistroECFTipoCFC(writer, listaRegistroECFTipoCFC);
// adicionarRegistroECFTipoCCF(writer, listaRegistroECFTipoCCF);
adicionarRegistroECFTipoCFC_CCF(writer, listaRegistroECFTipoCFC, listaRegistroECFTipoCCF);
adicionarRegistroECFTipoICF(writer, listaRegistroECFTipoICF);
adicionarRegistroECFTipoPRC(writer, listaRegistroECFTipoPRC);
@ -81,112 +85,150 @@ public class ExportacaoFiscal {
private void adicionarRegistroECFTipoCFC(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC) {
for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) {
Integer estabelecimento = registro.getEstabelecimento();
String dataEmissao = registro.getDataEmissao();
Integer numeroIdentificacaoECF = registro.getNumeroIdentificacaoECF();
Integer cooReducaoZ = registro.getCooReducaoZ();
Integer cooInicial = registro.getCooInicial();
Integer cooFinal = registro.getCooFinal();
Integer contadorReducao = registro.getContadorReducao();
Integer cro = registro.getCro();
BigDecimal valorTotal = registro.getValorTotal();
BigDecimal valorIsentas = registro.getValorIsentas();
Integer estabelecimentoECF = registro.getEstabelecimentoECF();
StringBuilder sb = new StringBuilder();
sb.append("CFC").append(SEPARADOR);
sb.append(formataNumerico(estabelecimento, false, 4)).append(SEPARADOR);
sb.append(formataCaracter(dataEmissao, true, 8)).append(SEPARADOR);
sb.append(formataNumerico(numeroIdentificacaoECF, true, 3)).append(SEPARADOR);
sb.append(formataNumerico(cooReducaoZ, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(cooInicial, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(cooFinal, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(contadorReducao, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(cro, true, 6)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 12
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 13
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 14
sb.append(formataValor(valorIsentas, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 16
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 17
sb.append("N").append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 25)).append(SEPARADOR); // Posição 19
sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 20
sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 21
sb.append(formataCaracter(VAZIO, false, 6)).append(SEPARADOR); // Posição 22
sb.append(formataCaracter(VAZIO, false, 2)).append(SEPARADOR); // Posição 23
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 26
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 27
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 28
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 29
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 30
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 31
sb.append("").append(SEPARADOR); // Posição 32
sb.append("V").append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 34
sb.append(formataNumerico(estabelecimentoECF.toString(), false, 4));
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
adicionarLinhaCFC(writer, registro);
}
}
private void adicionarRegistroECFTipoCCF(PrintWriter writer, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF) {
for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) {
Integer coo = registro.getCoo();
BigDecimal valorServico = registro.getValorServico();
BigDecimal descontoGlobal = registro.getDescontoGlobal();
Integer codigoParticipante = registro.getCodigoParticipante();
Integer situacaoCOO = registro.getSituacaoCOO(); // 0 - Documento Regular; 2 - Documento Cancelado
BigDecimal acrescimo = registro.getAcrescimo();
String ufOrigem = registro.getUfOrigem();
Integer municipioOrigem = registro.getMunicipioOrigem();
String ufDestino = registro.getUfDestino();
Integer cfop = registro.getCfop(); // IM=5357; Serviço IE= 6357
Integer codigoSituacaoTribColunaB = registro.getCodigoSituacaoTribColunaB(); // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
BigDecimal valorTotal = registro.getValorTotal();
Integer tributacaoICMS = registro.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 = registro.getValorBaseCalculoICMS();
BigDecimal aliquotaICMS = registro.getAliquotaICMS();
StringBuilder sb = new StringBuilder();
sb.append("CCF").append(SEPARADOR);
sb.append(formataNumerico(coo.toString(), true, 6)).append(SEPARADOR);
sb.append(formataValor(valorServico, 15)).append(SEPARADOR);
sb.append(formataValor(descontoGlobal, 15)).append(SEPARADOR);
sb.append(formataNumerico(codigoParticipante, true, 15)).append(SEPARADOR);
sb.append(formataNumerico(situacaoCOO, true, 1)).append(SEPARADOR);
sb.append(formataValor(acrescimo, 15)).append(SEPARADOR);
sb.append(formataCaracter(ufOrigem, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(municipioOrigem, true, 5)).append(SEPARADOR);
sb.append(formataCaracter(ufDestino, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(cfop, true, 4)).append(SEPARADOR);
sb.append("0").append(SEPARADOR);
sb.append(formataNumerico(codigoSituacaoTribColunaB, true, 2)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 1)).append(SEPARADOR); // Posição 14
sb.append(formataCaracter(VAZIO, false, 1)).append(SEPARADOR); // Posição 15
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataNumerico(tributacaoICMS, true, 1)).append(SEPARADOR);
sb.append(formataValor(valorBaseCalculoICMS, 15)).append(SEPARADOR);
sb.append(formataValor(aliquotaICMS, 5)).append(SEPARADOR);
sb.append("01").append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 22
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 23
sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 24
sb.append("01").append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 27
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 28
sb.append(formataCaracter(VAZIO, false, 3)); // Posição 29
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
adicionarLinhaCCF(writer, registro);
}
}
private void adicionarRegistroECFTipoCFC_CCF(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF) {
Map<String, List<ExportacaoECFTipoCCF>> groupCCF = new HashMap<String, List<ExportacaoECFTipoCCF>>();
List<ExportacaoECFTipoCCF> itens = new ArrayList<ExportacaoECFTipoCCF>();
for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) {
itens = new ArrayList<ExportacaoECFTipoCCF>();
if (groupCCF.containsKey(registro.getEcf() + "|" + registro.getDataEmissao())) {
itens.addAll(groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao()));
}
itens.add(registro);
groupCCF.put(registro.getEcf() + "|" + registro.getDataEmissao(), itens);
}
for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) {
adicionarLinhaCFC(writer, registro);
itens = groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao());
if (itens != null) {
for (ExportacaoECFTipoCCF item : itens) {
adicionarLinhaCCF(writer, item);
}
}
}
}
private void adicionarLinhaCFC(PrintWriter writer, ExportacaoECFTipoCFC registro) {
Integer estabelecimento = registro.getEstabelecimento();
String dataEmissao = registro.getDataEmissao();
Integer numeroIdentificacaoECF = registro.getNumeroIdentificacaoECF();
Integer cooReducaoZ = registro.getCooReducaoZ();
Integer cooInicial = registro.getCooInicial();
Integer cooFinal = registro.getCooFinal();
Integer contadorReducao = registro.getContadorReducao();
Integer cro = registro.getCro();
BigDecimal valorTotal = registro.getValorTotal();
BigDecimal valorIsentas = registro.getValorIsentas();
Integer estabelecimentoECF = registro.getEstabelecimentoECF();
StringBuilder sb = new StringBuilder();
sb.append("CFC").append(SEPARADOR);
sb.append(formataNumerico(estabelecimento, false, 4)).append(SEPARADOR);
sb.append(formataCaracter(dataEmissao, true, 8)).append(SEPARADOR);
sb.append(formataNumerico(numeroIdentificacaoECF, true, 3)).append(SEPARADOR);
sb.append(formataNumerico(cooReducaoZ, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(cooInicial, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(cooFinal, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(contadorReducao, true, 6)).append(SEPARADOR);
sb.append(formataNumerico(cro, true, 6)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 12
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 13
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 14
sb.append(formataValor(valorIsentas, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 16
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 17
sb.append("N").append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 25)).append(SEPARADOR); // Posição 19
sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 20
sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 21
sb.append(formataCaracter(VAZIO, false, 6)).append(SEPARADOR); // Posição 22
sb.append(formataCaracter(VAZIO, false, 2)).append(SEPARADOR); // Posição 23
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 26
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 27
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 28
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 29
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 30
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 31
sb.append("").append(SEPARADOR); // Posição 32
sb.append("V").append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 34
sb.append(formataNumerico(estabelecimentoECF.toString(), false, 4));
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
private void adicionarLinhaCCF(PrintWriter writer, ExportacaoECFTipoCCF item) {
Integer coo = item.getCoo();
BigDecimal valorServico = item.getValorServico();
BigDecimal descontoGlobal = item.getDescontoGlobal();
Integer codigoParticipante = item.getCodigoParticipante();
Integer situacaoCOO = item.getSituacaoCOO(); // 0 - Documento Regular; 2 - Documento Cancelado
BigDecimal acrescimo = item.getAcrescimo();
String ufOrigem = item.getUfOrigem();
Integer municipioOrigem = item.getMunicipioOrigem();
String ufDestino = item.getUfDestino();
Integer cfop = item.getCfop(); // IM=5357; Serviço IE= 6357
Integer codigoSituacaoTribColunaB = item.getCodigoSituacaoTribColunaB(); // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
BigDecimal valorTotal = item.getValorTotal();
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();
StringBuilder sb = new StringBuilder();
sb.append("CCF").append(SEPARADOR);
sb.append(formataNumerico(coo.toString(), true, 6)).append(SEPARADOR);
sb.append(formataValor(valorServico, 15)).append(SEPARADOR);
sb.append(formataValor(descontoGlobal, 15)).append(SEPARADOR);
sb.append(formataNumerico(codigoParticipante, true, 15)).append(SEPARADOR);
sb.append(formataNumerico(situacaoCOO, true, 1)).append(SEPARADOR);
sb.append(formataValor(acrescimo, 15)).append(SEPARADOR);
sb.append(formataCaracter(ufOrigem, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(municipioOrigem, true, 5)).append(SEPARADOR);
sb.append(formataCaracter(ufDestino, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(cfop, true, 4)).append(SEPARADOR);
sb.append("0").append(SEPARADOR);
sb.append(formataNumerico(codigoSituacaoTribColunaB, true, 2)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 1)).append(SEPARADOR); // Posição 14
sb.append(formataCaracter(VAZIO, false, 1)).append(SEPARADOR); // Posição 15
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataNumerico(tributacaoICMS, true, 1)).append(SEPARADOR);
sb.append(formataValor(valorBaseCalculoICMS, 15)).append(SEPARADOR);
sb.append(formataValor(aliquotaICMS, 5)).append(SEPARADOR);
sb.append("01").append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 22
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 23
sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 24
sb.append("01").append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 5)).append(SEPARADOR); // Posição 27
sb.append(formataCaracter(VAZIO, false, 15)).append(SEPARADOR); // Posição 28
sb.append(formataCaracter(VAZIO, false, 3)); // Posição 29
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
private void adicionarRegistroECFTipoICF(PrintWriter writer, final List<ExportacaoECFTipoICF> listaRegistroECFTipoICF) {
for (ExportacaoECFTipoICF registro : listaRegistroECFTipoICF) {
BigDecimal valorTotal = registro.getValorTotal();

View File

@ -18,6 +18,8 @@ public class ExportacaoECFTipoCCF {
private Integer tributacaoICMS; // 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"
private BigDecimal valorBaseCalculoICMS;
private BigDecimal aliquotaICMS;
private String ecf;
private String dataEmissao;
public ExportacaoECFTipoCCF() {
@ -143,8 +145,24 @@ public class ExportacaoECFTipoCCF {
this.aliquotaICMS = aliquotaICMS;
}
public String getEcf() {
return ecf;
}
public void setEcf(String ecf) {
this.ecf = ecf;
}
public String getDataEmissao() {
return dataEmissao;
}
public void setDataEmissao(String dataEmissao) {
this.dataEmissao = dataEmissao;
}
@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 + "]";
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 + "]";
}
}

View File

@ -14,7 +14,8 @@ public class ExportacaoECFTipoCFC {
private BigDecimal valorTotal;
private BigDecimal valorIsentas;
private Integer estabelecimentoECF;
private String ecf;
public ExportacaoECFTipoCFC() {
}
@ -107,8 +108,16 @@ public class ExportacaoECFTipoCFC {
this.estabelecimentoECF = estabelecimentoECF;
}
public String getEcf() {
return ecf;
}
public void setEcf(String ecf) {
this.ecf = ecf;
}
@Override
public String toString() {
return "ExportacaoECFTipoCFC [estabelecimento=" + estabelecimento + ", dataEmissao=" + dataEmissao + ", numeroIdentificacaoECF=" + numeroIdentificacaoECF + ", cooReducaoZ=" + cooReducaoZ + ", cooInicial=" + cooInicial + ", cooFinal=" + cooFinal + ", contadorReducao=" + contadorReducao + ", cro=" + cro + ", valorTotal=" + valorTotal + ", valorIsentas=" + valorIsentas + ", estabelecimentoECF=" + estabelecimentoECF + "]";
return "ExportacaoECFTipoCFC [estabelecimento=" + estabelecimento + ", dataEmissao=" + dataEmissao + ", numeroIdentificacaoECF=" + numeroIdentificacaoECF + ", cooReducaoZ=" + cooReducaoZ + ", cooInicial=" + cooInicial + ", cooFinal=" + cooFinal + ", contadorReducao=" + contadorReducao + ", cro=" + cro + ", valorTotal=" + valorTotal + ", valorIsentas=" + valorIsentas + ", estabelecimentoECF=" + estabelecimentoECF + ", ecf=" + ecf + "]";
}
}