Class: CnpjUtils::Cnpj

Inherits:
Object
  • Object
show all
Defined in:
lib/cnpj_utils/cnpj.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(numbers) ⇒ Cnpj

Inicializador da classe



8
9
10
11
12
13
14
15
16
# File 'lib/cnpj_utils/cnpj.rb', line 8

def initialize(numbers)
  if numbers.is_a? String
    numbers = numbers.split('')
  elsif numbers.is_a? Integer
    numbers = numbers.to_s.split('')
  end

  @numbers = numbers
end

Instance Attribute Details

#numbersObject (readonly)

Acessor de leitura para os números



5
6
7
# File 'lib/cnpj_utils/cnpj.rb', line 5

def numbers
  @numbers
end

Instance Method Details

#check_remainder(remainder) ⇒ Object

Checa o resto da divisão



54
55
56
57
58
59
60
# File 'lib/cnpj_utils/cnpj.rb', line 54

def check_remainder(remainder)
  if remainder < 2
    0
  else
    (11 - remainder)
  end
end

#first_digitObject

Gera o primeiro dígito verificador



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/cnpj_utils/cnpj.rb', line 26

def first_digit
  if @numbers.size == 12
    value = 0
    multipliers = [5,4,3,2,9,8,7,6,5,4,3,2]

    multipliers.each_with_index do |mult, index|
      value += @numbers[index].to_i * mult
    end

    check_remainder(value % 11)
  end
end

#generate_cnpjObject

Gera o CNPJ propriamente dito



19
20
21
22
23
# File 'lib/cnpj_utils/cnpj.rb', line 19

def generate_cnpj
  @numbers << first_digit
  @numbers << second_digit
  @numbers.join("")
end

#second_digitObject

Gera o segundo dígito verificador



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/cnpj_utils/cnpj.rb', line 40

def second_digit
  if @numbers.size == 13
    value = 0
    multipliers = [6,5,4,3,2,9,8,7,6,5,4,3,2]

    multipliers.each_with_index do |mult, index|
      value += @numbers[index].to_i * mult
    end

    check_remainder(value % 11)
  end
end