price_document import

This commit is contained in:
Barnabé 2021-10-07 17:19:56 +02:00
parent 7e34e20757
commit 97f0ae99c5

View File

@ -31,7 +31,7 @@ class PriceDocument < ApplicationRecord
AVANCEMENT = ["0%", "25%", "50%", "75%", "100"] AVANCEMENT = ["0%", "25%", "50%", "75%", "100"]
validates :public_fournisseur_name, :presence => true, :if => :public_fournisseur_name_needed? validates :public_fournisseur_name, :presence => true, :if => :public_fournisseur_name_needed?
acts_as_csv_import :fields => [:p_fournisseur_id, :p_product_ref] acts_as_csv_import :fields => [:p_fournisseur_id, :p_fournisseur_name, :p_fournisseur_ref_ref, :p_fournisseur_ref_label, :p_product_ref_name, :price_line_qte, :date, :price_line_ct_u_price_ht, :p_devise ]
def public_fournisseur_name_needed? def public_fournisseur_name_needed?
if self.label == "Réponse fournisseur" if self.label == "Réponse fournisseur"
@ -709,57 +709,52 @@ class PriceDocument < ApplicationRecord
def self.custom_csv_import(list, import_csv) def self.custom_csv_import(list, import_csv)
ap "*********************************************************************************************************"
ap "*********************************************************************************************************"
ap "*********************************************************************************************************"
ap list
ap list.class
ap "*********************************************************************************************************"
ap "*********************************************************************************************************"
ap "*********************************************************************************************************"
ap import_csv
ap "*********************************************************************************************************"
ap "*********************************************************************************************************"
ap "*********************************************************************************************************"
list.each do |row| list.each do |row|
p_product_ref = nil
n = self.new(price_document_type: PriceDocumentType.find_by_label("Catalogue fournisseur")) p_devise = PDevise.find_by(symbol: row["p_devise"])
# price_document = PriceDocument.new(price_document_type: PriceDocumentType.find_by_label("Catalogue fournisseur"))
contact_2 = nil
contact_3 = nil
row.each do |key, value|
if self.type_for_attribute(key) and self.type_for_attribute(key).type == :decimal p_fournisseur = PFournisseur.find_by(id: row["p_fournisseur_id"])
eval "n.#{key} = value.to_s.gsub(' ', '').gsub(',', '.')"
# elsif key == "p_fournisseur_id"
# price_document.p_fournisseur = PFournisseur.find(key)
# elsif key == "p_contact_comment"
# contact_1.p_contact_types << PContactType.find_or_create_by(name: value)
# elsif key == "p_contact_tel"
# contact_1.tel = value
# elsif key == "p_contact_skype"
# contact_1.skype = value
# elsif key == "p_contact_email_1"
# contact_1.email = value
# elsif key == "p_contact_email_2"
# contact_2 = PContact.new(email: value)
# elsif key == "p_contact_email_3"
# contact_3 = PContact.new(email: value)
# elsif key == "p_payment_type"
# n.p_payment_type_id = PPaymentType.find_or_create_by(name: value).id
else
eval "n.#{key} = value"
end
if row["p_fournisseur_id"].nil?
p_fournisseur = PFournisseur.find_by(name: row["p_fournisseur_name"])
end end
# particular.organisation = self.name
# n.save raise "Fournisseur introuvable. Ajouter le fournisseur manquant avant l'import" if p_fournisseur.nil?
ap n
# n.p_contacts << contact_1 if (contact_1.name || contact_1.tel || contact_1.skype || contact_1.email) n = self.find_or_initialize_by(price_document_type: PriceDocumentType.find_by_label("Catalogue fournisseur"), p_fournisseur: p_fournisseur, date: row["date"], p_devise: p_devise )
# n.p_contacts << contact_2 if contact_2 if n.price_line_block.nil?
# n.p_contacts << contact_3 if contact_3 n.price_line_block = PriceLineBlock.new(p_devise: p_devise, p_fournisseur: p_fournisseur, imported: true)
# import_csv.import_csv_elements << ImportCsvElement.new(:element => n) end
if row["p_fournisseur_ref_ref"].present?
p_fournisseur_ref = PFournisseurRef.find_by(p_fournisseur: p_fournisseur, ref: row["p_fournisseur_ref_ref"])
p_product_ref = p_fournisseur_ref.p_product_ref if p_fournisseur_ref
else
p_fournisseur_ref = PFournisseurRef.find_by(p_fournisseur: p_fournisseur, label: row["p_fournisseur_ref_label"])
p_product_ref = p_fournisseur_ref.p_product_ref if p_fournisseur_ref
end
if row["price_line_qte"].kind_of? Float
qte = row["price_line_qte"]
elsif row["price_line_qte"].kind_of? Integer
qte = row["price_line_qte"].to_f
elsif row["price_line_qte"].kind_of? String
qte = row["price_line_qte"].split.map {|x| x[/\d+/]}[0].to_f
else
qte = 0
end
price_line = PriceLine.new(p_product_ref: p_product_ref, ct_ref: row["p_fournisseur_ref_ref"], ct_title: row["p_fournisseur_ref_label"], price_line_block: n.price_line_block, qte: qte || 0.0, ct_u_price_ht: row["price_line_ct_u_price_ht"], imported: true )
price_line.p_product = p_product_ref.p_product if p_product_ref && p_product_ref.p_product
n.price_line_block.price_lines << price_line
n.save
import_csv.import_csv_elements << ImportCsvElement.new(:element => n)
end end
end end