88 lines
2.8 KiB
Ruby
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
|