fixes bug#20438

dev: Valdir
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/GeneradorBoletosCNAB/trunk@104722 d1611594-4594-4d17-8e1d-87c2c4800839
master
fabio 2020-12-15 13:28:50 +00:00
parent b59fb7b7c7
commit 9ccd275805
13 changed files with 1425 additions and 0 deletions

View File

@ -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<DetalheObrigatorio>();
}
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;
}
}

View File

@ -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
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -4,6 +4,7 @@ public enum BancoLayout {
BRADESCO_400_Envio("237", false, "/layouts/LayoutBradescoCNAB400Envio.txg.xml"), BRADESCO_400_Envio("237", false, "/layouts/LayoutBradescoCNAB400Envio.txg.xml"),
ITAU_400_Envio("341", false, "/layouts/LayoutItauCNAB400Envio.txg.xml"), ITAU_400_Envio("341", false, "/layouts/LayoutItauCNAB400Envio.txg.xml"),
BB_240_Envio("001", false, "/layouts/LayoutBBCNAB240Envio.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"), SANTANDER_400_Envio("033", false, "/layouts/LayoutSantanderCNAB400Envio.txg.xml"),
MERCANTIL_400_Envio("389", false, "/layouts/LayoutMercantilCNAB400Envio.txg.xml"), MERCANTIL_400_Envio("389", false, "/layouts/LayoutMercantilCNAB400Envio.txg.xml"),
SANTANDER_400_Retorno("033", true, "/layouts/LayoutSantanderCNAB400Retorno.txg.xml"), SANTANDER_400_Retorno("033", true, "/layouts/LayoutSantanderCNAB400Retorno.txg.xml"),

View File

@ -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;
}
}

View File

@ -18,6 +18,8 @@ public class CNABFactory {
return new ItauFlatFile(); return new ItauFlatFile();
case BB_240_Envio: case BB_240_Envio:
return new BancoBrasilFlatFile(); return new BancoBrasilFlatFile();
case SICOOB_240_Envio:
return new SicoobFlatFile();
default: default:
break; break;
} }

View File

@ -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<DetalheRetorno> readTransacaoTitulos(Collection<Record> 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...");
}
}

View File

@ -34,6 +34,10 @@ public class NossoNumeroUtils {
return StringUtils.right("0000000" + nossoNumero, 7)+dacSantander( nossoNumero.toString() ); 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){ public static String calcularNossoNumeroMercantil(Integer agencia, BigInteger nossoNumero){
return StringUtils.right("0000000000" + nossoNumero, 10)+dacMercantil( agencia, 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){ public static String dacMercantil(Integer agencia, BigInteger nossoNumero){
int multiplicadores[] = {7,6,5,4,3,2,9,8,7,6,5,4,3,2}; 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; return Boolean.TRUE;
} }
if(BancoLayout.SICOOB_240_Envio.equals(bancoLayout) && nossoNumero.length() == 10 ){
return Boolean.TRUE;
}
return Boolean.FALSE; return Boolean.FALSE;
} }

View File

@ -0,0 +1,181 @@
<txg:Texgit xmlns:txg="http://gilmatryx.googlepages.com/Texgit" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://gilmatryx.googlepages.com/Texgit file:////home/gilmar/NFM/WORKSPACE/TexgitSchema.xsd" version="1.0-academic">
<FlatFile>
<layout>
<name>Arquivo-Remessa_SicoobCNAB240</name>
<version>Version 01, Published: 2020/03/18</version>
<description>
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
</description>
</layout>
<GroupOfRecords>
<Record name="HeaderArquivo" description="Header do arquivo">
<GroupOfFields>
<IdType name="CodComp" value="756" length="3" position="1"/>
<Field name="LoteServico" value="0000" length="4" padding="ZERO_LEFT"/>
<Field name="TipoRegistro" value="0" length="1"/>
<Field name="CNAB" length="9" blankAccepted="true"/>
<Field name="CpfCnpj" length="1" type="INTEGER"/>
<Field name="NumCpfCnpj" length="14" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="NumConvenio" length="20" blankAccepted="true"/>
<Field name="NumAgencia" length="5" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="DigAgencia" length="1" type="CHARACTER"/>
<Field name="NumContaCorrente" length="12" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="DigContaCorrente" length="1" type="CHARACTER"/>
<Field name="DigAgenciaConta" length="1" value="0" />
<Field name="NomeEmpresa" length="30" type="CHARACTER" />
<Field name="NomeBanco" length="30" type="CHARACTER" value="SICOOB" />
<Field name="Brancos3" length="10" blankAccepted="true"/>
<Field name="RemessaRetorno" value="1" type="INTEGER" length="1"/>
<Field name="DataGeracao" length="8" type="DATE" format="DATE_DDMMYYYY" padding="ZERO_LEFT"/>
<Field name="HoraGeracao" length="6" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="NumRemessa" type="INTEGER" length="6" padding="ZERO_LEFT"/>
<Field name="NumeroVersaoLayout" length="3" value="081"/>
<Field name="DensidadeArquivo" length="5" value="00000"/>
<Field name="Brancos4" length="20" blankAccepted="true"/>
<Field name="Brancos5" length="20" blankAccepted="true"/>
<Field name="Brancos6" length="29" blankAccepted="true"/>
</GroupOfFields>
</Record>
<Record name="HeaderLote" description="Header do lote">
<GroupOfFields>
<IdType name="CodComp" value="756" length="3" position="1"/>
<Field name="LoteServico" value="0001" length="4" padding="ZERO_LEFT"/>
<Field name="TipoRegistro" value="1" length="1"/>
<Field name="TipoOperacao" value="R" length="1"/>
<Field name="TipoServico" value="01" length="2"/>
<Field name="UsoExclusivo" length="2" blankAccepted="true"/>
<Field name="NumeroVersaoLote" length="3" value="040" blankAccepted="true"/>
<Field name="UsoExclusivo1" length="1" blankAccepted="true"/>
<Field name="CpfCnpj" length="2" type="INTEGER"/>
<Field name="NumCpfCnpj" length="15" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="NumConvenio" length="20" blankAccepted="true"/>
<Field name="NumAgencia" length="5" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="DigAgencia" length="1" type="CHARACTER"/>
<Field name="NumContaCorrente" length="12" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="DigContaCorrente" length="1" type="CHARACTER"/>
<Field name="DigAgenciaConta" length="1" blankAccepted="true"/>
<Field name="NomeEmpresa" length="30" type="CHARACTER"/>
<Field name="Mensagem1" length="40" blankAccepted="true"/>
<Field name="Mensagem2" length="40" blankAccepted="true"/>
<Field name="NumeroRemessa" length="8" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="DataGeracao" length="8" type="DATE" format="DATE_DDMMYYYY" padding="ZERO_LEFT"/>
<Field name="DataCredito" length="8" type="DATE" format="DATE_DDMMYYYY" padding="ZERO_LEFT" blankAccepted="true"/>
<Field name="UsoExclusivo2" length="33" type="CHARACTER" blankAccepted="true"/>
</GroupOfFields>
</Record>
<Record name="SegmentoP" repeatable="true" description="Dados do título">
<GroupOfFields>
<IdType name="IDReg" value="756" length="3" position="1"/>
<Field name="LoteServico" value="0001" length="4" padding="ZERO_LEFT"/>
<Field name="TipoRegistro" value="3" length="1"/>
<Field name="NumSeqRegistro" type="INTEGER" length="5" padding="ZERO_LEFT"/>
<Field name="CodSegmento" length="1" value="P"/>
<Field name="Brancos1" length="1" value=" " blankAccepted="true"/>
<Field name="CodigoMovimento" length="2" value="01"/>
<Field name="NumAgencia" length="5" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="DigAgencia" length="1" type="CHARACTER"/>
<Field name="NumContaCorrente" length="12" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="DigContaCorrente" length="1" type="CHARACTER"/>
<Field name="DigAgenciaConta" length="1" blankAccepted="true"/>
<Field name="NossoNumero" length="20" type="CHARACTER"/>
<Field name="CodCarteira" length="1" type="INTEGER" value="7"/>
<Field name="Cadastramento" length="1" value="0"/>
<Field name="TipoDocumento" length="1" blankAccepted="true"/>
<Field name="IdentEmissaoBloqueto" length="1" value="2"/>
<Field name="IdentDistribuicao" length="1" value="2"/>
<Field name="NumeroDoDocumento" length="15" type="CHARACTER"/>
<Field name="Vencimento" length="8" type="DATE" format="DATE_DDMMYYYY" padding="ZERO_LEFT"/>
<Field name="Valor" length="15" type="BIGDECIMAL" value="0" format="DECIMAL_DD" padding="ZERO_LEFT"/>
<Field name="AgenciaCobradora" length="5" value="00000" padding="ZERO_LEFT"/>
<Field name="DigAgenciaCobradora" value=" " length="1" blankAccepted="true"/>
<Field name="EspecieDeTitulo" length="2" padding="ZERO_LEFT" value="02"/>
<Field name="Aceite" length="1" type="CHARACTER" value="N"/>
<Field name="Emissao" length="8" type="DATE" format="DATE_DDMMYYYY" padding="ZERO_LEFT"/>
<Field name="CodMora" length="1" type="INTEGER"/>
<Field name="DataMora" length="8" type="DATE" format="DATE_DDMMYYYY" padding="ZERO_LEFT"/>
<Field name="JurosDeMora" type="BIGDECIMAL" length="15" value="0" format="DECIMAL_DD" padding="ZERO_LEFT"/>
<Field name="CodigoDesconto" type="INTEGER" length="1" value="0"/>
<Field name="DataDesconto" length="8" type="CHARACTER" padding="ZERO_LEFT"/>
<Field name="DescontoConcedido" type="BIGDECIMAL" length="15" value="0" format="DECIMAL_DD" padding="ZERO_LEFT"/>
<Field name="IOF_Devido" type="BIGDECIMAL" length="15" value="0" format="DECIMAL_DD" padding="ZERO_LEFT"/>
<Field name="AbatimentoConcedido" type="BIGDECIMAL" length="15" value="0" format="DECIMAL_DD" padding="ZERO_LEFT"/>
<Field name="NossoNumeroEmp" type="CHARACTER" length="25"/>
<Field name="CodigoProtesto" length="1" type="INTEGER" padding="ZERO_LEFT" value="3"/>
<Field name="DiasProtesto" length="2" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="CodigoBaixa" length="1" type="INTEGER" value="0"/>
<Field name="DiasBaixa" length="3" type="INTEGER" blankAccepted="true" />
<Field name="Moeda" length="2" type="INTEGER" value="09" padding="ZERO_LEFT"/>
<Field name="NumeroContrato" length="10" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="UsoExclusivo" length="1" blankAccepted="true"/>
</GroupOfFields>
<GroupOfInnerRecords>
<Record name="SegmentoQ" repeatable="true" description="Dados do Pagador">
<GroupOfFields>
<IdType name="IDReg" value="756" length="3" position="1"/>
<Field name="LoteServico" value="0001" length="4" padding="ZERO_LEFT"/>
<Field name="TipoRegistro" value="3" length="1"/>
<Field name="NumSeqRegistro" type="INTEGER" length="5" padding="ZERO_LEFT"/>
<Field name="CodSegmento" length="1" value="Q"/>
<Field name="Brancos1" length="1" value=" " blankAccepted="true"/>
<Field name="CodigoRemessa" length="2" value="01"/>
<Field name="TipoInscricaoSacado" length="2" type="INTEGER"/>
<Field name="NumeroInscricaoSacado" length="15" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="NomeSacado" length="40" type="CHARACTER"/>
<Field name="LogradouroSacado" length="40" type="CHARACTER"/>
<Field name="BairroSacado" length="15" type="CHARACTER"/>
<Field name="CepSacado" length="5" type="INTEGER"/>
<Field name="SufixoCep" length="3" type="INTEGER"/>
<Field name="Cidade" length="15" type="CHARACTER"/>
<Field name="Estado" length="2" type="CHARACTER"/>
<Field name="TipoSacadorAvalista" length="1" value="0"/>
<Field name="SacadorAvalista" length="15" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="NomeSacadorAvalista" length="40" type="CHARACTER"/>
<Field name="CodBancoCorresp" length="3" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="NossoNumeroNoBancoCorresp" length="20"/>
<Field name="UsoExclusivo" length="8"/>
</GroupOfFields>
</Record>
</GroupOfInnerRecords>
</Record>
<Record name="TraillerLote">
<GroupOfFields>
<IdType name="CodComp" value="756" length="3" position="1"/>
<Field name="LoteServico" value="0001" length="4" padding="ZERO_LEFT"/>
<Field name="TipoRegistro" value="5" length="1"/>
<Field name="CNAB" length="9" blankAccepted="true"/>
<Field name="QtdTitulosSimples" length="6" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="ValorTitulosSimples" length="15" type="BIGDECIMAL" value="0" format="DECIMAL_DD" padding="ZERO_LEFT"/>
<Field name="QtdTitulosVinculada" length="6" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="ValorTitulosVinculada" length="15" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="QtdTitulosCaucionada" length="6" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="ValorTitulosCaucionada" length="15" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="QtdTitulosDescontada" length="6" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="ValorTitulosDescontada" length="15" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="UsoExclusivo1" length="8" blankAccepted="true"/>
<Field name="UsoExclusivo2" length="217" blankAccepted="true"/>
</GroupOfFields>
</Record>
<Record name="TraillerArquivo">
<GroupOfFields>
<IdType name="IDReg" value="756" length="3" position="1"/>
<Field name="LoteServico" value="9999" length="4"/>
<Field name="TipoRegistro" value="9" length="1"/>
<Field name="UsoExclusivo1" length="9" blankAccepted="true"/>
<Field name="QtdLotes" length="6" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="QtdArquivos" length="6" type="INTEGER" padding="ZERO_LEFT"/>
<Field name="QtdContas" length="6" value="000000" />
<Field name="UsoExclusivo2" length="205"/>
</GroupOfFields>
</Record>
</GroupOfRecords>
</FlatFile>
</txg:Texgit>