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
