Class: Nfcom::Models::Endereco
- Inherits:
-
Object
- Object
- Nfcom::Models::Endereco
- Includes:
- Utils::Helpers
- Defined in:
- lib/nfcom/models/endereco.rb
Overview
O código do município (IBGE) pode ser consultado em: www.ibge.gov.br/explica/codigos-dos-municipios.php
Representa o endereço do emitente ou destinatário da NF-COM
Esta classe é utilizada tanto pelo emitente quanto pelo destinatário para armazenar as informações completas de endereço.
Atributos obrigatórios:
-
logradouro (rua, avenida, etc) - 2-60 caracteres (ER47)
-
numero (número do imóvel) - 1-60 caracteres (ER47)
-
bairro (bairro/distrito) - 2-60 caracteres (ER47)
-
municipio (nome do município) - 2-60 caracteres (ER47)
-
codigo_municipio (código IBGE do município - 7 dígitos) (ER2)
-
uf (sigla do estado - 2 letras) (D5)
-
cep (8 dígitos) (ER67)
Atributos opcionais:
-
complemento (apartamento, sala, bloco, etc) - 1-60 caracteres (ER47)
-
codigo_pais (padrão: 1058 para Brasil)
-
pais (padrão: ‘Brasil’)
-
telefone (7-12 dígitos) (ER61)
-
email (ER72)
Instance Attribute Summary collapse
-
#bairro ⇒ Object
Returns the value of attribute bairro.
-
#cep ⇒ Object
Returns the value of attribute cep.
-
#codigo_municipio ⇒ Object
Returns the value of attribute codigo_municipio.
-
#codigo_pais ⇒ Object
Returns the value of attribute codigo_pais.
-
#complemento ⇒ Object
Returns the value of attribute complemento.
-
#email ⇒ Object
Returns the value of attribute email.
-
#logradouro ⇒ Object
Returns the value of attribute logradouro.
-
#municipio ⇒ Object
Returns the value of attribute municipio.
-
#numero ⇒ Object
Returns the value of attribute numero.
-
#pais ⇒ Object
Returns the value of attribute pais.
-
#telefone ⇒ Object
Returns the value of attribute telefone.
-
#uf ⇒ Object
Returns the value of attribute uf.
Instance Method Summary collapse
-
#erros ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#initialize(attributes = {}) ⇒ Endereco
constructor
A new instance of Endereco.
- #valido? ⇒ Boolean
Methods included from Utils::Helpers
apenas_numeros, cnpj_valido?, cpf_valido?, formatar_cep, formatar_cnpj, formatar_cpf, formatar_data, formatar_data_hora, formatar_decimal, gerar_id, limitar_texto, remover_acentos, safe_to_date, vazio?
Constructor Details
#initialize(attributes = {}) ⇒ Endereco
Returns a new instance of Endereco.
55 56 57 58 59 |
# File 'lib/nfcom/models/endereco.rb', line 55 def initialize(attributes = {}) attributes.each do |key, value| send("#{key}=", value) if respond_to?("#{key}=") end end |
Instance Attribute Details
#bairro ⇒ Object
Returns the value of attribute bairro.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def bairro @bairro end |
#cep ⇒ Object
Returns the value of attribute cep.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def cep @cep end |
#codigo_municipio ⇒ Object
Returns the value of attribute codigo_municipio.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def codigo_municipio @codigo_municipio end |
#codigo_pais ⇒ Object
Returns the value of attribute codigo_pais.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def codigo_pais @codigo_pais end |
#complemento ⇒ Object
Returns the value of attribute complemento.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def complemento @complemento end |
#email ⇒ Object
Returns the value of attribute email.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def email @email end |
#logradouro ⇒ Object
Returns the value of attribute logradouro.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def logradouro @logradouro end |
#municipio ⇒ Object
Returns the value of attribute municipio.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def municipio @municipio end |
#numero ⇒ Object
Returns the value of attribute numero.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def numero @numero end |
#pais ⇒ Object
Returns the value of attribute pais.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def pais @pais end |
#telefone ⇒ Object
Returns the value of attribute telefone.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def telefone @telefone end |
#uf ⇒ Object
Returns the value of attribute uf.
51 52 53 |
# File 'lib/nfcom/models/endereco.rb', line 51 def uf @uf end |
Instance Method Details
#erros ⇒ Object
rubocop:disable Metrics/MethodLength
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/nfcom/models/endereco.rb', line 65 def erros # rubocop:disable Metrics/MethodLength errors = [] # Validações de campos obrigatórios errors << 'Logradouro é obrigatório' if logradouro.to_s.strip.empty? errors << 'Número é obrigatório' if numero.to_s.strip.empty? errors << 'Bairro é obrigatório' if bairro.to_s.strip.empty? errors << 'Município é obrigatório' if municipio.to_s.strip.empty? errors << 'Código do município é obrigatório' if codigo_municipio.to_s.strip.empty? errors << 'UF é obrigatório' if uf.to_s.strip.empty? errors << 'CEP é obrigatório' if cep.to_s.strip.empty? # Validações declarativas de formato/schema campos = {} # Campos obrigatórios - validar formato apenas se não estiverem vazios unless logradouro.to_s.strip.empty? campos[:logradouro] = { valor: logradouro, validador: :er47, nome: 'Logradouro', max: 60 } end campos[:numero] = { valor: numero, validador: :er47, nome: 'Número', max: 60 } unless numero.to_s.strip.empty? campos[:bairro] = { valor: bairro, validador: :er47, nome: 'Bairro', max: 60 } unless bairro.to_s.strip.empty? unless municipio.to_s.strip.empty? campos[:municipio] = { valor: municipio, validador: :er47, nome: 'Município', max: 60 } end unless codigo_municipio.to_s.strip.empty? campos[:codigo_municipio] = { valor: codigo_municipio, validador: :er2, nome: 'Código do município' } end campos[:uf] = { valor: uf, validador: :d5, nome: 'UF' } unless uf.to_s.strip.empty? unless cep.to_s.strip.empty? cep_limpo = apenas_numeros(cep) campos[:cep] = { valor: cep_limpo, validador: :er67, nome: 'CEP' } end # Campos opcionais - validar formato apenas se informados if complemento && !complemento.to_s.strip.empty? campos[:complemento] = { valor: complemento, validador: :er47, nome: 'Complemento', max: 60 } end if telefone && !telefone.to_s.strip.empty? telefone_limpo = apenas_numeros(telefone) campos[:telefone] = { valor: telefone_limpo, validador: :er61, nome: 'Telefone' } end campos[:email] = { valor: email, validador: :er72, nome: 'Email' } if email && !email.to_s.strip.empty? # Executar validações declarativas errors.concat(Validators::SchemaValidator.validar_campos(campos)) errors end |
#valido? ⇒ Boolean
61 62 63 |
# File 'lib/nfcom/models/endereco.rb', line 61 def valido? erros.empty? end |