-
-
Notifications
You must be signed in to change notification settings - Fork 242
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adiciona digito verificador na remessa 400 do Santander #236
Conversation
@@ -202,6 +203,13 @@ def conta_padrao_novo? | |||
conta_corrente.present? && conta_corrente.length > 8 | |||
end | |||
|
|||
def digito_nosso_numero(nosso_numero) | |||
"#{nosso_numero.to_s.rjust(7, '0')}".modulo11( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Style/UnneededInterpolation: Prefer to_s over string interpolation.
@@ -104,7 +104,8 @@ def monta_detalhe(pagamento, sequencial) | |||
detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14] | |||
detalhe << codigo_transmissao # Código de Transmissão 9[20] | |||
detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # identificacao do tit. na empresa X[25] | |||
detalhe << pagamento.nosso_numero.to_s.rjust(8, '0') # nosso numero 9[8] | |||
detalhe << pagamento.nosso_numero.to_s.rjust(7, '0') # identificacao do titulo (nosso numero) 9[7] | |||
detalhe << digito_nosso_numero(pagamento.nosso_numero).to_s # nosso numero (dv) 9[01] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Metrics/LineLength: Line is too long. [121/80]
@@ -104,7 +104,8 @@ def monta_detalhe(pagamento, sequencial) | |||
detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14] | |||
detalhe << codigo_transmissao # Código de Transmissão 9[20] | |||
detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # identificacao do tit. na empresa X[25] | |||
detalhe << pagamento.nosso_numero.to_s.rjust(8, '0') # nosso numero 9[8] | |||
detalhe << pagamento.nosso_numero.to_s.rjust(7, '0') # identificacao do titulo (nosso numero) 9[7] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Metrics/LineLength: Line is too long. [128/80]
Layout/TrailingWhitespace: Trailing whitespace detected.
Esqueci dos testes, logo a noite atualizo aqui 👍🏻 |
@netosjb entendi seu patch, mas vou recusá-lo. A idéia ali é enviar o nosso número completo, já com o dígito. Não seria necessário recalcular dentro da remessa, Se no Bradesco está assim, devemos retirar. |
Entendi, minha ideia inicial tbm era já trazer o nosso numero com dv calculado, mas olhando as outras implementações me levou a pensar que não era o padrão correto.. brcobranca/lib/brcobranca/boleto/santander.rb Lines 48 to 55 in 97cc755
Será que posso fazer a alteração pra já receber o nosso número com dv tanto pra remessa quanto pro boleto impresso ? |
@kivanio ah eu acho que você quer dizer é que ao fazer a chamada para gerar o boleto (pdf) a lib retorna pra mim o nosso numero com o dv e eu posso me aproveitar disso para guardar as informações. vou verificar isso e depois faço uma nova PR, muito obrigado! |
Isso
Poderia até ter um nosso_numero_boleto_raw que retorna sem os -/. |
@kivanio apenas para entender melhor essa questão, o calculo do Digito Verificador sendo feito aqui é importante para buscar deixar tudo que é referente ao CNAB dentro da biblioteca, claro que dentro do que for possível, é a ideia genérica de modularizar ou "encapsular" o que é especifico de cada funcionalidade, hoje a aplicação que usa a API https://github.com/akretion/boleto_cnab_api considera que esse calculo fica restrito ao BRCobranca, já que na emissão do Boleto não é necessário passar o "Nosso Número com o DV" e por isso ali simplesmente é devolvido o arquivo PDF a ser impresso, quer dizer toda a logica do DV fica restrita aqui e isso, mesmo para qualquer outra aplicação que usa o BRCobranca, pode ser importante porque ela não precisa se "preocupar" com o DV isso pode ser ignorado e fica "transparente" porque é tratado totalmente aqui, por isso pergunto não é melhor mesmo para outras aplicações e mesmo com a questão de desempenho que esse calculo do DV na geração do Arquivo de Remessa seja feito aqui? A alteração que pode ser feita para atender o caso do Santander 400 é o que está sendo feito no caso do Santander 240 https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/remessa/cnab240/santander.rb#L92
https://github.com/kivanio/brcobranca/blob/master/lib/brcobranca/remessa/cnab240/santander.rb#L42
|
@mbcosta Não lembro/Sei o motivo desse cálculo sendo feito na remessa. Isso porque a remessa pode ser usada sem a parte do boleto. |
Adiciona o calculo do digito verificador na remessa 400 do banco Santander.
(Segui a mesma logica já feito no do Bradesco)
Conforme especificado no manual do Santander: