Class: BoletoBancario::Calculos::Modulo11FatorDe2a9

Inherits:
Modulo11
  • Object
show all
Defined in:
lib/boleto_bancario/calculos/modulo11_fator_de2a9.rb

Overview

Módulo 11 Fator de 2 a 9

Passos

1) Tomando-se os algarismos multiplique-os, iniciando-se da direita para a esquerda, pela seqüência numérica de 2 a 9 (2, 3, 4, 5, 6, 7, 8, 9 … 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 resultado desta expressão for igual a 0, 1, 10 ou 11, considere DAC = 1.

Exemplo

Considerando o seguinte número: ‘89234560’.

1) Multiplicando a seqüência de multiplicadores:

8    9    2    3    4    5    6    0
*    *    *    *    *    *    *    *
9    8    7    6    5    4    3    2

2) Soma-se o resultado dos produtos obtidos no item “1” acima:

72 + 72 + 14 + 18 + 20 + 20 + 18 + 0
# => 234

3) Determina-se o resto da Divisão:

234 % 11
# => 3

4) Calcula-se o DAC:

11 - 3
# => 8 =============> Resultado final retornado.

Examples:


BoletoBancario::Calculos::Modulo11FatorDe2a9.new('1')
# => '9'

BoletoBancario::Calculos::Modulo11FatorDe2a9.new('91')
# => '4'

BoletoBancario::Calculos::Modulo11FatorDe2a9.new('189')
# => '9'

Returns:

  • (String)

    Retorna o resultado do cálculo descrito acima.

Direct Known Subclasses

Modulo11FatorDe2a9RestoZero

Instance Attribute Summary

Attributes inherited from Modulo11

#number

Instance Method Summary collapse

Methods inherited from Modulo11

#initialize, #mod_division, #total

Constructor Details

This class inherits a constructor from BoletoBancario::Calculos::Modulo11

Instance Method Details

#calculateFixnum

Calcula o número pelos fatores de multiplicação de 2 a 9. Depois calcula o resto da divisão por 11 e subtrai por 11. Se o resultado desse cálculo for igual a 0, 1, 10 ou 11, considere DAC = 1.

Returns:

  • (Fixnum)


76
77
78
79
80
# File 'lib/boleto_bancario/calculos/modulo11_fator_de2a9.rb', line 76

def calculate
  return 1 if total > 9

  total
end

#fatoresArray

Sequência numérica de 2 a 9 que será feito a multiplicação de cada dígito do número passado no #initialize.

Returns:

  • (Array)

    Sequência numérica



66
67
68
# File 'lib/boleto_bancario/calculos/modulo11_fator_de2a9.rb', line 66

def fatores
  [2, 3, 4, 5, 6, 7, 8, 9]
end