mmsc_app/app/models/m_odr_file_roulage.rb
Nicolas Bally f1b114f7e4 suite
2020-06-11 07:59:21 +02:00

60 lines
1.5 KiB
Ruby

class MOdrFileRoulage < ApplicationRecord
belongs_to :m_odr_file
belongs_to :m_event
before_validation do
self.nbr_primes = 2
self.nbr_primes_not_useds = self.nbr_primes - nbr_primes_useds
end
def generate_prime
prime_ids = []
if nbr_primes_to_use = self.nbr_primes_not_useds and nbr_primes_to_use > 0
if achats = MOdrFile.where(:admin_ok => true, :p_customer_id => self.m_odr_file.p_customer_id,:m_odr_file_type_id => 2).where("buy_at <= ? and nbr_pneus_not_useds > 0", self.date) and (achats.sum(:nbr_pneus_not_useds) > 0)
state = "A traiter"
prime = MOdrPrime.new(:state => state, :m_odr_file_roulage => self, :p_customer_id => self.m_odr_file.p_customer_id)
n_tot = 0
achats.each do |a|
if n_tot < nbr_primes_to_use
if (nbr_primes_to_use - n_tot) <= a.nbr_pneus_not_useds
n = (nbr_primes_to_use - n_tot)
else
n = a.nbr_pneus_not_useds
end
prime.m_odr_prime_files.build(:m_odr_file => a, :nbr_pneus => n, :amount => n*15.0)
a.nbr_pneus_useds = a.nbr_pneus_useds.to_i + n
prime.save
a.save
prime_ids << prime.id
n_tot = n_tot + n
self.nbr_primes_useds = self.nbr_primes_useds.to_i + n
self.save
end
end
end
end
prime_ids = prime_ids.uniq
MOdrPrime.where(:id => prime_ids).all.each do |p|
p.send_init_mail
end
end
end