Class: BoletoBancario::Calculos::Modulo11FatorDe2a7
- Defined in:
- lib/boleto_bancario/calculos/modulo11_fator_de2a7.rb
Overview
Módulo 11 Fator de 2 a 7
Passos
1) Tomando-se os algarismos multiplique-os, iniciando-se da direita para a esquerda, pela seqüência numérica de 2 a 7 (2, 3, 4, 5, 6, 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”, desprezar a diferença entre o divisor menos o resto que será “10” e considerar o dígito como “P”.
OBS.: Se o resto da divisão for “0”, desprezar o cálculo de subtração entre divisor e resto, e considerar o “0” como dígito.
Exemplo
Considerando o seguinte número: ‘89234560’.
1) Multiplicando a seqüência de multiplicadores:
1 9 0 0 0 0 0 0 0 0 0 0 2
* * * * * * * * * * * * *
2 7 6 5 4 3 2 7 6 5 4 3 2
2) Soma-se o resultado dos produtos obtidos no item “1” acima:
2 + 63 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4
# => 69
3) Determina-se o resto da Divisão:
69 % 11
# => 3
4) Calcula-se o DAC:
11 - 3
# => 8 =============> Resultado final retornado.
Instance Attribute Summary
Attributes inherited from Modulo11
Instance Method Summary collapse
-
#calculate ⇒ Fixnum
Calcula o número pelos fatores de multiplicação de 2 a 7.
-
#fatores ⇒ Array
Sequência numérica de 2 a 7 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 BoletoBancario::Calculos::Modulo11
Instance Method Details
#calculate ⇒ Fixnum
Calcula o número pelos fatores de multiplicação de 2 a 7. Depois calcula o resto da divisão por 11 e subtrai por 11. Se o resultado desse cálculo for igual a 11, considere DAC = 0. Se o resultado desse cálculo for igual a 10, considere DAC = P.
86 87 88 89 90 91 92 93 94 |
# File 'lib/boleto_bancario/calculos/modulo11_fator_de2a7.rb', line 86 def calculate return 0 if total.equal?(11) if total == 10 'P' else total end end |
#fatores ⇒ Array
Sequência numérica de 2 a 7 que será feito a multiplicação de cada dígito do número passado no #initialize.
75 76 77 |
# File 'lib/boleto_bancario/calculos/modulo11_fator_de2a7.rb', line 75 def fatores [2, 3, 4, 5, 6, 7] end |