class MOdrRep < ApplicationRecord belongs_to :m_odr has_many :particulars, :dependent => :destroy accepts_nested_attributes_for :particulars, :allow_destroy => true has_many :mail_hists has_many :m_odr_virements has_many :m_odr_rep_ribs, :dependent => :destroy accepts_nested_attributes_for :m_odr_rep_ribs, :allow_destroy => true belongs_to :m_odr_product belongs_to :m_odr_place belongs_to :particular has_many :m_odr_files, :dependent => :destroy accepts_nested_attributes_for :m_odr_files, :allow_destroy => true validates :qte, :presence => true validates :m_odr_product_id, :presence => true validates :m_odr_place_id, :presence => true belongs_to :m_odr_tracker def send_mail_type(slug, element = nil) if self.m_odr and mail_type = self.m_odr.mail_types.where(:slug => slug).first and self.particulars.first and self.particulars.first.email? mail_hist = MailHist.generate_mail(:fr, mail_type, self.particulars.first.email, {:arguments => {:nom_odr => self.m_odr.name}, :m_odr => self.m_odr, :m_odr_rep => self, :element => element}) end end QI_DYNAMICS = %w(admin_ok_to_send rib_admin_ok file_admin_ok remise particular_civilite particular_name particular_firstname particular_address_2 particular_address_3 particular_cp particular_city particular_country particular_email particular_tel product_name product_brand tracker_name place_name) eval(QI_DYNAMICS_CORE) def ca_rib_admin_ok if self.m_odr_rep_ribs.where(:admin_ok => true).count > 0 true else false end end def ca_file_admin_ok if self.m_odr_files.where(:admin_ok => true).count > 0 true else false end end def change_state(state) self.state = state self.save end before_validation do self.particular = self.particulars.first if !self.state self.state = "Reçue" end if self.t.to_s != "" self.m_odr_tracker = MOdrTracker.where(:token => self.t).first end end def ca_particular_civilite self.particular.civilite if self.particular end def ca_particular_name self.particular.name if self.particular end def ca_particular_firstname self.particular.firstname if self.particular end def ca_particular_address_2 self.particular.address_2 if self.particular end def ca_particular_address_3 self.particular.address_3 if self.particular end def ca_particular_cp self.particular.cp if self.particular end def ca_particular_city self.particular.city if self.particular end def ca_particular_country self.particular.country if self.particular end def ca_particular_email self.particular.email if self.particular end def ca_particular_tel self.particular.tel if self.particular end def ca_product_name self.m_odr_product.name if self.m_odr_product end def ca_product_brand self.m_odr_product.m_odr_brand.name if self.m_odr_product and self.m_odr_product.m_odr_brand end def ca_tracker_name self.m_odr_tracker.name if self.m_odr_tracker end def ca_place_name self.m_odr_place.name if self.m_odr_place end attr_accessor :t before_create { generate_token() } def generate_token() begin self[:token] = SecureRandom.urlsafe_base64 end while MOdrRep.exists?(:token => self[:token]) end def self.qi_table_order { :m_odr => "ODR", :created_at => {:name => "Date", :reorder => true}, :state => {:name => "Etat", :reorder => true}, :cc_rib_admin_ok => {:name => "Rib valide ?", :reorder => true}, :cc_file_admin_ok => {:name => "Fichiers valides ?", :reorder => true}, :cc_admin_ok_to_send => {:name => "Virement à envoyer ?", :reorder => true}, :cc_particular_civilite => {:name => "Civ.", :reorder => true}, :cc_particular_name => {:name => "Nom", :reorder => true}, :cc_particular_firstname => {:name => "Prénom", :reorder => true}, :cc_particular_address_2 => {:name => "Adresse", :reorder => true}, :cc_particular_address_3 => {:name => "Adresse (2)", :reorder => true}, :cc_particular_cp => {:name => "Code postal", :reorder => true}, :cc_particular_city => {:name => "Ville", :reorder => true}, :cc_particular_country => {:name => "Pays", :reorder => true}, :cc_particular_email => {:name => "Email", :reorder => true}, :cc_particular_tel => {:name => "Tel", :reorder => true}, :cc_particular_tel => {:name => "Tel", :reorder => true}, :cc_particular_tel => {:name => "Tel", :reorder => true}, :cc_product_brand => {:name => "Marque", :reorder => true}, :cc_product_name => {:name => "Produit", :reorder => true}, :qte => {:name => "Quantité", :reorder => true}, :cc_remise => {:name => "Remise", :reorder => true}, :cc_place_name => {:name => "Revendeur", :reorder => true}, :cc_tracker_name => {:name => "Trackeur", :reorder => true}, :actions => "Actions", #:created_at => {:name => "Date", :reorder => true}, } #, :sort_name => "code" end def ca_admin_ok_to_send if self.rib_admin_ok and self.file_admin_ok true else false end end def ca_remise if self.qte and self.m_odr_product if self.m_odr_product and remise = self.m_odr_product.m_odr_product_remises.where(:qte => self.qte).first remise.amount else nil end end end def long_name self.particular.long_name if self.particular end def self.valid_sort r = [] self.qi_table_order.each do |key, value| if value.instance_of? Hash if value[:reorder] and value[:reorder] == true r << key.to_s if value[:reorder] end end end return r end end