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 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 remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception;
public ArquivoRemessa remessaBancoBrasil(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.ArquivoRemessaItau;
import com.rjconsultores.ventaboletos.blocos.itau.CabecalhoRemessaItau; import com.rjconsultores.ventaboletos.blocos.itau.CabecalhoRemessaItau;
import com.rjconsultores.ventaboletos.blocos.itau.DetalheObrigatorioItau; 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.ArquivoRemessaSantander;
import com.rjconsultores.ventaboletos.blocos.santander.CabecalhoRemessaSantander; import com.rjconsultores.ventaboletos.blocos.santander.CabecalhoRemessaSantander;
import com.rjconsultores.ventaboletos.blocos.santander.DetalheObrigatorioSantander; import com.rjconsultores.ventaboletos.blocos.santander.DetalheObrigatorioSantander;
import com.rjconsultores.ventaboletos.dao.RemessaCNABBancosDAO; import com.rjconsultores.ventaboletos.dao.RemessaCNABBancosDAO;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto; import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto;
import com.rjconsultores.ventaboletos.enuns.AceiteBB; import com.rjconsultores.ventaboletos.enuns.AceiteBB;
@ -57,9 +59,6 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
setSessionFactory(factory); setSessionFactory(factory);
} }
@Autowired
private ConstanteHibernateDAO constanteDAO;
public String findBanco(Empresa empresa){ public String findBanco(Empresa empresa){
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -224,20 +223,13 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception{ 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(); StringBuilder sb = new StringBuilder();
sb.append("SELECT "); sb.append("SELECT ");
sb.append(" fb.FECHAMENTOBOLETO_ID AS \"id\", "); sb.append(" fb.FECHAMENTOBOLETO_ID AS \"id\", ");
sb.append(" (NVL(fp.COUNT_REMESSA, 0) + 1) AS \"idRemessa\", "); sb.append(" (NVL(fp.COUNT_REMESSA, 0) + 1) AS \"idRemessa\", ");
sb.append(" fp.COD_EMP_BANCO AS \"codEmpresaBanco\", "); sb.append(" fp.COD_EMP_BANCO AS \"codEmpresaBanco\", ");
sb.append("fp.emp.NOMBEMPRESA AS \"nomeEmpresa\", "); sb.append(" emp.NOMBEMPRESA AS \"nomeEmpresa\", ");
sb.append(" fp.BOLETO_BANCO_AGENCIA AS \"agencia\", "); sb.append(" fp.BOLETO_BANCO_AGENCIA AS \"agencia\", ");
sb.append(" fp.BOLETO_BANCO_CONTA AS \"conta\", "); sb.append(" fp.BOLETO_BANCO_CONTA AS \"conta\", ");
sb.append(" fp.BOLETO_BANCO_CONTA_DIGITO AS \"dac\", "); sb.append(" fp.BOLETO_BANCO_CONTA_DIGITO AS \"dac\", ");
@ -259,7 +251,8 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
sb.append(" pl.NOMBPLAZA as bairro, "); sb.append(" pl.NOMBPLAZA as bairro, ");
sb.append(" ci.NOMBCIUDAD AS cidade, "); sb.append(" ci.NOMBCIUDAD AS cidade, ");
sb.append(" es.CVEESTADO AS estado, "); 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); 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); ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.SANTANDER_400_Envio);
if(codigoTransmissao == null) {
arquivoRemessa.getBancoLayout().setValido(false);
}
String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date()); String nomeArquivo = "CB" + new SimpleDateFormat("ddMM").format(new Date());
int variavel = 0; int variavel = 0;
@ -290,6 +279,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
variavel = idRemessa; variavel = idRemessa;
String codEmpresaBanco = tupla[2] != null ? tupla[2].toString() : "0"; String codEmpresaBanco = tupla[2] != null ? tupla[2].toString() : "0";
String nomeEmpresa = tupla[3].toString(); String nomeEmpresa = tupla[3].toString();
Integer codigoTransmissao = Integer.valueOf(tupla[26].toString());
if(!tupla[8].toString().contains("-")){ if(!tupla[8].toString().contains("-")){
log.error("NossoNumero não está no formato correto: " + tupla[8].toString() + ". Ignorando o registro FechamentoBoletoId = " + tupla[0].toString()); 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 @Override
public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception { public ArquivoRemessa remessaItau(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception {
@ -767,6 +909,8 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO<Fechament
sb.append(" LEFT JOIN PUNTO_VENTA pv on pv.PUNTOVENTA_ID = fc.PUNTOVENTA_ID AND pv.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 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 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 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 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 PLAZA pl on pl.PLAZA_ID = ci.PLAZA_ID AND pl.ACTIVO = 1 ");

View File

@ -70,6 +70,8 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB {
return remessaCNABBancosDAO.remessaBradesco(empresa, dataDe, dataAte, reenviar); return remessaCNABBancosDAO.remessaBradesco(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.SANTANDER_400_Envio.equals(banco)){ }else if(BancoLayout.SANTANDER_400_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaSantander(empresa, dataDe, dataAte, reenviar); 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)){ }else if(BancoLayout.ITAU_400_Envio.equals(banco)){
return remessaCNABBancosDAO.remessaItau(empresa, dataDe, dataAte, reenviar); return remessaCNABBancosDAO.remessaItau(empresa, dataDe, dataAte, reenviar);
}else if(BancoLayout.BB_240_Envio.equals(banco)){ }else if(BancoLayout.BB_240_Envio.equals(banco)){