Problema com o código de barra e linha digitável da Caixa

64 views
Skip to first unread message

Andre Cunha

unread,
Apr 30, 2021, 9:03:39 AM4/30/21
to JRimum Community
Pelo que entendi meu cedente tem 07 digitos e o jrimum só aceita 06.

Já ajustei quase tudo menos o código de barra que não vem correto.

Alguém ja ajustou o projeto ou tem uma ideia de solucao?

Guilherme

unread,
Apr 30, 2021, 9:12:53 AM4/30/21
to jrimum-c...@googlegroups.com
vai ter que editar o jar ou ver no projeto do github se o pessoal já mudar essa regra

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "JRimum
Community" nos Grupos do Google.
Para postar neste grupo, envie um e-mail para
jrimum-c...@googlegroups.com
ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para
jrimum-communi...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com/group/jrimum-community?hl=pt-BR?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "JRimum Community" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jrimum-communi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/jrimum-community/d82e75c7-5b38-4eb6-9fbb-b2c045c57035n%40googlegroups.com.

Solerman Kaplon

unread,
Apr 30, 2021, 9:16:07 AM4/30/21
to jrimum-c...@googlegroups.com
Eu só fiz isso na CLCaixaEconomicaFederalSIGCB:


    CLCaixaEconomicaFederalSIGCB(Titulo titulo) {

        super(FIELDS_LENGTH);

        ContaBancaria conta = titulo.getContaBancaria();
        String nossoNumero = titulo.getNossoNumero();

        if(conta.getNumeroDaConta().getCodigoDaConta() <= 999999) {
            Integer dVCodigoDoCedente =
calculeDigitoVerificador(conta.getNumeroDaConta().getCodigoDaConta().toString());

            this.add(new
FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 6,
Fillers.ZERO_LEFT));
            this.add(new FixedField<Integer>(dVCodigoDoCedente, 1));
        } else {
            this.add(new
FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 7,
Fillers.ZERO_LEFT));
        }


Solerman

Andre Cunha

unread,
Apr 30, 2021, 9:34:04 AM4/30/21
to jrimum-c...@googlegroups.com
Bom dia.

Resolvi de uma forma bem simples.

Criei uma classe que implementa o CampoLivre e depois no Construtor do Boleto passei o campo como tem que ficar.

Ficou assim:

CampoLivreGenerico campoLivreGenerico = new CampoLivreGenerico(numeroConta, nossoNumero, "1", "4");
org.jrimum.bopepo.Boleto boleto = new org.jrimum.bopepo.Boleto(titulo, campoLivreGenerico);

Abaixo a classe criada.

import org.jrimum.bopepo.campolivre.CampoLivre;

public class CampoLivreGenerico implements CampoLivre{

    private String codigoCedente;
    private String nossoNumero;
    private String tipoBoleto;
    private String tipoEmissao;
    private String campoLivre;

    /**
     * Funciona para Caixa com cedente com 07 digitos.
     * @param codigoCedente
     * @param nossoNumero
     * @param tipoBoleto
     * @param tipoEmissao
     */
    public CampoLivreGenerico(String codigoCedente, String nossoNumero, String tipoBoleto, String tipoEmissao) {
       
        this.codigoCedente = codigoCedente;
        this.nossoNumero = nossoNumero;
        this.tipoBoleto = tipoBoleto;
        this.tipoEmissao = tipoEmissao;
       
        String nossoNumeroParte01 = nossoNumero.substring(0, 3);
        String nossoNumeroParte02 = nossoNumero.substring(3, 6);
        String nossoNumeroParte03 = nossoNumero.substring(6);
       
        this.campoLivre = this.codigoCedente + nossoNumeroParte01 + this.tipoBoleto + nossoNumeroParte02 + this.tipoEmissao + nossoNumeroParte03;
       
        int dv = CampoLivreGenerico.calculeDVModulo11( this.campoLivre );
       
        this.campoLivre = this.campoLivre + dv;
       
    }
   
   
    @Override
    public String write() {
        return this.campoLivre;
    }

    @Override
    public void read(String g) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
   
    public static int calculeDVModulo11(String numero) {
        int dv = 0;
        int[] values = new int[numero.length()];
        for (int i = 0; i < numero.length(); i++) {
            values[i] = Integer.parseInt(numero.charAt(i) + "");
        }
        int soma = 0;
        int vetpos = numero.length() - 1;
        while (vetpos >= 0) {
            for (int i = 2; i < 10; i++) {
                soma += values[vetpos] * i;
                vetpos--;
                if (vetpos < 0) {
                    break;
                }
            }
        }

        if (soma < 11) {
            dv = soma - 11;
        } else {
            int resto = soma % 11;
            dv = 11 - resto;
        }

        if (dv > 9) {
            dv = 0;
        }

        return dv;
    }
   
}


André Cunha
Empreendedor, CTO
-------------------------
Techclass software LTDA - ME

Sisdança - Sistema de Gestão Online para Escolas de Dança
(27) 3208-2627 / 2799244-2484
----------------------------------------------
Sisdança: a plataforma online que ajuda Empreendedores da Dança a viver da sua paixão.


--
--
Você recebeu esta mensagem porque está inscrito no Grupo "JRimum
Community" nos Grupos do Google.
Para postar neste grupo, envie um e-mail para
jrimum-c...@googlegroups.com
ANTES DE POSTAR... leia:
https://groups.google.com/d/topic/jrimum-community/ULU8QHHgaBs/discussion
Para cancelar a sua inscrição neste grupo, envie um e-mail para
jrimum-communi...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com/group/jrimum-community?hl=pt-BR?hl=pt-BR

---
Você está recebendo esta mensagem porque se inscreveu no grupo "JRimum Community" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jrimum-communi...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages