require 'active_support/concern'

module ClassificacaoDaDespesaConcern
	extend ActiveSupport::Concern

	def valor_total
		self.orcamentos_da_despesa.sum(:valor)
	end

	def valor_previsto_por_unidade_orcamentaria unidade_orcamentaria_id
		self.orcamentos_da_despesa.joins(elemento_de_despesa_por_subacao: :subacao).where(loa_subacoes: {unidade_orcamentaria_id: unidade_orcamentaria_id}).distinct.sum(:valor)
	end

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

	def categoria
		codigo[4..5]
	end


end
