kivanio / brcobranca

Emissão de bloquetos de cobrança para bancos brasileiros
https://brcobranca.herokuapp.com/
MIT License
372 stars 241 forks source link

[FIX] Boleto Unicred 400, é preciso incluir o campo Banco DV no Codigo de Barras #235

Closed mbcosta closed 2 years ago

mbcosta commented 2 years ago

No caso do Boleto Unicred 400, é preciso incluir o campo Banco DV no Código de Barras, sem essa alteração ao tentar gerar o Boleto ocorre erro aqui https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/base.rb#L208 devido o tamanho ser menor( um caracter a menos do que o esperado ).

De acordo com a documentação https://github.com/kivanio/brcobranca/blob/master/docs/unicred/GR%20-%20COB136%20-%20Composi%C3%A7%C3%A3o%20da%20Ficha%20de%20Compensa%C3%A7%C3%A3o%2003DEZ2019.pdf o valor do campo deve ser 8

image

image

kivanio commented 2 years ago

@mbcosta acho que houve uma confusão. O DV grifado da parte de cima não é o mesmo DV da parte grifada de baixo.

O de cima, o que ele quer, é que no topo do boleto onde tem o logo do banco ou da empresa e do lado tem um 136-8, provavelmente está 136, faltando o -8

O de baixo é calculado baseado nas outras informações. Este não pode ser alterado na gem pois é um cálculo padrão entre todos os bancos.

kivanio commented 2 years ago

O bloquinho verde do lado do banco: https://relacionamento.unimedaltovale.coop.br/wp-content/uploads/2022/01/ddd.png

kivanio commented 2 years ago

Tem que passar o banco_dv no boleto. https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/template/rghost.rb#L154

mbcosta commented 2 years ago

Ola @kivanio , obrigado pela revisão

"O DV grifado da parte de cima não é o mesmo DV da parte grifada de baixo. O de cima, o que ele quer, é que no topo do boleto onde tem o logo do banco ou da empresa e do lado tem um 136-8, provavelmente está 136, faltando o -8 "

Sim é isso mesmo

"O de baixo é calculado baseado nas outras informações. Este não pode ser alterado na gem pois é um cálculo padrão entre todos os bancos."

Estou vendo de atualizar o API Server https://github.com/akretion/boleto_cnab_api é sem essa alteração esse caso não gera e retorna erro aqui https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/base.rb#L208 como escrevi devido a falta de um caracter no código de barras, conferindo os campos enviados o único que não aparece é esse que pela documentação do Unicred tem um valor fixo 8 ( até onde entendi pela documentação )

mbcosta commented 2 years ago

@kivanio desculpe mas não entendi isso "Tem que passar o banco_dv no boleto. https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/template/rghost.rb#L154"

Você poderia por favor explicar o que pode ser feito, ou como deve ser incluído o campo referente ao Banco DV na criação da primeira parte do Código de Barras? Ou quais variáveis ou parte do código eu poderia incluir um ex.: "puts "Variavel_a_ser_validade#{blablabla}"" para confirmar se existe um problema ou algo especifico no Unicred?

Porque testando o que vejo é que a primeira parte do código de barras deveria ter o campo referente ao Banco DV na quinta posição( pela documentação deve ser Banco+Moeda+Banco DV+etc ) porém inicia o Fator Vencimento aqui

https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/base.rb#L206 136990370000030000

e isso gera erro devido o tamanho da string no IF https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/base.rb#L208 retornando a mensagem do ELSE https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/base.rb#L218

Puma caught this error: errors.attributes.base.too_long (Brcobranca::BoletoInvalido) /usr/local/bundle/bundler/gems/brcobranca-97cc755699fd/lib/brcobranca/boleto/base.rb:223:in `codigo_barras'

Com a alteração proposta aqui esse erro não acontece e consigo gerar o Boleto.

kivanio commented 2 years ago

@mbcosta esquece o código de barras. Esse está certo, é um cálculo universal e não pode ser alterado. É feito aqui: https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/base.rb#L210 O DV ali é um DV calculado, não é D do banco, nem nada do tipo.

O seu problema, se é que você tem um, é de layout apenas. Mas agora i que o layout usa o calculo daqui: https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/boleto/base.rb#L134 Então nem de layout é o problema.

Acho que seu problema está em outro lugar. Deve ser algum campo com menos carácteres do que o esperado.

mbcosta commented 2 years ago

obrigado pelo retorno @kivanio o erro era causado porque passou a ser necessário informar a variável conta_corrente_dv no caso do Unicred 400 mas isso no json que consulta a API SERVER, faltava esse campo na criação do código de barras o que causava ter o caracter a menos.