package com.rjconsultores.ventaboletos.service.impl; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.ArquivoRemessa; import com.rjconsultores.ventaboletos.dao.ConstanteDAO; 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.BancoLayout; import com.rjconsultores.ventaboletos.service.ArquivoRemessaCNAB; import com.rjconsultores.ventaboletos.utils.NossoNumeroUtils; @Service("arquivoRemessaCNAB") public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB { @Autowired private RemessaCNABBancosDAO remessaCNABBancosDAO; @Autowired private ConstanteDAO constanteDAO; @Override public List obtenerTodos() { return remessaCNABBancosDAO.obtenerTodos(); } @Override public FechamentoBoleto obtenerID(Long id) { return remessaCNABBancosDAO.obtenerID(id); } @Override @Transactional public FechamentoBoleto suscribir(FechamentoBoleto entidad) { return remessaCNABBancosDAO.suscribir(entidad); } @Override @Transactional public FechamentoBoleto actualizacion(FechamentoBoleto entidad) { return remessaCNABBancosDAO.actualizacion(entidad); } @Override @Transactional public void borrar(FechamentoBoleto entidad) { remessaCNABBancosDAO.borrar(entidad); } @Override public List obtenerTodosParaRemessa(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) { return remessaCNABBancosDAO.obtenerTodosParaRemessa(empresa, dataDe, dataAte, reenviar); } @Override public ArquivoRemessa remessa(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) { BancoLayout banco = BancoLayout.getInstanceByCodBanco(remessaCNABBancosDAO.findBanco(empresa)); try{ if(BancoLayout.BRADESCO_400_Envio.equals(banco)){ 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)){ return remessaCNABBancosDAO.remessaBancoBrasil(empresa, dataDe, dataAte, reenviar); }else if(BancoLayout.SICOOB_240_Envio.equals(banco)){ return remessaCNABBancosDAO.remessaSicoob(empresa, dataDe, dataAte, reenviar); }else if(BancoLayout.SAFRA_400_Envio.equals(banco)){ return remessaCNABBancosDAO.remessaSafra(empresa, dataDe, dataAte, reenviar); }else if(BancoLayout.CAIXA_400_Envio.equals(banco)){ return remessaCNABBancosDAO.remessaCaixa(empresa, dataDe, dataAte, reenviar); } }catch(RuntimeException re){ throw re; }catch(Exception e){ e.printStackTrace(); } return null; } @Override public Boolean atualizaRemessa(Empresa empresa, ArquivoRemessa arquivoRemessa) throws Exception { return remessaCNABBancosDAO.atualizaRemessa(empresa, arquivoRemessa); } @Override public List getEmpresas() { return remessaCNABBancosDAO.getEmpresas(); } @Override public boolean temPermissao(){ Constante cons = constanteDAO.buscarPorNomeConstante("USA_REMESSA_CNAB"); return cons != null && cons.getActivo() && cons.getValorconstante() != null && cons.getValorconstante().equalsIgnoreCase("true"); } @Override public boolean boletosOk(List boletos) { BancoLayout banco = null; if(boletos != null && !boletos.isEmpty()) { for (FechamentoBoleto fechamentoBoleto : boletos) { if(banco == null){ banco = BancoLayout.getInstanceByCodBanco(remessaCNABBancosDAO.findBanco(fechamentoBoleto.getFechamentoCntcorrente().getEmpresa())); } if(!NossoNumeroUtils.validaNossoNumero(fechamentoBoleto.getNossonumero(), banco)){ return false; } } } return true; } @Override public boolean boletosAEnviar(List boletos) { boolean toReturn = Boolean.FALSE; if(boletos != null && !boletos.isEmpty()) { for (java.util.Iterator it = boletos.iterator(); it.hasNext();) { FechamentoBoleto fechamentoBoleto = it.next(); if(fechamentoBoleto.getRemessaId() == null){ return Boolean.TRUE; } } } return toReturn; } }