class BraDocuments::CNPJGenerator

Constants

COMPANY_NUMBER_SIZE
MATRIX_SUBSIDIARY_SIZE

Public Class Methods

generate(company_number: nil, matrix_subsidiary_number: nil, formatted: false) click to toggle source

Generates a random CNPJ document number or add verifying digits to one if it's given. It can return only numbers or formatted with mask

BraDocuments::CNPJGenerator.generate # => “62885807804809” BraDocuments::CNPJGenerator.generate(formatted: true) # => “53.855.973/0664-39” BraDocuments::CNPJGenerator.generate(company_number: '53855973') # => “53855973879456” BraDocuments::CNPJGenerator.generate(company_number: '53855973', formatted: true) # => “53.855.973/8189-02” BraDocuments::CNPJGenerator.generate(company_number: '53855973', matrix_subsidiary_number: '0001') # => “53855973000179” BraDocuments::CNPJGenerator.generate(company_number: '53855973', matrix_subsidiary_number: '0001', formatted: true) # => “53.855.973/0001-79”

# File lib/bra_documents/cnpj_generator.rb, line 21
def generate(company_number: nil, matrix_subsidiary_number: nil, formatted: false)
  company_number = number_for('Company', COMPANY_NUMBER_SIZE, company_number)
  matrix_subsidiary_number = number_for('Matrix or subsidiary', MATRIX_SUBSIDIARY_SIZE, matrix_subsidiary_number)
  numbers = company_number + matrix_subsidiary_number

  full_number = complete!(numbers)

  formatted ?  Formatter.format(full_number, as: :cnpj) : full_number
end

Private Class Methods

verification_digit_multiplicators_for(numbers) click to toggle source
# File lib/bra_documents/cnpj_generator.rb, line 33
def verification_digit_multiplicators_for(numbers)
  (2..(numbers.size - 7)).to_a.reverse + (2..9).to_a.reverse
end