module BoletoBancario module Calculos # === Módulo 11 Fator de 9 a 2 - Resto 10, sendo X # Essa classe difere da outra com Modulo11FatorDe9a2, no momento de verificar o resto da divisão por 11. # # Para mais detalhes veja a classe Modulo11FatorDe9a2. # # ==== Exemplo 10 como resto da divisão # # Considerando o seguinte número: '100008'. # # 1) Multiplicando a seqüência de multiplicadores: # # 1 0 0 0 0 8 # * * * * * * # 4 5 6 7 8 9 # # 2) Soma-se o resultado dos produtos obtidos no item “1” acima: # # 4 + 0 + 0 + 0 + 0 + 72 # # => 76 # # 3) Determina-se o resto da Divisão: # # 76 % 11 # # => 10 # # 4) Quando o resultado for '10', o dígito será: # # resultado == 10 # # => 'X' =============> Resultado final retornado. # # @example # # BoletoBancario::Calculos::Modulo11FatorDe9a2RestoX.new('184122') # # => 'X' # class Modulo11FatorDe9a2RestoX < Modulo11FatorDe9a2 # Calcula o número pelos fatores de multiplicação de 9 a 2. # Depois calcula o resto da divisão por 11. # Se o resultado desse cálculo for igual a 10, então o DAC = X. # Se o resultado desse cálculo for menor que 10, retornar o resultado. # # @return [Fixnum] # def calculate if mod_division.equal?(10) 'X' else mod_division end end end end end