59 lines
1.3 KiB
Ruby
59 lines
1.3 KiB
Ruby
class VContact < ApplicationRecord
|
|
|
|
|
|
def volumes
|
|
VolumePeriodique.where(:codemanaginn => self.codemanaginn, :codeindicateur => "MGI000000001").order("datereception DESC")
|
|
|
|
end
|
|
|
|
def self.update_mvt
|
|
|
|
vc_ids = VolumePeriodique.group(:codemanaginn).map{|a| a.codemanaginn}
|
|
|
|
|
|
VContact.where(:enabled => true).where("codemanaginn not in(?)", vc_ids).update_all(:nbr_mvt => 0)
|
|
|
|
return true
|
|
end
|
|
|
|
def self.update_caches(force = false)
|
|
|
|
|
|
@gen_past_time = Time.now
|
|
|
|
if !force
|
|
v_contacts = VContact.where(:enabled => true, :nbr_mvt => nil)
|
|
else
|
|
v_contacts = VContact.where(:enabled => true)
|
|
end
|
|
|
|
#v_contacts = v_contacts.limit(2)
|
|
|
|
v_contacts.each do |vc|
|
|
puts vc.codemanaginn
|
|
vc.cumul = vc.volumes.select("valeur","datereception").where("valeur > 0.0").sum(:valeur)
|
|
vc.cagnotte = vc.volumes.select("valeur","datereception").sum(:valeur)
|
|
vc.nbr_mvt = vc.volumes.count
|
|
|
|
vc.last_volume_at = vc.volumes.select("datereception").first.datereception if vc.volumes.first
|
|
|
|
vc.prime = (vc.ac_rate / 100.0) * vc.cagnotte
|
|
|
|
vc.save
|
|
end
|
|
|
|
if @gen_past_time
|
|
|
|
return "Rendu en #{(Time.now - @gen_past_time).round(3)}s"
|
|
else
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|