struct CNPJ

Overview

Represents a CNPJ (Cadastro Nacional de Pessoas Jurídica) identifier.

A CNPJ object always contains a valid identifier, so you can safely assume that it never holds an invalid identifier.

cnpj = CNPJ.new("24.485.147/0001-87")
cnpj.value       # => "24.485.147/0001-87"
cnpj.formatted   # => "24.485.147/0001-87"
cnpj.unformatted # => "24485147000187"
cnpj.root        # => "24485147"

CNPJ.new("11111111111111") # => raises `ArgumentError`

CNPJ.parse?("11111111111111")     # => nil
CNPJ.parse?("24.485.147/0001-87") # => #<CNPJ: ...>

Defined in:

cpf_cnpj/cnpj/cnpj.cr
cpf_cnpj/cnpj/errors.cr
cpf_cnpj/cnpj/validator.cr
cpf_cnpj/json.cr
cpf_cnpj/yaml.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from struct CadastroID

==(other : self) : Bool ==, formatted : String formatted, to_json(json : JSON::Builder) : Nil to_json, to_s(io : IO) : Nil
to_s : String
to_s
, to_yaml(yaml : YAML::Nodes::Builder) : Nil to_yaml, unformatted : String unformatted, value : String value

Constructor methods inherited from struct CadastroID

from_json_object_key?(key : String) : self from_json_object_key?, new(context : YAML::ParseContext, node : YAML::Nodes::Node) : self
new(value : String) : self
new(pull : JSON::PullParser) : self
new

Class methods inherited from struct CadastroID

from_rs(rs : DB::ResultSet) : self | Nil from_rs, parse?(value : String) : self | Nil parse?

Constructor Detail

def self.from_json_object_key?(key : String) : self #

Deserializes the given JSON key into a CNPJ.

NOTE require "cpf_cnpj/json" is required to opt-in to this feature.


def self.new(context : YAML::ParseContext, node : YAML::Nodes::Node) : self #

Creates CNPJ from YAML using YAML::ParseContext.

NOTE require "cpf_cnpj/yaml" is required to opt-in to this feature.

require "yaml"
require "cpf_cnpj"
require "cpf_cnpj/yaml"

class Example
  include YAML::Serializable

  property cnpj : CNPJ
end

example = Example.from_yaml("cnpj: 7B.N1F.Y9N/0001-98")
example.cnpj # => #<CNPJ: ...>

def self.new(value : String) #

Creates a CNPJ from a String.

It accepts formatted and stripped strings

If the String isn't a valid CNPJ, an CNPJ::InvalidValueError exception will be raised. See .parse if you want a safe way to initialize a CNPJ.

CNPJ.new("VCZ83T1R000106")     # => #<CNPJ: ...>
CNPJ.new("24.485.147/0001-87") # => #<CNPJ: ...>
CNPJ.new("1234")               # => raises `CNPJ::InvalidValueError`

def self.new(pull : JSON::PullParser) : self #

Creates CNPJ from JSON using JSON::PullParser.

NOTE require "cpf_cnpj/json" is required to opt-in to this feature.

require "json"
require "cpf_cnpj"
require "cpf_cnpj/json"

class Example
  include JSON::Serializable

  property cnpj : CNPJ
end

example = Example.from_json(%({"cnpj": "7B.N1F.Y9N/0001-98"}))
example.cnpj # => #<CNPJ: ...>

Class Method Detail

def self.parse?(value : String) : self | Nil #

Returns a CNPJ if the given String is a valid CNPJ identifier, otherwise returns nil.

CNPJ.parse?("VCZ83T1R000106")     # => #<CNPJ: ...>
CNPJ.parse?("24.485.147/0001-87") # => #<CNPJ: ...>
CNPJ.parse?("1234")               # => nil

Instance Method Detail

def formatted : String #

Returns the formatted CNPJ identifier

cpf = CNPJ.new("24485147000187")
cpf.formatted # => "24.485.147/0001-87"

def root : String #

Returns the first eight characters of the identifier. This is useful for verifying parent and subsidiary companies:

cnpj = CNPJ.new("VCZ83T1R000106")
cnpj.root # => "VCZ83T1R"

other_cnpj = CNPJ.new("VCZ83T1R000289")
other_cnpj.root # => "VCZ83T1R"

def unformatted : String #

Returns the unformatted CNPJ identifier

cpf = CNPJ.new("24.485.147/0001-87")
cpf.unformatted # => "24485147000187"

def value : String #

The raw value used to initialize the CNPJ