caelum / caelum-stella

O Caelum Stella visa suprir as necessidades do dia a dia do desenvolvedor brasileiro

Home Page:http://stella.caelum.com.br

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Boleto Banco do Brasil - Carteira 16

peruzzo opened this issue · comments

Estou com um problema na geração de um boleto usando a carteira 16 e um convênio de 6 posições, que nesse caso o nosso número deveria ter 17 posições e está gerando com 11 posições, pois o método getNossoNumeroDoEmissorFormatado só retorna 17 posições para a carteira 18.

A regra abaixo está descrito no link http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc5175Bloqueto.pdf

"A utilização do campo “Nosso-Número” com 17 posições livres somente pode ser utilizada por
clientes cadastrados com convênio de cobrança de 6 posições, nas Modalidades de Cobrança
Sem Registro – Carteira 16 e 18.

O “Nosso-Número”, neste caso, não possui dígito verificador.
É obrigatório a impostação do Código “21” na posição 43 a 44 do Código de Barras para indicar
a utilização do “Nosso-Número” com 17 posições livres.
Se o código “21” não for informado, o Sistema de Cobrança interpretará o Código de
Barras/Linha Digitável como “nosso-número” de 11 posições."

Oi @peruzzo

Pode postar um trecho de código de exemplo onde o problema aconteça? A correção parece simples, mas queria testar com certeza.

Abraços

@mariofts segue abaixo o trecho de código, copiei do exemplo que tem no projeto e só alterei os dados do emissor, ao executar é lançada uma execução de erro na geração do código de barras, pois é diferente de 44 posições.

Datas datas = Datas.novasDatas().comDocumento(1, 5, 2008)
                .comProcessamento(1, 5, 2008).comVencimento(2, 5, 2008);

Emissor emissor = Emissor.novoEmissor()
            .comCedente("Fulano de Tal")
            .comAgencia(3415).comDigitoAgencia('0')
                .comContaCorrente(7406)
                .comNumeroConvenio(820402)
                .comDigitoContaCorrente('3')
                .comCarteira(16)
                .comNossoNumero(9000206);

Banco banco = new BancoDoBrasil();

Boleto boleto = Boleto.novoBoleto()
    .comBanco(banco)
    .comDatas(datas)
    .comEmissor(emissor)
    .comSacado(Sacado.novoSacado())
    .comValorBoleto("200.00")
    .comNumeroDoDocumento("1234");

System.out.println(banco.geraCodigoDeBarrasPara(boleto));

@peruzzo vc poderia clonar o código que está nesse PR #141 E ver se isso resolve 100%? ai já faço o merge e lanço uma nova versão.

@mariofts funcionou!!! Muito Obrigado pela ajuda.