AdmMono/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateD...

1065 lines
46 KiB
Java
Raw Blame History

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.ArrayList;
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.entidad.FechamentoCntcorrente;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
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("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(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("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("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(" INNER JOIN FECHAMENTO_CNTCORRENTE fc on fb.FECHAMENTOCNTCORRENTE_ID = fc.FECHAMENTOCNTCORRENTE_ID AND fc.ACTIVO = 1 ");
sb.append(" INNER JOIN PUNTO_VENTA pv on pv.PUNTOVENTA_ID = fc.PUNTOVENTA_ID AND pv.ACTIVO = 1 ");
sb.append(" INNER JOIN EMPRESA emp on emp.EMPRESA_ID = fc.EMPRESA_ID AND emp.ACTIVO = 1 ");
sb.append(" INNER JOIN FECHAMENTO_PARAMGERAL fp on fp.EMPRESA_ID = emp.EMPRESA_ID AND fp.ACTIVO = 1 ");
sb.append(" INNER JOIN FECHAMENTO_PARAMPTOVTA fppv on fppv.EMPRESA_ID = emp.EMPRESA_ID AND fppv.ACTIVO = 1 and pv.PUNTOVENTA_ID = fppv.PUNTOVENTA_ID AND fppv.TIPOPAGAMENTO = 'B' ");
sb.append(" LEFT JOIN INSTI_FINANCEIRA ifi ON ifi.CODIGO = fp.BOLETO_BANCO_COD ");
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 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, Boolean reenviar) {
StringBuilder sb = new StringBuilder();
sb.append(" SELECT ");
sb.append(" fb.FECHAMENTOBOLETO_ID AS fechamentoboletoId, ");
sb.append(" fb.nossonumero, ");
sb.append(" fb.FECDOCUMENTO, ");
sb.append(" fb.FECVENCIMENTO, ");
sb.append(" fb.VALORDOCUMENTO, ");
sb.append(" fb.STATUS, ");
sb.append(" fb.REMESSA_ID as remessaId, ");
sb.append(" fc.FECHAMENTOCNTCORRENTE_ID as fcId, ");
sb.append(" emp.NOMBEMPRESA, ");
sb.append(" pv.NOMBPUNTOVENTA, ");
sb.append(" emp.EMPRESA_ID AS codEmpresaBanco, ");
sb.append(" pv.PUNTOVENTA_ID ");
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();
List<FechamentoBoleto> retorno = new ArrayList<FechamentoBoleto>();
for(Object[] tupla : list){
FechamentoBoleto fb = new FechamentoBoleto();
fb.setFechamentoboletoId( Long.valueOf(tupla[0].toString()));
fb.setNossonumero( tupla[1].toString());
fb.setFecdocumento( (Date)tupla[2]);
fb.setFecvencimento( (Date)tupla[3]);
fb.setValordocumento( (BigDecimal)tupla[4]);
fb.setStatus( tupla[5].toString() );
fb.setRemessaId( tupla[6]==null?null:Long.valueOf(tupla[6].toString()) );
FechamentoCntcorrente fcc = new FechamentoCntcorrente();
fcc.setFechamentocntcorrenteId( Long.valueOf(tupla[7].toString()));
Integer codEmpresaBanco = tupla[10] != null ? Integer.valueOf(tupla[10].toString()) : 0;
fcc.setEmpresa( new Empresa(codEmpresaBanco, tupla[8].toString()));
Integer codPuntoVenta = tupla[11] != null ? Integer.valueOf(tupla[11].toString()) : 0;
fcc.setPuntoventa( new PuntoVenta(codPuntoVenta, tupla[9].toString()));
fb.setFechamentoCntcorrente(fcc);
retorno.add(fb);
}
return retorno;
}
@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();
}
}