julio 2015-08-07 19:00:39 +00:00
parent 37e4b1483a
commit c3322acd4b
6 changed files with 291 additions and 226 deletions

View File

@ -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<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte);
public List<ItemFiscalVO> buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId);
public String sqlFiscaisECF(Date inicio, Date fim, Integer empresaId);
public List<ImportacionFiscalReducaoZVO> buscaDatosFiscaisReducaoZ(Date inicio, Date fim, Integer empresaId);

View File

@ -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<String, String> impl
}
@Override
public List<ItemFiscalVO> 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.imptotalliquido as valorTotal, ");
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.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(" fi.fiscalimpressora_id as numpdv ");
sql.append(" r5.codproduto as codProduto ");
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_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(" 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(" 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(" 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.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(" fi.fiscalimpressora_id ");
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<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) {

View File

@ -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<EsquemaCorrida> 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);

View File

@ -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<ImportacionFiscalVO> 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<ImportacionFiscalVO> list = new ArrayList<ImportacionFiscalVO>();
String header = null;
List<String> itensDocs = new ArrayList<String>();
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<String>();
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);
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<String, String> 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);
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++;
}
}
grabarHeaderItens(gravarArq, header, itensDocs);
seq++;
String qtdeDocGerados = StringHelper.preencherZeroEsquerda(qtdDoc.toString(), 6);
String qtdeItensDocGerados = StringHelper.preencherZeroEsquerda(qtdItens.toString(), 6);
@ -452,15 +523,21 @@ public class FiscalServiceImpl implements FiscalService {
} catch (IOException e) {
log.error("", e);
} catch (SQLException e) {
log.error("", e);
}
return null;
}
private List<String> montarItensFiscais(List<ItemFiscalVO> itensFiscais, Integer seq) {
private void grabarHeaderItens(PrintWriter gravarArq, String header, List<String> itensDocs) {
gravarArq.println(header);
List<String> itensDocs = new ArrayList<String>();
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())) {
@ -487,8 +564,9 @@ public class FiscalServiceImpl implements FiscalService {
String unidade = "UN";
String quantidade = "001";
String valorUnitario = StringHelper.preencherZeroEsquerda(item.getValorItem().toString(), 15);
String valorTotal = StringHelper.preencherZeroEsquerda(item.getValorItem().toString(), 15);
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);
@ -545,6 +623,7 @@ public class FiscalServiceImpl implements FiscalService {
seq++;
String sequencial = StringHelper.preencherZeroEsquerda(seq.toString(), 6);
String brancos162 = StringHelper.preencherStringEspacoEsquerda(null, 162);
String itemDoc = itensDocumentoFiscal("2", numItem, cfop, codigoTES, codProduto,
@ -552,45 +631,20 @@ public class FiscalServiceImpl implements FiscalService {
aliquotaPIS, valorPIS, aliquotaCofins, valorCofins, aliquotaCSLL, valorCSLL,
aliquotaISS, valorISS, totalICMSIsentoItem, totalICMSNaotributadoItem,
numeroPDV, numeroSeriePDV, brancos162, sequencial);
itensDocs.add(itemDoc);
return itemDoc;
}
return itensDocs;
}
private List<ImportacionFiscalVO> agruparItensFiscais(List<ItemFiscalVO> itens) {
List<ImportacionFiscalVO> list = new ArrayList<ImportacionFiscalVO>();
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);
private boolean verificarItensFiscais(List<ImportacionFiscalVO> list, ImportacionFiscalVO novoItem) {
if (list.contains(novoItem)) {
return true;
} else {
list.add(fiscal);
novaInsercao = true;
}
if (fiscal.getItensFiscais() == null) {
fiscal.setItensFiscais(new ArrayList<ItemFiscalVO>());
}
fiscal.getItensFiscais().add(item);
if (!novaInsercao) {
list.set(index, fiscal);
}
}
return list;
return false;
}
}
// private HashMap<String, String> getAliquotaBaseCalculo(ItemFiscalVO item) {
private HashMap<String, String> getAliquotaBaseCalculo(ImportacionFiscalVO fiscal) {
HashMap<String, String> resp = new HashMap<String, String>();

View File

@ -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<ItemFiscalVO> getItensFiscais() {
if (itensFiscais == null) {
itensFiscais = new ArrayList<ItemFiscalVO>();
}
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;
}
}

View File

@ -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() + "]";
}
}