class Projecao::IndiceDeProjecao < ApplicationRecord
	has_paper_trail

	belongs_to :grupo_de_indice
	belongs_to :projecao_de_receita

	has_many :projecoes_do_indice, dependent: :destroy, inverse_of: :indice_de_projecao
	accepts_nested_attributes_for :projecoes_do_indice, allow_destroy: true

	validates_uniqueness_of :nome, scope: :grupo_de_indice_id, case_sensitive: false

	validates_presence_of :grupo_de_indice_id, :projecao_de_receita_id, :nome

	after_initialize :inicializa_projecoes_do_indice, if: Proc.new{|indice_de_projecao| indice_de_projecao.projecao_de_receita.present?}

	private
	def inicializa_projecoes_do_indice
		if projecoes_do_indice.blank?
			exercicios_de_projecao.each { |exercicio| projecoes_do_indice.new(exercicio: exercicio) }
		end
	end

	def exercicios_de_projecao
		return projecao_de_receita.exercicios_destino
	end
end
