Class: BoletoBancario::Calculos::Modulo10
- Inherits:
-
String
- Object
- String
- BoletoBancario::Calculos::Modulo10
- Defined in:
- lib/boleto_bancario/calculos/modulo10.rb
Overview
Cálculo do Modulo 10
Passos
1) Multiplica-se cada algarismo do campo pela seqüência de multiplicadores 2, 1, 2, 1, 2, 1 …, posicionados da direita para a esquerda.
2) Some individualmente, os algarismos dos resultados dos produtos, obtendo-se o total (N).
3) Divida o total encontrado (N) por 10, e determine o resto da divisão como MOD 10 (N).
4) Encontre o DAC através da seguinte expressão:
DAC = 10 - Mod 10 (n)
OBS.: Se o resultado do passo 4 for 10, considere o DAC = 0.
Exemplos
Considerando-se a seguinte representação numérica ‘12345’.
1) Multiplicando a seqüência de multiplicadores:
1 2 3 4 5
* * * * * ===> Multiplicação.
2 1 2 1 2
2) Some, individualmente:
2 + 2 + 6 + 4 + 1 + 0 (Veja a observação abaixo explicando o '1' + '0').
# => 15
OBS.:: Resultado da soma que possua 2 digitos deve somar cada dígito. Exemplos: 10 -> 1 + 0. 11 -> 1 + 1, 28 -> 2 + 8, etc.
3) Divida o total encontrado por 10, a fim de determinar o resto da divisão:
15 % 10
# => 5
4) Calculando o DAC:
10 - 5
# => 5 =======> Resultado final retornado.
Instance Method Summary collapse
-
#calculate ⇒ String
Resultado final do cálculo do módulo 10.
- #initialize(number) ⇒ String constructor
Constructor Details
#initialize(number) ⇒ String
65 66 67 68 |
# File 'lib/boleto_bancario/calculos/modulo10.rb', line 65 def initialize(number) @number = number super(calculate.to_s) end |
Instance Method Details
#calculate ⇒ String
Returns Resultado final do cálculo do módulo 10.
72 73 74 75 76 77 78 79 80 |
# File 'lib/boleto_bancario/calculos/modulo10.rb', line 72 def calculate sum_total = FatoresDeMultiplicacao.new(@number, fatores: [2, 1]).collect do |result_of_each_sum| Digitos.new(result_of_each_sum).sum end.sum total = 10 - (sum_total % 10) return 0 if total.equal?(10) total end |