Class: Nfcom::Models::Destinatario
- Inherits:
-
Object
- Object
- Nfcom::Models::Destinatario
- Includes:
- Utils::Helpers
- Defined in:
- lib/nfcom/models/destinatario.rb
Overview
Representa o destinatário (cliente) da NF-COM
O destinatário é o tomador do serviço de comunicação/telecomunicação, podendo ser pessoa física (CPF) ou pessoa jurídica (CNPJ).
Tipos de assinante disponíveis:
-
:comercial (1) - Estabelecimentos comerciais
-
:industrial (2) - Indústrias
-
:residencial (3) - Residências (padrão para provedores)
-
:produtor_rural (4) - Produtores rurais
-
:orgao_publico (5) - Órgãos públicos
-
:prestador_servico (6) - Prestadores de serviço
-
:concessionaria (7) - Concessionárias
-
:outros (99) - Outros
Atributos obrigatórios:
-
CNPJ ou CPF (pelo menos um)
-
razao_social (nome ou razão social)
-
endereco completo
Atributos opcionais:
-
inscricao_estadual (apenas para PJ)
-
email (recomendado para envio da nota)
Validações automáticas:
-
Validação de dígitos verificadores de CPF/CNPJ
-
Rejeita CPF/CNPJ com todos dígitos iguais
-
Valida campos obrigatórios do endereço
Constant Summary collapse
- TIPO_ASSINANTE =
Tipos de assinante
{ comercial: 1, industrial: 2, residencial: 3, produtor_rural: 4, orgao_publico: 5, prestador_servico: 6, concessionaria: 7, outros: 99 }.freeze
Instance Attribute Summary collapse
-
#cnpj ⇒ Object
Returns the value of attribute cnpj.
-
#cpf ⇒ Object
Returns the value of attribute cpf.
-
#email ⇒ Object
Returns the value of attribute email.
-
#endereco ⇒ Object
Returns the value of attribute endereco.
-
#inscricao_estadual ⇒ Object
Returns the value of attribute inscricao_estadual.
-
#razao_social ⇒ Object
Returns the value of attribute razao_social.
-
#tipo_assinante ⇒ Object
Returns the value of attribute tipo_assinante.
Instance Method Summary collapse
- #erros ⇒ Object
-
#initialize(attributes = {}) ⇒ Destinatario
constructor
A new instance of Destinatario.
- #pessoa_fisica? ⇒ Boolean
- #pessoa_juridica? ⇒ Boolean
- #tipo_assinante_codigo ⇒ Object
- #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 = {}) ⇒ Destinatario
Returns a new instance of Destinatario.
85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/nfcom/models/destinatario.rb', line 85 def initialize(attributes = {}) @endereco = Endereco.new @tipo_assinante = :residencial # padrão para provedor de internet attributes.each do |key, value| if key == :endereco && value.is_a?(Hash) @endereco = Endereco.new(value) elsif respond_to?("#{key}=") send("#{key}=", value) end end end |
Instance Attribute Details
#cnpj ⇒ Object
Returns the value of attribute cnpj.
70 71 72 |
# File 'lib/nfcom/models/destinatario.rb', line 70 def cnpj @cnpj end |
#cpf ⇒ Object
Returns the value of attribute cpf.
70 71 72 |
# File 'lib/nfcom/models/destinatario.rb', line 70 def cpf @cpf end |
#email ⇒ Object
Returns the value of attribute email.
70 71 72 |
# File 'lib/nfcom/models/destinatario.rb', line 70 def email @email end |
#endereco ⇒ Object
Returns the value of attribute endereco.
70 71 72 |
# File 'lib/nfcom/models/destinatario.rb', line 70 def endereco @endereco end |
#inscricao_estadual ⇒ Object
Returns the value of attribute inscricao_estadual.
70 71 72 |
# File 'lib/nfcom/models/destinatario.rb', line 70 def inscricao_estadual @inscricao_estadual end |
#razao_social ⇒ Object
Returns the value of attribute razao_social.
70 71 72 |
# File 'lib/nfcom/models/destinatario.rb', line 70 def @razao_social end |
#tipo_assinante ⇒ Object
Returns the value of attribute tipo_assinante.
70 71 72 |
# File 'lib/nfcom/models/destinatario.rb', line 70 def tipo_assinante @tipo_assinante end |
Instance Method Details
#erros ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/nfcom/models/destinatario.rb', line 102 def erros errors = [] errors << 'CNPJ ou CPF é obrigatório' if cnpj.to_s.strip.empty? && cpf.to_s.strip.empty? errors << 'CNPJ inválido' if !cnpj.to_s.strip.empty? && !cnpj_valido?(cnpj) errors << 'CPF inválido' if !cpf.to_s.strip.empty? && !cpf_valido?(cpf) errors << 'Razão social é obrigatória' if .to_s.strip.empty? errors.concat(endereco.erros.map { |e| "Endereço: #{e}" }) unless endereco.valido? campos = {} campos[:razao_social] = { valor: , validador: :er47, nome: 'Razão social', max: 60 } campos[:email] = { valor: email, validador: :er72, nome: 'Email' } if email && !email.to_s.strip.empty? errors.concat(Validators::SchemaValidator.validar_campos(campos)) errors end |
#pessoa_fisica? ⇒ Boolean
129 130 131 |
# File 'lib/nfcom/models/destinatario.rb', line 129 def pessoa_fisica? !cpf.to_s.strip.empty? end |
#pessoa_juridica? ⇒ Boolean
133 134 135 |
# File 'lib/nfcom/models/destinatario.rb', line 133 def pessoa_juridica? !cnpj.to_s.strip.empty? end |
#tipo_assinante_codigo ⇒ Object
125 126 127 |
# File 'lib/nfcom/models/destinatario.rb', line 125 def tipo_assinante_codigo TIPO_ASSINANTE[tipo_assinante] || TIPO_ASSINANTE[:residencial] end |
#valido? ⇒ Boolean
98 99 100 |
# File 'lib/nfcom/models/destinatario.rb', line 98 def valido? erros.empty? end |