class Base::Rcl < ApplicationRecord
	has_paper_trail

	belongs_to :modulo, polymorphic: true, required: true
	validate :soma_dos_percentuais_deve_ser_cem_porcento

	def soma_dos_percentuais_deve_ser_cem_porcento
		total = total_dos_meses
		if total > 0 && total != 100
			errors.add(:percentual_janeiro, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_fevereiro, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_marco, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_abril, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_maio, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_junho, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_julho, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_agosto, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_setembro, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_outubro, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_novembro, "A soma dos percentuais deve ser 100%")
			errors.add(:percentual_dezembro, "A soma dos percentuais deve ser 100%")
		end
	end

	def percentual(mes)
		mes.to_i > 0 and mes.to_i < 13 ? send("percentual_#{Date::MONTHNAMES[mes].downcase.parameterize}").to_f : 0
	end

	def total_dos_meses
		self.percentual_janeiro.to_f + self.percentual_fevereiro.to_f + self.percentual_marco.to_f + self.percentual_abril.to_f + self.percentual_maio.to_f + self.percentual_junho.to_f + self.percentual_julho.to_f + self.percentual_agosto.to_f + self.percentual_setembro.to_f + self.percentual_outubro.to_f + self.percentual_setembro.to_f + self.percentual_novembro.to_f + self.percentual_dezembro.to_f
	end
end
