diff --git a/app/controllers/admin/product_orders_controller.rb b/app/controllers/admin/product_orders_controller.rb index b28afe5..0129a7f 100755 --- a/app/controllers/admin/product_orders_controller.rb +++ b/app/controllers/admin/product_orders_controller.rb @@ -10,6 +10,72 @@ class Admin::ProductOrdersController < ApplicationController + def export2 + @product_orders = ProductOrder.where(:completed_finish => true).order("created_at DESC") + + + + respond_to do |format| + format.html + + + + format.csv { + + @file = "" + + elements = { + + "N°Pièce" => "product_order.bl_number", + + "Date" => "product_order.created_at", + "Type document" => "product_order.sage_type_doc", + "Tiers" => "product_order.sage_tiers", + "Référence article" => "sage_reference", + "Quantité" => "qty", + + + + + + + "Type prix" => "product_order.sage_type_prix", + "Prix unitaire" => "archived_product.price_ht", + + + + + + } + + + + headers = [] + attributes = [] + + elements.each do |key, value| + headers << key + attributes << value + end + + @csv = CSV.generate(:headers => true, :col_sep => ";") do |csv| + csv << headers + + @product_orders.all.each do |product_order| + product_order.product_order_products.each do |product_order_product| + csv << attributes.map{ |attr| eval("product_order_product."+attr.to_s) } + end + + + end + + end + + send_data @csv.encode('iso-8859-1', :undef => :replace, :replace => ''), :filename => "export-#{Date.today.to_s.to_slug}.csv", :type => 'text/csv; charset=iso-8859-1; header=present' } + end + end + + def export @product_orders = ProductOrder.where(:completed_finish => true).order("created_at DESC") @@ -33,7 +99,7 @@ class Admin::ProductOrdersController < ApplicationController "created_at" => "created_at", - "fact_organisation" => "particular_bill.firstname", + "fact_organisation" => "particular_bill.organisation", "fact_prenom" => "particular_bill.firstname", "fact_nom" => "particular_bill.name", "fact_adresse" => "particular_bill.address_2", @@ -43,7 +109,7 @@ class Admin::ProductOrdersController < ApplicationController "fact_pays" => "particular_bill.country", "fact_tel" => "particular_bill.tel", - "livr_organisation" => "particular_send.firstname", + "livr_organisation" => "particular_send.organisation", "livr_prenom" => "particular_send.firstname", "livr_nom" => "particular_send.name", "livr_adresse" => "particular_send.address_2", diff --git a/app/models/product_order.rb b/app/models/product_order.rb index b96a563..b3af17d 100755 --- a/app/models/product_order.rb +++ b/app/models/product_order.rb @@ -31,6 +31,18 @@ class ProductOrder < ActiveRecord::Base attr_accessor :force_fdp_validation, :force_payment, :force_cgv_validation + def sage_tiers + "tiers" + end + + def sage_type_prix + 0 + end + + def sage_type_doc + 1 + end + def prodons_country countr = particular_bill.country diff --git a/app/models/product_order_product.rb b/app/models/product_order_product.rb index c364888..9c1a840 100755 --- a/app/models/product_order_product.rb +++ b/app/models/product_order_product.rb @@ -11,6 +11,12 @@ class ProductOrderProduct < ActiveRecord::Base belongs_to :archived_product_size, class_name: "ProductSize" belongs_to :archived_product_option, class_name: "ProductOption" + + def sage_reference + if self.product + self.product.sage_reference + end + end def tva 20.0 end diff --git a/app/views/admin/products/_form.html.haml b/app/views/admin/products/_form.html.haml index 84b7b01..da8b6bc 100755 --- a/app/views/admin/products/_form.html.haml +++ b/app/views/admin/products/_form.html.haml @@ -35,7 +35,8 @@ %hr %h3 Tailles possibles : =form.input :product_sizes, :collection => ProductSize.where("archived is null").order(:position).all, :as => :check_boxes, :label => "Tailles" - + + =form.input :sage_reference, :label => "Référence sage :" .actions diff --git a/config/routes.rb b/config/routes.rb index 08d6efa..c11a3f8 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -313,6 +313,7 @@ Rails.application.routes.draw do resources :product_orders do collection do get :export + get :export2 end member do get :ship diff --git a/db/migrate/20171220122439_add_sage_to_products.rb b/db/migrate/20171220122439_add_sage_to_products.rb new file mode 100644 index 0000000..de48aaf --- /dev/null +++ b/db/migrate/20171220122439_add_sage_to_products.rb @@ -0,0 +1,6 @@ +class AddSageToProducts < ActiveRecord::Migration + def change + add_column :products, :sage_reference, :string + add_column :products, :sage_tiers, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index ed714cd..1d9be37 100755 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171022211011) do +ActiveRecord::Schema.define(version: 20171220122439) do create_table "accepted_offers", force: :cascade do |t| t.datetime "created_at", null: false @@ -877,17 +877,19 @@ ActiveRecord::Schema.define(version: 20171022211011) do add_index "product_stocks", ["product_id"], name: "index_product_stocks_on_product_id", using: :btree create_table "products", force: :cascade do |t| - t.decimal "price_ht", precision: 10, scale: 2 - t.decimal "price_reduced_ht", precision: 10, scale: 2 + t.decimal "price_ht", precision: 10, scale: 2 + t.decimal "price_reduced_ht", precision: 10, scale: 2 t.boolean "enabled", limit: 1 t.integer "default_image_id", limit: 4 t.integer "position", limit: 4 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false t.integer "product_category_id", limit: 4 t.integer "product_collection_id", limit: 4 - t.boolean "archived", limit: 1, default: false + t.boolean "archived", limit: 1, default: false t.integer "reseaux_id", limit: 4 + t.string "sage_reference", limit: 255 + t.string "sage_tiers", limit: 255 end add_index "products", ["product_category_id"], name: "index_products_on_product_category_id", using: :btree