From 1fd1a7910bbe1ee0c4faa4b25d3bb93e5126c1e2 Mon Sep 17 00:00:00 2001 From: "rafael.henrique" Date: Fri, 11 May 2018 17:17:23 +0000 Subject: [PATCH] Arquivo de Remessa CNAB bug#9100 bug#9803 dev:rafael.henrique qua:Marcelo git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@81786 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/RemessaCNABBancosDAO.java | 2 + .../RemessaCNABBancosHibernateDAO.java | 270 ++++++++++++++++-- .../service/impl/ArquivoRemessaCNABImpl.java | 9 +- 3 files changed, 260 insertions(+), 21 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java b/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java index 39a0edd42..2a1db9899 100644 --- a/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java @@ -14,6 +14,8 @@ public interface RemessaCNABBancosDAO extends GenericDAO public ArquivoRemessa remessaBradesco(Empresa empresa, Date dataDe, Date dataAte) throws Exception; public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte) throws Exception; + + public ArquivoRemessa remessaBancoBrasil(Empresa empresa, Date dataDe, Date dataAte) throws Exception; public List obtenerTodosParaRemessa(Empresa empresa, Date dataDe, Date dataAte); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java index 7d80e8fd7..78052e6e2 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java @@ -23,7 +23,14 @@ import com.rjconsultores.ventaboletos.ArquivoRemessa; import com.rjconsultores.ventaboletos.ArquivoRemessaItem; import com.rjconsultores.ventaboletos.ArquivoRemessaItemInteface; import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; -import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessaPadrao; +import com.rjconsultores.ventaboletos.blocos.bancobrasil.ArquivoRemessaBancoBrasil; +import com.rjconsultores.ventaboletos.blocos.bancobrasil.CabecalhoLoteRemessaBancoBrasil; +import com.rjconsultores.ventaboletos.blocos.bancobrasil.CabecalhoRemessaBancoBrasil; +import com.rjconsultores.ventaboletos.blocos.bancobrasil.DetalheObrigatorioDadosPagadorBancoBrasil; +import com.rjconsultores.ventaboletos.blocos.bancobrasil.DetalheObrigatorioDadosTitulosBancoBrasil; +import com.rjconsultores.ventaboletos.blocos.bancobrasil.RodapeRemessaBancoBrasil; +import com.rjconsultores.ventaboletos.blocos.bancobrasil.RodapeRemessaLoteBancoBrasil; import com.rjconsultores.ventaboletos.blocos.bradesco.ArquivoRemessaBradesco; import com.rjconsultores.ventaboletos.blocos.bradesco.CabecalhoRemessaBradesco; import com.rjconsultores.ventaboletos.blocos.bradesco.DetalheObrigatorioBradesco; @@ -33,6 +40,7 @@ import com.rjconsultores.ventaboletos.blocos.itau.DetalheObrigatorioItau; import com.rjconsultores.ventaboletos.dao.RemessaCNABBancosDAO; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto; +import com.rjconsultores.ventaboletos.enuns.AceiteBB; import com.rjconsultores.ventaboletos.enuns.BancoLayout; import com.rjconsultores.ventaboletos.enuns.TipoInscricaoPagador; import com.rjconsultores.ventaboletos.utils.NossoNumeroUtils; @@ -103,7 +111,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO list = query.list(); - ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.BRADESCO_Envio); + ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.BRADESCO_400_Envio); String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date()); int variavel = 0; @@ -119,16 +127,17 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO list = query.list(); - ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.ITAU_Envio); + ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.ITAU_400_Envio); String nomeArquivo = "RE" + new SimpleDateFormat("ddMM").format(new Date()); int variavel = 0; @@ -265,11 +274,10 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO list = query.list(); + + ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.BB_240_Envio); + + String nomeArquivo = "BB" + new SimpleDateFormat("ddMM").format(new Date()); + int variavel = 0; + + + ArquivoRemessaItem arquivoRemessaItem = null; + CabecalhoRemessaBancoBrasil cabecalhoRemessaBancoBrasil = null; + CabecalhoLoteRemessaBancoBrasil cabecalhoLoteRemessaBancoBrasil = null; + RodapeRemessaLoteBancoBrasil rodapeRemessaLoteBancoBrasil = null; + RodapeRemessaBancoBrasil rodapeRemessaBancoBrasil = null; + + for(Object[] tupla : list){ + + Integer idRemessa = Integer.valueOf(tupla[1].toString()); + variavel = idRemessa; + String codEmpresaBanco = ((BigDecimal) tupla[2]).toString(); + codEmpresaBanco = StringUtils.right("000000000" + codEmpresaBanco, 9); + String nomeEmpresa = tupla[4].toString(); + + DateFormat df = new SimpleDateFormat("HHmmss"); + + nomeEmpresa = "FRETCAR TRANSPORTES LOCACAO E TURISMO LTDA"; + //codEmpresaBanco = "3088490"; + //codEmpresaBanco = StringUtils.right("000000000" + codEmpresaBanco, 9); + //tupla[5] = "3515"; + //tupla[26] = "7"; + //tupla[6] = "113296"; + //tupla[7] = "2"; + //tupla[8] = "17"; + //tupla[27] = "019"; + + if(cabecalhoRemessaBancoBrasil == null || + !(cabecalhoRemessaBancoBrasil.getNumConvenio()).equals(codEmpresaBanco)){ + cabecalhoRemessaBancoBrasil = new CabecalhoRemessaBancoBrasil(); + cabecalhoRemessaBancoBrasil.setNumeroSequencialRemessa(idRemessa); + cabecalhoRemessaBancoBrasil.setDataGeracao(new Date()); + cabecalhoRemessaBancoBrasil.setHoraGeracao(Integer.parseInt(df.format(new Date()))); + cabecalhoRemessaBancoBrasil.setCpfCnpj(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId())); + cabecalhoRemessaBancoBrasil.setNumCpfCnpj(tupla[3].toString()); + cabecalhoRemessaBancoBrasil.setDensidadeArquivo("00000"); + cabecalhoRemessaBancoBrasil.setNumAgencia(tupla[5].toString()); + cabecalhoRemessaBancoBrasil.setDigAgencia(((BigDecimal) tupla[27]).toString()); + cabecalhoRemessaBancoBrasil.setDigAgenciaConta(" "); + cabecalhoRemessaBancoBrasil.setNumContaCorrente(tupla[6].toString()); + cabecalhoRemessaBancoBrasil.setDigContaCorrente(tupla[7].toString()); + cabecalhoRemessaBancoBrasil.setNumCarteira(tupla[8].toString()); + cabecalhoRemessaBancoBrasil.setNumVarCarteira(((BigDecimal) tupla[28]).toString()); + cabecalhoRemessaBancoBrasil.setNomeEmpresa(nomeEmpresa); + cabecalhoRemessaBancoBrasil.setNumConvenio(codEmpresaBanco); + + cabecalhoLoteRemessaBancoBrasil = new CabecalhoLoteRemessaBancoBrasil(); + cabecalhoLoteRemessaBancoBrasil.setCpfCnpj(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId())); + cabecalhoLoteRemessaBancoBrasil.setNumCpfCnpj(tupla[3].toString()); + cabecalhoLoteRemessaBancoBrasil.setNumAgencia(tupla[5].toString()); + cabecalhoLoteRemessaBancoBrasil.setDigAgencia(((BigDecimal) tupla[27]).toString()); + cabecalhoLoteRemessaBancoBrasil.setDigAgenciaConta(" "); + cabecalhoLoteRemessaBancoBrasil.setNumContaCorrente(tupla[6].toString()); + cabecalhoLoteRemessaBancoBrasil.setDigContaCorrente(tupla[7].toString()); + cabecalhoLoteRemessaBancoBrasil.setNumCarteira(tupla[8].toString()); + cabecalhoLoteRemessaBancoBrasil.setNumVarCarteira(((BigDecimal) tupla[28]).toString()); + cabecalhoLoteRemessaBancoBrasil.setNomeEmpresa(nomeEmpresa); + cabecalhoLoteRemessaBancoBrasil.setNumConvenio(codEmpresaBanco); + cabecalhoLoteRemessaBancoBrasil.setDataGeracao(new Date()); + cabecalhoLoteRemessaBancoBrasil.setNumeroRemessa(idRemessa); + cabecalhoLoteRemessaBancoBrasil.setRemessaTesteID("TS"); + //cabecalhoLoteRemessaBancoBrasil.setLoteServico(++loteCount); + + cabecalhoRemessaBancoBrasil.setCabecalhoLoteRemessaBancoBrasil(cabecalhoLoteRemessaBancoBrasil); + + arquivoRemessaItem = new ArquivoRemessaBancoBrasil(); + arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaBancoBrasil); + + arquivoRemessa.addItem(arquivoRemessaItem); + } + + String []doc = tupla[9].toString().split("-"); + + DetalheObrigatorioDadosTitulosBancoBrasil titulosBancoBrasil = new DetalheObrigatorioDadosTitulosBancoBrasil(); + titulosBancoBrasil.setNumAgencia(tupla[5].toString()); + titulosBancoBrasil.setDigAgencia(((BigDecimal) tupla[27]).toString()); + titulosBancoBrasil.setNumContaCorrente(tupla[6].toString()); + titulosBancoBrasil.setDigContaCorrente(tupla[7].toString()); + titulosBancoBrasil.setDigAgenciaConta(" "); + titulosBancoBrasil.setNossoNumeroBB(doc[0]); + titulosBancoBrasil.setCodCarteira(7); + titulosBancoBrasil.setFormaCadTituloBanco(" "); + titulosBancoBrasil.setTipoDocumento(" "); + titulosBancoBrasil.setIdentEmissaoBloqueto(" "); + titulosBancoBrasil.setIdentDistribuicao(" "); + titulosBancoBrasil.setNumeroDoDocumento(tupla[0].toString()); + titulosBancoBrasil.setVencimento((Date) tupla[10]); + titulosBancoBrasil.setValor(new BigDecimal(tupla[11].toString().replaceAll(",", "."))); + titulosBancoBrasil.setAgenciaCobradora(null); + titulosBancoBrasil.setDigAgenciaCobradora(null); + titulosBancoBrasil.setAceite(AceiteBB.NAO_ACEITE); + titulosBancoBrasil.setEmissao((Date) tupla[13]); + try{ + titulosBancoBrasil.setCodMora(1); + titulosBancoBrasil.setJurosDeMora(new BigDecimal(tupla[16].toString().replaceAll(",", "."))); + titulosBancoBrasil.setDataMora((Date) tupla[10]); + }catch(NullPointerException e){ + titulosBancoBrasil.setCodMora(0); + titulosBancoBrasil.setJurosDeMora(null); + titulosBancoBrasil.setJurosDeMora(BigDecimal.ZERO); + } + + try{ + titulosBancoBrasil.setCodigoDesconto(1); + titulosBancoBrasil.setDataDesconto((Date) tupla[10]); + titulosBancoBrasil.setDescontoConcedido(new BigDecimal(tupla[17].toString().replaceAll(",", "."))); + }catch(NullPointerException e){ + titulosBancoBrasil.setCodigoDesconto(0); + titulosBancoBrasil.setDataDesconto(null); + titulosBancoBrasil.setDescontoConcedido(BigDecimal.ZERO); + } + + titulosBancoBrasil.setIOF_Devido(BigDecimal.ZERO); + try{ + titulosBancoBrasil.setAbatimentoConcedido(new BigDecimal(tupla[18].toString().replaceAll(",", "."))); + }catch(NullPointerException e){ + titulosBancoBrasil.setAbatimentoConcedido(BigDecimal.ZERO); + } + titulosBancoBrasil.setNossoNumeroEmp(tupla[0].toString()); + titulosBancoBrasil.setCodigoProtesto(3); + titulosBancoBrasil.setDiasProtesto(0); + titulosBancoBrasil.setCodigoBaixa(2); + titulosBancoBrasil.setDiasBaixa(0); + titulosBancoBrasil.setNumeroContrato(Integer.parseInt(tupla[0].toString())); + //titulosBancoBrasil.setLoteServico(loteCount); + //titulosBancoBrasil.setNumeroSequencialRegistro(++loteItemCount); + + DetalheObrigatorioDadosPagadorBancoBrasil pagadorBancoBrasil = new DetalheObrigatorioDadosPagadorBancoBrasil(); + //pagadorBancoBrasil.setLoteServico(loteCount); + pagadorBancoBrasil.setTipoInscricaoSacado(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId())); + pagadorBancoBrasil.setNumeroInscricaoSacado(tupla[20].toString()); + pagadorBancoBrasil.setNomeSacado(tupla[21].toString()); + pagadorBancoBrasil.setLogradouroSacado(tupla[22].toString()); + pagadorBancoBrasil.setBairroSacado(tupla[23].toString()); + String cep = StringUtils.right("00000000" + tupla[24].toString(), 8); + int cepPrefix = Integer.parseInt(cep.substring(0, 5)); + int cepSufix = Integer.parseInt(cep.substring(5)); + pagadorBancoBrasil.setCepSacado(cepPrefix); + pagadorBancoBrasil.setSufixoCep(cepSufix); + pagadorBancoBrasil.setCidade(tupla[25].toString()); + pagadorBancoBrasil.setEstado(tupla[26].toString()); + //pagadorBancoBrasil.setTipoSacadorAvalista(0); + //pagadorBancoBrasil.setSacadorAvalista(0); + //pagadorBancoBrasil.setNomeSacadorAvalista(""); + //pagadorBancoBrasil.setCodBancoCorresp(1); + pagadorBancoBrasil.setNossoNumeroNoBancoCorresp(""); + //pagadorBancoBrasil.setNumeroSequencialRegistro(++loteItemCount); + + titulosBancoBrasil.setDetalheObrigatorioDadosPagadorBancoBrasil(pagadorBancoBrasil); + + arquivoRemessaItem.addTitulo(titulosBancoBrasil); + + } + + if(true && arquivoRemessaItem != null){ + rodapeRemessaLoteBancoBrasil = new RodapeRemessaLoteBancoBrasil(); + //rodapeRemessaLoteBancoBrasil.setLoteServico(loteCount); + + rodapeRemessaBancoBrasil = new RodapeRemessaBancoBrasil(); + //rodapeRemessaBancoBrasil.setLoteServico(9999); + rodapeRemessaBancoBrasil.setQtdContas(0); + + rodapeRemessaBancoBrasil.setRodapeRemessaLoteBancoBrasil(rodapeRemessaLoteBancoBrasil); + + arquivoRemessaItem.setRodapeRemessa(rodapeRemessaBancoBrasil); + } + + nomeArquivo = nomeArquivo + new DecimalFormat("##").format(variavel) + ".REM"; + arquivoRemessa.setNomeArquivo(nomeArquivo); + + return arquivoRemessa; + } + private void writeFROMClause(StringBuilder sb, boolean hasDate) { sb.append("FROM "); sb.append("FECHAMENTO_BOLETO fb "); @@ -388,6 +619,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO