class Contabilidade::MetaFisicaDaLiquidacao < ApplicationRecord
	has_paper_trail

	belongs_to :liquidacao
	belongs_to :meta_fisica, class_name: 'Loa::MetaFisica'

	validates_presence_of :liquidacao_id
	validates_presence_of :meta_fisica_id
	validates_presence_of :quantidade

	validates_uniqueness_of :meta_fisica_id, scope: :liquidacao_id, message: 'já existe nesta liquidação'

	validates_numericality_of :quantidade, greater_than: 0

	validate :quantidade_less_than_or_equal_to_quantidade_atual_da_meta_fisica, if: Proc.new{ meta_fisica.present? }

	def produto_da_meta_fisica
		"#{meta_fisica.produto.to_s.truncate(30)}"
	end

	private
	def quantidade_less_than_or_equal_to_quantidade_atual_da_meta_fisica
		errors.add(:quantidade, 'quantidade deve ser menor ou igual a quantidade a realizar da meta física selecionada') if quantidade.to_f > self.meta_fisica.quantidade_atual_da_meta_fisica
	end

end
