Stella Boleto - Erro na geração do código de barras

2 respostas
rodrigorosa

Senhores,

estou tentando utilizar o Stella Boleto para gerar um boleto do Banco do Brasil. Quando utilizo carteira = 18, gera o código de barras adequadamente.
Quando uso carteira = 17, recebo a mensagem: “Erro na geração do código de barras. Número de digitos diferente de 44. Verifique todos os dados.”

Investigando um pouco, levantei essas informações

Para carteira 18 gera

001 // banco
9 // moeda
5244 // fator vencimento (calculo sobre a data de vencimento)
[telefone removido] // valor formatado
000000 // fixo - testa se carteria == 17 e mete isso
2101499 // num convenio formatado
[telefone removido] // nosso número substring 7
18 // carteira do emissor formatado
5 // dígito verificador mod 11 q ele injeta lá na posição 4

00195524400000055000000002101499[telefone removido]17

Para carteira 17

001 // banco
9 // moeda
5244 // fator vencimento (calculo sobre a data de vencimento)
[telefone removido] // valor formatado
000000 // fixo - testa se carteria == 17 e mete isso
2101499 // num convenio formatado
0043 // nosso número substring 7
18 // carteira do emissor formatado
5 // dígito verificador mod 11 q ele injeta lá na posição 4

00195524400000055000000002101499004317 //gera um erro pq deveria ter 44 dígitos e só tem 38, faltando um pedaço do “nosso numero”

o código que faz a montagem da String é o seguinte

} else if (emissor.getCarteira() == 17 || emissor.getCarteira() == 18) { codigoDeBarras.append("000000"); codigoDeBarras.append(getNumeroConvenioDoEmissorFormatado(emissor)); codigoDeBarras.append(getNossoNumeroDoEmissorFormatado(emissor) [b] .substring(7));[/b] codigoDeBarras.append(boleto.getBanco() .getCarteiraDoEmissorFormatado(emissor)); }

public String getNumeroConvenioDoEmissorFormatado(Emissor emissor) { if (emissor.getNumeroConvenio() < 1000000) { return String.format("%06d", emissor.getNumeroConvenio()); } else { return String.format("%07d", emissor.getNumeroConvenio()); } }

Ou seja, considera número de convênio de 11 ou 17 posições na hora de gerar, mas na hora de concatenar faz um substring a partir do 7. É isso mesmo?
Quando carteira 17, vai formatar um número de 11 posições e pegar a partir da sétima, gerando aquele número menor e quebrando o contrato (44 dígitos)
Não deveria considerar o tamanho na hora de fazer o substring?

Ou eu estou fazendo algo muito errado? =)

Qualquer ajuda é bem vinda!
Antecipadamente, agradeço a atenção.

Rodrigo Rosa

2 Respostas

gilmatryx

Olá Rodrigo, fica aqui a sugestão de uma outra lib…

Se tiver dúvida de como gerar o boleto do BB veja em:

http://jrimum.org/bopepo/wiki/Componente/Documentacao/Tutoriais/Bancos

Qualquer dúvida tem o grupo de discussão , lá o pessoal poderá te ajudar.

Derivado de http://www.guj.com.br/java/228103-stella-boleto---problemas-e-evolucao-do-projeto

RicardoCobain

Utilizo o JRimun e recomendo…
É simples , tem um bom suporte da equipe, a lista de discursoes é bem ativa …
E é customizável, precisei gerar boletos para um ‘banco’ local e foi bem facil para implementar…
A equipe está de parabens.

Criado 15 de fevereiro de 2012
Ultima resposta 20 de fev. de 2012
Respostas 2
Participantes 3