class CnpjUtils::Cnpj

Attributes

numbers[R]

Acessor de leitura para os números

Public Class Methods

new(numbers) click to toggle source

Inicializador da classe

# 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

Public Instance Methods

check_remainder(remainder) click to toggle source

Checa o resto da divisão

# File lib/cnpj_utils/cnpj.rb, line 54
def check_remainder(remainder)
  if remainder < 2
    0
  else
    (11 - remainder)
  end
end
first_digit() click to toggle source

Gera o primeiro dígito verificador

# 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_cnpj() click to toggle source

Gera o CNPJ propriamente dito

# File lib/cnpj_utils/cnpj.rb, line 19
def generate_cnpj
  @numbers << first_digit
  @numbers << second_digit
  @numbers.join("")
end
second_digit() click to toggle source

Gera o segundo dígito verificador

# 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