Module: VerificadorBoletoBr::Calculus::Module10

Included in:
Slip::Arrecadation::CodeAssembly, Slip::Arrecadation::Validity, Slip::Bank::CodeAssembly, Slip::Bank::Validity
Defined in:
lib/verificador_boleto_br/calculus/module10.rb

Instance Method Summary collapse

Instance Method Details

#modulo10(str) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/verificador_boleto_br/calculus/module10.rb', line 4

def modulo10(str)
  str  = str.chars.reverse
  i    = 2
  sum  = 0
  res  = 0

  str.each do |char|
    res = char.to_i * i
    sum += res > 9 ? (res - 9) : res
    i = i == 2 ? 1 : 2
  end

  if (sum % 10) == 0
    0
  else
    10 - (sum % 10)
  end
end