1035 lines
45 KiB
Java
1035 lines
45 KiB
Java
package com.rjconsultores.ventaboletos.dao.hibernate;
|
||
|
||
import java.math.BigDecimal;
|
||
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 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.blocos.mercantil.ArquivoRemessaMercantil;
|
||
import com.rjconsultores.ventaboletos.blocos.mercantil.CabecalhoRemessaMercantil;
|
||
import com.rjconsultores.ventaboletos.blocos.mercantil.DetalheObrigatorioMercantil;
|
||
import com.rjconsultores.ventaboletos.blocos.santander.ArquivoRemessaSantander;
|
||
import com.rjconsultores.ventaboletos.blocos.santander.CabecalhoRemessaSantander;
|
||
import com.rjconsultores.ventaboletos.blocos.santander.DetalheObrigatorioSantander;
|
||
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;
|
||
|
||
@Repository("remessaCNABBancosDAO")
|
||
@SuppressWarnings({"unchecked", "deprecation"})
|
||
public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<FechamentoBoleto, Long> 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, Boolean reenviar) 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, reenviar);
|
||
|
||
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<Object[]> 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();
|
||
|
||
if(!tupla[8].toString().contains("-")){
|
||
log.error("NossoNumero n<>o est<73> 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("-");
|
||
|
||
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.CNPJ);
|
||
detalhe.setNumeroInscricaoPagador(Long.valueOf(tupla[19].toString().replaceAll("[^0-9]+", "")));
|
||
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;
|
||
|
||
}
|
||
|
||
public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) 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.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 as endereco,");
|
||
sb.append(" pl.NOMBPLAZA as bairro, ");
|
||
sb.append(" ci.NOMBCIUDAD AS cidade, ");
|
||
sb.append(" es.CVEESTADO AS estado, ");
|
||
sb.append(" pv.CODPOSTAL AS \"cepPagador\", ");
|
||
sb.append(" ecb.NUMINTEGRACION AS \"codigoTransmissao\" ");
|
||
|
||
writeFROMClause(sb, dataDe != null && dataAte != null, reenviar);
|
||
|
||
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<Object[]> list = query.list();
|
||
|
||
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.SANTANDER_400_Envio);
|
||
|
||
String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date());
|
||
int variavel = 0;
|
||
|
||
ArquivoRemessaItem arquivoRemessaItem = null;
|
||
CabecalhoRemessaSantander cabecalhoRemessaSantander = 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();
|
||
Integer codigoTransmissao = Integer.valueOf(tupla[26].toString());
|
||
|
||
if(!tupla[8].toString().contains("-")){
|
||
log.error("NossoNumero n<>o est<73> no formato correto: " + tupla[8].toString() + ". Ignorando o registro FechamentoBoletoId = " + tupla[0].toString());
|
||
continue;
|
||
}
|
||
|
||
if(cabecalhoRemessaSantander == null){
|
||
cabecalhoRemessaSantander = new CabecalhoRemessaSantander();
|
||
cabecalhoRemessaSantander.setNumeroSequencialRemessa(idRemessa);
|
||
cabecalhoRemessaSantander.setCodigoTransmissao(codigoTransmissao);
|
||
cabecalhoRemessaSantander.setDataGravacao(new Date());
|
||
cabecalhoRemessaSantander.setCodigoEmpresa(codEmpresaBanco);
|
||
cabecalhoRemessaSantander.setNomeEmpresa(nomeEmpresa);
|
||
|
||
arquivoRemessaItem = new ArquivoRemessaSantander();
|
||
arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaSantander);
|
||
arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao());
|
||
|
||
arquivoRemessa.addItem(arquivoRemessaItem);
|
||
|
||
}else if(!cabecalhoRemessaSantander.getCodigoEmpresa().equals(codEmpresaBanco)){
|
||
cabecalhoRemessaSantander = new CabecalhoRemessaSantander();
|
||
cabecalhoRemessaSantander.setNumeroSequencialRemessa(idRemessa);
|
||
cabecalhoRemessaSantander.setDataGravacao(new Date());
|
||
cabecalhoRemessaSantander.setCodigoEmpresa(codEmpresaBanco);
|
||
cabecalhoRemessaSantander.setNomeEmpresa(nomeEmpresa);
|
||
|
||
arquivoRemessaItem = new ArquivoRemessaSantander();
|
||
arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaSantander);
|
||
arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao());
|
||
|
||
arquivoRemessa.addItem(arquivoRemessaItem);
|
||
}
|
||
|
||
DetalheObrigatorioSantander detalhe = new DetalheObrigatorioSantander();
|
||
|
||
String []doc = tupla[8].toString().split("-");
|
||
detalhe.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString()));
|
||
detalhe.setTipoInscricao(TipoInscricaoPagador.CNPJ);
|
||
detalhe.setCodigoTransmissao(codigoTransmissao);
|
||
detalhe.setNumeroInscricao(Long.valueOf(tupla[19].toString().replaceAll("[^0-9]+", "")));
|
||
detalhe.setCarteira(tupla[7].toString());
|
||
detalhe.setAgencia(tupla[4].toString());
|
||
detalhe.setContacorrente(tupla[5].toString());
|
||
detalhe.setDvConta(tupla[6].toString());
|
||
detalhe.setNumControleDoParticipante(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());
|
||
detalhe.setDataLimiteDesconto(null);
|
||
|
||
try{
|
||
detalhe.setValorAtraso(new BigDecimal(tupla[15].toString().replaceAll(",", ".")));
|
||
}catch(Exception e){}
|
||
|
||
try{
|
||
detalhe.setValorDesconto(new BigDecimal(tupla[16].toString().replaceAll(",", ".")));
|
||
}catch(Exception e){}
|
||
|
||
try{
|
||
detalhe.setValorAbatimentoConcedido(new BigDecimal(tupla[17].toString().replaceAll(",", ".")));
|
||
}catch(Exception e){}
|
||
|
||
detalhe.setValorIOF(BigDecimal.ZERO);
|
||
detalhe.setNomeSacado(tupla[20].toString());
|
||
detalhe.setEnderecoSacado(tupla[21].toString());
|
||
detalhe.setBairroSacado(tupla[22].toString());
|
||
detalhe.setCidade(tupla[23].toString());
|
||
detalhe.setEstado(tupla[24].toString());
|
||
detalhe.setMensagem1("");
|
||
String cep = tupla[25].toString();
|
||
detalhe.setCepSacado(cep.substring(0,5));
|
||
detalhe.setComplementoCepSacado(cep.substring(5));
|
||
detalhe.setSacadorAvalista("");
|
||
|
||
arquivoRemessaItem.addTitulo(detalhe);
|
||
|
||
arquivoRemessaItem.getRodapeRemessa().setNumeroSequencialRegistro(arquivoRemessa.getItens().size());
|
||
|
||
}
|
||
|
||
nomeArquivo = nomeArquivo + new DecimalFormat("##").format(variavel) + ".REM";
|
||
arquivoRemessa.setNomeArquivo(nomeArquivo);
|
||
|
||
return arquivoRemessa;
|
||
|
||
}
|
||
|
||
public ArquivoRemessa remessaMercantil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) 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.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 as endereco,");
|
||
sb.append(" pl.NOMBPLAZA as bairro, ");
|
||
sb.append(" ci.NOMBCIUDAD AS cidade, ");
|
||
sb.append(" es.CVEESTADO AS estado, ");
|
||
sb.append(" pv.CODPOSTAL AS \"cepPagador\", ");
|
||
sb.append(" ecb.NUMINTEGRACION AS \"numeroContrato\" ");
|
||
|
||
writeFROMClause(sb, dataDe != null && dataAte != null, reenviar);
|
||
|
||
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<Object[]> list = query.list();
|
||
|
||
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.MERCANTIL_400_Envio);
|
||
|
||
String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date());
|
||
int variavel = 0;
|
||
|
||
ArquivoRemessaItem arquivoRemessaItem = null;
|
||
CabecalhoRemessaMercantil cabecalhoRemessaMercantil = 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();
|
||
|
||
if(!tupla[8].toString().contains("-")){
|
||
log.error("NossoNumero n<>o est<73> no formato correto: " + tupla[8].toString() + ". Ignorando o registro FechamentoBoletoId = " + tupla[0].toString());
|
||
continue;
|
||
}
|
||
|
||
if(cabecalhoRemessaMercantil == null){
|
||
cabecalhoRemessaMercantil = new CabecalhoRemessaMercantil();
|
||
cabecalhoRemessaMercantil.setNumeroSequencialRemessa(idRemessa);
|
||
cabecalhoRemessaMercantil.setAgenciaOrigem(tupla[4].toString());
|
||
cabecalhoRemessaMercantil.setCnpj(Long.valueOf(tupla[19].toString().replaceAll("[^0-9]+", "")));
|
||
cabecalhoRemessaMercantil.setDataGravacao(new Date());
|
||
cabecalhoRemessaMercantil.setCodigoEmpresa(codEmpresaBanco);
|
||
cabecalhoRemessaMercantil.setNomeEmpresa(nomeEmpresa);
|
||
|
||
arquivoRemessaItem = new ArquivoRemessaMercantil();
|
||
arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaMercantil);
|
||
arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao());
|
||
|
||
arquivoRemessa.addItem(arquivoRemessaItem);
|
||
|
||
}else if(!cabecalhoRemessaMercantil.getCodigoEmpresa().equals(codEmpresaBanco)){
|
||
cabecalhoRemessaMercantil = new CabecalhoRemessaMercantil();
|
||
cabecalhoRemessaMercantil.setNumeroSequencialRemessa(idRemessa);
|
||
cabecalhoRemessaMercantil.setDataGravacao(new Date());
|
||
cabecalhoRemessaMercantil.setCodigoEmpresa(codEmpresaBanco);
|
||
cabecalhoRemessaMercantil.setNomeEmpresa(nomeEmpresa);
|
||
|
||
arquivoRemessaItem = new ArquivoRemessaMercantil();
|
||
arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaMercantil);
|
||
arquivoRemessaItem.setRodapeRemessa(new RodapeRemessaPadrao());
|
||
|
||
arquivoRemessa.addItem(arquivoRemessaItem);
|
||
}
|
||
|
||
DetalheObrigatorioMercantil detalhe = new DetalheObrigatorioMercantil();
|
||
|
||
String []doc = tupla[8].toString().split("-");
|
||
detalhe.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString()));
|
||
detalhe.setNumeroContrato(Integer.valueOf(tupla[26].toString()));
|
||
detalhe.setCnpj(Long.valueOf(tupla[19].toString().replaceAll("[^0-9]+", "")));
|
||
detalhe.setAgenciaOrigem(tupla[4].toString());
|
||
detalhe.setSeuNumero(Integer.valueOf(tupla[0].toString()));
|
||
detalhe.setNossoNumero(doc[0]);
|
||
detalhe.setDigitoVerificador(doc[1]);
|
||
detalhe.setCodigoDeOcorrencia(0);
|
||
detalhe.setDataOcorrencia(null);
|
||
detalhe.setNumeroDoDocumento(StringUtils.right(doc[0], 10));
|
||
detalhe.setVencimento((Date) tupla[9]);
|
||
detalhe.setValorTitulo(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());
|
||
detalhe.setDataLimiteDesconto(null);
|
||
|
||
try{
|
||
detalhe.setValorAtraso(new BigDecimal(tupla[15].toString().replaceAll(",", ".")));
|
||
}catch(Exception e){}
|
||
|
||
try{
|
||
detalhe.setValorDesconto(new BigDecimal(tupla[16].toString().replaceAll(",", ".")));
|
||
}catch(Exception e){}
|
||
|
||
try{
|
||
detalhe.setValorAbatimentoConcedido(new BigDecimal(tupla[17].toString().replaceAll(",", ".")));
|
||
}catch(Exception e){}
|
||
|
||
detalhe.setValorIOF(BigDecimal.ZERO);
|
||
detalhe.setNomePagador(tupla[20].toString());
|
||
detalhe.setEnderecoCompletoPagador(tupla[21].toString());
|
||
detalhe.setBairro(tupla[22].toString());
|
||
detalhe.setCidade(tupla[23].toString());
|
||
detalhe.setEstado(tupla[24].toString());
|
||
detalhe.setMensagem1("");
|
||
String cep = tupla[25].toString();
|
||
detalhe.setCepPrefixo(cep.substring(0,5));
|
||
detalhe.setCepSufixo(cep.substring(5));
|
||
detalhe.setSacadorAvalistaMensagem2("");
|
||
|
||
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, Boolean reenviar) 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, reenviar);
|
||
|
||
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<Object[]> 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, Boolean reenviar) 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, reenviar);
|
||
|
||
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<Object[]> 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.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString()));
|
||
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 = "";
|
||
try{
|
||
cep = StringUtils.right("00000000" + tupla[24].toString(), 8);
|
||
}catch(Exception e){
|
||
cep = "00000000";
|
||
}
|
||
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, Boolean reenviar) {
|
||
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 INSTI_FINANCEIRA ifi ON ifi.CODIGO = fp.BOLETO_BANCO_COD ");
|
||
sb.append(" LEFT JOIN EMPRESA_CONTABANCARIA ecb ON emp.EMPRESA_ID = ecb.EMPRESA_ID AND ifi.INSTIFINANCEIRA_ID = ecb.INSTIFINANCEIRA_ID AND ecb.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 ");
|
||
|
||
if(!reenviar){
|
||
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<FechamentoBoleto> 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<FechamentoBoleto>) 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;
|
||
}
|
||
|
||
public String buscarConstante(String nombre) {
|
||
StringBuilder HQL = new StringBuilder();
|
||
HQL.append(" select ");
|
||
HQL.append(" valorconstante ");
|
||
HQL.append(" from ");
|
||
HQL.append(" Constante ");
|
||
HQL.append(" where ");
|
||
HQL.append(" nombconstante = :nombre ");
|
||
HQL.append(" and activo = 1 ");
|
||
Query query = getSession().createQuery(HQL.toString());
|
||
query.setParameter("nombre", nombre);
|
||
return (String) query.uniqueResult();
|
||
}
|
||
|
||
@Override
|
||
public List<Empresa> getEmpresas() {
|
||
|
||
Query query = getSession().createQuery("SELECT param.empresa FROM FechamentoParamgeral param WHERE param.activo = 1 AND param.empresa.activo = 1");
|
||
|
||
return (List<Empresa>) query.list();
|
||
}
|
||
}
|