class Loa::TransferenciaDeRecurso < ApplicationRecord
  has_paper_trail

  belongs_to :orcamento, required: true
  belongs_to :unidade_orcamentaria_origem, class_name: 'Loa::UnidadeOrcamentaria', foreign_key: "unidade_orcamentaria_origem_id", required: true
  belongs_to :unidade_orcamentaria_destino, class_name: 'Loa::UnidadeOrcamentaria', foreign_key: "unidade_orcamentaria_destino_id", required: true
  belongs_to :fonte_de_recursos, class_name: 'Base::FonteDeRecursos', required: true

  validates_presence_of :unidade_orcamentaria_origem_id, :unidade_orcamentaria_destino_id, :fonte_de_recursos_id, :valor, :orcamento_id

  validates_numericality_of :valor, greater_than: 0
  validates_uniqueness_of :fonte_de_recursos_id, scope: [:unidade_orcamentaria_destino_id, :unidade_orcamentaria_origem_id], message: "já existe lançamento para esta fonte e Unidades"

  validate :destino_nao_pode_ser_igual_a_origem

  def destino_nao_pode_ser_igual_a_origem
    if self.unidade_orcamentaria_origem.present? && self.unidade_orcamentaria_destino.present?
      errors.add(:unidade_orcamentaria_destino_id, "não pode ser igual a origem") if self.unidade_orcamentaria_origem_id == self.unidade_orcamentaria_destino_id
    end
  end

end
