diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index c6a8efc59..3ee9a8668 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -1224,7 +1224,7 @@ public class FiscalHibernateDAO implements FiscalDAO { @Override public List buscarRegistroECFTipoCFC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); - + 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 retorno = new ArrayList(); 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"); diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java index bf377aa85..295bca3d5 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java @@ -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 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 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 listaRegistroECFTipoCFC, final List listaRegistroECFTipoCCF) { + Map> groupCCF = new HashMap>(); + + List itens = new ArrayList(); + + for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) { + itens = new ArrayList(); + + 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 listaRegistroECFTipoICF) { for (ExportacaoECFTipoICF registro : listaRegistroECFTipoICF) { BigDecimal valorTotal = registro.getValorTotal(); diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java index c95c7ae62..42e784283 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCCF.java @@ -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 + "]"; } } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCFC.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCFC.java index 6f3e65503..fe244d40d 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCFC.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoECFTipoCFC.java @@ -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 + "]"; } }