fixes bug#14158

dev: Wallace
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@94488 d1611594-4594-4d17-8e1d-87c2c4800839
master
fabio 2019-06-12 17:27:48 +00:00
parent aec9cc1602
commit 4c46b94bea
3 changed files with 204 additions and 56 deletions

View File

@ -15,6 +15,8 @@ public interface RemessaCNABBancosDAO extends GenericDAO<FechamentoBoleto, Long>
public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaMercantil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaBancoBrasil(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;

View File

@ -35,11 +35,13 @@ 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.Constante;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto;
import com.rjconsultores.ventaboletos.enuns.AceiteBB;
@ -57,9 +59,6 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
setSessionFactory(factory);
}
@Autowired
private ConstanteHibernateDAO constanteDAO;
public String findBanco(Empresa empresa){
StringBuilder sb = new StringBuilder();
@ -224,42 +223,36 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception{
Constante retorno = constanteDAO.buscarPorNomeConstante("CODIGO_TRANSMISSAO_SANTANDER");
Integer codigoTransmissao = null;
if( retorno != null && retorno.getValorconstante() != null ) {
codigoTransmissao = Integer.valueOf(retorno.getValorconstante());
}
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 as endereco,");
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(" pv.CODPOSTAL AS \"cepPagador\", ");
sb.append(" ecb.NUMINTEGRACION AS \"codigoTransmissao\" ");
writeFROMClause(sb, dataDe != null && dataAte != null, reenviar);
@ -274,10 +267,6 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.SANTANDER_400_Envio);
if(codigoTransmissao == null) {
arquivoRemessa.getBancoLayout().setValido(false);
}
String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date());
int variavel = 0;
@ -290,6 +279,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
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á no formato correto: " + tupla[8].toString() + ". Ignorando o registro FechamentoBoletoId = " + tupla[0].toString());
@ -385,6 +375,158 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
}
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á 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 {
@ -761,32 +903,34 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
}
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 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(" 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 fb.REMESSA_ID IS NULL ");
}
sb.append("AND fp.EMPRESA_ID = :empresaId ");
sb.append(" AND fp.EMPRESA_ID = :empresaId ");
if(hasDate){
sb.append("AND fb.FECDOCUMENTO BETWEEN :dataDe AND :dataAte ");
sb.append(" AND fb.FECDOCUMENTO BETWEEN :dataDe AND :dataAte ");
}
sb.append("ORDER BY ");
sb.append("fb.FECMODIF, fb.FECDOCUMENTO ");
sb.append(" ORDER BY ");
sb.append(" fb.FECMODIF, fb.FECDOCUMENTO ");
}

View File

@ -70,6 +70,8 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
return remessaCNABBancosDAO.remessaBradesco(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.SANTANDER_400_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaSantander(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.MERCANTIL_400_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaMercantil(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.ITAU_400_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaItau(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.BB_240_Envio.equals(banco)){