lockaz_app/app/models/p_product.rb
Nicolas Bally f20fe482c6 initial
2020-04-06 10:38:07 +02:00

72 lines
1.8 KiB
Ruby

class PProduct < ApplicationRecord
has_many :p_product_p_normes, :dependent => :destroy
has_many :p_product_specs, :through => :p_product_p_normes
has_many :p_product_refs, :dependent => :destroy
accepts_nested_attributes_for :p_product_refs, allow_destroy: true
belongs_to :p_product_cat
belongs_to :s_brand
validates :name, :presence => true
#validates :code, :presence => true, :uniqueness => true
has_many :tvable_tva_rates, :as => :tvable
has_many :tva_rates, :through => :tvable_tva_rates
has_many :p_product_p_product_sub_cats, :dependent => :destroy
has_many :p_product_sub_cats, :through => :p_product_p_product_sub_cats
has_many :p_product_p_customer_cats, :dependent => :destroy
has_many :p_customer_cats, :through => :p_product_p_customer_cats
#acts_as_caching :fields => [:total_ht, :total_tva, :total_ttc, :p_sheet_line_count]
acts_as_sorting :fields => {
:p_product_refs_ref => {:name => "Code", :reorder => true},
:name => {:name => "Nom", :reorder => true},
:enabled => {:name => "Actif ?", :reorder => true},
:p_product_cat => {:name => "Catégorie", :reorder => true},
:p_product_ref_uv => {:name => "Unité", :reorder => true},
:actions => {:name => "Actions", :reorder => false}
}
def self.for_search(search)
PProduct.where("name LIKE ? or code LIKE ?", "%#{search}%", "%#{search}%").where(:enabled => true)
end
after_create do
end
after_save do
self.p_product_refs.each do |ppr|
ppr.save
end
end
def tva_rate(accounting_zone_id)
if r = self.tva_rates.where(:accounting_zone_id => accounting_zone_id).first
elsif self.p_product_cat and r = self.p_product_cat.tva_rates.where(:accounting_zone_id => accounting_zone_id).first
else
r = nil
end
return r
end
end