Implementação do banco SAFRA feat bug#AL-3376
parent
30b65b7754
commit
087bfe0ce1
6
pom.xml
6
pom.xml
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<groupId>br.com.rjconsultores</groupId>
|
<groupId>br.com.rjconsultores</groupId>
|
||||||
<artifactId>GeneradorBoletosCNAB</artifactId>
|
<artifactId>GeneradorBoletosCNAB</artifactId>
|
||||||
<version>1.4.1</version>
|
<version>1.5.0</version>
|
||||||
<name>GeneradorBoletosCNAB</name>
|
<name>GeneradorBoletosCNAB</name>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
|
@ -57,8 +57,8 @@
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>br.com.rjconsultores</groupId>
|
<groupId>br.com.rjconsultores</groupId>
|
||||||
<artifactId>jrimum-texgit</artifactId>
|
<artifactId>jrimum-bopepo</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.1.0</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>sun-jaxb-rj</groupId>
|
<groupId>sun-jaxb-rj</groupId>
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio;
|
import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio;
|
||||||
import com.rjconsultores.ventaboletos.enuns.AceiteBB;
|
import com.rjconsultores.ventaboletos.enuns.Aceite;
|
||||||
|
|
||||||
public class DetalheObrigatorioDadosTitulosBancoBrasil implements DetalheObrigatorio, Cloneable {
|
public class DetalheObrigatorioDadosTitulosBancoBrasil implements DetalheObrigatorio, Cloneable {
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ public class DetalheObrigatorioDadosTitulosBancoBrasil implements DetalheObrigat
|
||||||
private BigDecimal valor;
|
private BigDecimal valor;
|
||||||
private String agenciaCobradora;
|
private String agenciaCobradora;
|
||||||
private String digAgenciaCobradora;
|
private String digAgenciaCobradora;
|
||||||
private AceiteBB aceite;
|
private Aceite aceite;
|
||||||
private Date emissao;
|
private Date emissao;
|
||||||
private Integer codMora;
|
private Integer codMora;
|
||||||
private Date dataMora;
|
private Date dataMora;
|
||||||
|
@ -195,11 +195,11 @@ public class DetalheObrigatorioDadosTitulosBancoBrasil implements DetalheObrigat
|
||||||
this.digAgenciaCobradora = digAgenciaCobradora;
|
this.digAgenciaCobradora = digAgenciaCobradora;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AceiteBB getAceite() {
|
public Aceite getAceite() {
|
||||||
return aceite;
|
return aceite;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAceite(AceiteBB aceite) {
|
public void setAceite(Aceite aceite) {
|
||||||
this.aceite = aceite;
|
this.aceite = aceite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ package com.rjconsultores.ventaboletos.blocos.bancobrasil;
|
||||||
import com.rjconsultores.ventaboletos.blocos.RodapeRemessa;
|
import com.rjconsultores.ventaboletos.blocos.RodapeRemessa;
|
||||||
import com.rjconsultores.ventaboletos.blocos.RodapeRemessaPadrao;
|
import com.rjconsultores.ventaboletos.blocos.RodapeRemessaPadrao;
|
||||||
|
|
||||||
public class RodapeRemessaBancoBrasil extends RodapeRemessaPadrao implements RodapeRemessa {
|
public class RodapeRemessaBancoBrasil extends RodapeRemessaPadrao {
|
||||||
|
|
||||||
private Integer loteServico;
|
private Integer loteServico;
|
||||||
private Integer qtdLotes;
|
private Integer qtdLotes;
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.rjconsultores.ventaboletos.blocos.safra;
|
||||||
|
|
||||||
|
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 ArquivoRemessaSafra extends ArquivoRemessaItem {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCabecalhoRemessa(CabecalhoRemessa cabecalhoRemessa) {
|
||||||
|
|
||||||
|
if(cabecalhoRemessa instanceof CabecalhoRemessaSafra){
|
||||||
|
super.setCabecalhoRemessa(cabecalhoRemessa);
|
||||||
|
}else{
|
||||||
|
throw new ClassCastException("Somente cabecalho tipo: " + CabecalhoRemessaSafra.class.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addTitulo(DetalheObrigatorio titulo){
|
||||||
|
if(this.titulos == null){
|
||||||
|
this.titulos = new ArrayList<DetalheObrigatorio>();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(titulo instanceof DetalheObrigatorioSafra){
|
||||||
|
titulo.setNumeroSequencialRegistro(titulos.size() + 2);
|
||||||
|
this.titulos.add(titulo);
|
||||||
|
}else{
|
||||||
|
throw new ClassCastException("Somente cabecalho tipo: " + DetalheObrigatorioSafra.class.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RodapeRemessa getRodapeRemessa() {
|
||||||
|
this.rodapeRemessa = this.rodapeRemessa == null ? new RodapeRemessaSafra() : this.rodapeRemessa;
|
||||||
|
return rodapeRemessa;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package com.rjconsultores.ventaboletos.blocos.safra;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.blocos.CabecalhoRemessa;
|
||||||
|
|
||||||
|
public class CabecalhoRemessaSafra implements CabecalhoRemessa {
|
||||||
|
|
||||||
|
private String numAgencia;
|
||||||
|
private String numContaCorrente;
|
||||||
|
private String digContaCorrente;
|
||||||
|
private String nomeEmpresa;
|
||||||
|
private Date dataGravacao;
|
||||||
|
private Integer numeroSequencialRemessa;
|
||||||
|
private Integer numeroSequencialRegistro;
|
||||||
|
|
||||||
|
public String getNumAgencia() {
|
||||||
|
return numAgencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumAgencia(String numAgencia) {
|
||||||
|
this.numAgencia = numAgencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,319 @@
|
||||||
|
package com.rjconsultores.ventaboletos.blocos.safra;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio;
|
||||||
|
import com.rjconsultores.ventaboletos.enuns.Aceite;
|
||||||
|
import com.rjconsultores.ventaboletos.enuns.TipoInscricaoPagador;
|
||||||
|
|
||||||
|
public class DetalheObrigatorioSafra implements DetalheObrigatorio{
|
||||||
|
|
||||||
|
private Integer idBoletoFechamento;
|
||||||
|
private Integer cpfCnpj;
|
||||||
|
private String numCpfCnpj;
|
||||||
|
private String numAgencia;
|
||||||
|
private String numContaCorrente;
|
||||||
|
private String digContaCorrente;
|
||||||
|
private String nossoNumero;
|
||||||
|
private Date vencimento;
|
||||||
|
private BigDecimal valor;
|
||||||
|
private String agenciaCobradora;
|
||||||
|
private String especieDeTitulo;
|
||||||
|
private Aceite aceite;
|
||||||
|
private Date dataEmissao;
|
||||||
|
private String instrucao1;
|
||||||
|
private String instrucao2;
|
||||||
|
private BigDecimal jurosDeMora;
|
||||||
|
private Date dataMulta;
|
||||||
|
private BigDecimal percMulta;
|
||||||
|
private Date dataLimiteDesconto;
|
||||||
|
private BigDecimal valorDesconto = BigDecimal.ZERO;
|
||||||
|
private BigDecimal valorIOF = BigDecimal.ZERO;
|
||||||
|
private BigDecimal valorAbatimentoConcedido = BigDecimal.ZERO;
|
||||||
|
private TipoInscricaoPagador tipoInscricaoPagador;
|
||||||
|
private String numeroInscricaoPagador;
|
||||||
|
private String nomePagador;
|
||||||
|
private String enderecoPagador;
|
||||||
|
private String bairroPagador;
|
||||||
|
private String mensagem1;
|
||||||
|
private String cepPagador;
|
||||||
|
private String cidadePagador;
|
||||||
|
private String estadoPagador;
|
||||||
|
private String sacadorAvalista;
|
||||||
|
private Integer numeroSequencialRemessa;
|
||||||
|
private Integer numeroSequencialRegistro;
|
||||||
|
|
||||||
|
public Integer getIdBoletoFechamento() {
|
||||||
|
return idBoletoFechamento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdBoletoFechamento(Integer idBoletoFechamento) {
|
||||||
|
this.idBoletoFechamento = idBoletoFechamento;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 getNumAgencia() {
|
||||||
|
return numAgencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumAgencia(String numAgencia) {
|
||||||
|
this.numAgencia = numAgencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 getNossoNumero() {
|
||||||
|
return nossoNumero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNossoNumero(String nossoNumero) {
|
||||||
|
this.nossoNumero = nossoNumero;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 getEspecieDeTitulo() {
|
||||||
|
return especieDeTitulo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEspecieDeTitulo(String especieDeTitulo) {
|
||||||
|
this.especieDeTitulo = especieDeTitulo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Aceite getAceite() {
|
||||||
|
return aceite;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAceite(Aceite aceite) {
|
||||||
|
this.aceite = aceite;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDataEmissao() {
|
||||||
|
return dataEmissao;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataEmissao(Date dataEmissao) {
|
||||||
|
this.dataEmissao = dataEmissao;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstrucao1() {
|
||||||
|
return instrucao1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstrucao1(String instrucao1) {
|
||||||
|
this.instrucao1 = instrucao1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstrucao2() {
|
||||||
|
return instrucao2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstrucao2(String instrucao2) {
|
||||||
|
this.instrucao2 = instrucao2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getJurosDeMora() {
|
||||||
|
return jurosDeMora;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setJurosDeMora(BigDecimal jurosDeMora) {
|
||||||
|
this.jurosDeMora = jurosDeMora;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDataMulta() {
|
||||||
|
return dataMulta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataMulta(Date dataMulta) {
|
||||||
|
this.dataMulta = dataMulta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getPercMulta() {
|
||||||
|
return percMulta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPercMulta(BigDecimal percMulta) {
|
||||||
|
this.percMulta = percMulta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDataLimiteDesconto() {
|
||||||
|
return dataLimiteDesconto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataLimiteDesconto(Date dataLimiteDesconto) {
|
||||||
|
this.dataLimiteDesconto = dataLimiteDesconto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getValorDesconto() {
|
||||||
|
return valorDesconto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValorDesconto(BigDecimal valorDesconto) {
|
||||||
|
this.valorDesconto = valorDesconto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getValorIOF() {
|
||||||
|
return valorIOF;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValorIOF(BigDecimal valorIOF) {
|
||||||
|
this.valorIOF = valorIOF;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getValorAbatimentoConcedido() {
|
||||||
|
return valorAbatimentoConcedido;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValorAbatimentoConcedido(BigDecimal valorAbatimentoConcedido) {
|
||||||
|
this.valorAbatimentoConcedido = valorAbatimentoConcedido;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TipoInscricaoPagador getTipoInscricaoPagador() {
|
||||||
|
return tipoInscricaoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTipoInscricaoPagador(TipoInscricaoPagador tipoInscricaoPagador) {
|
||||||
|
this.tipoInscricaoPagador = tipoInscricaoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNumeroInscricaoPagador() {
|
||||||
|
return numeroInscricaoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumeroInscricaoPagador(String numeroInscricaoPagador) {
|
||||||
|
this.numeroInscricaoPagador = numeroInscricaoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNomePagador() {
|
||||||
|
return nomePagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNomePagador(String nomePagador) {
|
||||||
|
this.nomePagador = nomePagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEnderecoPagador() {
|
||||||
|
return enderecoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnderecoPagador(String enderecoPagador) {
|
||||||
|
this.enderecoPagador = enderecoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBairroPagador() {
|
||||||
|
return bairroPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBairroPagador(String bairroPagador) {
|
||||||
|
this.bairroPagador = bairroPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMensagem1() {
|
||||||
|
return mensagem1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMensagem1(String mensagem1) {
|
||||||
|
this.mensagem1 = mensagem1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCepPagador() {
|
||||||
|
return cepPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCepPagador(String cepPagador) {
|
||||||
|
this.cepPagador = cepPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCidadePagador() {
|
||||||
|
return cidadePagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCidadePagador(String cidadePagador) {
|
||||||
|
this.cidadePagador = cidadePagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEstadoPagador() {
|
||||||
|
return estadoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEstadoPagador(String estadoPagador) {
|
||||||
|
this.estadoPagador = estadoPagador;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSacadorAvalista() {
|
||||||
|
return sacadorAvalista;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSacadorAvalista(String sacadorAvalista) {
|
||||||
|
this.sacadorAvalista = sacadorAvalista;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
package com.rjconsultores.ventaboletos.blocos.safra;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.blocos.DetalheRetorno;
|
||||||
|
import com.rjconsultores.ventaboletos.enuns.MotivoOcorrenciaBradesco;
|
||||||
|
import com.rjconsultores.ventaboletos.enuns.OcorrenciaBradesco;
|
||||||
|
|
||||||
|
public class DetalheRetornoSafra implements DetalheRetorno, Cloneable{
|
||||||
|
|
||||||
|
private String numeroControleDoParticipante;
|
||||||
|
private OcorrenciaBradesco ocorrencia;
|
||||||
|
private List<MotivoOcorrenciaBradesco> motivoOcorrencias;
|
||||||
|
private Integer idBoletoFechamento;
|
||||||
|
private String nossoNumero;
|
||||||
|
private String codigoOcorrencia;
|
||||||
|
private String dataBaixa;
|
||||||
|
private BigDecimal valorJuros;
|
||||||
|
private Integer numeroSequencialRegistro;
|
||||||
|
|
||||||
|
public String getNumeroControleDoParticipante() {
|
||||||
|
return numeroControleDoParticipante;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumeroControleDoParticipante(String numeroControleDoParticipante) {
|
||||||
|
this.numeroControleDoParticipante = numeroControleDoParticipante;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OcorrenciaBradesco getOcorrencia() {
|
||||||
|
return ocorrencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOcorrencia(OcorrenciaBradesco ocorrencia) {
|
||||||
|
this.ocorrencia = ocorrencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MotivoOcorrenciaBradesco> getMotivoOcorrencias() {
|
||||||
|
return motivoOcorrencias;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMotivoOcorrencia(MotivoOcorrenciaBradesco motivoOcorrencias) {
|
||||||
|
|
||||||
|
if(this.motivoOcorrencias == null){
|
||||||
|
this.motivoOcorrencias = new ArrayList<MotivoOcorrenciaBradesco>();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.motivoOcorrencias.add(motivoOcorrencias);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getIdBoletoFechamento() {
|
||||||
|
return idBoletoFechamento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdBoletoFechamento(Integer idBoletoFechamento) {
|
||||||
|
this.idBoletoFechamento = idBoletoFechamento;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNossoNumero() {
|
||||||
|
return nossoNumero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNossoNumero(String nossoNumero) {
|
||||||
|
this.nossoNumero = nossoNumero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getNumeroSequencialRegistro() {
|
||||||
|
return numeroSequencialRegistro;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) {
|
||||||
|
this.numeroSequencialRegistro = numeroSequencialRegistro;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMotivoOcorrencias(List<MotivoOcorrenciaBradesco> motivoOcorrencias) {
|
||||||
|
this.motivoOcorrencias = motivoOcorrencias;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodigoOcorrencia() {
|
||||||
|
return codigoOcorrencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCodigoOcorrencia(String codigoOcorrencia) {
|
||||||
|
this.codigoOcorrencia = codigoOcorrencia;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getValorJuros() {
|
||||||
|
return valorJuros;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValorJuros(BigDecimal valorJuros) {
|
||||||
|
this.valorJuros = valorJuros;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDataBaixa() {
|
||||||
|
return dataBaixa;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataBaixa(String dataBaixa) {
|
||||||
|
this.dataBaixa = dataBaixa;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.rjconsultores.ventaboletos.blocos.safra;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import com.rjconsultores.ventaboletos.blocos.RodapeRemessaPadrao;
|
||||||
|
|
||||||
|
public class RodapeRemessaSafra extends RodapeRemessaPadrao {
|
||||||
|
|
||||||
|
private Integer qtdTitulos;
|
||||||
|
private BigDecimal valorTotalTitulos;
|
||||||
|
private Integer numeroSequencialRemessa;
|
||||||
|
private Integer numeroSequencialRegistro;
|
||||||
|
|
||||||
|
public Integer getQtdTitulos() {
|
||||||
|
return qtdTitulos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQtdTitulos(Integer qtdTitulos) {
|
||||||
|
this.qtdTitulos = qtdTitulos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getValorTotalTitulos() {
|
||||||
|
return valorTotalTitulos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValorTotalTitulos(BigDecimal valorTotalTitulos) {
|
||||||
|
this.valorTotalTitulos = valorTotalTitulos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getNumeroSequencialRemessa() {
|
||||||
|
return numeroSequencialRemessa;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumeroSequencialRemessa(Integer numeroSequencialRemessa) {
|
||||||
|
this.numeroSequencialRemessa = numeroSequencialRemessa;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer getNumeroSequencialRegistro() {
|
||||||
|
return numeroSequencialRegistro;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setNumeroSequencialRegistro(Integer numeroSequencialRegistro) {
|
||||||
|
this.numeroSequencialRegistro = numeroSequencialRegistro;
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,9 +4,9 @@ import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio;
|
import com.rjconsultores.ventaboletos.blocos.DetalheObrigatorio;
|
||||||
import com.rjconsultores.ventaboletos.enuns.AceiteBB;
|
import com.rjconsultores.ventaboletos.enuns.Aceite;
|
||||||
|
|
||||||
public class DetalheObrigatorioSicoob implements DetalheObrigatorio, Cloneable {
|
public class DetalheObrigatorioSicoob implements DetalheObrigatorio {
|
||||||
|
|
||||||
private Integer loteServico;
|
private Integer loteServico;
|
||||||
private Integer numSeqRegistro;
|
private Integer numSeqRegistro;
|
||||||
|
@ -26,7 +26,7 @@ public class DetalheObrigatorioSicoob implements DetalheObrigatorio, Cloneable {
|
||||||
private BigDecimal valor;
|
private BigDecimal valor;
|
||||||
private String agenciaCobradora;
|
private String agenciaCobradora;
|
||||||
private String digAgenciaCobradora;
|
private String digAgenciaCobradora;
|
||||||
private AceiteBB aceite;
|
private Aceite aceite;
|
||||||
private Date emissao;
|
private Date emissao;
|
||||||
private Integer codMora;
|
private Integer codMora;
|
||||||
private Date dataMora;
|
private Date dataMora;
|
||||||
|
@ -191,11 +191,11 @@ public class DetalheObrigatorioSicoob implements DetalheObrigatorio, Cloneable {
|
||||||
this.digAgenciaCobradora = digAgenciaCobradora;
|
this.digAgenciaCobradora = digAgenciaCobradora;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AceiteBB getAceite() {
|
public Aceite getAceite() {
|
||||||
return aceite;
|
return aceite;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAceite(AceiteBB aceite) {
|
public void setAceite(Aceite aceite) {
|
||||||
this.aceite = aceite;
|
this.aceite = aceite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package com.rjconsultores.ventaboletos.enuns;
|
package com.rjconsultores.ventaboletos.enuns;
|
||||||
|
|
||||||
public enum AceiteBB {
|
public enum Aceite {
|
||||||
|
|
||||||
ACEITE("A"),
|
ACEITE("A"),
|
||||||
NAO_ACEITE("N");
|
NAO_ACEITE("N");
|
||||||
|
|
||||||
private AceiteBB(String value){
|
private Aceite(String value){
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +1,48 @@
|
||||||
package com.rjconsultores.ventaboletos.enuns;
|
package com.rjconsultores.ventaboletos.enuns;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public enum BancoLayout {
|
public enum BancoLayout {
|
||||||
BRADESCO_400_Envio("237", false, "/layouts/LayoutBradescoCNAB400Envio.txg.xml"),
|
BB_240_Envio("001", "Banco do Brasil", false, "/layouts/LayoutBBCNAB240Envio.txg.xml", true),
|
||||||
ITAU_400_Envio("341", false, "/layouts/LayoutItauCNAB400Envio.txg.xml"),
|
BRADESCO_400_Envio("237", "Bradesco", false, "/layouts/LayoutBradescoCNAB400Envio.txg.xml", true),
|
||||||
BB_240_Envio("001", false, "/layouts/LayoutBBCNAB240Envio.txg.xml"),
|
CAIXA_400_Envio("104", "Caixa Econômica Federal", false, "/layouts/LayoutCaixaCNAB400Envio.txg.xml", true),
|
||||||
SICOOB_240_Envio("756", false, "/layouts/LayoutSicoobCNAB240Envio.txg.xml"),
|
ITAU_400_Envio("341", "Itaú", false, "/layouts/LayoutItauCNAB400Envio.txg.xml", true),
|
||||||
SANTANDER_400_Envio("033", false, "/layouts/LayoutSantanderCNAB400Envio.txg.xml"),
|
MERCANTIL_400_Envio("389", "Mercantil", false, "/layouts/LayoutMercantilCNAB400Envio.txg.xml", true),
|
||||||
MERCANTIL_400_Envio("389", false, "/layouts/LayoutMercantilCNAB400Envio.txg.xml"),
|
SANTANDER_400_Envio("033", "Santander", false, "/layouts/LayoutSantanderCNAB400Envio.txg.xml", true),
|
||||||
|
SAFRA_400_Envio("422", "Safra", false, "/layouts/LayoutSafraCNAB400Envio.txg.xml", true),
|
||||||
|
SICOOB_240_Envio("756", "Sicoob", false, "/layouts/LayoutSicoobCNAB240Envio.txg.xml", true),
|
||||||
|
|
||||||
|
|
||||||
SANTANDER_400_Retorno("033", true, "/layouts/LayoutSantanderCNAB400Retorno.txg.xml"),
|
SANTANDER_400_Retorno("033", true, "/layouts/LayoutSantanderCNAB400Retorno.txg.xml"),
|
||||||
BRADESCO_400_Retorno("237", true, "/layouts/LayoutBradescoCNAB400Retorno.txg.xml"),
|
BRADESCO_400_Retorno("237", true, "/layouts/LayoutBradescoCNAB400Retorno.txg.xml"),
|
||||||
ITAU_400_Retorno("341", true, ""),
|
ITAU_400_Retorno("341", true, ""),
|
||||||
BB_240_Retorno("001", true, ""),
|
BB_240_Retorno("001", true, ""),
|
||||||
CAIXA_400_Envio("104", false, "/layouts/LayoutCaixaCNAB400Envio.txg.xml");
|
SAFRA_400_Retorno("422", true, "/layouts/LayoutSafraCNAB400Retorno.txg.xml")
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
private BancoLayout(String codBanco, boolean retorno, String path) {
|
private BancoLayout(String codBanco, boolean retorno, String path) {
|
||||||
this.codBanco = codBanco;
|
this.codBanco = codBanco;
|
||||||
this.retorno = retorno;
|
this.retorno = retorno;
|
||||||
|
this.descricao = "";
|
||||||
this.path = path;
|
this.path = path;
|
||||||
|
this.suportado = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private BancoLayout(String codBanco, String descricao, boolean retorno, String path, boolean suportado) {
|
||||||
|
this.codBanco = codBanco;
|
||||||
|
this.retorno = retorno;
|
||||||
|
this.descricao = descricao;
|
||||||
|
this.path = path;
|
||||||
|
this.suportado = suportado;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String codBanco;
|
private String codBanco;
|
||||||
private boolean retorno;
|
private boolean retorno;
|
||||||
private String path;
|
private String path;
|
||||||
|
private String descricao;
|
||||||
|
private boolean suportado;
|
||||||
|
|
||||||
public String getCodBanco() {
|
public String getCodBanco() {
|
||||||
return codBanco;
|
return codBanco;
|
||||||
|
@ -39,6 +60,14 @@ public enum BancoLayout {
|
||||||
return path.substring(path.lastIndexOf("/"));
|
return path.substring(path.lastIndexOf("/"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDescricao() {
|
||||||
|
return descricao;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSuportado() {
|
||||||
|
return suportado;
|
||||||
|
}
|
||||||
|
|
||||||
public static BancoLayout getInstanceByCodBanco(String codBanco){
|
public static BancoLayout getInstanceByCodBanco(String codBanco){
|
||||||
|
|
||||||
for(BancoLayout o : BancoLayout.values()){
|
for(BancoLayout o : BancoLayout.values()){
|
||||||
|
@ -50,4 +79,34 @@ public enum BancoLayout {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<String> getSuportados(){
|
||||||
|
List<String> bancosSuportados = new ArrayList<>();
|
||||||
|
|
||||||
|
for(BancoLayout o : BancoLayout.values()){
|
||||||
|
if(o.isSuportado()){
|
||||||
|
bancosSuportados.add(o.getDescricao());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return bancosSuportados;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCodigo(String descricao){
|
||||||
|
for(BancoLayout banco :BancoLayout.values()){
|
||||||
|
if(banco.descricao.equals(descricao)){
|
||||||
|
return banco.codBanco;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDescricao(String codigo){
|
||||||
|
for(BancoLayout banco :BancoLayout.values()){
|
||||||
|
if(banco.codBanco.equals(codigo)){
|
||||||
|
return banco.descricao;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,11 @@ import com.rjconsultores.ventaboletos.enuns.BancoLayout;
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractFlatFile{
|
public abstract class AbstractFlatFile{
|
||||||
|
|
||||||
|
protected static final String DATA = "ddMMyy";
|
||||||
|
protected static final String TAMANHO_DATA = "000000";
|
||||||
|
protected static final String SEQUENCIAL_REMESSA = "NumeroSequencialRemessa";
|
||||||
|
protected static final String SEQUENCIAL_REGISTRO = "NumeroSequencialRegistro";
|
||||||
|
protected static final String SOMENTE_CLASSE_DE_RETORNO = "Somente classe de Retorno.";
|
||||||
//protected static Logger log = LoggerFactory.getLogger(AbstractFlatFile.class);
|
//protected static Logger log = LoggerFactory.getLogger(AbstractFlatFile.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,6 +21,8 @@ public class CNABFactory {
|
||||||
return new BancoBrasilFlatFile();
|
return new BancoBrasilFlatFile();
|
||||||
case SICOOB_240_Envio:
|
case SICOOB_240_Envio:
|
||||||
return new SicoobFlatFile();
|
return new SicoobFlatFile();
|
||||||
|
case SAFRA_400_Envio:
|
||||||
|
return new SafraFlatFile();
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
package com.rjconsultores.ventaboletos.layouts;
|
||||||
|
|
||||||
|
import static com.rjconsultores.ventaboletos.utils.FormataUtil.formataDataToString;
|
||||||
|
import static com.rjconsultores.ventaboletos.utils.FormataUtil.formatarValorPorTamanho;
|
||||||
|
import static com.rjconsultores.ventaboletos.utils.FormataUtil.formatarValorPorTamanhoZeroEsquerda;
|
||||||
|
|
||||||
|
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.safra.CabecalhoRemessaSafra;
|
||||||
|
import com.rjconsultores.ventaboletos.blocos.safra.DetalheObrigatorioSafra;
|
||||||
|
import com.rjconsultores.ventaboletos.blocos.safra.RodapeRemessaSafra;
|
||||||
|
import com.rjconsultores.ventaboletos.enuns.BancoLayout;
|
||||||
|
|
||||||
|
public class SafraFlatFile extends AbstractFlatFile implements RemessaInterface {
|
||||||
|
|
||||||
|
public SafraFlatFile() {
|
||||||
|
super(BancoLayout.SAFRA_400_Envio);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createHeader(CabecalhoRemessa cabecalhoRemessaParam) {
|
||||||
|
|
||||||
|
Record header = getFlatFile().createRecord("Header");
|
||||||
|
|
||||||
|
CabecalhoRemessaSafra cabecalhoRemessa = (CabecalhoRemessaSafra) cabecalhoRemessaParam;
|
||||||
|
|
||||||
|
header.setValue("NumAgencia", formatarValorPorTamanho(cabecalhoRemessa.getNumAgencia(), 5));
|
||||||
|
header.setValue("NumContaCorrente", formatarValorPorTamanho(cabecalhoRemessa.getNumContaCorrente(), 8));
|
||||||
|
header.setValue("DigContaCorrente", formatarValorPorTamanho(cabecalhoRemessa.getDigContaCorrente(), 1));
|
||||||
|
header.setValue("NomeEmpresa", formatarValorPorTamanho(cabecalhoRemessa.getNomeEmpresa(), 30));
|
||||||
|
header.setValue("DataGravacao", formataDataToString(cabecalhoRemessa.getDataGravacao(), TAMANHO_DATA, DATA));
|
||||||
|
header.setValue(SEQUENCIAL_REMESSA, formatarValorPorTamanho(cabecalhoRemessa.getNumeroSequencialRemessa().toString(), 3));
|
||||||
|
header.setValue(SEQUENCIAL_REGISTRO, formatarValorPorTamanho(cabecalhoRemessa.getNumeroSequencialRegistro().toString(), 6));
|
||||||
|
|
||||||
|
getFlatFile().addRecord(header);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createTransacaoTitulos(DetalheObrigatorio tituloParam) {
|
||||||
|
|
||||||
|
Record detalhe = getFlatFile().createRecord("TransacaoTitulo");
|
||||||
|
|
||||||
|
DetalheObrigatorioSafra titulo = (DetalheObrigatorioSafra) tituloParam;
|
||||||
|
|
||||||
|
detalhe.setValue("CpfCnpj", formatarValorPorTamanho(titulo.getCpfCnpj().toString(), 2));
|
||||||
|
detalhe.setValue("NumCpfCnpj", formatarValorPorTamanho(titulo.getNumCpfCnpj(), 14));
|
||||||
|
detalhe.setValue("NumAgencia", formatarValorPorTamanho(titulo.getNumAgencia(), 5));
|
||||||
|
detalhe.setValue("NumContaCorrente", formatarValorPorTamanho(titulo.getNumContaCorrente(), 8));
|
||||||
|
detalhe.setValue("DigContaCorrente", formatarValorPorTamanho(titulo.getDigContaCorrente(), 1));
|
||||||
|
detalhe.setValue("NossoNumero", formatarValorPorTamanho(titulo.getNossoNumero(), 9));
|
||||||
|
detalhe.setValue("IdentificacaoTitulo", formatarValorPorTamanho(titulo.getIdBoletoFechamento(), 10));
|
||||||
|
detalhe.setValue("Vencimento", formataDataToString(titulo.getVencimento(), TAMANHO_DATA, DATA));
|
||||||
|
detalhe.setValue("Valor", titulo.getValor());
|
||||||
|
detalhe.setValue("NumAgenciaCobranca", formatarValorPorTamanho(titulo.getNumAgencia(), 5));
|
||||||
|
detalhe.setValue("EspecieDeTitulo", formatarValorPorTamanho(titulo.getEspecieDeTitulo(), 2));
|
||||||
|
detalhe.setValue("Aceite", titulo.getAceite().getValue());
|
||||||
|
detalhe.setValue("Emissao", formataDataToString(titulo.getDataEmissao(), TAMANHO_DATA, DATA));
|
||||||
|
detalhe.setValue("Instrucao1", formatarValorPorTamanho(titulo.getInstrucao1(), 2));
|
||||||
|
detalhe.setValue("Instrucao2", formatarValorPorTamanho(titulo.getInstrucao2(), 2));
|
||||||
|
detalhe.setValue("JurosDeMora", titulo.getJurosDeMora());
|
||||||
|
detalhe.setValue("DataMulta", formataDataToString(titulo.getDataMulta(), TAMANHO_DATA, DATA));
|
||||||
|
detalhe.setValue("PercentualMulta", titulo.getPercMulta() );
|
||||||
|
detalhe.setValue("DataLimiteDesconto", formataDataToString(titulo.getDataLimiteDesconto(), TAMANHO_DATA, DATA));
|
||||||
|
detalhe.setValue("ValorDesconto", titulo.getValorDesconto());
|
||||||
|
detalhe.setValue("ValorIOF", titulo.getValorIOF());
|
||||||
|
detalhe.setValue("ValorAbatimentoConcedido", titulo.getValorAbatimentoConcedido());
|
||||||
|
detalhe.setValue("TipoInscricaoPagador", formatarValorPorTamanho(titulo.getTipoInscricaoPagador().toString(), 2));
|
||||||
|
detalhe.setValue("NumeroInscricaoPagador", formatarValorPorTamanho(titulo.getNumeroInscricaoPagador(), 14));
|
||||||
|
detalhe.setValue("NomePagador", formatarValorPorTamanho(titulo.getNomePagador(), 40));
|
||||||
|
detalhe.setValue("EnderecoPagador", formatarValorPorTamanho(titulo.getEnderecoPagador(), 30));
|
||||||
|
detalhe.setValue("BairroPagador", formatarValorPorTamanho(titulo.getBairroPagador(), 10));
|
||||||
|
detalhe.setValue("CepPagador", formatarValorPorTamanho(titulo.getCepPagador(), 8));
|
||||||
|
detalhe.setValue("CidadePagador", formatarValorPorTamanho(titulo.getCidadePagador(), 15));
|
||||||
|
detalhe.setValue("EstadoPagador", formatarValorPorTamanho(titulo.getEstadoPagador(), 2));
|
||||||
|
detalhe.setValue("SacadorAvalista", formatarValorPorTamanho(titulo.getSacadorAvalista(), 30));
|
||||||
|
detalhe.setValue(SEQUENCIAL_REMESSA, formatarValorPorTamanho(titulo.getNumeroSequencialRemessa().toString(), 3));
|
||||||
|
detalhe.setValue(SEQUENCIAL_REGISTRO, formatarValorPorTamanho(titulo.getNumeroSequencialRegistro().toString(), 6));
|
||||||
|
|
||||||
|
getFlatFile().addRecord(detalhe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createTrailler(RodapeRemessa trailler){
|
||||||
|
|
||||||
|
Record trailer = getFlatFile().createRecord("Trailler");
|
||||||
|
RodapeRemessaSafra rodape = (RodapeRemessaSafra) trailler;
|
||||||
|
|
||||||
|
trailer.setValue("QtdTitulos", formatarValorPorTamanho(rodape.getQtdTitulos().toString(), 8));
|
||||||
|
trailer.setValue("ValorTotal", formatarValorPorTamanhoZeroEsquerda(rodape.getValorTotalTitulos().toString().replace(".", ""), 15));
|
||||||
|
trailer.setValue(SEQUENCIAL_REMESSA, formatarValorPorTamanho(rodape.getNumeroSequencialRemessa().toString(), 3));
|
||||||
|
trailer.setValue(SEQUENCIAL_REGISTRO, formatarValorPorTamanho(rodape.getNumeroSequencialRegistro().toString(), 6));
|
||||||
|
|
||||||
|
getFlatFile().addRecord(trailer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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...");
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,12 @@ import com.rjconsultores.ventaboletos.enuns.BancoLayout;
|
||||||
|
|
||||||
public class NossoNumeroUtils {
|
public class NossoNumeroUtils {
|
||||||
|
|
||||||
|
private static final String ZERO_7 = "0000000";
|
||||||
|
private static final String ZERO_8 = "00000000";
|
||||||
|
private static final String ZERO_9 = "000000000";
|
||||||
|
private static final String ZERO_10 = "0000000000";
|
||||||
|
private static final String ZERO_11 = "00000000000";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolve o nosso numero do Bradesco com o DV calculado (Tamanho 12)...
|
* Devolve o nosso numero do Bradesco com o DV calculado (Tamanho 12)...
|
||||||
* @param numCarteira
|
* @param numCarteira
|
||||||
|
@ -15,7 +21,7 @@ public class NossoNumeroUtils {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String calcularNossonumeroBradesco(Integer numCarteira, BigInteger nossoNumero){
|
public static String calcularNossonumeroBradesco(Integer numCarteira, BigInteger nossoNumero){
|
||||||
return StringUtils.right("00000000000" + nossoNumero, 11) + dacBradesco(numCarteira, nossoNumero);
|
return StringUtils.right(ZERO_11 + nossoNumero, 11) + dacBradesco(numCarteira, nossoNumero);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,19 +33,23 @@ public class NossoNumeroUtils {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String calcularNossoNumeroItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){
|
public static String calcularNossoNumeroItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){
|
||||||
return StringUtils.right("00000000" + nossoNumero, 8) + dacItau(codAgencia, numConta, numCarteira, nossoNumero);
|
return StringUtils.right(ZERO_8 + nossoNumero, 8) + dacItau(codAgencia, numConta, numCarteira, nossoNumero);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String calcularNossoNumeroSantander(BigInteger nossoNumero){
|
public static String calcularNossoNumeroSantander(BigInteger nossoNumero){
|
||||||
return StringUtils.right("0000000" + nossoNumero, 7)+dacSantander( nossoNumero.toString() );
|
return StringUtils.right(ZERO_7 + nossoNumero, 7)+dacSantander( nossoNumero.toString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String calcularNossoNumeroSicoob(Integer numCooperativa, Integer codCliente, BigInteger nossoNumero){
|
public static String calcularNossoNumeroSicoob(Integer numCooperativa, Integer codCliente, BigInteger nossoNumero){
|
||||||
return StringUtils.right("0000000" + nossoNumero, 7)+dacSicoob(numCooperativa, codCliente, nossoNumero.toString() );
|
return StringUtils.right(ZERO_7 + nossoNumero, 7)+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(ZERO_10 + nossoNumero, 10)+dacMercantil( agencia, nossoNumero );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String calcularNossoNumeroSafra(BigInteger nossoNumero){
|
||||||
|
return StringUtils.right(ZERO_9 + nossoNumero, 9)+dacSafra( nossoNumero );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,8 +77,8 @@ public class NossoNumeroUtils {
|
||||||
dvControll = Boolean.FALSE;
|
dvControll = Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
String nC = StringUtils.right("0000000" + convenioBanco, controllConvenioNossoNumero);
|
String nC = StringUtils.right(ZERO_7 + convenioBanco, controllConvenioNossoNumero);
|
||||||
String nN = StringUtils.right("0000000000" + nossoNumero, controllNossoNumero);
|
String nN = StringUtils.right(ZERO_10 + nossoNumero, controllNossoNumero);
|
||||||
|
|
||||||
String base = nC + nN;
|
String base = nC + nN;
|
||||||
|
|
||||||
|
@ -87,7 +97,7 @@ public class NossoNumeroUtils {
|
||||||
int multiplicandos[] = new int[13];
|
int multiplicandos[] = new int[13];
|
||||||
|
|
||||||
String carteira = StringUtils.right("00" + numCarteira, 2);
|
String carteira = StringUtils.right("00" + numCarteira, 2);
|
||||||
String nNumero = StringUtils.right("00000000000" + nossoNumero, 11);
|
String nNumero = StringUtils.right(ZERO_11 + nossoNumero, 11);
|
||||||
|
|
||||||
String base = carteira + nNumero;
|
String base = carteira + nNumero;
|
||||||
|
|
||||||
|
@ -114,8 +124,8 @@ public class NossoNumeroUtils {
|
||||||
int multiplicandos[] = new int[21];
|
int multiplicandos[] = new int[21];
|
||||||
|
|
||||||
String cooperativa = StringUtils.right("0000" + numCooperativa, 4);
|
String cooperativa = StringUtils.right("0000" + numCooperativa, 4);
|
||||||
String cliente = StringUtils.right("0000000000" + codCliente, 10);
|
String cliente = StringUtils.right(ZERO_10 + codCliente, 10);
|
||||||
String nNumero = StringUtils.right("0000000" + nossoNumero, 7);
|
String nNumero = StringUtils.right(ZERO_7 + nossoNumero, 7);
|
||||||
|
|
||||||
String base = cooperativa + cliente + nNumero;
|
String base = cooperativa + cliente + nNumero;
|
||||||
|
|
||||||
|
@ -144,7 +154,7 @@ public class NossoNumeroUtils {
|
||||||
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};
|
||||||
|
|
||||||
String agenciaformatada = StringUtils.right("0000" + agencia, 4);
|
String agenciaformatada = StringUtils.right("0000" + agencia, 4);
|
||||||
String nNumero = StringUtils.right("00000000000" + nossoNumero, 10);
|
String nNumero = StringUtils.right(ZERO_11 + nossoNumero, 10);
|
||||||
|
|
||||||
String base = agenciaformatada + nNumero;
|
String base = agenciaformatada + nNumero;
|
||||||
|
|
||||||
|
@ -164,6 +174,34 @@ public class NossoNumeroUtils {
|
||||||
return String.valueOf(11 - mod);
|
return String.valueOf(11 - mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String dacSafra(BigInteger nossoNumero){
|
||||||
|
|
||||||
|
int[] multiplicadores = {2,1,2,1,2,1,2,1,2};
|
||||||
|
int[] multiplicandos = new int[20];
|
||||||
|
|
||||||
|
String base = StringUtils.right(ZERO_9 + nossoNumero, 9);
|
||||||
|
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
String d = base.charAt(i) + "";
|
||||||
|
multiplicandos[i] = Integer.valueOf(d) * multiplicadores[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
int dac = 0;
|
||||||
|
|
||||||
|
for(Integer v : multiplicandos){
|
||||||
|
|
||||||
|
if(v < 10){
|
||||||
|
dac += v;
|
||||||
|
}else{
|
||||||
|
dac += 1 + (v - 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dac = 10 - (dac % 10);
|
||||||
|
|
||||||
|
return dac == 10 ? "0" : dac+"";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calcula do DV para o Itau
|
* Calcula do DV para o Itau
|
||||||
* @param codAgencia
|
* @param codAgencia
|
||||||
|
@ -175,13 +213,13 @@ public class NossoNumeroUtils {
|
||||||
public static String dacItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){
|
public static String dacItau(Integer codAgencia, Integer numConta, Integer numCarteira, BigInteger nossoNumero){
|
||||||
|
|
||||||
|
|
||||||
int multiplicadores[] = {1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2};
|
int multiplicadores[] = {2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1};
|
||||||
int multiplicandos[] = new int[20];
|
int multiplicandos[] = new int[20];
|
||||||
|
|
||||||
String agencia = StringUtils.right("0000" + codAgencia, 4);
|
String agencia = StringUtils.right("0000" + codAgencia, 4);
|
||||||
String conta = StringUtils.right("00000" + numConta, 5);
|
String conta = StringUtils.right("00000" + numConta, 5);
|
||||||
String carteira = StringUtils.right("000" + numCarteira, 3);
|
String carteira = StringUtils.right("000" + numCarteira, 3);
|
||||||
String nNumero = StringUtils.right("00000000" + nossoNumero, 8);
|
String nNumero = StringUtils.right(ZERO_8 + nossoNumero, 8);
|
||||||
|
|
||||||
String base = agencia + conta + carteira + nNumero;
|
String base = agencia + conta + carteira + nNumero;
|
||||||
|
|
||||||
|
@ -286,7 +324,7 @@ public class NossoNumeroUtils {
|
||||||
int multiplicadores[] = {1,2,1,2,1,2,1,2,1,2};
|
int multiplicadores[] = {1,2,1,2,1,2,1,2,1,2};
|
||||||
int multiplicandos[] = new int[10];
|
int multiplicandos[] = new int[10];
|
||||||
|
|
||||||
String doc = StringUtils.right("0000000000" + numeroDoc, 10);
|
String doc = StringUtils.right(ZERO_10 + numeroDoc, 10);
|
||||||
|
|
||||||
String base = doc;
|
String base = doc;
|
||||||
|
|
||||||
|
@ -331,6 +369,10 @@ public class NossoNumeroUtils {
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(BancoLayout.SAFRA_400_Envio.equals(bancoLayout) && nossoNumero.length() == 11 ){
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if(BancoLayout.BB_240_Envio.equals(bancoLayout) && (nossoNumero.length() == 13 || nossoNumero.length() == 17)){
|
if(BancoLayout.BB_240_Envio.equals(bancoLayout) && (nossoNumero.length() == 13 || nossoNumero.length() == 17)){
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
@ -348,7 +390,7 @@ public class NossoNumeroUtils {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
System.out.println( calcularNossoNumeroItau( 98, 92192, 109, new BigInteger("98712345") ));
|
System.out.println( calcularNossoNumeroSafra( new BigInteger("422979999") ));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,109 @@
|
||||||
|
<txg:Texgit xmlns:txg="http://jrimum.org/texgit"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://jrimum.org/texgit http://jrimum.org/texgit/chrome/site/TexgitSchema.xsd"
|
||||||
|
version="1.0-academic">
|
||||||
|
<FlatFile>
|
||||||
|
<layout>
|
||||||
|
<name>Arquivo-Remessa_SafraCNAB400</name>
|
||||||
|
<version>Published: 2023/12/15</version>
|
||||||
|
<description>
|
||||||
|
Layout para Cobrança.
|
||||||
|
|
||||||
|
Arquivo texto - padrão CNAB
|
||||||
|
Meio de Registro Transmissão de Dados
|
||||||
|
Descrição de Registro - Tamanho 400 Bytes
|
||||||
|
Organização Sequencial
|
||||||
|
|
||||||
|
ARQUIVO FORMATO CNAB REMESSA, REGISTROS:
|
||||||
|
|
||||||
|
0 - Header Label
|
||||||
|
1 - Cobrança - Transação
|
||||||
|
9 - Trailler (Papel de finalizador de lote)
|
||||||
|
</description>
|
||||||
|
</layout>
|
||||||
|
<GroupOfRecords>
|
||||||
|
<Record name="Header" description="Protocolo de comunicação" repeatable="true">
|
||||||
|
<GroupOfFields>
|
||||||
|
<IdType name="IDReg" length="1" value="0" position="1" />
|
||||||
|
<Field name="IdentificacaoRemessa" length="1" value="1" />
|
||||||
|
<Field name="LiteralRemessa" length="7" value="REMESSA" />
|
||||||
|
<Field name="CodigoDeServico" length="2" value="01" />
|
||||||
|
<Field name="LiteralServico" length="8" value="COBRANCA" />
|
||||||
|
<Field name="Filler1" length="6" />
|
||||||
|
<Field name="NumAgencia" length="5" type="INTEGER" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="NumContaCorrente" length="8" type="INTEGER" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="DigContaCorrente" length="1" type="INTEGER" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="Filler2" length="7" />
|
||||||
|
<Field name="NomeEmpresa" length="30" />
|
||||||
|
<Field name="CodigoCompensacao" length="3" value="422" />
|
||||||
|
<Field name="NomeBanco" length="11" value="SAFRA" />
|
||||||
|
<Field name="Filler3" length="4" />
|
||||||
|
<Field name="DataGravacao" length="6" type="CHARACTER"/>
|
||||||
|
<Field name="Filler4" length="291" />
|
||||||
|
<Field name="NumeroSequencialRemessa" length="3" type="INTEGER" padding="ZERO_LEFT" />
|
||||||
|
<Field name="NumeroSequencialRegistro" length="6" type="INTEGER" padding="ZERO_LEFT" />
|
||||||
|
</GroupOfFields>
|
||||||
|
</Record>
|
||||||
|
<Record name="TransacaoTitulo" repeatable="true">
|
||||||
|
<GroupOfFields>
|
||||||
|
<IdType name="IDReg" value="1" length="1" position="1" />
|
||||||
|
<Field name="CpfCnpj" type="INTEGER" length="2" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="NumCpfCnpj" type="CHARACTER" length="14" />
|
||||||
|
<Field name="NumAgencia" type="INTEGER" length="5" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="NumContaCorrente" type="INTEGER" length="8" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="DigContaCorrente" type="INTEGER" length="1" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="Filler1" length="6" />
|
||||||
|
<Field name="UsoEmpresa" type="CHARACTER" length="25" />
|
||||||
|
<Field name="NossoNumero" length="9" />
|
||||||
|
<Field name="Filler2" length="30" />
|
||||||
|
<Field name="CodigoIof" value="0" length="1"/>
|
||||||
|
<Field name="TipoMoeda" value="00" length="2"/>
|
||||||
|
<Field name="Filler3" length="1" />
|
||||||
|
<Field name="DiasProtesto" value="00" length="2" />
|
||||||
|
<Field name="TipoCarteira" value="1" length="1"/>
|
||||||
|
<Field name="TipoOcorrencia" value="01" length="2"/>
|
||||||
|
<Field name="IdentificacaoTitulo" type="CHARACTER" length="10" />
|
||||||
|
<Field name="Vencimento" length="6" type="CHARACTER" />
|
||||||
|
<Field name="Valor" type="BIGDECIMAL" length="13" value="0" format="DECIMAL_DD" padding="ZERO_LEFT" />
|
||||||
|
<Field name="BancoCobranca" value="422" length="3" />
|
||||||
|
<Field name="NumAgenciaCobranca" type="INTEGER" length="5" padding="ZERO_LEFT"/>
|
||||||
|
<Field name="EspecieTitulo" value="01" length="2"/>
|
||||||
|
<Field name="Aceite" length="1" />
|
||||||
|
<Field name="Emissao" length="6" type="CHARACTER"/>
|
||||||
|
<Field name="Instrucao1" length="2"/>
|
||||||
|
<Field name="Instrucao2" length="2"/>
|
||||||
|
<Field name="ValorAtraso" type="BIGDECIMAL" length="13" value="0" format="DECIMAL_DD" padding="ZERO_LEFT" />
|
||||||
|
<Field name="DataLimiteDesconto" length="6" type="DATE" format="DATE_DDMMYY" padding="ZERO_LEFT" />
|
||||||
|
<Field name="ValorDesconto" type="BIGDECIMAL" length="13" value="0" format="DECIMAL_DD" padding="ZERO_LEFT" />
|
||||||
|
<Field name="ValorIOF" type="BIGDECIMAL" length="13" value="0" format="DECIMAL_DD" padding="ZERO_LEFT" />
|
||||||
|
<Field name="ValorAbatimentoConcedido" type="BIGDECIMAL" length="13" value="0" format="DECIMAL_DD" padding="ZERO_LEFT" />
|
||||||
|
<Field name="TipoInscricaoPagador" length="2" type="INTEGER" />
|
||||||
|
<Field name="NumeroInscricaoPagador" length="14" type="INTEGER" />
|
||||||
|
<Field name="NomePagador" length="40" type="CHARACTER" />
|
||||||
|
<Field name="EnderecoPagador" length="40" type="CHARACTER" />
|
||||||
|
<Field name="BairroPagador" length="10" type="CHARACTER" />
|
||||||
|
<Field name="Filler4" length="2" />
|
||||||
|
<Field name="CepPagador" length="8" type="CHARACTER" />
|
||||||
|
<Field name="CidadePagador" length="15" type="CHARACTER" />
|
||||||
|
<Field name="EstadoPagador" length="2" type="CHARACTER" />
|
||||||
|
<Field name="SacadorAvalista" length="30" type="CHARACTER" />
|
||||||
|
<Field name="Filler5" length="7" />
|
||||||
|
<Field name="BancoEmitente" value="422" length="3" />
|
||||||
|
<Field name="NumeroSequencialRemessa" length="3" type="INTEGER" padding="ZERO_LEFT" />
|
||||||
|
<Field name="NumeroSequencialRegistro" length="6" type="INTEGER" padding="ZERO_LEFT" />
|
||||||
|
</GroupOfFields>
|
||||||
|
</Record>
|
||||||
|
<Record name="Trailler" repeatable="true">
|
||||||
|
<GroupOfFields>
|
||||||
|
<IdType name="IDReg" value="9" length="1" position="1" />
|
||||||
|
<Field name="Filler" length="367" />
|
||||||
|
<Field name="QtdTitulos" length="8" type="INTEGER" padding="ZERO_LEFT" />
|
||||||
|
<Field name="ValorTotal" type="BIGDECIMAL" length="15" value="0" format="DECIMAL_DD" padding="ZERO_LEFT" />
|
||||||
|
<Field name="NumeroSequencialRemessa" length="3" type="INTEGER" padding="ZERO_LEFT" />
|
||||||
|
<Field name="NumeroSequencialRegistro" length="6" type="INTEGER" padding="ZERO_LEFT" />
|
||||||
|
</GroupOfFields>
|
||||||
|
</Record>
|
||||||
|
</GroupOfRecords>
|
||||||
|
</FlatFile>
|
||||||
|
|
||||||
|
</txg:Texgit>
|
Loading…
Reference in New Issue