RMD - Arquivo Exportação para QS (fixes bug 0006374) - Parte 2 - REDUÇÃO Z

Tempo: 15 horas

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@45272 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2015-06-22 19:58:38 +00:00
parent 7123bfb6ac
commit 2cd6f0154d
5 changed files with 453 additions and 4 deletions

View File

@ -4,6 +4,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalReducaoZVO;
import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO;
public interface FiscalDAO { public interface FiscalDAO {
@ -12,4 +13,6 @@ public interface FiscalDAO {
public List<ItemFiscalVO> buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId); public List<ItemFiscalVO> buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId);
public List<ImportacionFiscalReducaoZVO> buscaDatosFiscaisReducaoZ(Date inicio, Date fim, Integer empresaId);
} }

View File

@ -17,6 +17,7 @@ import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.FiscalDAO; import com.rjconsultores.ventaboletos.dao.FiscalDAO;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalReducaoZVO;
import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO;
@Repository("fiscalDAO") @Repository("fiscalDAO")
@ -29,6 +30,82 @@ public class FiscalHibernateDAO extends GenericHibernateDAO<String, String> impl
setSessionFactory(factory); setSessionFactory(factory);
} }
@Override
public List<ImportacionFiscalReducaoZVO> buscaDatosFiscaisReducaoZ(Date inicio, Date fim, Integer empresaId) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT r2.datamov AS datamov, ");
sql.append(" r2.numreducoes AS numreducoes, ");
sql.append(" r2.crz AS crz, ");
sql.append(" r2.numserie20 AS numserie20, ");
sql.append(" r2.coo AS coo, ");
sql.append(" r2.cooinicial AS cooinicial, ");
sql.append(" r2.coofinal AS coofinal, ");
sql.append(" r2.vendabrutadiaria AS vendabrutadiaria, ");
sql.append(" r2.datareducao AS datareducao, ");
sql.append(" r2.horareducao AS horareducao, ");
sql.append(" r2.totgeral AS totgeral, ");
sql.append(" r3.totparcial AS aliquota, ");
sql.append(" r3.valoracumulado AS imposto, ");
sql.append(" ifi.fiscalimpressora_id AS numpdv, ");
sql.append(" ifi.numcnpj AS cnpj ");
sql.append("FROM fiscal_r2 r2 ");
sql.append(" inner join fiscal_r3 r3 ");
sql.append(" ON r3.crz = r2.crz ");
sql.append(" AND r2.numserie20 = r3.numserie20 ");
sql.append(" AND r3.datamov = r2.datamov ");
sql.append(" left join fiscal_impressora ifi ");
sql.append(" ON ifi.numserie20 = r2.numserie20 ");
sql.append(" left join empresa e ");
sql.append(" ON TRANSLATE(ifi.numcnpj, ' / - . ', ' ') = e.cnpj ");
sql.append("WHERE r2.datamov BETWEEN :datIni AND :datFim ");
sql.append(" AND e.empresa_id = :empresaId ");
sql.append("GROUP BY r2.datamov, ");
sql.append(" r2.numreducoes, ");
sql.append(" r2.crz, ");
sql.append(" r2.numserie20, ");
sql.append(" r2.coo, ");
sql.append(" r2.cooinicial, ");
sql.append(" r2.coofinal, ");
sql.append(" r2.vendabrutadiaria, ");
sql.append(" r2.datareducao, ");
sql.append(" r2.horareducao, ");
sql.append(" r2.totgeral, ");
sql.append(" r3.totparcial, ");
sql.append(" r3.valoracumulado, ");
sql.append(" ifi.fiscalimpressora_id, ");
sql.append(" ifi.numcnpj ");
sql.append("ORDER BY r2.datamov, ");
sql.append(" numserie20, ");
sql.append(" crz, ");
sql.append(" r2.numreducoes, ");
sql.append(" r3.totparcial");
Query query = getSession().createSQLQuery(sql.toString())
.addScalar("datamov", StringType.INSTANCE)
.addScalar("numreducoes", StringType.INSTANCE)
.addScalar("crz", StringType.INSTANCE)
.addScalar("numserie20", StringType.INSTANCE)
.addScalar("coo", StringType.INSTANCE)
.addScalar("cooinicial", StringType.INSTANCE)
.addScalar("coofinal", StringType.INSTANCE)
.addScalar("vendabrutadiaria", BigDecimalType.INSTANCE)
.addScalar("datareducao", StringType.INSTANCE)
.addScalar("horareducao", StringType.INSTANCE)
.addScalar("totgeral", BigDecimalType.INSTANCE)
.addScalar("aliquota", StringType.INSTANCE)
.addScalar("imposto", BigDecimalType.INSTANCE)
.addScalar("numpdv", StringType.INSTANCE)
.addScalar("cnpj", StringType.INSTANCE);
query.setResultTransformer(new AliasToBeanResultTransformer(ImportacionFiscalReducaoZVO.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();
}
@Override @Override
public List<ItemFiscalVO> buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId) { public List<ItemFiscalVO> buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId) {

View File

@ -13,4 +13,6 @@ public interface FiscalService {
public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa); public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa);
public File importacionFiscalReducaoZ(Date inicio, Date fim, Empresa empresa);
} }

View File

@ -24,6 +24,7 @@ import com.rjconsultores.ventaboletos.service.FiscalService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.utilerias.UtileriasFiscal; import com.rjconsultores.ventaboletos.utilerias.UtileriasFiscal;
import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalReducaoZVO;
import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalVO;
import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO;
@ -43,6 +44,211 @@ public class FiscalServiceImpl implements FiscalService {
return fiscalDAO.gerarRegistroP2_F2(lsEsquemaCorrida, dataDe, dataAte); return fiscalDAO.gerarRegistroP2_F2(lsEsquemaCorrida, dataDe, dataAte);
} }
public File importacionFiscalReducaoZ(Date inicio, Date fim, Empresa empresa) {
try {
String nomeArquivo = UsuarioLogado.getUsuarioLogado().getNombusuario() + "_" + Calendar.getInstance().getTime().getTime() + "_" + "fiscal";
File arquivo = File.createTempFile(nomeArquivo, ".tmp");
FileWriter arq = new FileWriter(arquivo);
PrintWriter gravarArq = new PrintWriter(arq);
String cnpjFilial = somenteNumeros(empresa.getCnpj() == null ? StringUtils.rightPad("", 14, " ") : empresa.getCnpj());
String brancos372 = StringUtils.rightPad("", 372, " ");
String dataAgora = DateUtil.getStringDate(Calendar.getInstance().getTime(), DATE_FORMAT_FISCAL);
String abertura = aberturaDeArquivo("0", dataAgora, cnpjFilial, brancos372, "00001");
gravarArq.println(abertura);
Integer seq = 1;
List<ImportacionFiscalReducaoZVO> list = agruparReducaoZ(fiscalDAO.buscaDatosFiscaisReducaoZ(inicio, fim, empresa.getEmpresaId()));
for (ImportacionFiscalReducaoZVO ifrZ : list) {
String dataMovimento = ifrZ.getDatamov();
String cnpj = somenteNumeros(ifrZ.getCnpj() == null ? StringUtils.rightPad("", 14, " ") : ifrZ.getCnpj());
String numRelatorio = ifrZ.getAliquota().substring(0, 2);
if (numRelatorio.length() < 6) {
numRelatorio = StringUtils.rightPad("", (6 - numRelatorio.length()), "0") + numRelatorio;
}
String numPDV = ifrZ.getNumpdv();
if (numPDV.length() < 10) {
numPDV = StringUtils.rightPad("", (10 - numPDV.length()), " ") + numPDV;
}
String numSeriePDV = ifrZ.getNumserie20();
if (numSeriePDV.length() < 20) {
numSeriePDV = StringUtils.rightPad("", (20 - numSeriePDV.length()), " ") + numSeriePDV;
}
String numReducaoZ = ifrZ.getCrz();
if (numReducaoZ.length() < 5) {
numReducaoZ = StringUtils.rightPad("", (5 - numReducaoZ.length()), " ") + numReducaoZ;
}
String gtInicial = StringUtils.rightPad("", 18, "0");
String gtFinal = StringUtils.rightPad("", 18, "0");
String docFiscalInic = ifrZ.getCooinicial();
if (docFiscalInic.length() < 9) {
docFiscalInic = StringUtils.rightPad("", (9 - docFiscalInic.length()), " ") + docFiscalInic;
}
String docFiscalFinal = ifrZ.getCoofinal();
if (docFiscalFinal.length() < 9) {
docFiscalFinal = StringUtils.rightPad("", (9 - docFiscalFinal.length()), " ") + docFiscalFinal;
}
String valorCancel = StringUtils.rightPad("", 8, "0");
String valorContabil = ifrZ.getVendabrutadiaria().toString();
if (valorContabil.length() < 14) {
valorContabil = StringUtils.rightPad("", (14 - valorContabil.length()), "0") + valorContabil;
}
String subtributaria = StringUtils.rightPad("", 14, "0");
String descontos = StringUtils.rightPad("", 14, "0");
String isento = StringUtils.rightPad("", 14, "0");
String naoTributado = ifrZ.getValorNaoTributado().toString();
if (naoTributado.length() < 14) {
naoTributado = StringUtils.rightPad("", (14 - naoTributado.length()), "0") + naoTributado;
}
String aliquota = StringUtils.rightPad("", 14, "0");
if (ifrZ.getAliquota().length() == 7 && ifrZ.getAliquota().substring(2, 3).equals("T")) {
aliquota = ifrZ.getAliquota().substring(3, 7);
if (aliquota.length() < 14) {
aliquota = StringUtils.rightPad("", (14 - aliquota.length()), "0") + aliquota;
}
}
String aliquota2 = StringUtils.rightPad("", 14, "0");
String aliquota3 = StringUtils.rightPad("", 14, "0");
String aliquota4 = StringUtils.rightPad("", 14, "0");
String coo = ifrZ.getCoo();
if (coo.length() < 6) {
coo = StringUtils.rightPad("", (6 - coo.length()), " ") + coo;
}
String outrosRecebimentos = StringUtils.rightPad("", 14, "0");
String impostoDebitado = ifrZ.getImposto().toString();
if (impostoDebitado.length() < 13) {
impostoDebitado = StringUtils.rightPad("", (13 - impostoDebitado.length()), "0") + impostoDebitado;
}
String dataReducaoZ = ifrZ.getDatareducao();
String horaReducaoZ = ifrZ.getHorareducao();
String valorDocFiscal = ifrZ.getImposto().toString();
if (valorDocFiscal.length() < 13) {
valorDocFiscal = StringUtils.rightPad("", (13 - valorDocFiscal.length()), "0") + valorDocFiscal;
}
String brancos83 = StringUtils.rightPad("", 83, " ");
seq++;
String sequencial = seq.toString();
if (sequencial.length() < 5) {
sequencial = StringUtils.rightPad("", (5 - sequencial.length()), "0") + sequencial;
}
String redZ = reducaoZ("1", dataMovimento, cnpj, numRelatorio, numPDV, numSeriePDV, numReducaoZ,
gtInicial, gtFinal, docFiscalInic, docFiscalFinal, valorCancel, valorContabil, subtributaria,
descontos, isento, naoTributado, aliquota, aliquota2, aliquota3, aliquota4, coo, outrosRecebimentos,
impostoDebitado, dataReducaoZ, horaReducaoZ, valorDocFiscal, brancos83, sequencial);
gravarArq.println(redZ);
}
String qtdeDocGerados = StringUtils.rightPad("", 5, " ") + "1";
String brancos388 = StringUtils.rightPad("", 388, " ");
seq++;
String sequencial = seq.toString();
if (sequencial.length() < 5) {
sequencial = StringUtils.rightPad("", (5 - sequencial.length()), "0") + sequencial;
}
String fechamento = fechamentoDeArquivo("3", qtdeDocGerados, null, brancos388, sequencial);
gravarArq.println(fechamento);
arq.close();
return arquivo;
} catch (IOException e) {
log.error("", e);
}
return null;
}
private List<ImportacionFiscalReducaoZVO> agruparReducaoZ(List<ImportacionFiscalReducaoZVO> list) {
List<ImportacionFiscalReducaoZVO> aux = new ArrayList<ImportacionFiscalReducaoZVO>();
BigDecimal valorNaoTributado = null;
for (ImportacionFiscalReducaoZVO ifr : list) {
if (ifr.getAliquota().equals("N1")) {
valorNaoTributado = ifr.getImposto();
} else {
ifr.setValorNaoTributado(valorNaoTributado);
aux.add(ifr);
}
}
return aux;
}
private String reducaoZ(String identificador, String dataMovimento, String cnpj, String numRelatorio, String numPDV,
String numSeriePDV, String numReducaoZ, String gtInicial, String gtFinal, String docFiscalInic,
String docFiscalFinal, String valorCancel, String valorContabil, String subtributaria, String descontos,
String isento, String naoTributado, String aliquota, String aliquota2, String aliquota3, String aliquota4,
String coo, String outrosRecebimentos, String impostoDebitado, String dataReducaoZ, String horaReducaoZ,
String valorDocFiscal, String brancos, String sequencial) {
StringBuilder reducaoZ = new StringBuilder();
reducaoZ.append(identificador);
reducaoZ.append(dataMovimento);
reducaoZ.append(cnpj);
reducaoZ.append(numRelatorio);
reducaoZ.append(numPDV);
reducaoZ.append(numSeriePDV);
reducaoZ.append(numReducaoZ);
reducaoZ.append(gtInicial);
reducaoZ.append(gtFinal);
reducaoZ.append(docFiscalInic);
reducaoZ.append(docFiscalFinal);
reducaoZ.append(valorCancel);
reducaoZ.append(valorContabil);
reducaoZ.append(subtributaria);
reducaoZ.append(descontos);
reducaoZ.append(isento);
reducaoZ.append(naoTributado);
reducaoZ.append(aliquota);
reducaoZ.append(aliquota2);
reducaoZ.append(aliquota3);
reducaoZ.append(aliquota4);
reducaoZ.append(coo);
reducaoZ.append(outrosRecebimentos);
reducaoZ.append(impostoDebitado);
reducaoZ.append(dataReducaoZ);
reducaoZ.append(horaReducaoZ);
reducaoZ.append(valorDocFiscal);
reducaoZ.append(brancos);
reducaoZ.append(sequencial);
return reducaoZ.toString();
}
@Override @Override
public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa) { public File importacionFiscalECF(Date inicio, Date fim, Empresa empresa) {
@ -493,16 +699,25 @@ public class FiscalServiceImpl implements FiscalService {
return item.toString(); return item.toString();
} }
private String fechamentoDeArquivo(String identificador, String qtdeDocGerados, String qtdeItensDocGerados, String brancos382, String sequencial) { private String fechamentoDeArquivo(String identificador, String qtdeDocGerados, String qtdeItensDocGerados,
String brancos, String sequencial) {
StringBuilder fechamento = new StringBuilder(); StringBuilder fechamento = new StringBuilder();
fechamento.append(identificador); fechamento.append(identificador);
fechamento.append(qtdeDocGerados); fechamento.append(qtdeDocGerados == null ? "" : qtdeDocGerados);
fechamento.append(qtdeItensDocGerados); fechamento.append(qtdeItensDocGerados == null ? "" : qtdeItensDocGerados);
fechamento.append(brancos382); fechamento.append(brancos);
fechamento.append(sequencial); fechamento.append(sequencial);
return fechamento.toString(); return fechamento.toString();
} }
private static String somenteNumeros(String s) {
if (s == null || s.trim().equals("")) {
return "";
}
return s.replaceAll("[^0-9]", "");
}
} }

View File

@ -0,0 +1,152 @@
package com.rjconsultores.ventaboletos.vo.impressaofiscal;
import java.math.BigDecimal;
public class ImportacionFiscalReducaoZVO {
private String datamov;
private String cnpj;
private String numreducoes;
private String crz;
private String numserie20;
private String coo;
private String cooinicial;
private String coofinal;
private BigDecimal vendabrutadiaria;
private String datareducao;
private String horareducao;
private BigDecimal totgeral;
private String aliquota;
private BigDecimal imposto;
private BigDecimal valorNaoTributado;
private String numpdv;
public String getDatamov() {
return datamov;
}
public void setDatamov(String datamov) {
this.datamov = datamov;
}
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public String getNumreducoes() {
return numreducoes;
}
public void setNumreducoes(String numreducoes) {
this.numreducoes = numreducoes;
}
public String getCrz() {
return crz;
}
public void setCrz(String crz) {
this.crz = crz;
}
public String getNumserie20() {
return numserie20;
}
public void setNumserie20(String numserie20) {
this.numserie20 = numserie20;
}
public String getCoo() {
return coo;
}
public void setCoo(String coo) {
this.coo = coo;
}
public String getCooinicial() {
return cooinicial;
}
public void setCooinicial(String cooinicial) {
this.cooinicial = cooinicial;
}
public String getCoofinal() {
return coofinal;
}
public void setCoofinal(String coofinal) {
this.coofinal = coofinal;
}
public BigDecimal getVendabrutadiaria() {
return vendabrutadiaria;
}
public void setVendabrutadiaria(BigDecimal vendabrutadiaria) {
this.vendabrutadiaria = vendabrutadiaria;
}
public String getDatareducao() {
return datareducao;
}
public void setDatareducao(String datareducao) {
this.datareducao = datareducao;
}
public String getHorareducao() {
return horareducao;
}
public void setHorareducao(String horareducao) {
this.horareducao = horareducao;
}
public BigDecimal getTotgeral() {
return totgeral;
}
public void setTotgeral(BigDecimal totgeral) {
this.totgeral = totgeral;
}
public String getAliquota() {
return aliquota;
}
public void setAliquota(String aliquota) {
this.aliquota = aliquota;
}
public BigDecimal getImposto() {
return imposto;
}
public void setImposto(BigDecimal imposto) {
this.imposto = imposto;
}
public BigDecimal getValorNaoTributado() {
return valorNaoTributado;
}
public void setValorNaoTributado(BigDecimal valorNaoTributado) {
this.valorNaoTributado = valorNaoTributado;
}
public String getNumpdv() {
return numpdv;
}
public void setNumpdv(String numpdv) {
this.numpdv = numpdv;
}
}