class Base::TipoDeOrcamento < ApplicationRecord
	has_paper_trail

	belongs_to :modulo, polymorphic: true, required: true
	has_many :funcao
	has_many :naturezas_da_receita

	validates_presence_of :modulo_id
	validates_presence_of :modulo_type
	validates_presence_of :codigo
	validates_presence_of :descricao

	validates_uniqueness_of :codigo, :descricao, scope: [:modulo_id, :modulo_type]

	validates_length_of :codigo, is: 1
	validates_length_of :descricao, maximum: 40

	validates :modulo_id, immutable: true
	validates :modulo_type, immutable: true

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

	def numero_e_descricao
		"#{numero} - #{descricao}"
	end

	def descricao_abreviada
		abreviacao = case self.descricao
			when "Orçamento Fiscal" then "F"
			when "Orçamento da Seguridade Social" then "S"
			else " "
		end
	end
end
