This repository has been archived on 2021-11-24. You can view files and clone it, but cannot push or open issues or pull requests.
phone_app/app/models/p_commercial_objective.rb
2021-08-23 10:26:02 +02:00

88 lines
2.8 KiB
Ruby

class PCommercialObjective < ApplicationRecord
belongs_to :p_commercial
has_many :p_commercial_object_months
accepts_nested_attributes_for :p_commercial_object_months, allow_destroy: true
has_many :p_commercial_object_cats
accepts_nested_attributes_for :p_commercial_object_cats, allow_destroy: true
has_many :p_commercial_object_brands
accepts_nested_attributes_for :p_commercial_object_brands, allow_destroy: true
acts_as_sorting :fields => {
:id => {:name => "Id", :reorder => true},
:p_commercial => {:name => "Commercial", :reorder => true, :sort_name => "p_commercials.name"},
:total_ca => {:name => "CA", :reorder => true},
:start_at => {:name => "Début", :reorder => false},
:end_at => {:name => "Fin", :reorder => false},
:actions => {:name => "Actions", :reorder => false}
}
after_save :update_p_commercial_object_month
after_save :update_p_commercial_object_cat
after_save :update_p_commercial_object_brand
validates :total_ca, :presence => true
validates :total_weight, :presence => true
before_validation :set_end_at
def set_end_at
self.end_at = (self.start_at + 1.year) - 1.day
end
def long_name
self.p_commercial.code.to_s+" "+self.p_commercial.firstname.to_s + " " + self.p_commercial.name.to_s
end
def update_p_commercial_object_month
@p_commercial_object_months = PCommercialObjectMonth.where(:p_commercial_objective_id => self.id)
@p_commercial_object_months.each do |p_commercial_object_month|
p_commercial_object_month.p_commercial_id = self.p_commercial_id
p_commercial_object_month.save
end
end
def update_p_commercial_object_cat
@p_commercial_object_cats = PCommercialObjectCat.where(:p_commercial_objective_id => self.id)
@p_commercial_object_cats.each do |p_commercial_object_cat|
p_commercial_object_cat.p_commercial_id = self.p_commercial_id
p_commercial_object_cat.save
end
end
def update_p_commercial_object_brand
@p_commercial_object_brands = PCommercialObjectBrand.where(:p_commercial_objective_id => self.id)
@p_commercial_object_brands.each do |p_commercial_object_brand|
p_commercial_object_brand.p_commercial_id = self.p_commercial_id
p_commercial_object_brand.save
end
end
def self.generate_for(year)
start_at = Date.parse("01/05/#{year}")
p_commercial_objective = PCommercialObjective.new(:start_at => start_at)
p_commercial_objective.set_end_at
end_at = p_commercial_objective.end_at
start_at = start_at
while start_at <= end_at
p_commercial_objective.p_commercial_object_months.build(start_at: start_at)
start_at = start_at + 1.month
end
SBrand.all.each do |ppc|
p_commercial_objective.p_commercial_object_brands.build(:s_brand_id => ppc.id)
end
return p_commercial_objective
end
end