package com.rjconsultores.ventaboletos.dao.hibernate; import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Connection; import java.sql.Statement; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Random; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; 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.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; import com.rjconsultores.ventaboletos.blocos.itau.ArquivoRemessaItau; import com.rjconsultores.ventaboletos.blocos.itau.CabecalhoRemessaItau; 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; @Repository("remessaCNABBancosDAO") public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO implements RemessaCNABBancosDAO{ private static Logger log = Logger.getLogger(RemessaCNABBancosHibernateDAO.class); @Autowired public RemessaCNABBancosHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } public String findBanco(Empresa empresa){ StringBuilder sb = new StringBuilder(); sb.append("SELECT "); sb.append("DISTINCT fp.BOLETO_BANCO_COD "); sb.append("FROM "); sb.append("FECHAMENTO_PARAMGERAL fp "); sb.append("WHERE fp.activo = 1 AND "); sb.append("fp.EMPRESA_ID = " + empresa.getEmpresaId()); Query query = getSession().createSQLQuery(sb.toString()); return (String) query.list().get(0); } public ArquivoRemessa remessaBradesco(Empresa empresa, Date dataDe, Date dataAte) throws Exception{ StringBuilder sb = new StringBuilder(); sb.append("SELECT "); sb.append("fb.FECHAMENTOBOLETO_ID AS \"id\", "); sb.append("(NVL(fp.COUNT_REMESSA, 0) + 1) AS \"idRemessa\", "); sb.append("fp.COD_EMP_BANCO AS \"codEmpresaBanco\", "); sb.append("fp.emp.NOMBEMPRESA AS \"nomeEmpresa\", "); sb.append("fp.BOLETO_BANCO_AGENCIA AS \"agencia\", "); sb.append("fp.BOLETO_BANCO_CONTA AS \"conta\", "); sb.append("fp.BOLETO_BANCO_CONTA_DIGITO AS \"dac\", "); sb.append("fp.BOLETO_BANCO_CARTEIRA AS \"carteira\", "); sb.append("fb.NOSSONUMERO AS \"nossoNumero\", "); sb.append("fb.FECVENCIMENTO AS \"vencimento\", "); sb.append("fb.VALORDOCUMENTO AS \"valor\", "); sb.append("'01' AS \"especieTitulo\", "); sb.append("fb.FECDOCUMENTO AS \"dataEmissao\", "); sb.append("'00' AS \"instrucao1\", "); sb.append("'00' AS \"instrucao2\", "); sb.append("fb.MORA AS \"valorAtraso\", "); sb.append("fb.DESCONTOS AS \"valorDesconto\", "); sb.append("fb.DEDUCOES AS \"valorAbatimento\", "); sb.append("'cnpj' as \"tipoInscricaoPagador\", "); sb.append("pv.NUMDOCPUNTOVENTA AS \"numeroInscricaoPagador\", "); sb.append("pv.NOMBPUNTOVENTA AS \"nomePagador\", "); sb.append("pv.DIRECCIONCALLE || ', ' || pv.DIRECCIONNUMERO || ', ' || pl.NOMBPLAZA || ', ' || ci.NOMBCIUDAD || ', ' || es.NOMBESTADO AS \"enderecoCompletoPagador\", "); sb.append("pv.CODPOSTAL AS \"cepPagador\" "); writeFROMClause(sb, dataDe != null && dataAte != null); Query query = getSession().createSQLQuery(sb.toString()); query.setInteger("empresaId", empresa.getEmpresaId()); if(dataDe != null && dataAte != null){ query.setDate("dataDe", dataDe); query.setDate("dataAte", dataAte); } List list = query.list(); ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.BRADESCO_400_Envio); String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date()); int variavel = 0; ArquivoRemessaItem arquivoRemessaItem = null; CabecalhoRemessaBradesco cabecalhoRemessaBradesco = null; for(Object[] tupla : list){ Integer idRemessa = Integer.valueOf(tupla[1].toString()); variavel = idRemessa; String codEmpresaBanco = tupla[2] != null ? tupla[2].toString() : "0"; String nomeEmpresa = tupla[3].toString(); //nomeEmpresa = "MASTER INTEGRADORA DE FRANQUIAS LTDA"; int carteira = Integer.valueOf(tupla[7].toString()); if(!tupla[8].toString().contains("-")){ log.error("NossoNumero não está no formato correto: " + tupla[8].toString() + ". Ignorando o registro FechamentoBoletoId = " + tupla[0].toString()); continue; } if(cabecalhoRemessaBradesco == null){ cabecalhoRemessaBradesco = new CabecalhoRemessaBradesco(); cabecalhoRemessaBradesco.setNumeroSequencialRemessa(idRemessa); cabecalhoRemessaBradesco.setDataGravacao(new Date()); cabecalhoRemessaBradesco.setCodigoEmpresa(codEmpresaBanco); cabecalhoRemessaBradesco.setNomeEmpresa(nomeEmpresa); arquivoRemessaItem = new ArquivoRemessaBradesco(); arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaBradesco); arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao()); arquivoRemessa.addItem(arquivoRemessaItem); }else if(!cabecalhoRemessaBradesco.getCodigoEmpresa().equals(codEmpresaBanco)){ cabecalhoRemessaBradesco = new CabecalhoRemessaBradesco(); cabecalhoRemessaBradesco.setNumeroSequencialRemessa(idRemessa); cabecalhoRemessaBradesco.setDataGravacao(new Date()); cabecalhoRemessaBradesco.setCodigoEmpresa(codEmpresaBanco); cabecalhoRemessaBradesco.setNomeEmpresa(nomeEmpresa); arquivoRemessaItem = new ArquivoRemessaBradesco(); arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaBradesco); arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao()); arquivoRemessa.addItem(arquivoRemessaItem); } DetalheObrigatorioBradesco detalhe = new DetalheObrigatorioBradesco(); String []doc = tupla[8].toString().split("-"); //String []doc = new String[]{nossoNumero.substring(0, 11), nossoNumero.substring(11)}; //System.out.println(tupla[8].toString()); detalhe.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString())); detalhe.setCarteira(tupla[7].toString()); detalhe.setAgencia(tupla[4].toString()); detalhe.setContacorrente(tupla[5].toString()); detalhe.setDvConta(tupla[6].toString()); detalhe.setNumeroControleDoParticipante(tupla[0].toString()); detalhe.setNossoNumeroComDigito(doc[0] + doc[1]); detalhe.setCodigoDeOcorrencia(0); detalhe.setDataOcorrencia(null); detalhe.setNumeroDoDocumento(StringUtils.right(doc[0], 10)); detalhe.setVencimento((Date) tupla[9]); detalhe.setValor(new BigDecimal(tupla[10].toString().replaceAll(",", "."))); detalhe.setEspecieDeTitulo(tupla[11].toString()); detalhe.setEmissao((Date) tupla[12]); detalhe.setInstrucao1(tupla[13].toString()); detalhe.setInstrucao2(tupla[14].toString()); try{ detalhe.setValorAtraso(new BigDecimal(tupla[15].toString().replaceAll(",", "."))); }catch(Exception e){} detalhe.setDataLimiteDesconto(null); try{ detalhe.setValorDesconto(new BigDecimal(tupla[16].toString().replaceAll(",", "."))); }catch(Exception e){} detalhe.setValorIOF(BigDecimal.ZERO); try{ detalhe.setValorAbatimentoConcedido(new BigDecimal(tupla[17].toString().replaceAll(",", "."))); }catch(Exception e){} //detalhe.setTipoInscricaoPagador(TipoInscricaoPagador.getInstanceByName(tupla[18].toString())); detalhe.setTipoInscricaoPagador(TipoInscricaoPagador.CNPJ); detalhe.setNumeroInscricaoPagador(Long.valueOf(tupla[19].toString())); detalhe.setNomePagador(tupla[20].toString()); detalhe.setEnderecoCompletoPagador(tupla[21].toString()); detalhe.setMensagem1(""); String cep = tupla[22].toString(); detalhe.setCEP_Prefixo(cep.substring(0,5)); detalhe.setCEP_Sufixo(cep.substring(5)); detalhe.setSacador_Avalista_Mensagem2(""); arquivoRemessaItem.addTitulo(detalhe); arquivoRemessaItem.getRodapeRemessa().setNumeroSequencialRegistro(arquivoRemessa.getItens().size()); } nomeArquivo = nomeArquivo + new DecimalFormat("##").format(variavel) + ".REM"; arquivoRemessa.setNomeArquivo(nomeArquivo); return arquivoRemessa; } @Override public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte) throws Exception { StringBuilder sb = new StringBuilder(); sb.append("SELECT "); sb.append("fb.FECHAMENTOBOLETO_ID AS \"id\", "); sb.append("(NVL(fp.COUNT_REMESSA, 0) + 1) AS \"idRemessa\", "); sb.append("fp.COD_EMP_BANCO AS \"codEmpresaBanco\", "); sb.append("emp.CNPJ AS \"cnpj\", "); sb.append("fp.emp.NOMBEMPRESA AS \"nomeEmpresa\", "); sb.append("fp.BOLETO_BANCO_AGENCIA AS \"agencia\", "); sb.append("fp.BOLETO_BANCO_CONTA AS \"conta\", "); sb.append("fp.BOLETO_BANCO_CONTA_DIGITO AS \"dac\", "); sb.append("fp.BOLETO_BANCO_CARTEIRA AS \"carteira\", "); sb.append("fb.NOSSONUMERO AS \"nossoNumero\", "); sb.append("fb.FECVENCIMENTO AS \"vencimento\", "); sb.append("fb.VALORDOCUMENTO AS \"valor\", "); sb.append("99 AS \"especieTitulo\", "); sb.append("fb.FECDOCUMENTO AS \"dataEmissao\", "); sb.append("' ' AS \"instrucao1\", "); sb.append("' ' AS \"instrucao2\", "); sb.append("fb.MORA AS \"valorAtraso\", "); sb.append("fb.DESCONTOS AS \"valorDesconto\", "); sb.append("fb.DEDUCOES AS \"valorAbatimento\", "); sb.append("'cnpj' as \"tipoInscricaoPagador\", "); sb.append("pv.NUMDOCPUNTOVENTA AS \"numeroInscricaoPagador\", "); sb.append("pv.NOMBPUNTOVENTA AS \"nomePagador\", "); sb.append("pv.DIRECCIONCALLE || ', ' || pv.DIRECCIONNUMERO AS \"logradouroPagador\", "); sb.append("pl.NOMBPLAZA AS \"bairroPagador\", "); sb.append("pv.CODPOSTAL AS \"cepPagador\", "); sb.append("ci.NOMBCIUDAD AS \"cidadePagador\", "); sb.append("es.NOMBESTADO AS \"estadoPagador\" "); writeFROMClause(sb, dataDe != null && dataAte != null); Query query = getSession().createSQLQuery(sb.toString()); query.setInteger("empresaId", empresa.getEmpresaId()); if(dataDe != null && dataAte != null){ query.setDate("dataDe", dataDe); query.setDate("dataAte", dataAte); } List list = query.list(); ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.ITAU_400_Envio); String nomeArquivo = "RE" + new SimpleDateFormat("ddMM").format(new Date()); int variavel = 0; ArquivoRemessaItem arquivoRemessaItem = null; CabecalhoRemessaItau cabecalhoRemessaItau = null; for(Object[] tupla : list){ Integer idRemessa = Integer.valueOf(tupla[1].toString()); variavel = idRemessa; String codEmpresaBanco = tupla[5].toString() + tupla[6].toString(); String nomeEmpresa = tupla[4].toString(); if(cabecalhoRemessaItau == null){ cabecalhoRemessaItau = new CabecalhoRemessaItau(); cabecalhoRemessaItau.setNumeroSequencialRemessa(idRemessa); cabecalhoRemessaItau.setDataGeracao(new Date()); cabecalhoRemessaItau.setAgencia(Integer.valueOf(tupla[5].toString())); cabecalhoRemessaItau.setConta(Integer.valueOf(tupla[6].toString())); cabecalhoRemessaItau.setDacConta(Integer.valueOf(tupla[7].toString())); cabecalhoRemessaItau.setNomeEmpresa(nomeEmpresa); arquivoRemessaItem = new ArquivoRemessaItau(); arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaItau); arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao()); arquivoRemessa.addItem(arquivoRemessaItem); }else if(!(cabecalhoRemessaItau.getAgencia().toString() + cabecalhoRemessaItau.getConta().toString()).equals(codEmpresaBanco)){ cabecalhoRemessaItau = new CabecalhoRemessaItau(); cabecalhoRemessaItau.setNumeroSequencialRemessa(idRemessa); cabecalhoRemessaItau.setDataGeracao(new Date()); cabecalhoRemessaItau.setAgencia(Integer.valueOf(tupla[5].toString())); cabecalhoRemessaItau.setConta(Integer.valueOf(tupla[6].toString())); cabecalhoRemessaItau.setDacConta(Integer.valueOf(tupla[7].toString())); cabecalhoRemessaItau.setNomeEmpresa(nomeEmpresa); arquivoRemessaItem = new ArquivoRemessaItau(); arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaItau); arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao()); arquivoRemessa.addItem(arquivoRemessaItem); } DetalheObrigatorioItau detalhe = new DetalheObrigatorioItau(); String []doc = tupla[9].toString().split("-"); detalhe.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString())); detalhe.setNumeroInscricao(Integer.valueOf(codEmpresaBanco)); detalhe.setAgencia(Integer.valueOf(tupla[5].toString())); detalhe.setConta(Integer.valueOf(tupla[6].toString())); detalhe.setDacConta(Integer.valueOf(tupla[7].toString())); detalhe.setInstrucaoAlegacao(0000); detalhe.setUsoDaEmpresa(tupla[0].toString()); detalhe.setNossoNumero(Integer.valueOf(doc[0])); //detalhe.setNossoNumero(Integer.valueOf(doc[0])); detalhe.setQtdMoeda(BigDecimal.ZERO); detalhe.setNrCarteira(Integer.valueOf(tupla[8].toString())); detalhe.setCodigoDeOcorrencia(01); detalhe.setNumeroDoDocumento(tupla[0].toString()); detalhe.setVencimento((Date) tupla[10]); detalhe.setValor(new BigDecimal(tupla[11].toString().replaceAll(",", "."))); detalhe.setAgenciaCobradora(0); detalhe.setEspecieDeTitulo("99"); detalhe.setAceite("A"); detalhe.setEmissao((Date) tupla[13]); detalhe.setInstrucao1("05"); detalhe.setInstrucao1("00"); try{ detalhe.setJurosDeMora(new BigDecimal(tupla[16].toString().replaceAll(",", "."))); }catch(Exception e){ detalhe.setJurosDeMora(BigDecimal.ZERO); } detalhe.setDataDesconto(null); try{ detalhe.setDescontoConcedido(new BigDecimal(tupla[17].toString().replaceAll(",", "."))); }catch(Exception e){ detalhe.setDescontoConcedido(BigDecimal.ZERO); } detalhe.setIOF_Devido(BigDecimal.ZERO); try{ detalhe.setAbatimentoConcedido(new BigDecimal(tupla[18].toString().replaceAll(",", "."))); }catch(Exception e){ detalhe.setAbatimentoConcedido(BigDecimal.ZERO); } detalhe.setTipoInscricaoSacado(TipoInscricaoPagador.CNPJ); detalhe.setNumeroInscricaoSacado(Long.valueOf(tupla[20].toString())); detalhe.setNomeSacado(tupla[21].toString()); detalhe.setLogradouroSacado(tupla[22].toString()); detalhe.setBairroSacado(tupla[23].toString()); detalhe.setCepSacado(Integer.valueOf(tupla[24].toString())); detalhe.setCidade(tupla[25].toString()); detalhe.setEstado(tupla[26].toString()); detalhe.setSacadorAvalista(tupla[21].toString()); detalhe.setDataDeMora(null); detalhe.setPrazo(00); arquivoRemessaItem.addTitulo(detalhe); arquivoRemessaItem.getRodapeRemessa().setNumeroSequencialRegistro(arquivoRemessa.getItens().size()); } nomeArquivo = nomeArquivo + new DecimalFormat("##").format(variavel) + ".REM"; arquivoRemessa.setNomeArquivo(nomeArquivo); return arquivoRemessa; } @Override public ArquivoRemessa remessaBancoBrasil(Empresa empresa, Date dataDe, Date dataAte) throws Exception { StringBuilder sb = new StringBuilder(); sb.append("SELECT "); sb.append("fb.FECHAMENTOBOLETO_ID AS \"id\", "); sb.append("(NVL(fp.COUNT_REMESSA, 0) + 1) AS \"idRemessa\", "); sb.append("fp.COD_EMP_BANCO AS \"codEmpresaBanco\", "); sb.append("emp.CNPJ AS \"cnpj\", "); sb.append("fp.emp.NOMBEMPRESA AS \"nomeEmpresa\", "); sb.append("fp.BOLETO_BANCO_AGENCIA AS \"agencia\", "); sb.append("fp.BOLETO_BANCO_CONTA AS \"conta\", "); sb.append("fp.BOLETO_BANCO_CONTA_DIGITO AS \"dac\", "); sb.append("fp.BOLETO_BANCO_CARTEIRA AS \"carteira\", "); sb.append("fb.NOSSONUMERO AS \"nossoNumero\", "); sb.append("fb.FECVENCIMENTO AS \"vencimento\", "); sb.append("fb.VALORDOCUMENTO AS \"valor\", "); sb.append("99 AS \"especieTitulo\", "); sb.append("fb.FECDOCUMENTO AS \"dataEmissao\", "); sb.append("' ' AS \"instrucao1\", "); sb.append("' ' AS \"instrucao2\", "); sb.append("fb.MORA AS \"valorAtraso\", "); sb.append("fb.DESCONTOS AS \"valorDesconto\", "); sb.append("fb.DEDUCOES AS \"valorAbatimento\", "); sb.append("'cnpj' as \"tipoInscricaoPagador\", "); sb.append("pv.NUMDOCPUNTOVENTA AS \"numeroInscricaoPagador\", "); sb.append("pv.NOMBPUNTOVENTA AS \"nomePagador\", "); sb.append("pv.DIRECCIONCALLE || ', ' || pv.DIRECCIONNUMERO AS \"logradouroPagador\", "); sb.append("pl.NOMBPLAZA AS \"bairroPagador\", "); sb.append("pv.CODPOSTAL AS \"cepPagador\", "); sb.append("ci.NOMBCIUDAD AS \"cidadePagador\", "); sb.append("es.NOMBESTADO AS \"estadoPagador\", "); sb.append("fp.BOLETO_BANCO_AGENCIA_DIGITO AS \"digitoAgencia\", "); sb.append("fp.BOLETO_BANCO_CARTEIRA_VARIAVEL AS \"variavelCarteira\" "); writeFROMClause(sb, dataDe != null && dataAte != null); Query query = getSession().createSQLQuery(sb.toString()); query.setInteger("empresaId", empresa.getEmpresaId()); if(dataDe != null && dataAte != null){ query.setDate("dataDe", dataDe); query.setDate("dataAte", dataAte); } List 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"); 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(1); titulosBancoBrasil.setDataMora((Date) tupla[10]); 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(1); titulosBancoBrasil.setDataDesconto((Date) tupla[10]); 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 "); sb.append("LEFT JOIN FECHAMENTO_CNTCORRENTE fc on fb.FECHAMENTOCNTCORRENTE_ID = fc.FECHAMENTOCNTCORRENTE_ID AND fc.ACTIVO = 1 "); sb.append("LEFT JOIN PUNTO_VENTA pv on pv.PUNTOVENTA_ID = fc.PUNTOVENTA_ID AND pv.ACTIVO = 1 "); sb.append("LEFT JOIN EMPRESA emp on emp.EMPRESA_ID = fc.EMPRESA_ID AND emp.ACTIVO = 1 "); sb.append("LEFT JOIN FECHAMENTO_PARAMGERAL fp on fp.EMPRESA_ID = emp.EMPRESA_ID AND fp.ACTIVO = 1 "); sb.append("LEFT JOIN PARADA pa on pa.PARADA_ID = pv.PARADA_ID AND pa.ACTIVO = 1 "); sb.append("LEFT JOIN CIUDAD ci on ci.CIUDAD_ID = pa.CIUDAD_ID AND ci.ACTIVO = 1 "); sb.append("LEFT JOIN PLAZA pl on pl.PLAZA_ID = ci.PLAZA_ID AND pl.ACTIVO = 1 "); sb.append("LEFT JOIN ESTADO es on es.ESTADO_ID = ci.ESTADO_ID AND es.ACTIVO = 1 "); sb.append("WHERE "); sb.append("fb.STATUS = 'I' "); sb.append("AND fb.activo = 1 "); sb.append("AND fb.REMESSA_ID IS NULL "); sb.append("AND fp.EMPRESA_ID = :empresaId "); if(hasDate){ sb.append("AND fb.FECDOCUMENTO BETWEEN :dataDe AND :dataAte "); } sb.append("ORDER BY "); sb.append("fb.FECMODIF, fb.FECDOCUMENTO "); } @Override public List obtenerTodosParaRemessa(Empresa empresa, Date dataDe, Date dataAte) { StringBuilder sb = new StringBuilder(); sb.append("SELECT fb "); sb.append("FROM FechamentoBoleto fb "); sb.append("JOIN FETCH fb.fechamentoCntcorrente fc "); sb.append("JOIN FETCH fc.empresa emp "); sb.append("WHERE fb.activo = 1 "); sb.append("AND fc.activo = 1 "); sb.append("AND emp.activo = 1"); //sb.append("AND fb.remessaId IS NULL "); sb.append("AND fb.status = 'I' "); if (empresa != null && empresa.getEmpresaId() != null) { sb.append("AND emp.empresaId = " + empresa.getEmpresaId()); } if(dataDe != null && dataAte != null){ sb.append(" AND fb.fecdocumento BETWEEN :dataDe AND :dataAte"); } Query c = getSession().createQuery(sb.toString()); if(dataDe != null && dataDe != null){ c.setDate("dataDe", dataDe); c.setDate("dataAte", dataAte); } return (List) c.list(); } @Override public Boolean atualizaRemessa(Empresa empresa, ArquivoRemessa arquivoRemessa) throws Exception { String ids = ""; int count = 0; int seqRemessa = 0; Connection con = getSession().connection(); Statement stmt = con.createStatement(); con.setAutoCommit(false); for(ArquivoRemessaItemInteface ar : arquivoRemessa.getItens()){ for(DetalheObrigatorio boleto : ar.getTitulos()){ if(count == 50){ ids = ids.substring(1); stmt.addBatch("UPDATE FECHAMENTO_BOLETO SET REMESSA_ID = " + seqRemessa + " WHERE FECHAMENTOBOLETO_ID IN ( " + ids + " )"); count = 0; ids = ""; } ids += "," + boleto.getIdBoletoFechamento(); seqRemessa = ar.getCabecalhoRemessa().getNumeroSequencialRemessa(); count++; } } if(count < 50){ ids = ids.substring(1); stmt.addBatch("UPDATE FECHAMENTO_BOLETO SET REMESSA_ID = " + seqRemessa + " WHERE FECHAMENTOBOLETO_ID IN ( " + ids + " )"); count = 0; ids = ""; } stmt.addBatch("UPDATE FECHAMENTO_PARAMGERAL SET COUNT_REMESSA = " + seqRemessa + " WHERE EMPRESA_ID = " + empresa.getEmpresaId()); stmt.executeBatch(); con.commit(); stmt.close(); return Boolean.TRUE; } @Override public List getEmpresas() { Query query = getSession().createQuery("SELECT param.empresa FROM FechamentoParamgeral param WHERE param.activo = 1 AND param.empresa.activo = 1"); return (List) query.list(); } }