diff --git a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java index 873ae357d..77593fbb1 100644 --- a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java @@ -6,13 +6,12 @@ import java.util.List; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalReducaoZVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionManualFiscalVO; -import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO; public interface FiscalDAO { public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte); - public List buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId); + public String sqlFiscaisECF(Date inicio, Date fim, Integer empresaId); public List buscaDatosFiscaisReducaoZ(Date inicio, Date fim, Integer empresaId); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 43c317ff3..761b87db9 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -19,7 +19,6 @@ import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalReducaoZVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionManualFiscalVO; -import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.SituacaoTributaria; @Repository("fiscalDAO") @@ -233,78 +232,53 @@ public class FiscalHibernateDAO extends GenericHibernateDAO impl } @Override - public List buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId) { + public String sqlFiscaisECF(Date inicio, Date fim, Integer empresaId) { StringBuilder sql = new StringBuilder(); - sql.append("SELECT r4.numserie20 as numImpressora, "); - sql.append(" r4.coo as coo, "); - sql.append(" b.boleto_id as boletoId, "); - sql.append(" b.marca_id as empresaId, "); - sql.append(" e.nombempresa as empresa, "); - sql.append(" r4.datainicialemissao as dataEmissao, "); - sql.append(" r4.cpfcnpjcliente as cnpjCliente, "); - sql.append(" fi.numcnpj as cnpjImpressora, "); - sql.append(" r4.imptotalliquido as valorTotal, "); - sql.append(" b.origen_id as origenId, "); - sql.append(" r5.totparcial as repTributado, "); - sql.append(" r5.imptotalliquido as valorItem, "); - sql.append(" r5.tipopassagem as tipoPassagem, "); - sql.append(" r5.numitem as numItem, "); - sql.append(" r5.codproduto as codProduto, "); - sql.append(" fi.fiscalimpressora_id as numpdv "); - sql.append("FROM fiscal_r4 r4 "); - sql.append(" INNER JOIN fiscal_r5 r5 ON r4.numserie20 = r5.numserie20 "); - sql.append(" AND r4.coo = r5.coo "); - sql.append(" INNER JOIN fiscal_impressora fi ON fi.numserie20 = r4.numserie20 "); - sql.append(" INNER JOIN boleto b ON b.boleto_id = r4.boleto_id "); - sql.append(" INNER JOIN empresa e ON e.empresa_id = b.marca_id "); - sql.append("WHERE b.marca_id = :empresaId "); - sql.append(" AND r4.datamov BETWEEN :datIni AND :datFim "); - sql.append("GROUP BY r4.numserie20, "); - sql.append(" r4.coo, "); - sql.append(" b.boleto_id, "); - sql.append(" b.marca_id, "); - sql.append(" e.nombempresa, "); - sql.append(" r4.datainicialemissao, "); - sql.append(" r4.cpfcnpjcliente, "); - sql.append(" fi.numcnpj, "); - sql.append(" r4.imptotalliquido, "); - sql.append(" r5.impdesconto, "); - sql.append(" b.origen_id, "); - sql.append(" r5.totparcial, "); - sql.append(" r5.imptotalliquido, "); - sql.append(" r5.tipopassagem, "); - sql.append(" r5.numitem, "); - sql.append(" r5.codproduto, "); - sql.append(" fi.fiscalimpressora_id "); - sql.append("ORDER BY r4.numserie20, "); - sql.append(" r4.coo, "); - sql.append(" r4.datainicialemissao "); + sql.append("SELECT r4.numserie20 as numImpressora, "); + sql.append(" r4.coo as coo, "); + sql.append(" r4.imptotalliquido as valorTotal, "); + sql.append(" r4.datainicialemissao as dataEmissao, "); + sql.append(" r4.cpfcnpjcliente as cnpjCliente, "); + sql.append(" b.boleto_id as boletoId, "); + sql.append(" b.marca_id as empresaId, "); + sql.append(" b.origen_id as origenId, "); + sql.append(" fi.numcnpj as cnpjImpressora, "); + sql.append(" fi.fiscalimpressora_id as numpdv, "); + sql.append(" r5.totparcial as repTributado, "); + sql.append(" r5.imptotalliquido as valorItem, "); + sql.append(" r5.tipopassagem as tipoPassagem, "); + sql.append(" r5.numitem as numItem, "); + sql.append(" r5.codproduto as codProduto "); + sql.append(" FROM fiscal_r4 r4 "); + sql.append(" INNER JOIN fiscal_r5 r5 ON r4.numserie20 = r5.numserie20 AND r4.coo = r5.coo "); + sql.append(" AND r4.datamov = r5.datamov AND r4.contador = r5.contador "); + sql.append(" INNER JOIN fiscal_impressora fi ON fi.numserie20 = r4.numserie20 "); + sql.append(" AND fi.fiscalimpressora_id = r5.fiscalimpressora_id "); + sql.append(" INNER JOIN boleto b ON b.boleto_id = r4.boleto_id AND r4.empresa_id = b.marca_id "); + sql.append(" WHERE r4.datamov BETWEEN ? AND ? "); + sql.append(" AND b.marca_id = ? "); + sql.append(" GROUP BY r4.numserie20, "); + sql.append(" r4.coo, "); + sql.append(" r4.datainicialemissao, "); + sql.append(" r4.cpfcnpjcliente, "); + sql.append(" r4.imptotalliquido, "); + sql.append(" b.boleto_id, "); + sql.append(" b.marca_id, "); + sql.append(" b.origen_id, "); + sql.append(" fi.numcnpj, "); + sql.append(" fi.fiscalimpressora_id, "); + sql.append(" r5.impdesconto, "); + sql.append(" r5.totparcial, "); + sql.append(" r5.imptotalliquido, "); + sql.append(" r5.tipopassagem, "); + sql.append(" r5.numitem, "); + sql.append(" r5.codproduto "); + sql.append(" ORDER BY r4.numserie20, "); + sql.append(" r4.coo, "); + sql.append(" r4.datainicialemissao "); - Query query = getSession().createSQLQuery(sql.toString()) - .addScalar("numImpressora", StringType.INSTANCE) - .addScalar("coo", StringType.INSTANCE) - .addScalar("boletoId", LongType.INSTANCE) - .addScalar("empresaId", IntegerType.INSTANCE) - .addScalar("empresa", StringType.INSTANCE) - .addScalar("dataEmissao", StringType.INSTANCE) - .addScalar("cnpjCliente", StringType.INSTANCE) - .addScalar("cnpjImpressora", StringType.INSTANCE) - .addScalar("valorTotal", BigDecimalType.INSTANCE) - .addScalar("origenId", IntegerType.INSTANCE) - .addScalar("repTributado", StringType.INSTANCE) - .addScalar("valorItem", BigDecimalType.INSTANCE) - .addScalar("tipoPassagem", StringType.INSTANCE) - .addScalar("numItem", StringType.INSTANCE) - .addScalar("codProduto", StringType.INSTANCE) - .addScalar("numpdv", StringType.INSTANCE); - - query.setResultTransformer(new AliasToBeanResultTransformer(ItemFiscalVO.class)); - query.setInteger("empresaId", empresaId); - query.setString("datIni", DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)); - query.setString("datFim", DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)); - - return query.list(); + return sql.toString(); } private int gerarRegistroP2(List lsEsquemaCorrida, Date dataDe, Date dataAte) { diff --git a/src/com/rjconsultores/ventaboletos/service/FiscalService.java b/src/com/rjconsultores/ventaboletos/service/FiscalService.java index 5bbdcc18b..644006849 100644 --- a/src/com/rjconsultores/ventaboletos/service/FiscalService.java +++ b/src/com/rjconsultores/ventaboletos/service/FiscalService.java @@ -1,6 +1,7 @@ package com.rjconsultores.ventaboletos.service; import java.io.File; +import java.sql.Connection; import java.util.Date; import java.util.List; @@ -11,7 +12,7 @@ public interface FiscalService { public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte); - public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa); + public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa, Connection conn); public File importacionFiscalReducaoZ(Date inicio, Date fim, Empresa empresa); diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java index 2c3023c24..b2c0319b2 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java @@ -5,6 +5,11 @@ import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -12,6 +17,7 @@ import java.util.HashMap; import java.util.List; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.StopWatch; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -367,7 +373,7 @@ public class FiscalServiceImpl implements FiscalService { } @Override - public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa) { + public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa, Connection conn) { try { String nomeArquivo = UsuarioLogado.getUsuarioLogado().getNombusuario() + "_" + Calendar.getInstance().getTime().getTime() + "_" + "fiscal"; @@ -386,14 +392,72 @@ public class FiscalServiceImpl implements FiscalService { String abertura = aberturaDeArquivo("0", dataAgora, cnpjFilial, brancos371, sequencial); gravarArq.println(abertura); - List list = agruparItensFiscais(fiscalDAO.buscaDatosFiscaisECF(inicio, fim, empresa.getEmpresaId())); + String sql = fiscalDAO.sqlFiscaisECF(inicio, fim, empresa.getEmpresaId()); + + PreparedStatement stmt = conn.prepareStatement(sql); + stmt.setFetchSize(100); + stmt.setString(1, DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)); + stmt.setString(2, DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)); + + if (empresa != null) { + stmt.setInt(3, empresa.getEmpresaId()); + } Integer qtdDoc = 0; Integer qtdItens = 0; - for (ImportacionFiscalVO fiscal : list) { + List list = new ArrayList(); + + String header = null; + List itensDocs = new ArrayList(); + ImportacionFiscalVO fiscal = null; + + ResultSet rset = stmt.executeQuery(); + while (rset.next()) { + + ItemFiscalVO item = new ItemFiscalVO(); + item.setNumImpressora(rset.getString("numImpressora")); + item.setCoo(rset.getString("coo")); + item.setBoletoId(rset.getLong("boletoId")); + item.setEmpresaId(rset.getInt("empresaId")); + item.setDataEmissao(rset.getString("dataEmissao")); + item.setCnpjCliente(rset.getString("cnpjCliente")); + item.setCnpjImpressora(rset.getString("cnpjImpressora")); + item.setOrigenId(rset.getInt("origenId")); + item.setNumpdv(rset.getString("numpdv")); + item.setValorTotal(rset.getBigDecimal("valorTotal")); + item.setNumItem(rset.getString("numItem")); + item.setCodProduto(rset.getString("codProduto")); + item.setRepTributado(rset.getString("repTributado")); + item.setTipoPassagem(rset.getString("tipoPassagem")); + item.setValorItem(rset.getBigDecimal("valorItem")); + + ImportacionFiscalVO novoFiscal = item; + if (!novoFiscal.equals(fiscal) && fiscal != null) { + + grabarHeaderItens(gravarArq, header, itensDocs); + + header = null; + itensDocs = new ArrayList(); + fiscal = null; + } + + boolean jaCadastrado = verificarItensFiscais(list, item); + if (!jaCadastrado) { + + fiscal = item; + + list.add(fiscal); + } + + /* + * Header da importacion Fiscal ECF + */ + if (!jaCadastrado) + qtdDoc++; + + fiscal.getItensFiscais().add(item); - qtdDoc++; String data = fiscal.getDataEmissao(); String brancos212 = StringHelper.preencherStringEspacoEsquerda(null, 212); @@ -409,8 +473,10 @@ public class FiscalServiceImpl implements FiscalService { String valorCSLL = StringHelper.preencherZeroEsquerda(null, 14); String coo = StringHelper.preencherStringEspacoDireita(fiscal.getCoo(), 9); - String valorTotalDocumanto = StringHelper.preencherStringEspacoDireita(fiscal.getValorTotal().toString(), 14); - String valorItens = StringHelper.preencherStringEspacoDireita(fiscal.getValorTotal().toString(), 14); + + BigDecimal valorTotal = fiscal.getValorTotal() == null ? BigDecimal.ZERO : fiscal.getValorTotal(); + String valorTotalDocumanto = StringHelper.preencherStringEspacoDireita(valorTotal.toString(), 14); + String valorItens = StringHelper.preencherStringEspacoDireita(valorTotal.toString(), 14); HashMap aliquotaBaseCalculo = getAliquotaBaseCalculo(fiscal); String aliquota = aliquotaBaseCalculo.get("aliquota"); @@ -420,24 +486,29 @@ public class FiscalServiceImpl implements FiscalService { String origen = StringHelper.preencherStringEspacoEsquerda(fiscal.getOrigenId().toString(), 5); - seq++; + if (!jaCadastrado) + seq++; + sequencial = StringHelper.preencherZeroEsquerda(seq.toString(), 6); - String header = headerDocumentoFiscal("1", data, cnpjFilial, coo, serie, especie, codigoCliente, + header = headerDocumentoFiscal("1", data, cnpjFilial, coo, serie, especie, codigoCliente, filialCliente, condicaoPagamento, valorTotalDocumanto, valorItens, aliquota, imposto, valorPIS, valorCofins, valorCSLL, totalICMSIsento, totalICMSNaotributado, origen, null, null, brancos212, sequencial); - gravarArq.println(header); - for (String itemDoc : montarItensFiscais(fiscal.getItensFiscais(), seq)) { + /* + * Item da importacion Fiscal ECF + */ + String itemDoc = montarItensFiscais(item, seq); + itensDocs.add(itemDoc); - qtdItens++; - gravarArq.println(itemDoc); - seq++; - } + qtdItens++; + seq++; } + grabarHeaderItens(gravarArq, header, itensDocs); + seq++; String qtdeDocGerados = StringHelper.preencherZeroEsquerda(qtdDoc.toString(), 6); String qtdeItensDocGerados = StringHelper.preencherZeroEsquerda(qtdItens.toString(), 6); @@ -452,145 +523,128 @@ public class FiscalServiceImpl implements FiscalService { } catch (IOException e) { log.error("", e); + } catch (SQLException e) { + log.error("", e); } return null; } - private List montarItensFiscais(List itensFiscais, Integer seq) { + private void grabarHeaderItens(PrintWriter gravarArq, String header, List itensDocs) { + gravarArq.println(header); - List itensDocs = new ArrayList(); + for (String doc : itensDocs) { + gravarArq.println(doc); + } + } - for (ItemFiscalVO item : itensFiscais) { + private String montarItensFiscais(ItemFiscalVO item, Integer seq) { - String tipoPassagem = null; - if (item.getRepTributado().length() == 7 && item.getRepTributado().substring(2, 3).equals(SituacaoTributaria.TRIBUTADO.getValue())) { - tipoPassagem = item.getTipoPassagem(); + String tipoPassagem = null; + if (item.getRepTributado().length() == 7 && item.getRepTributado().substring(2, 3).equals(SituacaoTributaria.TRIBUTADO.getValue())) { + tipoPassagem = item.getTipoPassagem(); - if (tipoPassagem == null) - tipoPassagem = "E"; - - } else { + if (tipoPassagem == null) tipoPassagem = "E"; - } - String numItem = item.getNumItem(); - - String cfop = null; - if (tipoPassagem.equals("E")) { - cfop = StringHelper.preencherStringEspacoDireita("6357", 5); - } else if (tipoPassagem.equals("M")) { - cfop = StringHelper.preencherStringEspacoDireita("5357", 5); - } - - String codigoTES = StringHelper.preencherStringEsquerda(null, 3, "9"); - String codProduto = StringHelper.preencherStringEspacoEsquerda(item.getCodProduto(), 15); - String unidade = "UN"; - String quantidade = "001"; - - String valorUnitario = StringHelper.preencherZeroEsquerda(item.getValorItem().toString(), 15); - String valorTotal = StringHelper.preencherZeroEsquerda(item.getValorItem().toString(), 15); - - String aliquotaItem = StringHelper.preencherZeroEsquerda(null, 7); - String impostoItem = StringHelper.preencherZeroEsquerda(null, 15); - String totalICMSIsentoItem = StringHelper.preencherZeroEsquerda(null, 15); - String totalICMSNaotributadoItem = StringHelper.preencherZeroEsquerda(null, 15); - - HashMap aliquotaItens = new HashMap(0); - - // Verificando se é um produto tributável. Formato: XXTYYYY (XX - Posicao / YYYY - Aliquota) - if (item.getRepTributado().length() == 7 && item.getRepTributado().substring(2, 3).equals(SituacaoTributaria.TRIBUTADO.getValue())) { - - String key = tipoPassagem + item.getRepTributado().substring(3, 7); - - if (!aliquotaItens.containsKey(key)) { - aliquotaItens.put(key, BigDecimal.ZERO); - } - - BigDecimal soma = item.getValorItem().divide(BigDecimal.TEN.multiply(BigDecimal.TEN)); - aliquotaItens.put(key, soma.add(aliquotaItens.get(key))); - - } else if (item.getRepTributado().equals(SituacaoTributaria.NAO_TRIBUTADO.getValue())) { - - BigDecimal soma = item.getValorItem(); - totalICMSNaotributadoItem = StringHelper.preencherZeroEsquerda(soma.toString(), 15); - } - - for (String key : aliquotaItens.keySet()) { - aliquotaItem = key.substring(1, 5); - - BigDecimal aliquotaCalc = BigDecimal.valueOf(Double.valueOf(aliquotaItem) / CEM.doubleValue()); - aliquotaCalc = UtileriasFiscal.arredondar(aliquotaCalc); - - BigDecimal baseCalculo = aliquotaItens.get(key); - baseCalculo = UtileriasFiscal.arredondar(baseCalculo); - - BigDecimal valorImposto = baseCalculo.multiply(aliquotaCalc.divide(CEM)); - valorImposto = UtileriasFiscal.arredondar(valorImposto); - - impostoItem = UtileriasFiscal.formataZeroDecimal(valorImposto, 15); - aliquotaItem = UtileriasFiscal.formataZeroDecimal(aliquotaCalc, 7); - } - - String aliquotaPIS = StringHelper.preencherZeroEsquerda(null, 7); - String valorPIS = StringHelper.preencherZeroEsquerda(null, 15); - String aliquotaCofins = StringHelper.preencherZeroEsquerda(null, 7); - String valorCofins = StringHelper.preencherZeroEsquerda(null, 15); - String aliquotaCSLL = StringHelper.preencherZeroEsquerda(null, 7); - String valorCSLL = StringHelper.preencherZeroEsquerda(null, 15); - String aliquotaISS = StringHelper.preencherZeroEsquerda(null, 7); - String valorISS = StringHelper.preencherZeroEsquerda(null, 15); - - String numeroPDV = StringHelper.preencherStringEspacoDireita(item.getNumpdv(), 10); - String numeroSeriePDV = StringHelper.preencherStringEspacoDireita(item.getNumImpressora(), 20); - - seq++; - String sequencial = StringHelper.preencherZeroEsquerda(seq.toString(), 6); - String brancos162 = StringHelper.preencherStringEspacoEsquerda(null, 162); - - String itemDoc = itensDocumentoFiscal("2", numItem, cfop, codigoTES, codProduto, - unidade, quantidade, valorUnitario, valorTotal, aliquotaItem, impostoItem, - aliquotaPIS, valorPIS, aliquotaCofins, valorCofins, aliquotaCSLL, valorCSLL, - aliquotaISS, valorISS, totalICMSIsentoItem, totalICMSNaotributadoItem, - numeroPDV, numeroSeriePDV, brancos162, sequencial); - itensDocs.add(itemDoc); + } else { + tipoPassagem = "E"; } - return itensDocs; - } - - private List agruparItensFiscais(List itens) { - - List list = new ArrayList(); - for (ItemFiscalVO item : itens) { - - ImportacionFiscalVO fiscal = item; - Integer index = null; - - boolean novaInsercao = false; - if (list.contains(fiscal)) { - index = list.indexOf(fiscal); - fiscal = list.get(index); - - } else { - list.add(fiscal); - novaInsercao = true; - } - - if (fiscal.getItensFiscais() == null) { - fiscal.setItensFiscais(new ArrayList()); - } - - fiscal.getItensFiscais().add(item); - - if (!novaInsercao) { - list.set(index, fiscal); - } + String numItem = item.getNumItem(); + String cfop = null; + if (tipoPassagem.equals("E")) { + cfop = StringHelper.preencherStringEspacoDireita("6357", 5); + } else if (tipoPassagem.equals("M")) { + cfop = StringHelper.preencherStringEspacoDireita("5357", 5); } - return list; + String codigoTES = StringHelper.preencherStringEsquerda(null, 3, "9"); + String codProduto = StringHelper.preencherStringEspacoEsquerda(item.getCodProduto(), 15); + String unidade = "UN"; + String quantidade = "001"; + + BigDecimal valorItem = item.getValorItem() == null ? BigDecimal.ZERO : item.getValorItem(); + String valorUnitario = StringHelper.preencherZeroEsquerda(valorItem.toString(), 15); + String valorTotal = StringHelper.preencherZeroEsquerda(valorItem.toString(), 15); + + String aliquotaItem = StringHelper.preencherZeroEsquerda(null, 7); + String impostoItem = StringHelper.preencherZeroEsquerda(null, 15); + String totalICMSIsentoItem = StringHelper.preencherZeroEsquerda(null, 15); + String totalICMSNaotributadoItem = StringHelper.preencherZeroEsquerda(null, 15); + + HashMap aliquotaItens = new HashMap(0); + + // Verificando se é um produto tributável. Formato: XXTYYYY (XX - Posicao / YYYY - Aliquota) + if (item.getRepTributado().length() == 7 && item.getRepTributado().substring(2, 3).equals(SituacaoTributaria.TRIBUTADO.getValue())) { + + String key = tipoPassagem + item.getRepTributado().substring(3, 7); + + if (!aliquotaItens.containsKey(key)) { + aliquotaItens.put(key, BigDecimal.ZERO); + } + + BigDecimal soma = item.getValorItem().divide(BigDecimal.TEN.multiply(BigDecimal.TEN)); + aliquotaItens.put(key, soma.add(aliquotaItens.get(key))); + + } else if (item.getRepTributado().equals(SituacaoTributaria.NAO_TRIBUTADO.getValue())) { + + BigDecimal soma = item.getValorItem(); + totalICMSNaotributadoItem = StringHelper.preencherZeroEsquerda(soma.toString(), 15); + } + + for (String key : aliquotaItens.keySet()) { + aliquotaItem = key.substring(1, 5); + + BigDecimal aliquotaCalc = BigDecimal.valueOf(Double.valueOf(aliquotaItem) / CEM.doubleValue()); + aliquotaCalc = UtileriasFiscal.arredondar(aliquotaCalc); + + BigDecimal baseCalculo = aliquotaItens.get(key); + baseCalculo = UtileriasFiscal.arredondar(baseCalculo); + + BigDecimal valorImposto = baseCalculo.multiply(aliquotaCalc.divide(CEM)); + valorImposto = UtileriasFiscal.arredondar(valorImposto); + + impostoItem = UtileriasFiscal.formataZeroDecimal(valorImposto, 15); + aliquotaItem = UtileriasFiscal.formataZeroDecimal(aliquotaCalc, 7); + } + + String aliquotaPIS = StringHelper.preencherZeroEsquerda(null, 7); + String valorPIS = StringHelper.preencherZeroEsquerda(null, 15); + String aliquotaCofins = StringHelper.preencherZeroEsquerda(null, 7); + String valorCofins = StringHelper.preencherZeroEsquerda(null, 15); + String aliquotaCSLL = StringHelper.preencherZeroEsquerda(null, 7); + String valorCSLL = StringHelper.preencherZeroEsquerda(null, 15); + String aliquotaISS = StringHelper.preencherZeroEsquerda(null, 7); + String valorISS = StringHelper.preencherZeroEsquerda(null, 15); + + String numeroPDV = StringHelper.preencherStringEspacoDireita(item.getNumpdv(), 10); + String numeroSeriePDV = StringHelper.preencherStringEspacoDireita(item.getNumImpressora(), 20); + + seq++; + String sequencial = StringHelper.preencherZeroEsquerda(seq.toString(), 6); + + String brancos162 = StringHelper.preencherStringEspacoEsquerda(null, 162); + + String itemDoc = itensDocumentoFiscal("2", numItem, cfop, codigoTES, codProduto, + unidade, quantidade, valorUnitario, valorTotal, aliquotaItem, impostoItem, + aliquotaPIS, valorPIS, aliquotaCofins, valorCofins, aliquotaCSLL, valorCSLL, + aliquotaISS, valorISS, totalICMSIsentoItem, totalICMSNaotributadoItem, + numeroPDV, numeroSeriePDV, brancos162, sequencial); + return itemDoc; + } + private boolean verificarItensFiscais(List list, ImportacionFiscalVO novoItem) { + + if (list.contains(novoItem)) { + return true; + } else { + return false; + } + } + + // private HashMap getAliquotaBaseCalculo(ItemFiscalVO item) { private HashMap getAliquotaBaseCalculo(ImportacionFiscalVO fiscal) { HashMap resp = new HashMap(); diff --git a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java index 12e6036e5..275fc3a85 100644 --- a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ImportacionFiscalVO.java @@ -1,6 +1,7 @@ package com.rjconsultores.ventaboletos.vo.impressaofiscal; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; public class ImportacionFiscalVO { @@ -9,7 +10,6 @@ public class ImportacionFiscalVO { private String coo; private Long boletoId; private Integer empresaId; - private String empresa; private String dataEmissao; private String cnpjCliente; private String cnpjImpressora; @@ -51,14 +51,6 @@ public class ImportacionFiscalVO { this.empresaId = empresaId; } - public String getEmpresa() { - return empresa; - } - - public void setEmpresa(String empresa) { - this.empresa = empresa; - } - public String getDataEmissao() { return dataEmissao; } @@ -100,6 +92,9 @@ public class ImportacionFiscalVO { } public List getItensFiscais() { + if (itensFiscais == null) { + itensFiscais = new ArrayList(); + } return itensFiscais; } @@ -107,6 +102,14 @@ public class ImportacionFiscalVO { this.itensFiscais = itensFiscais; } + public String getNumpdv() { + return numpdv; + } + + public void setNumpdv(String numpdv) { + this.numpdv = numpdv; + } + @Override public int hashCode() { final int prime = 31; @@ -144,12 +147,4 @@ public class ImportacionFiscalVO { return true; } - public String getNumpdv() { - return numpdv; - } - - public void setNumpdv(String numpdv) { - this.numpdv = numpdv; - } - } diff --git a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java index 9bbcf0f8f..db08bc8b4 100644 --- a/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/impressaofiscal/ItemFiscalVO.java @@ -50,4 +50,46 @@ public class ItemFiscalVO extends ImportacionFiscalVO { this.tipoPassagem = tipoPassagem; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((super.getBoletoId() == null) ? 0 : super.getBoletoId().hashCode()); + result = prime * result + ((super.getCoo() == null) ? 0 : super.getCoo().hashCode()); + result = prime * result + ((super.getNumImpressora() == null) ? 0 : super.getNumImpressora().hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ImportacionFiscalVO other = (ImportacionFiscalVO) obj; + if (super.getBoletoId() == null) { + if (other.getBoletoId() != null) + return false; + } else if (!super.getBoletoId().equals(other.getBoletoId())) + return false; + if (super.getCoo() == null) { + if (other.getCoo() != null) + return false; + } else if (!super.getCoo().equals(other.getCoo())) + return false; + if (super.getNumImpressora() == null) { + if (other.getNumImpressora() != null) + return false; + } else if (!super.getNumImpressora().equals(other.getNumImpressora())) + return false; + return true; + } + + @Override + public String toString() { + return "ItemFiscalVO [numItem=" + numItem + ", codProduto=" + codProduto + ", repTributado=" + repTributado + ", valorItem=" + valorItem + ", tipoPassagem=" + tipoPassagem + ", getNumImpressora()=" + getNumImpressora() + ", getCoo()=" + getCoo() + ", getBoletoId()=" + getBoletoId() + ", getEmpresaId()=" + getEmpresaId() + ", getDataEmissao()=" + getDataEmissao() + ", getCnpjCliente()=" + getCnpjCliente() + ", getCnpjImpressora()=" + getCnpjImpressora() + ", getValorTotal()=" + getValorTotal() + ", getOrigenId()=" + getOrigenId() + ", getItensFiscais()=" + getItensFiscais() + ", getNumpdv()=" + getNumpdv() + "]"; + } + }