Class: BrBoleto::Calculos::Modulo11Fator3197
- Defined in:
- lib/br_boleto/calculos/modulo11_fator3197.rb
Overview
Módulo 11 Fator 3197
Passos
1) Tomando-se os algarismos multiplique-os, iniciando-se da direita para a esquerda, pela seqüência numérica (3, 1, 9 ,7, 3, 1, 9 ,7 … e assim por diante).
2) Some o resultado de cada produto efetuado e determine o total como (N).
3) Divida o total (N) por 11 e determine o resto obtido da divisão como Mod 11(N).
4) Calcule o dígito verificador (DAC) através da expressão:
DIGIT = 11 - Mod 11 (n)
OBS.: Se o resto da divisão for “1” ou “0”, o resultado deve ser = 0
Exemplo
Considerando o seguinte número: ‘306900008281900010005’.
1) Multiplicando a seqüência de multiplicadores:
3 0 6 9 0 0 0 0 8 2 8 1 9 0 0 0 1 0 0 0 5
* * * * * * * * * * * * * * * * * * * * *
3 1 9 7 3 1 9 7 3 1 9 7 3 1 9 7 3 1 9 7 3
2) Soma-se o resultado dos produtos obtidos no item “1” acima:
9 0 54 63 0 0 0 0 24 2 72 7 27 0 0 0 3 0 0 0 15
# => 204
3) Determina-se o resto da Divisão:
204 % 11
# => 55
Como é maior que 10, então pega-se 60-55 = 5
Por exemplo, se fosse 27, então pegaria 30-27 = 3
4) Calcula-se o DAC:
11 - 5
# => 6 =============> Resultado final retornado.
Instance Attribute Summary
Attributes inherited from Modulo11
Instance Method Summary collapse
- #calculate ⇒ Fixnum
-
#fatores ⇒ Array
Sequência numérica 3197 que será feito a multiplicação de cada dígito do número passado no #initialize.
Methods inherited from Modulo11
#initialize, #mod_division, #total
Constructor Details
This class inherits a constructor from BrBoleto::Calculos::Modulo11
Instance Method Details
#calculate ⇒ Fixnum
79 80 81 82 83 84 85 |
# File 'lib/br_boleto/calculos/modulo11_fator3197.rb', line 79 def calculate if mod_division.equal?(1) or mod_division.equal?(0) 0 else total end end |
#fatores ⇒ Array
Sequência numérica 3197 que será feito a multiplicação de cada dígito do número passado no #initialize.
73 74 75 |
# File 'lib/br_boleto/calculos/modulo11_fator3197.rb', line 73 def fatores [3,7,9,1] end |