class Contabilidade::SubElementoDeDespesaDaMatriz < ApplicationRecord
  has_paper_trail

  belongs_to :elemento_de_despesa, class_name: 'Base::ElementoDeDespesa', required: true
  has_many :sub_elementos_de_despesa_com_matriz_vinculada, class_name: 'Contabilidade::SubElementoDeDespesaComMatrizVinculada'

  validates_presence_of :codigo

  def codigo_completo
    "#{elemento_de_despesa.codigo[0..5]}#{codigo}"
  end

  def codigo_formatado
    codigo_completo.gsub(/(\d{1})(\d{1})(\d{2})(\d{2})(\d{2})/, '\1.\2.\3.\4.\5')
  end

  def codigo_formatado_e_descricao
    "#{codigo_formatado} - #{descricao.titleize}"
  end
end
