class Contabilidade::OrcamentoDaReceitaPorEventoContabil < ApplicationRecord
	has_paper_trail

	belongs_to :evento_contabil
	belongs_to :receita_stn, class_name: "Base::ReceitaStn"

	validates_presence_of :evento_contabil_id, :receita_stn_id
	validate :uniq_receita_stn

	def uniq_receita_stn
		orcamento = evento_contabil.orcamento
		if acao_do_evento.eventos_contabeis.where(orcamento_id: orcamento.id).joins(:orcamentos_da_receita_por_evento_contabil).
				where(contabilidade_orcamentos_da_receita_por_evento_contabil: {receita_stn_id: self.receita_stn_id}).any?
			errors.add(:receita_stn_id, 'já existe para essa ação do evento contábil')
		end
	end

	def existem_movimentacoes_para_a_receita_stn?
		evento_contabil.movimentacoes_do_plano_de_contas.each do |movimentacao|
			if !defined?(movimentacao.gerador.receita_stn).nil? && movimentacao.gerador.receita_stn.try(:id) == self.receita_stn_id
				return true
			end
		end
		return false
	end

	def acao_do_evento
		evento_contabil.acao_do_sistema
	end

end
