class Renew < ActiveRecord::Base belongs_to :sheet validates :sheet_number, :presence => true validates :email, :presence => true validates :payment_type_id, :presence => true validates :join_type, :presence => true validates :personalized_price, :presence => true, numericality:{greater_than_or_equal_to: 20}, :if => :bienfaiteur? before_validation do if !self.bienfaiteur self.personalized_price = nil end self.payment_type_id = 3 if self.bienfaiteur self.price = self.personalized_price elsif self.join_type == 1 self.price = 10.0 elsif self.join_type == 2 self.price = 15.0 else self.price = nil end if self.sheet_number self.sheet = Sheet.where(:sheet_number => self.sheet_number).first if !self.sheet errors.add(:sheet_number, "Numéro d'adhérent invalide") end end true end YEAR = 2021 def done_return if self.ok and !self.return_done sheet_year = self.sheet.sheet_years.new(:benefactor => self.bienfaiteur, :year => Renew::YEAR, :join_type => self.join_type, :paid_at => Time.now, :amount => self.price, :payment_type => self.payment_type_id, ) if sheet_year.save self.return_done = true self.save else puts sheet_year.errors.messages false end end end end