Class: BraDocuments::CNPJGenerator
- Inherits:
-
NationalRegisterBase
- Object
- NationalRegisterBase
- BraDocuments::CNPJGenerator
- Defined in:
- lib/bra_documents/cnpj_generator.rb
Constant Summary collapse
- COMPANY_NUMBER_SIZE =
8
- MATRIX_SUBSIDIARY_SIZE =
4
Constants inherited from NationalRegisterBase
Class Method Summary collapse
-
.generate(company_number: nil, matrix_subsidiary_number: nil, formatted: false) ⇒ Object
Generates a random CNPJ document number or add verifying digits to one if it's given.
-
.valid_verification_digit?(document:) ⇒ Boolean
Returns if a CPF has a valid verification digit.
Class Method Details
.generate(company_number: nil, matrix_subsidiary_number: nil, formatted: false) ⇒ Object
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"
36 37 38 39 40 41 42 43 44 |
# File 'lib/bra_documents/cnpj_generator.rb', line 36 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 |
.valid_verification_digit?(document:) ⇒ Boolean
Returns if a CPF has a valid verification digit.
BraDocuments::CPFGenerator.valid_verification_digit?(document: '11.111.111/1111-11')
# => false
BraDocuments::CPFGenerator.valid_verification_digit?(document: '20.163.606/0001-55')
# => true
BraDocuments::CPFGenerator.valid_verification_digit?(document: '29432530000190')
# => true
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/bra_documents/cnpj_generator.rb', line 56 def valid_verification_digit?(document:) raw_document = Formatter.raw(document) return false if black_listed?(raw_document) || !Matcher.match?(raw_document, kind: :cnpj, mode: :raw) company_number = raw_document.slice(0..(COMPANY_NUMBER_SIZE - 1)) matrix_subsidiary_number = raw_document .slice(COMPANY_NUMBER_SIZE..(COMPANY_NUMBER_SIZE + MATRIX_SUBSIDIARY_SIZE - 1)) verified_digit = raw_document.slice(-2..-1) generate(company_number: company_number, matrix_subsidiary_number: matrix_subsidiary_number) .end_with?(verified_digit) end |