Class: Nfcom::Models::Fatura
- Inherits:
-
Object
- Object
- Nfcom::Models::Fatura
- Includes:
- Utils::Helpers
- Defined in:
- lib/nfcom/models/fatura.rb,
lib/nfcom/models/fatura/codigo_de_barras.rb,
lib/nfcom/models/fatura/codigo_de_barras/formato_44.rb
Overview
Representa as informações de faturamento da NF-COM (grupo gFat)
Este grupo contém as informações sobre o período de faturamento, vencimento e valores da fatura.
Atributos obrigatórios:
-
competencia (formato AAAAMM, ex: ‘202601’ ou aceita ‘2026-01’)
-
data_vencimento (formato YYYY-MM-DD, ex: ‘2026-02-15’)
-
codigo_barras (linha digitável do boleto, 1-48 caracteres)
-
valor_fatura (valor total da fatura)
Atributos opcionais:
-
valor_liquido (valor líquido após descontos)
-
periodo_uso_inicio (início do período de uso - YYYY-MM-DD)
-
periodo_uso_fim (fim do período de uso - YYYY-MM-DD)
-
codigo_debito_automatico (código de autorização débito em conta)
-
codigo_banco (número do banco - se houver débito automático)
-
codigo_agencia (número da agência - se houver débito automático)
Defined Under Namespace
Classes: CodigoDeBarras
Instance Attribute Summary collapse
-
#codigo_agencia ⇒ Object
dVencFat - YYYY-MM-DD.
-
#codigo_banco ⇒ Object
dVencFat - YYYY-MM-DD.
-
#codigo_barras ⇒ Object
dVencFat - YYYY-MM-DD.
-
#codigo_debito_automatico ⇒ Object
dVencFat - YYYY-MM-DD.
-
#competencia ⇒ Object
CompetFat - AAAAMM.
-
#data_vencimento ⇒ Object
dVencFat - YYYY-MM-DD.
-
#periodo_uso_fim ⇒ Object
dVencFat - YYYY-MM-DD.
-
#periodo_uso_inicio ⇒ Object
dVencFat - YYYY-MM-DD.
-
#valor_fatura ⇒ Object
dVencFat - YYYY-MM-DD.
-
#valor_liquido ⇒ Object
dVencFat - YYYY-MM-DD.
Instance Method Summary collapse
-
#erros ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#initialize(attributes = {}) ⇒ Fatura
constructor
A new instance of Fatura.
- #linha_digitavel ⇒ 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 = {}) ⇒ Fatura
Returns a new instance of Fatura.
56 57 58 59 60 61 62 63 |
# File 'lib/nfcom/models/fatura.rb', line 56 def initialize(attributes = {}) attributes.each do |key, value| send("#{key}=", value) if respond_to?("#{key}=") end # Se valor_liquido não foi informado, usa o mesmo da fatura @valor_liquido ||= @valor_fatura end |
Instance Attribute Details
#codigo_agencia ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def codigo_agencia @codigo_agencia end |
#codigo_banco ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def codigo_banco @codigo_banco end |
#codigo_barras ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def @codigo_barras end |
#codigo_debito_automatico ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def codigo_debito_automatico @codigo_debito_automatico end |
#competencia ⇒ Object
CompetFat - AAAAMM
54 55 56 |
# File 'lib/nfcom/models/fatura.rb', line 54 def competencia @competencia end |
#data_vencimento ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def data_vencimento @data_vencimento end |
#periodo_uso_fim ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def periodo_uso_fim @periodo_uso_fim end |
#periodo_uso_inicio ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def periodo_uso_inicio @periodo_uso_inicio end |
#valor_fatura ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def valor_fatura @valor_fatura end |
#valor_liquido ⇒ Object
dVencFat - YYYY-MM-DD
44 45 46 |
# File 'lib/nfcom/models/fatura.rb', line 44 def valor_liquido @valor_liquido end |
Instance Method Details
#erros ⇒ Object
rubocop:disable Metrics/MethodLength
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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/nfcom/models/fatura.rb', line 82 def erros # rubocop:disable Metrics/MethodLength errors = [] # Validar competência if competencia.to_s.strip.empty? errors << 'Competência é obrigatória' elsif !competencia_valida? errors << 'Competência deve estar no formato AAAAMM (ex: 202601)' end # Validar data de vencimento if data_vencimento.to_s.strip.empty? errors << 'Data de vencimento é obrigatória' elsif !data_vencimento_valida? errors << 'Data de vencimento deve estar no formato YYYY-MM-DD (ex: 2026-02-15)' end # Validar código de barras (OBRIGATÓRIO) if .to_s.strip.empty? errors << 'Código de barras é obrigatório' elsif .to_s.length > 48 errors << 'Código de barras deve ter no máximo 48 caracteres' end # Validar valor da fatura if valor_fatura.nil? errors << 'Valor da fatura é obrigatório' elsif valor_fatura.to_f <= 0 errors << 'Valor da fatura deve ser maior que zero' end # Validar períodos de uso (se informados) if periodo_uso_inicio && periodo_uso_fim inicio = safe_to_date(periodo_uso_inicio) fim = safe_to_date(periodo_uso_fim) if inicio.nil? || fim.nil? errors << 'Período de uso: datas inválidas' elsif inicio > fim errors << 'Período de uso: data inicial não pode ser posterior à data final' end elsif periodo_uso_inicio || periodo_uso_fim errors << 'Período de uso: ambas as datas (início e fim) devem ser informadas' end # Validar débito automático (se informado) if codigo_debito_automatico errors << 'Código do banco é obrigatório quando há débito automático' if codigo_banco.to_s.strip.empty? errors << 'Código da agência é obrigatório quando há débito automático' if codigo_agencia.to_s.strip.empty? end errors end |
#linha_digitavel ⇒ Object
136 137 138 139 140 |
# File 'lib/nfcom/models/fatura.rb', line 136 def linha_digitavel CodigoDeBarras.new().linha_digitavel rescue StandardError '' end |
#valido? ⇒ Boolean
78 79 80 |
# File 'lib/nfcom/models/fatura.rb', line 78 def valido? erros.empty? end |