diff --git a/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java b/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java index 9289ede75..d202af3a2 100644 --- a/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/RemessaCNABBancosDAO.java @@ -15,6 +15,8 @@ public interface RemessaCNABBancosDAO extends GenericDAO public ArquivoRemessa remessaSantander(Empresa empresa, Date dataDe, Date dataAte, Boolean reenviar) throws Exception; + public ArquivoRemessa remessaSicoob(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; diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java index 2173606e7..b7994c86d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/RemessaCNABBancosHibernateDAO.java @@ -42,6 +42,13 @@ import com.rjconsultores.ventaboletos.blocos.mercantil.DetalheObrigatorioMercant 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.blocos.sicoob.ArquivoRemessaSicoob; +import com.rjconsultores.ventaboletos.blocos.sicoob.CabecalhoLoteRemessaSicoob; +import com.rjconsultores.ventaboletos.blocos.sicoob.CabecalhoRemessaSicoob; +import com.rjconsultores.ventaboletos.blocos.sicoob.DetalheObrigatorioDadosPagadorSicoob; +import com.rjconsultores.ventaboletos.blocos.sicoob.DetalheObrigatorioSicoob; +import com.rjconsultores.ventaboletos.blocos.sicoob.RodapeRemessaLoteSicoob; +import com.rjconsultores.ventaboletos.blocos.sicoob.RodapeRemessaSicoob; import com.rjconsultores.ventaboletos.dao.RemessaCNABBancosDAO; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.FechamentoBoleto; @@ -234,6 +241,7 @@ public class RemessaCNABBancosHibernateDAO extends GenericHibernateDAO list = query.list(); + + ArquivoRemessa arquivoRemessa = new ArquivoRemessa(BancoLayout.SICOOB_240_Envio); + + String nomeArquivo = "Sicoob" + new SimpleDateFormat("ddMM").format(new Date()); + int variavel = 0; + int seqRegistro = 0; + int qtdeTitulos = 0; + BigDecimal valorTitulos = BigDecimal.ZERO; + + ArquivoRemessaItem arquivoRemessaItem = null; + CabecalhoRemessaSicoob cabecalhoRemessaSicoob = null; + CabecalhoLoteRemessaSicoob cabecalhoLoteRemessaSicoob = null; + RodapeRemessaLoteSicoob rodapeRemessaLoteSicoob = null; + RodapeRemessaSicoob rodapeRemessaSicoob = 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(); + BigDecimal valor = new BigDecimal(tupla[11].toString().replaceAll(",", ".")); + + qtdeTitulos++; + valorTitulos.add( valor ); + + if(cabecalhoRemessaSicoob == null || !(cabecalhoRemessaSicoob.getNumConvenio()).equals(codEmpresaBanco)){ + cabecalhoRemessaSicoob = new CabecalhoRemessaSicoob(); + + cabecalhoRemessaSicoob.setCpfCnpj(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId())); + cabecalhoRemessaSicoob.setNumCpfCnpj(tupla[3].toString()); + cabecalhoRemessaSicoob.setNumAgencia(tupla[5].toString()); + cabecalhoRemessaSicoob.setDigAgencia(((BigDecimal) tupla[27]).toString()); + cabecalhoRemessaSicoob.setNumContaCorrente(tupla[6].toString()); + cabecalhoRemessaSicoob.setDigContaCorrente(tupla[7].toString()); + cabecalhoRemessaSicoob.setNomeEmpresa(nomeEmpresa); + cabecalhoRemessaSicoob.setNumeroSequencialRemessa(idRemessa); + cabecalhoRemessaSicoob.setDataGravacao(new Date()); + + cabecalhoLoteRemessaSicoob = new CabecalhoLoteRemessaSicoob(); + cabecalhoLoteRemessaSicoob.setCpfCnpj(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId())); + cabecalhoLoteRemessaSicoob.setNumCpfCnpj(tupla[3].toString()); + cabecalhoLoteRemessaSicoob.setNumAgencia(tupla[5].toString()); + cabecalhoLoteRemessaSicoob.setDigAgencia(((BigDecimal) tupla[27]).toString()); + cabecalhoLoteRemessaSicoob.setNumContaCorrente(tupla[6].toString()); + cabecalhoLoteRemessaSicoob.setDigContaCorrente(tupla[7].toString()); + cabecalhoLoteRemessaSicoob.setNomeEmpresa(nomeEmpresa); + cabecalhoLoteRemessaSicoob.setNumeroRemessa(idRemessa); + cabecalhoLoteRemessaSicoob.setDataGeracao(new Date()); + + cabecalhoRemessaSicoob.setCabecalhoLoteRemessaSicoob(cabecalhoLoteRemessaSicoob); + + arquivoRemessaItem = new ArquivoRemessaSicoob(); + arquivoRemessaItem.setCabecalhoRemessa(cabecalhoRemessaSicoob); + + arquivoRemessa.addItem(arquivoRemessaItem); + } + + String []doc = tupla[9].toString().split("-"); + + DetalheObrigatorioSicoob titulosSicoob = new DetalheObrigatorioSicoob(); + titulosSicoob.setIdBoletoFechamento(Integer.valueOf(tupla[0].toString())); + titulosSicoob.setNumSeqRegistro( seqRegistro++ ); + titulosSicoob.setNumAgencia(tupla[5].toString()); + titulosSicoob.setDigAgencia(((BigDecimal) tupla[27]).toString()); + titulosSicoob.setNumContaCorrente(tupla[6].toString()); + titulosSicoob.setDigContaCorrente(tupla[7].toString()); + titulosSicoob.setNossoNumero(doc[0]); + titulosSicoob.setNumeroDoDocumento(tupla[0].toString()); + titulosSicoob.setVencimento((Date) tupla[10]); + titulosSicoob.setValor( valor ); + titulosSicoob.setEmissao((Date) tupla[13]); + try{ + titulosSicoob.setCodMora(1); + titulosSicoob.setJurosDeMora(new BigDecimal(tupla[16].toString().replaceAll(",", "."))); + titulosSicoob.setDataMora((Date) tupla[10]); + }catch(NullPointerException e){ + titulosSicoob.setCodMora(1); + titulosSicoob.setDataMora((Date) tupla[10]); + titulosSicoob.setJurosDeMora(BigDecimal.ZERO); + } + + try{ + titulosSicoob.setCodigoDesconto(1); + titulosSicoob.setDataDesconto((Date) tupla[10]); + titulosSicoob.setDescontoConcedido(new BigDecimal(tupla[17].toString().replaceAll(",", "."))); + }catch(NullPointerException e){ + titulosSicoob.setCodigoDesconto(1); + titulosSicoob.setDataDesconto((Date) tupla[10]); + titulosSicoob.setDescontoConcedido(BigDecimal.ZERO); + } + + titulosSicoob.setIofDevido(BigDecimal.ZERO); + try{ + titulosSicoob.setAbatimentoConcedido(new BigDecimal(tupla[18].toString().replaceAll(",", "."))); + }catch(NullPointerException e){ + titulosSicoob.setAbatimentoConcedido(BigDecimal.ZERO); + } + titulosSicoob.setNossoNumeroEmp(tupla[0].toString()); + titulosSicoob.setCodigoProtesto(3); + titulosSicoob.setDiasProtesto(0); + titulosSicoob.setCodigoBaixa(2); + titulosSicoob.setDiasBaixa(0); + titulosSicoob.setNumeroContrato(Integer.parseInt(tupla[0].toString())); + + DetalheObrigatorioDadosPagadorSicoob pagadorSicoob = new DetalheObrigatorioDadosPagadorSicoob(); + pagadorSicoob.setNumeroSequencialRegistro( seqRegistro++ ); + pagadorSicoob.setTipoInscricaoSacado(Integer.parseInt(TipoInscricaoPagador.CNPJ.getId())); + pagadorSicoob.setNumeroInscricaoSacado(tupla[20].toString()); + pagadorSicoob.setNomeSacado(tupla[21].toString()); + pagadorSicoob.setLogradouroSacado(tupla[22].toString()); + pagadorSicoob.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)); + pagadorSicoob.setCepSacado(cepPrefix); + pagadorSicoob.setSufixoCep(cepSufix); + pagadorSicoob.setCidade(tupla[25].toString()); + pagadorSicoob.setEstado(tupla[26].toString()); + pagadorSicoob.setCodBancoCorresp(0); + pagadorSicoob.setNossoNumeroNoBancoCorresp(""); + + titulosSicoob.setDetalheObrigatorioDadosPagadorSicoob(pagadorSicoob); + + arquivoRemessaItem.addTitulo(titulosSicoob); + + } + + if(arquivoRemessaItem != null){ + rodapeRemessaLoteSicoob = new RodapeRemessaLoteSicoob(); + rodapeRemessaLoteSicoob.setValorRegistros( valorTitulos ); + + rodapeRemessaSicoob = new RodapeRemessaSicoob(); + rodapeRemessaSicoob.setQtdLotes(1); + rodapeRemessaSicoob.setQtdArquivos(qtdeTitulos); + rodapeRemessaSicoob.setQtdContas(0); + + rodapeRemessaSicoob.setRodapeRemessaLoteSicoob(rodapeRemessaLoteSicoob); + + arquivoRemessaItem.setRodapeRemessa(rodapeRemessaSicoob); + } + + 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 "); diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ArquivoRemessaCNABImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ArquivoRemessaCNABImpl.java index c79eb747d..f00fd6dba 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ArquivoRemessaCNABImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ArquivoRemessaCNABImpl.java @@ -76,6 +76,8 @@ public class ArquivoRemessaCNABImpl implements ArquivoRemessaCNAB { 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); } }catch(Exception e){ e.printStackTrace();