From 9ccd275805471ce6aa0f2ee7607d6fabbae66d16 Mon Sep 17 00:00:00 2001 From: fabio Date: Tue, 15 Dec 2020 13:28:50 +0000 Subject: [PATCH] fixes bug#20438 dev: Valdir qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/GeneradorBoletosCNAB/trunk@104722 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../blocos/sicoob/ArquivoRemessaSicoob.java | 45 +++ .../sicoob/CabecalhoLoteRemessaSicoob.java | 162 ++++++++ .../blocos/sicoob/CabecalhoRemessaSicoob.java | 146 ++++++++ .../DetalheObrigatorioDadosPagadorSicoob.java | 173 +++++++++ .../sicoob/DetalheObrigatorioSicoob.java | 352 ++++++++++++++++++ .../sicoob/RodapeRemessaLoteSicoob.java | 33 ++ .../blocos/sicoob/RodapeRemessaSicoob.java | 53 +++ .../ventaboletos/enuns/BancoLayout.java | 1 + .../ventaboletos/enuns/CarteiraSicoob.java | 41 ++ .../ventaboletos/layouts/CNABFactory.java | 2 + .../ventaboletos/layouts/SicoobFlatFile.java | 197 ++++++++++ .../ventaboletos/utils/NossoNumeroUtils.java | 39 ++ src/layouts/LayoutSicoobCNAB240Envio.txg.xml | 181 +++++++++ 13 files changed, 1425 insertions(+) create mode 100644 src/com/rjconsultores/ventaboletos/blocos/sicoob/ArquivoRemessaSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoLoteRemessaSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoRemessaSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioDadosPagadorSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaLoteSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/enuns/CarteiraSicoob.java create mode 100644 src/com/rjconsultores/ventaboletos/layouts/SicoobFlatFile.java create mode 100644 src/layouts/LayoutSicoobCNAB240Envio.txg.xml diff --git a/src/com/rjconsultores/ventaboletos/blocos/sicoob/ArquivoRemessaSicoob.java b/src/com/rjconsultores/ventaboletos/blocos/sicoob/ArquivoRemessaSicoob.java new file mode 100644 index 000000000..8fd2715a9 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/sicoob/ArquivoRemessaSicoob.java @@ -0,0 +1,45 @@ +package com.rjconsultores.ventaboletos.blocos.sicoob; + +import java.util.ArrayList; + +import com.rjconsultores.ventaboletos.ArquivoRemessaItem; +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessaPadrao; + +public class ArquivoRemessaSicoob extends ArquivoRemessaItem { + + @Override + public void setCabecalhoRemessa(CabecalhoRemessa cabecalhoRemessa) { + + if(cabecalhoRemessa instanceof CabecalhoRemessaSicoob){ + super.setCabecalhoRemessa(cabecalhoRemessa); + }else{ + throw new ClassCastException("Somente cabecalho tipo: " + CabecalhoRemessaSicoob.class.getName()); + } + } + + @Override + public void addTitulo(DetalheObrigatorio titulo){ + if(this.titulos == null){ + this.titulos = new ArrayList(); + } + + if(titulo instanceof DetalheObrigatorioSicoob){ + + titulo.setNumeroSequencialRegistro(titulos.size() + 2); + + this.titulos.add(titulo); + }else{ + throw new ClassCastException("Somente cabecalho tipo: " + DetalheObrigatorioSicoob.class.getName()); + } + } + + @Override + public RodapeRemessa getRodapeRemessa() { + this.rodapeRemessa = this.rodapeRemessa == null ? new RodapeRemessaPadrao() : this.rodapeRemessa; + rodapeRemessa.setNumeroSequencialRegistro(titulos.size() + 2); + return rodapeRemessa; + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoLoteRemessaSicoob.java b/src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoLoteRemessaSicoob.java new file mode 100644 index 000000000..2d90d74ae --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoLoteRemessaSicoob.java @@ -0,0 +1,162 @@ +package com.rjconsultores.ventaboletos.blocos.sicoob; + +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; + +public class CabecalhoLoteRemessaSicoob implements CabecalhoRemessa{ + + private Integer codComp; + private Integer loteServico; + private Integer cpfCnpj; + private String numCpfCnpj; + private String numConvenio; + private String numCarteira; + private String numVarCarteira; + private String remessaTeste; + private String numAgencia; + private String digAgencia; + private String numContaCorrente; + private String digContaCorrente; + private String digAgenciaConta; + private String nomeEmpresa; + private String mensagem1; + private String mensagem2; + private Integer numeroRemessa; + private Date dataGeracao; + private Date dataCredito; + + public Integer getCpfCnpj() { + return cpfCnpj; + } + public void setCpfCnpj(Integer cpfCnpj) { + this.cpfCnpj = cpfCnpj; + } + public String getNumCpfCnpj() { + return numCpfCnpj; + } + public void setNumCpfCnpj(String numCpfCnpj) { + this.numCpfCnpj = numCpfCnpj; + } + public String getNumConvenio() { + return numConvenio; + } + public void setNumConvenio(String numConvenio) { + this.numConvenio = numConvenio; + } + public String getNumCarteira() { + return numCarteira; + } + public void setNumCarteira(String numCarteira) { + this.numCarteira = numCarteira; + } + public String getNumVarCarteira() { + return numVarCarteira; + } + public void setNumVarCarteira(String numVarCarteira) { + this.numVarCarteira = numVarCarteira; + } + public String getRemessaTesteID() { + return remessaTeste; + } + public void setRemessaTesteID(String remessaTeste) { + this.remessaTeste = remessaTeste; + } + public String getNumAgencia() { + return numAgencia; + } + public void setNumAgencia(String numAgencia) { + this.numAgencia = numAgencia; + } + public String getDigAgencia() { + return digAgencia; + } + public void setDigAgencia(String digAgencia) { + this.digAgencia = digAgencia; + } + public String getNumContaCorrente() { + return numContaCorrente; + } + public void setNumContaCorrente(String numContaCorrente) { + this.numContaCorrente = numContaCorrente; + } + public String getDigContaCorrente() { + return digContaCorrente; + } + public void setDigContaCorrente(String digContaCorrente) { + this.digContaCorrente = digContaCorrente; + } + public String getDigAgenciaConta() { + return digAgenciaConta; + } + public void setDigAgenciaConta(String digAgenciaConta) { + this.digAgenciaConta = digAgenciaConta; + } + public String getNomeEmpresa() { + return nomeEmpresa; + } + public void setNomeEmpresa(String nomeEmpresa) { + this.nomeEmpresa = nomeEmpresa; + } + public String getMensagem1() { + return mensagem1; + } + public void setMensagem1(String mensagem1) { + this.mensagem1 = mensagem1; + } + public String getMensagem2() { + return mensagem2; + } + public void setMensagem2(String mensagem2) { + this.mensagem2 = mensagem2; + } + public Integer getNumeroRemessa() { + return numeroRemessa; + } + public void setNumeroRemessa(Integer numeroRemessa) { + this.numeroRemessa = numeroRemessa; + } + public Date getDataGeracao() { + return dataGeracao; + } + public void setDataGeracao(Date dataGeracao) { + this.dataGeracao = dataGeracao; + } + public Date getDataCredito() { + return dataCredito; + } + public void setDataCredito(Date dataCredito) { + this.dataCredito = dataCredito; + } + public Integer getCodComp() { + return codComp; + } + public void setCodComp(Integer codComp) { + this.codComp = codComp; + } + public Integer getLoteServico() { + return loteServico; + } + public void setLoteServico(Integer loteServico) { + this.loteServico = loteServico; + } + @Override + public Integer getNumeroSequencialRemessa() { + return numeroRemessa; + } + @Override + public void setNumeroSequencialRemessa(Integer numeroSequencialRemessa) { + numeroRemessa = numeroSequencialRemessa; + + } + @Override + public Integer getNumeroSequencialRegistro() { + // TODO Auto-generated method stub + return null; + } + @Override + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + // TODO Auto-generated method stub + + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoRemessaSicoob.java b/src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoRemessaSicoob.java new file mode 100644 index 000000000..571807bc0 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/sicoob/CabecalhoRemessaSicoob.java @@ -0,0 +1,146 @@ +package com.rjconsultores.ventaboletos.blocos.sicoob; + +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; + +public class CabecalhoRemessaSicoob implements CabecalhoRemessa { + + private String codigoEmpresa; + private String nomeEmpresa; + private Date dataGravacao; + private Integer numeroSequencialRemessa; + private Integer numeroSequencialRegistro; + private Integer loteServico; + private Integer cpfCnpj; + private String numCpfCnpj; + private String numConvenio; + private String numAgencia; + private String digAgencia; + private String numContaCorrente; + private String digContaCorrente; + private Integer numRemessa; + + private CabecalhoLoteRemessaSicoob cabecalhoLoteRemessaSicoob; + + public String getCodigoEmpresa() { + return codigoEmpresa; + } + + public void setCodigoEmpresa(String codigoEmpresa) { + this.codigoEmpresa = codigoEmpresa; + } + + public String getNomeEmpresa() { + return nomeEmpresa; + } + + public void setNomeEmpresa(String nomeEmpresa) { + this.nomeEmpresa = nomeEmpresa; + } + + public Date getDataGravacao() { + return dataGravacao; + } + + public void setDataGravacao(Date dataGravacao) { + this.dataGravacao = dataGravacao; + } + + public Integer getNumeroSequencialRemessa() { + return numeroSequencialRemessa; + } + + public void setNumeroSequencialRemessa(Integer numeroSequencialRemessa) { + this.numeroSequencialRemessa = numeroSequencialRemessa; + } + + public Integer getNumeroSequencialRegistro() { + return numeroSequencialRegistro; + } + + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + this.numeroSequencialRegistro = numeroSequencialRegistro; + } + + public Integer getLoteServico() { + return loteServico; + } + + public void setLoteServico(Integer loteServico) { + this.loteServico = loteServico; + } + + public Integer getCpfCnpj() { + return cpfCnpj; + } + + public void setCpfCnpj(Integer cpfCnpj) { + this.cpfCnpj = cpfCnpj; + } + + public String getNumCpfCnpj() { + return numCpfCnpj; + } + + public void setNumCpfCnpj(String numCpfCnpj) { + this.numCpfCnpj = numCpfCnpj; + } + + public String getNumConvenio() { + return numConvenio; + } + + public void setNumConvenio(String numConvenio) { + this.numConvenio = numConvenio; + } + + public String getNumAgencia() { + return numAgencia; + } + + public void setNumAgencia(String numAgencia) { + this.numAgencia = numAgencia; + } + + public String getDigAgencia() { + return digAgencia; + } + + public void setDigAgencia(String digAgencia) { + this.digAgencia = digAgencia; + } + + public String getNumContaCorrente() { + return numContaCorrente; + } + + public void setNumContaCorrente(String numContaCorrente) { + this.numContaCorrente = numContaCorrente; + } + + public String getDigContaCorrente() { + return digContaCorrente; + } + + public void setDigContaCorrente(String digContaCorrente) { + this.digContaCorrente = digContaCorrente; + } + + public Integer getNumRemessa() { + return numRemessa; + } + + public void setNumRemessa(Integer numRemessa) { + this.numRemessa = numRemessa; + } + + public CabecalhoLoteRemessaSicoob getCabecalhoLoteRemessaSicoob() { + return cabecalhoLoteRemessaSicoob; + } + + public void setCabecalhoLoteRemessaSicoob(CabecalhoLoteRemessaSicoob cabecalhoLoteRemessaSicoob) { + this.cabecalhoLoteRemessaSicoob = cabecalhoLoteRemessaSicoob; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioDadosPagadorSicoob.java b/src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioDadosPagadorSicoob.java new file mode 100644 index 000000000..37ee339e7 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioDadosPagadorSicoob.java @@ -0,0 +1,173 @@ +package com.rjconsultores.ventaboletos.blocos.sicoob; + +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; + +public class DetalheObrigatorioDadosPagadorSicoob implements DetalheObrigatorio, Cloneable{ + + + private Integer loteServico; + private Integer codigoRemessa; + private Integer numSeqRegistro; + private Integer tipoInscricaoSacado; + private String numeroInscricaoSacado; + private String nomeSacado; + private String logradouroSacado; + private String bairroSacado; + private Integer cepSacado; + private Integer sufixoCep; + private String cidade; + private String estado; + private Integer tipoSacadorAvalista; + private Integer sacadorAvalista; + private String nomeSacadorAvalista; + private Integer codBancoCorresp; + private String nossoNumeroNoBancoCorresp; + private Integer idBoletoFechamento; + + @Override + public void setIdBoletoFechamento(Integer id) { + idBoletoFechamento = id; + } + + @Override + public Integer getIdBoletoFechamento() { + return idBoletoFechamento; + } + + @Override + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + numSeqRegistro = numeroSequencialRegistro; + } + + public Integer getNumeroSequencialRegistro() { + return numSeqRegistro; + } + + public Integer getTipoInscricaoSacado() { + return tipoInscricaoSacado; + } + + public void setTipoInscricaoSacado(Integer tipoInscricaoSacado) { + this.tipoInscricaoSacado = tipoInscricaoSacado; + } + + public String getNumeroInscricaoSacado() { + return numeroInscricaoSacado; + } + + public void setNumeroInscricaoSacado(String numeroInscricaoSacado) { + this.numeroInscricaoSacado = numeroInscricaoSacado; + } + + public String getNomeSacado() { + return nomeSacado; + } + + public void setNomeSacado(String nomeSacado) { + this.nomeSacado = nomeSacado; + } + + public String getLogradouroSacado() { + return logradouroSacado; + } + + public void setLogradouroSacado(String logradouroSacado) { + this.logradouroSacado = logradouroSacado; + } + + public String getBairroSacado() { + return bairroSacado; + } + + public void setBairroSacado(String bairroSacado) { + this.bairroSacado = bairroSacado; + } + + public Integer getCepSacado() { + return cepSacado; + } + + public void setCepSacado(Integer cepSacado) { + this.cepSacado = cepSacado; + } + + public Integer getSufixoCep() { + return sufixoCep; + } + + public void setSufixoCep(Integer sufixoCep) { + this.sufixoCep = sufixoCep; + } + + public String getCidade() { + return cidade; + } + + public void setCidade(String cidade) { + this.cidade = cidade; + } + + public String getEstado() { + return estado; + } + + public void setEstado(String estado) { + this.estado = estado; + } + + public Integer getTipoSacadorAvalista() { + return tipoSacadorAvalista; + } + + public void setTipoSacadorAvalista(Integer tipoSacadorAvalista) { + this.tipoSacadorAvalista = tipoSacadorAvalista; + } + + public Integer getSacadorAvalista() { + return sacadorAvalista; + } + + public void setSacadorAvalista(Integer sacadorAvalista) { + this.sacadorAvalista = sacadorAvalista; + } + + public String getNomeSacadorAvalista() { + return nomeSacadorAvalista; + } + + public void setNomeSacadorAvalista(String nomeSacadorAvalista) { + this.nomeSacadorAvalista = nomeSacadorAvalista; + } + + public Integer getCodBancoCorresp() { + return codBancoCorresp; + } + + public void setCodBancoCorresp(Integer codBancoCorresp) { + this.codBancoCorresp = codBancoCorresp; + } + + public String getNossoNumeroNoBancoCorresp() { + return nossoNumeroNoBancoCorresp; + } + + public void setNossoNumeroNoBancoCorresp(String nossoNumeroNoBancoCorresp) { + this.nossoNumeroNoBancoCorresp = nossoNumeroNoBancoCorresp; + } + + public Integer getLoteServico() { + return loteServico; + } + + public void setLoteServico(Integer loteServico) { + this.loteServico = loteServico; + } + + public Integer getCodigoRemessa() { + return codigoRemessa; + } + + public void setCodigoRemessa(Integer codigoRemessa) { + this.codigoRemessa = codigoRemessa; + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioSicoob.java b/src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioSicoob.java new file mode 100644 index 000000000..2d032dc0d --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/sicoob/DetalheObrigatorioSicoob.java @@ -0,0 +1,352 @@ +package com.rjconsultores.ventaboletos.blocos.sicoob; + +import java.math.BigDecimal; +import java.util.Date; + +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.enuns.AceiteBB; + +public class DetalheObrigatorioSicoob implements DetalheObrigatorio, Cloneable { + + private Integer loteServico; + private Integer numSeqRegistro; + private String numAgencia; + private String digAgencia; + private String numContaCorrente; + private String digContaCorrente; + private String digAgenciaConta; + private String nossoNumero; + private Integer codCarteira; + private String formaCadTituloBanco; + private String tipoDocumento; + private String identEmissaoBloqueto; + private String identDistribuicao; + private String numeroDoDocumento; + private Date vencimento; + private BigDecimal valor; + private String agenciaCobradora; + private String digAgenciaCobradora; + private AceiteBB aceite; + private Date emissao; + private Integer codMora; + private Date dataMora; + private BigDecimal jurosDeMora; + private Integer codigoDesconto; + private Date dataDesconto; + private BigDecimal descontoConcedido; + private BigDecimal iofDevido; + private BigDecimal abatimentoConcedido; + private String nossoNumeroEmp; + private Integer codigoProtesto; + private Integer diasProtesto; + private Integer codigoBaixa; + private Integer diasBaixa; + private Integer numeroContrato; + private String usoExclusivo; + private Integer idBoletoFechamento; + + private DetalheObrigatorioDadosPagadorSicoob detalheObrigatorioDadosPagadorSicoob; + + public Integer getLoteServico() { + return loteServico; + } + + public void setLoteServico(Integer loteServico) { + this.loteServico = loteServico; + } + + public Integer getNumSeqRegistro() { + return numSeqRegistro; + } + + public void setNumSeqRegistro(Integer numSeqRegistro) { + this.numSeqRegistro = numSeqRegistro; + } + + public String getNumAgencia() { + return numAgencia; + } + + public void setNumAgencia(String numAgencia) { + this.numAgencia = numAgencia; + } + + public String getDigAgencia() { + return digAgencia; + } + + public void setDigAgencia(String digAgencia) { + this.digAgencia = digAgencia; + } + + public String getNumContaCorrente() { + return numContaCorrente; + } + + public void setNumContaCorrente(String numContaCorrente) { + this.numContaCorrente = numContaCorrente; + } + + public String getDigContaCorrente() { + return digContaCorrente; + } + + public void setDigContaCorrente(String digContaCorrente) { + this.digContaCorrente = digContaCorrente; + } + + public String getDigAgenciaConta() { + return digAgenciaConta; + } + + public void setDigAgenciaConta(String digAgenciaConta) { + this.digAgenciaConta = digAgenciaConta; + } + + public String getNossoNumero() { + return nossoNumero; + } + + public void setNossoNumero(String nossoNumero) { + this.nossoNumero = nossoNumero; + } + + public Integer getCodCarteira() { + return codCarteira; + } + + public void setCodCarteira(Integer codCarteira) { + this.codCarteira = codCarteira; + } + + public String getFormaCadTituloBanco() { + return formaCadTituloBanco; + } + + public void setFormaCadTituloBanco(String formaCadTituloBanco) { + this.formaCadTituloBanco = formaCadTituloBanco; + } + + public String getTipoDocumento() { + return tipoDocumento; + } + + public void setTipoDocumento(String tipoDocumento) { + this.tipoDocumento = tipoDocumento; + } + + public String getIdentEmissaoBloqueto() { + return identEmissaoBloqueto; + } + + public void setIdentEmissaoBloqueto(String identEmissaoBloqueto) { + this.identEmissaoBloqueto = identEmissaoBloqueto; + } + + public String getIdentDistribuicao() { + return identDistribuicao; + } + + public void setIdentDistribuicao(String identDistribuicao) { + this.identDistribuicao = identDistribuicao; + } + + public String getNumeroDoDocumento() { + return numeroDoDocumento; + } + + public void setNumeroDoDocumento(String numeroDoDocumento) { + this.numeroDoDocumento = numeroDoDocumento; + } + + public Date getVencimento() { + return vencimento; + } + + public void setVencimento(Date vencimento) { + this.vencimento = vencimento; + } + + public BigDecimal getValor() { + return valor; + } + + public void setValor(BigDecimal valor) { + this.valor = valor; + } + + public String getAgenciaCobradora() { + return agenciaCobradora; + } + + public void setAgenciaCobradora(String agenciaCobradora) { + this.agenciaCobradora = agenciaCobradora; + } + + public String getDigAgenciaCobradora() { + return digAgenciaCobradora; + } + + public void setDigAgenciaCobradora(String digAgenciaCobradora) { + this.digAgenciaCobradora = digAgenciaCobradora; + } + + public AceiteBB getAceite() { + return aceite; + } + + public void setAceite(AceiteBB aceite) { + this.aceite = aceite; + } + + public Date getEmissao() { + return emissao; + } + + public void setEmissao(Date emissao) { + this.emissao = emissao; + } + + public Integer getCodMora() { + return codMora; + } + + public void setCodMora(Integer codMora) { + this.codMora = codMora; + } + + public Date getDataMora() { + return dataMora; + } + + public void setDataMora(Date dataMora) { + this.dataMora = dataMora; + } + + public BigDecimal getJurosDeMora() { + return jurosDeMora; + } + + public void setJurosDeMora(BigDecimal jurosDeMora) { + this.jurosDeMora = jurosDeMora; + } + + public Integer getCodigoDesconto() { + return codigoDesconto; + } + + public void setCodigoDesconto(Integer codigoDesconto) { + this.codigoDesconto = codigoDesconto; + } + + public Date getDataDesconto() { + return dataDesconto; + } + + public void setDataDesconto(Date dataDesconto) { + this.dataDesconto = dataDesconto; + } + + public BigDecimal getDescontoConcedido() { + return descontoConcedido; + } + + public void setDescontoConcedido(BigDecimal descontoConcedido) { + this.descontoConcedido = descontoConcedido; + } + + public BigDecimal getAbatimentoConcedido() { + return abatimentoConcedido; + } + + public void setAbatimentoConcedido(BigDecimal abatimentoConcedido) { + this.abatimentoConcedido = abatimentoConcedido; + } + + public String getNossoNumeroEmp() { + return nossoNumeroEmp; + } + + public void setNossoNumeroEmp(String nossoNumeroEmp) { + this.nossoNumeroEmp = nossoNumeroEmp; + } + + public Integer getCodigoProtesto() { + return codigoProtesto; + } + + public void setCodigoProtesto(Integer codigoProtesto) { + this.codigoProtesto = codigoProtesto; + } + + public Integer getDiasProtesto() { + return diasProtesto; + } + + public void setDiasProtesto(Integer diasProtesto) { + this.diasProtesto = diasProtesto; + } + + public Integer getCodigoBaixa() { + return codigoBaixa; + } + + public void setCodigoBaixa(Integer codigoBaixa) { + this.codigoBaixa = codigoBaixa; + } + + public Integer getDiasBaixa() { + return diasBaixa; + } + + public void setDiasBaixa(Integer diasBaixa) { + this.diasBaixa = diasBaixa; + } + + public Integer getNumeroContrato() { + return numeroContrato; + } + + public void setNumeroContrato(Integer numeroContrato) { + this.numeroContrato = numeroContrato; + } + + public String getUsoExclusivo() { + return usoExclusivo; + } + + public void setUsoExclusivo(String usoExclusivo) { + this.usoExclusivo = usoExclusivo; + } + + public Integer getIdBoletoFechamento() { + return idBoletoFechamento; + } + + public void setIdBoletoFechamento(Integer idBoletoFechamento) { + this.idBoletoFechamento = idBoletoFechamento; + } + + public DetalheObrigatorioDadosPagadorSicoob getDetalheObrigatorioDadosPagadorSicoob() { + return detalheObrigatorioDadosPagadorSicoob; + } + + public void setDetalheObrigatorioDadosPagadorSicoob( + DetalheObrigatorioDadosPagadorSicoob detalheObrigatorioDadosPagadorSicoob) { + this.detalheObrigatorioDadosPagadorSicoob = detalheObrigatorioDadosPagadorSicoob; + } + + @Override + public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) { + // TODO Auto-generated method stub + + } + + public BigDecimal getIofDevido() { + return iofDevido; + } + + public void setIofDevido(BigDecimal iofDevido) { + this.iofDevido = iofDevido; + } +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaLoteSicoob.java b/src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaLoteSicoob.java new file mode 100644 index 000000000..4f939fe8e --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaLoteSicoob.java @@ -0,0 +1,33 @@ +package com.rjconsultores.ventaboletos.blocos.sicoob; + +import java.math.BigDecimal; + +import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessaPadrao; + +public class RodapeRemessaLoteSicoob extends RodapeRemessaPadrao implements RodapeRemessa { + + private Integer loteServico; + private BigDecimal valorRegistros; + + public Integer getQtdRegistros(){ + return getNumeroSequencialRegistro(); + } + + public Integer getLoteServico() { + return loteServico; + } + + public void setLoteServico(Integer loteServico) { + this.loteServico = loteServico; + } + + public BigDecimal getValorRegistros() { + return valorRegistros; + } + + public void setValorRegistros(BigDecimal valorRegistros) { + this.valorRegistros = valorRegistros; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaSicoob.java b/src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaSicoob.java new file mode 100644 index 000000000..aca72edf1 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/blocos/sicoob/RodapeRemessaSicoob.java @@ -0,0 +1,53 @@ +package com.rjconsultores.ventaboletos.blocos.sicoob; + +import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessaPadrao; + +public class RodapeRemessaSicoob extends RodapeRemessaPadrao implements RodapeRemessa { + + private Integer loteServico; + private Integer qtdLotes; + private Integer qtdArquivos; + private Integer qtdContas; + private RodapeRemessaLoteSicoob rodapeRemessaLoteSicoob; + + public Integer getQtdLotes() { + return qtdLotes; + } + + public void setQtdLotes(Integer qtdLotes) { + this.qtdLotes = qtdLotes; + } + + public Integer getQtdArquivos() { + return qtdArquivos; + } + + public void setQtdArquivos(Integer qtdArquivos) { + this.qtdArquivos = qtdArquivos; + } + + public Integer getQtdContas() { + return qtdContas; + } + + public void setQtdContas(Integer qtdContas) { + this.qtdContas = qtdContas; + } + + public RodapeRemessaLoteSicoob getRodapeRemessaLoteSicoob() { + return rodapeRemessaLoteSicoob; + } + + public void setRodapeRemessaLoteSicoob(RodapeRemessaLoteSicoob rodapeRemessaLoteSicoob) { + this.rodapeRemessaLoteSicoob = rodapeRemessaLoteSicoob; + } + + public Integer getLoteServico() { + return loteServico; + } + + public void setLoteServico(Integer loteServico) { + this.loteServico = loteServico; + } +} diff --git a/src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java b/src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java index a9bd57000..89369be95 100644 --- a/src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java +++ b/src/com/rjconsultores/ventaboletos/enuns/BancoLayout.java @@ -4,6 +4,7 @@ public enum BancoLayout { BRADESCO_400_Envio("237", false, "/layouts/LayoutBradescoCNAB400Envio.txg.xml"), ITAU_400_Envio("341", false, "/layouts/LayoutItauCNAB400Envio.txg.xml"), BB_240_Envio("001", false, "/layouts/LayoutBBCNAB240Envio.txg.xml"), + SICOOB_240_Envio("756", false, "/layouts/LayoutSicoobCNAB240Envio.txg.xml"), SANTANDER_400_Envio("033", false, "/layouts/LayoutSantanderCNAB400Envio.txg.xml"), MERCANTIL_400_Envio("389", false, "/layouts/LayoutMercantilCNAB400Envio.txg.xml"), SANTANDER_400_Retorno("033", true, "/layouts/LayoutSantanderCNAB400Retorno.txg.xml"), diff --git a/src/com/rjconsultores/ventaboletos/enuns/CarteiraSicoob.java b/src/com/rjconsultores/ventaboletos/enuns/CarteiraSicoob.java new file mode 100644 index 000000000..17b1b35d3 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enuns/CarteiraSicoob.java @@ -0,0 +1,41 @@ +package com.rjconsultores.ventaboletos.enuns; + +public enum CarteiraSicoob { + + ELETRONICA_REGISTRO(1,"ELETRÔNICA COM REGISTRO"), + CAUCIONADA_ELETRONICA(3,"CAUCIONADA ELETRÔNICA"), + COBRANÇA_SEM_REGISTRO(4,"COBRANÇA SEM REGISTRO"), + RAPIDA_COM_REGISTRO(5,"RÁPIDA COM REGISTRO"), //(BLOQUETE EMITIDO PELO CLIENTE) + CAUCIONADA_RAPIDA(6,"CAUCIONADA RAPIDA"), + DESCONTADA_ELETRONICA(7,"DESCONTADA ELETRÔNICA"); + + private CarteiraSicoob(Integer id, String label){ + this.id = id; + this.label = label; + } + + private Integer id; + private String label; + + public Integer getId() { + return id; + } + + public String getLabel() { + return label; + } + + public static CarteiraSicoob getInstance(String id){ + + for(CarteiraSicoob o : CarteiraSicoob.values()){ + + if(o.getId().equals(id)){ + return o; + + } + } + + return null; + + } +} diff --git a/src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java b/src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java index 632bb5a9d..1d4b27ee9 100644 --- a/src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java +++ b/src/com/rjconsultores/ventaboletos/layouts/CNABFactory.java @@ -18,6 +18,8 @@ public class CNABFactory { return new ItauFlatFile(); case BB_240_Envio: return new BancoBrasilFlatFile(); + case SICOOB_240_Envio: + return new SicoobFlatFile(); default: break; } diff --git a/src/com/rjconsultores/ventaboletos/layouts/SicoobFlatFile.java b/src/com/rjconsultores/ventaboletos/layouts/SicoobFlatFile.java new file mode 100644 index 000000000..36d5d92b5 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/layouts/SicoobFlatFile.java @@ -0,0 +1,197 @@ +package com.rjconsultores.ventaboletos.layouts; + +import java.util.Collection; +import java.util.List; + +import org.jrimum.texgit.Record; + +import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa; +import com.rjconsultores.ventaboletos.blocos.CabecalhoRetorno; +import com.rjconsultores.ventaboletos.blocos.DadosBoleto; +import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio; +import com.rjconsultores.ventaboletos.blocos.DetalheRetorno; +import com.rjconsultores.ventaboletos.blocos.RateioDeCredito; +import com.rjconsultores.ventaboletos.blocos.RodapeRemessa; +import com.rjconsultores.ventaboletos.blocos.RodapeRetorno; +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.enuns.BancoLayout; +import com.rjconsultores.ventaboletos.utils.FormataUtil; + +public class SicoobFlatFile extends AbstractFlatFile implements RemessaInterface { + + public SicoobFlatFile() { + super(BancoLayout.SICOOB_240_Envio); + } + + @Override + protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) { + + Record header = getFlatFile().createRecord("HeaderArquivo"); + + CabecalhoRemessaSicoob cabecalhoRemessa = (CabecalhoRemessaSicoob) cabecalhoRemessaParam; + + header.setValue("CpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getCpfCnpj().toString(), 1)); + header.setValue("NumCpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumCpfCnpj(), 14)); + header.setValue("NumAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumAgencia(), 5)); + header.setValue("DigAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getDigAgencia(), 1)); + header.setValue("NumContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNumContaCorrente(), 12)); + header.setValue("DigContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getDigContaCorrente(), 1)); + header.setValue("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoRemessa.getNomeEmpresa(), 30)); + header.setValue("NumeroRemessa", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoRemessa.getNumRemessa().toString(), 8)); + header.setValue("DataGeracao", FormataUtil.formataDataToString(cabecalhoRemessa.getDataGravacao(), "000000", "ddMMyy")); + header.setValue("HoraGeracao", FormataUtil.formataDataToString(cabecalhoRemessa.getDataGravacao(), "000000", "HHmmss")); + + getFlatFile().addRecord(header); + + createHeaderLote(cabecalhoRemessa.getCabecalhoLoteRemessaSicoob()); + } + + private void createHeaderLote(CabecalhoLoteRemessaSicoob cabecalhoLote) { + + Record header = getFlatFile().createRecord("HeaderLote"); + + if(cabecalhoLote.getLoteServico() != null){ + header.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoLote.getLoteServico().toString(), 4)); + } + + header.setValue("NumCpfCnpj", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumCpfCnpj(), 15)); + header.setValue("NumAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumAgencia(), 5)); + header.setValue("DigAgencia", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getDigAgencia(), 1)); + header.setValue("NumContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNumContaCorrente(), 12)); + header.setValue("DigContaCorrente", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getDigContaCorrente(), 1)); + header.setValue("NomeEmpresa", FormataUtil.formatarValorPorTamanho(cabecalhoLote.getNomeEmpresa(), 30)); + header.setValue("NumeroRemessa", FormataUtil.formatarValorPorTamanhoZeroEsquerda(cabecalhoLote.getNumeroRemessa().toString(), 8)); + header.setValue("DataGeracao", FormataUtil.formataData(cabecalhoLote.getDataGeracao())); + header.setValue("DataCredito", FormataUtil.formataData(cabecalhoLote.getDataCredito())); + + getFlatFile().addRecord(header); + } + + @Override + protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) { + + Record transacaoTitulos = getFlatFile().createRecord("SegmentoP"); + + DetalheObrigatorioSicoob dadosTitulos = (DetalheObrigatorioSicoob) tituloParam; + + if(dadosTitulos.getLoteServico() != null){ + transacaoTitulos.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulos.getLoteServico().toString(), 4)); + } + transacaoTitulos.setValue("NumSeqRegistro", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulos.getNumSeqRegistro().toString(), 5)); + transacaoTitulos.setValue("NumAgencia", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNumAgencia(), 5)); + transacaoTitulos.setValue("DigAgencia", FormataUtil.formatarValorPorTamanho(dadosTitulos.getDigAgencia(), 1)); + transacaoTitulos.setValue("NumContaCorrente", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNumContaCorrente(), 12)); + transacaoTitulos.setValue("DigContaCorrente", FormataUtil.formatarValorPorTamanho(dadosTitulos.getDigContaCorrente(), 1)); + transacaoTitulos.setValue("NossoNumero", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNossoNumero(), 20)); + transacaoTitulos.setValue("NumeroDoDocumento", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNumeroDoDocumento(), 15)); + transacaoTitulos.setValue("Vencimento", FormataUtil.formataData(dadosTitulos.getVencimento())); + transacaoTitulos.setValue("Valor", dadosTitulos.getValor()); + transacaoTitulos.setValue("Emissao", FormataUtil.formataData(dadosTitulos.getEmissao())); + transacaoTitulos.setValue("CodMora", FormataUtil.formatarValorPorTamanho(dadosTitulos.getCodMora().toString(), 1)); + transacaoTitulos.setValue("DataMora", FormataUtil.formataDataToString(dadosTitulos.getDataMora(), "00000000")); + transacaoTitulos.setValue("JurosDeMora", dadosTitulos.getJurosDeMora()); + transacaoTitulos.setValue("CodigoDesconto", FormataUtil.formatarValorPorTamanho(dadosTitulos.getCodigoDesconto().toString(), 1)); + transacaoTitulos.setValue("DataDesconto", FormataUtil.formataDataToString(dadosTitulos.getDataDesconto(), "00000000")); + transacaoTitulos.setValue("DescontoConcedido", dadosTitulos.getDescontoConcedido()); + transacaoTitulos.setValue("IOF_Devido", dadosTitulos.getIofDevido()); + transacaoTitulos.setValue("AbatimentoConcedido", dadosTitulos.getAbatimentoConcedido()); + transacaoTitulos.setValue("NossoNumeroEmp", FormataUtil.formatarValorPorTamanho(dadosTitulos.getNossoNumeroEmp(), 25)); + transacaoTitulos.setValue("CodigoProtesto", FormataUtil.formatarValorPorTamanho(dadosTitulos.getCodigoProtesto().toString(), 1)); + transacaoTitulos.setValue("DiasProtesto", FormataUtil.formatarValorPorTamanho(dadosTitulos.getDiasProtesto().toString(), 2)); + transacaoTitulos.setValue("NumeroContrato", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosTitulos.getNumeroContrato().toString(), 10)); + + getFlatFile().addRecord(transacaoTitulos); + createTransacaoTitulosSeguimentoQ(transacaoTitulos, dadosTitulos.getDetalheObrigatorioDadosPagadorSicoob()); + + } + + private void createTransacaoTitulosSeguimentoQ(Record recordFather, DetalheObrigatorioDadosPagadorSicoob dadosPagadorSicoobl) { + + Record transacaoTitulos = getFlatFile().createRecord("SegmentoQ"); + + if(dadosPagadorSicoobl.getLoteServico() != null){ + transacaoTitulos.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getLoteServico().toString(), 4)); + } + + transacaoTitulos.setValue("NumSeqRegistro", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getNumeroSequencialRegistro().toString(), 5)); + transacaoTitulos.setValue("TipoInscricaoSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getTipoInscricaoSacado().toString(), 1)); + transacaoTitulos.setValue("NumeroInscricaoSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getNumeroInscricaoSacado(), 15)); + transacaoTitulos.setValue("NomeSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getNomeSacado(), 40)); + transacaoTitulos.setValue("LogradouroSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getLogradouroSacado(), 40)); + transacaoTitulos.setValue("BairroSacado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getBairroSacado(), 15)); + transacaoTitulos.setValue("CepSacado", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getCepSacado().toString(), 5)); + transacaoTitulos.setValue("SufixoCep", FormataUtil.formatarValorPorTamanhoZeroEsquerda(dadosPagadorSicoobl.getSufixoCep().toString(), 3)); + transacaoTitulos.setValue("Cidade", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getCidade(), 15)); + transacaoTitulos.setValue("Estado", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getEstado(), 2)); + + try{ + transacaoTitulos.setValue("CodBancoCorresp", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getCodBancoCorresp().toString(), 3)); + }catch(Exception e){ + + } + transacaoTitulos.setValue("NossoNumeroNoBancoCorresp", FormataUtil.formatarValorPorTamanho(dadosPagadorSicoobl.getNossoNumeroNoBancoCorresp(), 20)); + + recordFather.addInnerRecord(transacaoTitulos); + } + + @Override + protected void createTrailler(RodapeRemessa trailler){ + + RodapeRemessaSicoob rodapeRemessaSicoob = (RodapeRemessaSicoob) trailler; + + createTraillerLote(rodapeRemessaSicoob.getRodapeRemessaLoteSicoob()); + + Record traillerArquivo = getFlatFile().createRecord("TraillerArquivo"); + + traillerArquivo.setValue("QtdLotes", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaSicoob.getQtdLotes().toString(), 6)); + traillerArquivo.setValue("QtdArquivos", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaSicoob.getQtdArquivos().toString(), 6)); + traillerArquivo.setValue("QtdContas", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaSicoob.getQtdContas().toString(), 6)); + + getFlatFile().addRecord(traillerArquivo); + } + + private void createTraillerLote(RodapeRemessaLoteSicoob rodapeRemessaLoteSicoob) { + + + Record traillerArquivo = getFlatFile().createRecord("TraillerLote"); + + if(rodapeRemessaLoteSicoob.getLoteServico() != null){ + traillerArquivo.setValue("LoteServico", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteSicoob.getLoteServico().toString(), 4)); + } + + traillerArquivo.setValue("QtdTitulosSimples", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteSicoob.getQtdRegistros().toString(), 6)); + traillerArquivo.setValue("ValorTitulosSimples", FormataUtil.formatarValorPorTamanhoZeroEsquerda(rodapeRemessaLoteSicoob.getValorRegistros().toString(), 15) ); + + getFlatFile().addRecord(traillerArquivo); + } + + @Override + protected CabecalhoRetorno readHeader(Record header) { + throw new UnsupportedOperationException("Somente classe de Retorno."); + } + + @Override + protected List readTransacaoTitulos(Collection registrosDeTransacoes) { + throw new UnsupportedOperationException("Somente classe de Retorno."); + } + + @Override + protected RodapeRetorno readTrailler(Record trailler) { + throw new UnsupportedOperationException("Somente classe de Retorno."); + } + + @Override + protected Record createDadosBoletos(DadosBoleto boleto) { + throw new UnsupportedOperationException("Não necessário..."); + } + + @Override + protected Record createRateioDeCredito(RateioDeCredito rateioDeCredito) { + throw new UnsupportedOperationException("Não necessário..."); + } +} diff --git a/src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java b/src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java index 655b6b878..99c1c864b 100644 --- a/src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java +++ b/src/com/rjconsultores/ventaboletos/utils/NossoNumeroUtils.java @@ -34,6 +34,10 @@ public class NossoNumeroUtils { return StringUtils.right("0000000" + nossoNumero, 7)+dacSantander( nossoNumero.toString() ); } + public static String calcularNossoNumeroSicoob(Integer numCooperativa, Integer codCliente, BigInteger nossoNumero){ + return StringUtils.right("00000000" + nossoNumero, 8)+dacSicoob(numCooperativa, codCliente, nossoNumero.toString() ); + } + public static String calcularNossoNumeroMercantil(Integer agencia, BigInteger nossoNumero){ return StringUtils.right("0000000000" + nossoNumero, 10)+dacMercantil( agencia, nossoNumero ); } @@ -104,6 +108,37 @@ public class NossoNumeroUtils { } + public static String dacSicoob(Integer numCooperativa, Integer codCliente, String nossoNumero){ + + int multiplicadores[] = {3,1,9,7,3,1,9,7,3,1,9,7,3,1,9,7,3,1,9,7,3}; + int multiplicandos[] = new int[21]; + + String cooperativa = StringUtils.right("0000" + numCooperativa, 4); + String cliente = StringUtils.right("0000000000" + codCliente, 10); + String nNumero = StringUtils.right("0000000" + nossoNumero, 7); + + String base = cooperativa + cliente + nNumero; + + for (int i = 0; i < multiplicandos.length; i++) { + String d = base.charAt(i) + ""; + multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i]; + } + + int dac = 0; + + for(Integer v : multiplicandos){ + dac += v; + } + + dac = dac % 11; + + if( dac == 0 || dac == 1) + return "0"; + + return (11 - dac) + ""; + + } + public static String dacMercantil(Integer agencia, BigInteger nossoNumero){ int multiplicadores[] = {7,6,5,4,3,2,9,8,7,6,5,4,3,2}; @@ -302,6 +337,10 @@ public class NossoNumeroUtils { return Boolean.TRUE; } + if(BancoLayout.SICOOB_240_Envio.equals(bancoLayout) && nossoNumero.length() == 10 ){ + return Boolean.TRUE; + } + return Boolean.FALSE; } diff --git a/src/layouts/LayoutSicoobCNAB240Envio.txg.xml b/src/layouts/LayoutSicoobCNAB240Envio.txg.xml new file mode 100644 index 000000000..605e3ac38 --- /dev/null +++ b/src/layouts/LayoutSicoobCNAB240Envio.txg.xml @@ -0,0 +1,181 @@ + + + + Arquivo-Remessa_SicoobCNAB240 + Version 01, Published: 2020/03/18 + + Layout para Cobrança. + Arquivo texto - padrão CNAB Meio de Registro Transmissão de Dados Descrição de Registro - Tamanho 240 Bytes + Organização Sequencial ARQUIVO FORMATO CNAB REMESSA, + REGISTROS: + 0 - Header do Arquivo + 1 - Header do Lote + 3 - Segmento P + 3 - Segmento Q + 5 - Trailler Lote + 9 - Trailler Arquivo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file