class NaturezaDaDespesa::ElementoDeDespesa < ApplicationRecord
	validates_presence_of :codigo, :descricao
	validates_uniqueness_of :descricao, case_sensitive: false
	validates_uniqueness_of :codigo, case_sensitive: false

	has_many :sub_elementos_de_despesa, class_name: "NaturezaDaDespesa::SubElementoDeDespesa", dependent: :destroy, foreign_key: :elemento_de_despesa_id
	has_many :classificacoes_de_despesa, inverse_of: :elemento_de_gasto, class_name: "Base::ElementoDeDespesa", foreign_key: :elemento_de_gasto_id
	has_many :elementos_por_categoria, class_name: 'Base::ElementoPorCategoria', as: :elemento_de_gasto
	has_many :subcategorias, through: :elementos_por_categoria, source: :categoria, class_name: 'Base::Categoria'
	has_many :categorias, through: :elementos_por_categoria, source: :categoria, class_name: 'Base::Categoria'

	def codigo_e_descricao
		"#{codigo} - #{descricao}"
	end
end
