diff --git a/Gemfile b/Gemfile index 94f0b61..86bc842 100755 --- a/Gemfile +++ b/Gemfile @@ -1,11 +1,8 @@ source 'https://rubygems.org' +gem 'rails', '4.2.6' -#gem 'activerecord-session_store' -gem 'rails', '4.2.0' - -gem "mysql2", group: :mysql gem 'sass-rails', '~> 5.0' @@ -81,4 +78,9 @@ gem 'rubyzip', '>= 1.0.0' # will load new rubyzip version gem 'zip-zip' # will load compatibility for old rubyzip API. -gem 'ogone-rails' \ No newline at end of file +gem 'ogone-rails' + + + + +gem "mysql2" \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 3d5d0fc..4d218cc 100755 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,36 +1,36 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (4.2.0) - actionpack (= 4.2.0) - actionview (= 4.2.0) - activejob (= 4.2.0) + actionmailer (4.2.6) + actionpack (= 4.2.6) + actionview (= 4.2.6) + activejob (= 4.2.6) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.0) - actionview (= 4.2.0) - activesupport (= 4.2.0) - rack (~> 1.6.0) + actionpack (4.2.6) + actionview (= 4.2.6) + activesupport (= 4.2.6) + rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.1) - actionview (4.2.0) - activesupport (= 4.2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (4.2.6) + activesupport (= 4.2.6) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.1) - activejob (4.2.0) - activesupport (= 4.2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + activejob (4.2.6) + activesupport (= 4.2.6) globalid (>= 0.3.0) - activemodel (4.2.0) - activesupport (= 4.2.0) + activemodel (4.2.6) + activesupport (= 4.2.6) builder (~> 3.1) - activerecord (4.2.0) - activemodel (= 4.2.0) - activesupport (= 4.2.0) + activerecord (4.2.6) + activemodel (= 4.2.6) + activesupport (= 4.2.6) arel (~> 6.0) - activesupport (4.2.0) + activesupport (4.2.6) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) @@ -39,11 +39,11 @@ GEM acts_as_commentable (4.0.2) acts_as_tree (2.1.0) activerecord (>= 3.0.0) - arel (6.0.0) + arel (6.0.4) bcrypt (3.1.10) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - builder (3.2.2) + builder (3.2.3) byebug (3.5.1) columnize (~> 0.8) debugger-linecache (~> 1.2) @@ -67,19 +67,21 @@ GEM execjs coffee-script-source (1.9.1) columnize (0.9.0) - concurrent-ruby (1.0.0) + concurrent-ruby (1.0.5) connection_pool (2.2.0) + crass (1.0.4) debug_inspector (0.0.2) debugger-linecache (1.2.0) erubis (2.7.0) execjs (2.3.0) + ffi (1.9.25) formtastic (2.3.0) actionpack (>= 3.0) formtastic-bootstrap (3.0.0) formtastic (>= 2.2) geocoder (1.2.9) - globalid (0.3.3) - activesupport (>= 4.1.0) + globalid (0.4.1) + activesupport (>= 4.2.0) gravatar_image_tag (1.2.0) haml (4.0.6) tilt @@ -90,13 +92,13 @@ GEM html2haml (>= 1.0.1) railties (>= 4.0.1) highline (1.7.2) - hike (1.2.3) html2haml (2.0.0) erubis (~> 2.7.0) haml (~> 4.0.0) nokogiri (~> 1.6.0) ruby_parser (~> 3.5) - i18n (0.7.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) jbuilder (2.2.8) activesupport (>= 3.0.0, < 5) multi_json (~> 1.2) @@ -104,7 +106,7 @@ GEM rails-dom-testing (~> 1.0) railties (>= 4.2.0) thor (>= 0.14, < 2.0) - json (1.8.2) + json (1.8.6) kaminari (0.16.3) actionpack (>= 3.0.0) activesupport (>= 3.0.0) @@ -112,15 +114,19 @@ GEM kaminari (>= 0.13.0) rails kgio (2.9.3) - loofah (2.0.1) + loofah (2.2.2) + crass (~> 1.0.2) nokogiri (>= 1.5.9) - mail (2.6.3) - mime-types (>= 1.16, < 3) - mime-types (2.4.3) - mini_portile (0.6.2) - minitest (5.5.1) - multi_json (1.10.1) - mysql2 (0.3.18) + mail (2.7.0) + mini_mime (>= 0.1.1) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mini_mime (1.0.0) + mini_portile2 (2.1.0) + minitest (5.11.3) + multi_json (1.13.1) + mysql2 (0.4.8) net-scp (1.2.1) net-ssh (>= 2.6.5) net-sftp (2.1.2) @@ -128,42 +134,45 @@ GEM net-ssh (2.7.0) net-ssh-gateway (1.2.0) net-ssh (>= 2.6.5) - nokogiri (1.6.6.2) - mini_portile (~> 0.6.0) + nokogiri (1.6.8.1) + mini_portile2 (~> 2.1.0) ogone-rails (0.1.10) activesupport paranoia (2.1.4) activerecord (~> 4.0) posix-spawn (0.3.11) - rack (1.6.0) + rack (1.6.10) rack-test (0.6.3) rack (>= 1.0) - rails (4.2.0) - actionmailer (= 4.2.0) - actionpack (= 4.2.0) - actionview (= 4.2.0) - activejob (= 4.2.0) - activemodel (= 4.2.0) - activerecord (= 4.2.0) - activesupport (= 4.2.0) + rails (4.2.6) + actionmailer (= 4.2.6) + actionpack (= 4.2.6) + actionview (= 4.2.6) + activejob (= 4.2.6) + activemodel (= 4.2.6) + activerecord (= 4.2.6) + activesupport (= 4.2.6) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.0) + railties (= 4.2.6) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.5) - activesupport (>= 4.2.0.beta, < 5.0) - nokogiri (~> 1.6.0) + rails-dom-testing (1.0.9) + activesupport (>= 4.2.0, < 5.0) + nokogiri (~> 1.6) rails-deprecated_sanitizer (>= 1.0.1) - rails-html-sanitizer (1.0.1) - loofah (~> 2.0) - railties (4.2.0) - actionpack (= 4.2.0) - activesupport (= 4.2.0) + rails-html-sanitizer (1.0.4) + loofah (~> 2.2, >= 2.2.2) + railties (4.2.6) + actionpack (= 4.2.6) + activesupport (= 4.2.6) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) raindrops (0.13.0) - rake (10.4.2) + rake (12.3.1) + rb-fsevent (0.10.3) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) rdoc (4.2.0) json (~> 1.4) redis (3.2.2) @@ -173,13 +182,17 @@ GEM rubyzip (1.2.0) rvm-capistrano (1.4.1) capistrano (>= 2.0.0) - sass (3.4.12) - sass-rails (5.0.1) - railties (>= 4.0.0, < 5.0) + sass (3.5.7) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sass-rails (5.0.7) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) - tilt (~> 1.1) + tilt (>= 1.1, < 3) sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) @@ -191,18 +204,16 @@ GEM redis (~> 3.2, >= 3.2.1) slop (3.6.0) spring (1.3.2) - sprockets (2.12.3) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.2.4) - actionpack (>= 3.0) - activesupport (>= 3.0) - sprockets (>= 2.8, < 4.0) - thor (0.19.1) - thread_safe (0.3.4) - tilt (1.4.1) + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + thor (0.20.0) + thread_safe (0.3.6) + tilt (2.0.8) turbolinks (2.5.3) coffee-rails twitter-bootstrap-rails (3.2.0) @@ -210,7 +221,7 @@ GEM execjs (~> 2.2) rails (~> 4.1) railties (~> 4.1) - tzinfo (1.2.2) + tzinfo (1.2.5) thread_safe (~> 0.1) uglifier (2.7.0) execjs (>= 0.3.0) @@ -255,7 +266,7 @@ DEPENDENCIES ogone-rails paranoia (~> 2.0) posix-spawn - rails (= 4.2.0) + rails (= 4.2.6) rmagick rubyzip (>= 1.0.0) rvm-capistrano (= 1.4.1) @@ -274,4 +285,4 @@ DEPENDENCIES zip-zip BUNDLED WITH - 1.16.1 + 1.16.2 diff --git a/app/assets/stylesheets/pane_hover.scss b/app/assets/stylesheets/pane_hover.scss index 3c09c50..31ad878 100755 --- a/app/assets/stylesheets/pane_hover.scss +++ b/app/assets/stylesheets/pane_hover.scss @@ -2,7 +2,7 @@ /* pane_hover */ #qi_pane_hover{ position:fixed; - top:40px; + top:0px; left:0px; bottom:0px; right:0px; @@ -26,9 +26,12 @@ #qi_pane_hover #qi_pane_hover_content{ margin:auto; - position:relative; + position:absolute; max-width:100%; - max-height:90%; + right:0; + top:0; + bottom:0; + height:auto !important; background:white; background: #f8f8f8; @@ -47,7 +50,7 @@ top:0px; right:0px; left:0px; - bottom:37px; + bottom:44px; overflow:auto; padding:10px; diff --git a/app/controllers/admin/product_order_documents_controller.rb b/app/controllers/admin/product_order_documents_controller.rb index fcd7e16..5c17751 100755 --- a/app/controllers/admin/product_order_documents_controller.rb +++ b/app/controllers/admin/product_order_documents_controller.rb @@ -11,7 +11,7 @@ class Admin::ProductOrderDocumentsController < ApplicationController @product_order_document = ProductOrderDocument.find_by_token(params[:id]) @product_order = @product_order_document.product_order #params[:inline] = true - if true + if false @temp_file = "#{Rails.root}/pdf/bl/DOC_#{@product_order_document.id}_temp.pdf" @final_file = "#{Rails.root}/pdf/bl/DOC_#{@product_order_document.id}.pdf" diff --git a/app/controllers/public/product_order_products_controller.rb b/app/controllers/public/product_order_products_controller.rb index 9bc2a3d..62452ff 100755 --- a/app/controllers/public/product_order_products_controller.rb +++ b/app/controllers/public/product_order_products_controller.rb @@ -10,9 +10,32 @@ class Public::ProductOrderProductsController < ApplicationController # Trying to retreive an existing pop in the current cart existing_product_order_product = @product_order.product_order_products.where(:product_id => params[:product_order_product][:product_id], :product_size_id => params[:product_order_product][:product_size_id], :product_option_id => params[:product_order_product][:product_option_id]).first + + if @product.constraint_qty + if @product.step_stop? + max = @product.step_stop + else + max = 500 + end + + if @product.step_start? + min = @product.step_start + else + min = 1 + end + + if @product.step_group? + group = @product.step_group + else + group = 10 + end + end + # if the pop exists in the current cart, just increase the quantity if existing_product_order_product - if [1,2].include?(@product.id) + if group + existing_product_order_product.qty += group + elsif [1,2].include?(@product.id) existing_product_order_product.qty += 10 else existing_product_order_product.qty += 1 @@ -26,7 +49,12 @@ class Public::ProductOrderProductsController < ApplicationController if [1,2].include?(@product.id) @product_order_product.qty = 10 else - @product_order_product.qty = 1 + if min + @product_order_product.qty = min + else + @product_order_product.qty = 1 + end + end @product_order_product.save diff --git a/app/models/product_degressif.rb b/app/models/product_degressif.rb new file mode 100644 index 0000000..b3c1bec --- /dev/null +++ b/app/models/product_degressif.rb @@ -0,0 +1,3 @@ +class ProductDegressif < ActiveRecord::Base + belongs_to :product_stock +end diff --git a/app/models/product_order_product.rb b/app/models/product_order_product.rb index d5ecd96..3210777 100755 --- a/app/models/product_order_product.rb +++ b/app/models/product_order_product.rb @@ -13,6 +13,11 @@ class ProductOrderProduct < ActiveRecord::Base has_many :sub_products + before_save do + self.price_ht = self.dyn_price_ht + + end + def sage_reference if self.product self.product.sage_reference @@ -35,40 +40,69 @@ class ProductOrderProduct < ActiveRecord::Base end def final_price_ht_with_qty - qty.to_f * product.final_price_ht.to_f + qty.to_f * dyn_price_ht.to_f end + def dyn_price_ht + if self.product_stock + if product_degressif = self.product_stock.product_degressifs.where("nbr <= ?", self.qty).order("nbr DESC").first + price = product_degressif.price + end + end + if !price + price = self.product.final_price_ht.to_f + end + return price + end + + def dyn_price_ttc + dyn_price_ht * self.tva + + end def archived_price_ttc_with_qty - if archived_product - qty.to_f * archived_product.price_ttc.to_f + if self.price_ht? + qty.to_f * self.price_ht*self.tva_archived else - 0 + if archived_product + qty.to_f * archived_product.price_ttc.to_f + else + 0 + end end end def archived_final_price_ttc_with_qty - if archived_product - qty.to_f * archived_product.final_price_ttc.to_f + if self.price_ht? + qty.to_f * self.price_ht*self.tva_archived else - 0 + + if archived_product + qty.to_f * archived_product.final_price_ttc.to_f + else + 0 + end end end def archived_final_price_ht_with_qty - if archived_product - qty.to_f * archived_product.final_price_ht.to_f + if self.price_ht? + qty.to_f * self.price_ht else - 0 + if archived_product + qty.to_f * archived_product.final_price_ht.to_f + else + 0 + end end end def verify_qty - product_stock_t = self.product.product_stocks.where(:product_option_id => self.product_option_id,:product_size_id => self.product_size_id).first + product_stock_t = product_stock = self.product_stock if product_stock_t and self.qty > product_stock_t.stock_th self.qty = product_stock_t.stock_th @@ -79,7 +113,7 @@ class ProductOrderProduct < ActiveRecord::Base end def update_stock_th - product_stock_t = self.product.product_stocks.where(:product_option_id => self.product_option_id,:product_size_id => self.product_size_id).first + product_stock_t = product_stock = self.product_stock if product_stock_t product_stock_t.stock_th = product_stock_t.stock_th - self.qty @@ -89,7 +123,7 @@ class ProductOrderProduct < ActiveRecord::Base end def update_stock - product_stock = self.product.product_stocks.where(:product_option_id => self.product_option_id,:product_size_id => self.product_size_id).first + product_stock = self.product_stock if product_stock product_stock.stock = product_stock.stock - self.qty @@ -97,6 +131,9 @@ class ProductOrderProduct < ActiveRecord::Base end end - + + def product_stock + self.product.product_stocks.where(:product_option_id => self.product_option_id,:product_size_id => self.product_size_id).first + end end diff --git a/app/models/product_stock.rb b/app/models/product_stock.rb index 2c941da..c796ec9 100644 --- a/app/models/product_stock.rb +++ b/app/models/product_stock.rb @@ -2,4 +2,10 @@ class ProductStock < ActiveRecord::Base belongs_to :product belongs_to :product_size belongs_to :product_option + + has_many :product_degressifs, :dependent => :destroy + + accepts_nested_attributes_for :product_degressifs + + end diff --git a/app/models/sub_product.rb b/app/models/sub_product.rb index df31b1d..4aadbcc 100644 --- a/app/models/sub_product.rb +++ b/app/models/sub_product.rb @@ -4,7 +4,7 @@ class SubProduct < ActiveRecord::Base belongs_to :product_order_product def price_ht_with_qte - self.price_ht * self.qte + self.calculated_price.to_f * self.qte end def qte_tot @@ -16,7 +16,38 @@ class SubProduct < ActiveRecord::Base end def price_tot_with_qte - self.qte_tot * self.price_ht + self.qte_tot * self.calculated_price.to_f + end + + def calculated_price + + if self.product_order_product.price_ht + price_order_product = self.product_order_product.price_ht + end + + if self.price_type == "reste" + if price_order_product + somme = 0.0 + self.product_order_product.sub_products.where("price_type != ?", "reste" ).each do |sp| + somme += sp.calculated_price + end + + + (price_order_product - somme).round(2) + else + 0.0 + end + elsif self.price_type == "percent" + if price_order_product + + + (price_order_product * (self.price_ht/100)).round(2) + else + 0.0 + end + else + self.price_ht.round(2) + end end end diff --git a/app/views/admin/product_degressifs/_form.html.haml b/app/views/admin/product_degressifs/_form.html.haml new file mode 100755 index 0000000..82b4b5d --- /dev/null +++ b/app/views/admin/product_degressifs/_form.html.haml @@ -0,0 +1,11 @@ +.field + .product_degressif_form + %hr + .product_degressif + + =form.text_field :nbr, :placeholder => "Nombre mini" + + =form.text_field :price, :placeholder => "Prix" + + = link_to_remove_fields i(:"trash-o"), form + diff --git a/app/views/admin/product_order_documents/_general.html.haml b/app/views/admin/product_order_documents/_general.html.haml new file mode 100644 index 0000000..5ae2064 --- /dev/null +++ b/app/views/admin/product_order_documents/_general.html.haml @@ -0,0 +1,185 @@ +#main + + %div{:style => "position:absolute;top:4.4cm;right:1cm;text-align:right;"} + =@product_order_document.label + n° + =@product_order_document.d_number + %br + =l @product_order.created_at, :format => :date #@product_order_document.created_at + + + + - if @product_order.reseaux_id != 19 + %div{:style => "height:350px;"} + -else + %div{:style => "height:140px;"} + + + -if @product_order.reseaux_id != 19 + %table.table{:style => "position:absolute;right:1cm;top:220px"} + %tr + %td{:style => "width:5.5cm;border:0"} + %h3 Adresse de facturation + + %strong=@product_order.particular_bill.organisation + %br + =@product_order.particular_bill.firstname + + =@product_order.particular_bill.name + %br + =@product_order.particular_bill.address_2 + + -if @product_order.particular_bill.address_3? + %br + =@product_order.particular_bill.address_3 + %br + =@product_order.particular_bill.cp + + =@product_order.particular_bill.city + %br + =@product_order.particular_bill.country + %br + %br + =@product_order.particular_bill.tel + + + %td{:style => "width:5.5cm;border:0"} + %h3 Adresse de livraison + + %strong=@product_order.particular_bill.organisation + %br + =@product_order.particular_send.firstname + + =@product_order.particular_send.name + %br + =@product_order.particular_send.address_2 + + -if @product_order.particular_send.address_3? + %br + =@product_order.particular_send.address_3 + %br + =@product_order.particular_send.cp + + =@product_order.particular_send.city + %br + =@product_order.particular_send.country + %br + %br + =@product_order.particular_bill.tel + + %table.table{:style => "width:100%;margin:1cm 0;"} + %tr + -if @product_order.reseaux_id != 19 + %th + %th + Description + %th{:style => "text-align:right;width:100px"} + Prix U. HT + %th{:style => "text-align:right;width:80px"} + Qté + %th{:style => "text-align:right;width:100px"} + Prix HT + -@product_order.product_order_products.order(:product_id).each do |product_order_product| + + %tr + -if @product_order.reseaux_id != 19 + %td{:style => "width:135px;padding:0;vertical-align:middle"} + =image_tag "http://negos.pro"+product_order_product.product.default_image.image_file.file.large.medium.small.thumb.url, :style => "width:130px;" if product_order_product.product.default_image + %td{:style => ""+("border-bottom: 0;padding-bottom:0;"if @product_order.reseaux_id == 19).to_s} + =simple_format product_order_product.archived_product.lang(:fr).bl_title + + + + + + =# product_order_product.archived_product_size.name if product_order_product.archived_product_size + + + =# product_order_product.archived_product_option.lang(I18n.locale).name if product_order_product.archived_product_option + + %td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s} + = number_to_currency((product_order_product.price_ht? ? product_order_product.price_ht : product_order_product.archived_product.final_price_ht.to_f), locale: :fr) if product_order_product.archived_product + + %td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s} + =product_order_product.qty + %td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s} + = number_to_currency(product_order_product.archived_final_price_ht_with_qty, locale: :fr) if product_order_product.archived_product + + -if @product_order.reseaux_id == 19 + %tr + %td{:colspan => 3, :style => "border-top:0;padding-top:0"} + %table.sub_products{:style => "width:100%;margin-bottom:20px;margin-top:5px;"} + %tr + %th Référence + %th Nom + + %th Prix U. + %th Nbr + %th Prix HT + + -product_order_product.sub_products.each do |sub_product| + %tr + %td + =sub_product.reference + %td + =sub_product.name + + %td + =number_to_currency sub_product.price_ht_with_qte + + %td + =sub_product.qte_tot + %td + =number_to_currency sub_product.price_tot_with_qte + %td + + + + %tr + %td{:colspan => (@product_order.reseaux_id != 19 ? 3 : 2), :rowspan => 3, :style => "border:0;text-align:left;"} + -if @product_order.reseaux_id != 19 + %p + %br + Mode de paiment : + -if @product_order.product_order_payment_type_ok_id == 3 + CB + -elsif @product_order.product_order_payment_type_ok_id == 1 + Chèque + -elsif @product_order.product_order_payment_type_ok_id == 2 + Virement + -elsif @product_order.product_order_payment_type_ok_id == 4 + Mandat administratif + %br + %br + Franco de port pour le Pays Voironnais + %td Total HT : + %td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_ht, locale: :fr) + -if @product_order.reseaux_id != 19 + %tr + + %td TVA : + %td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_tva, locale: :fr) + + %tr + + %td Total TTC : + %td{:style => "text-align:right;"}= number_to_currency(@product_order.archived_total_ttc, locale: :fr) + + + + + + + + %br + + " + \ No newline at end of file diff --git a/app/views/admin/product_order_documents/_vs_bl.html.haml b/app/views/admin/product_order_documents/_vs_bl.html.haml index 67b17b5..5ae2064 100644 --- a/app/views/admin/product_order_documents/_vs_bl.html.haml +++ b/app/views/admin/product_order_documents/_vs_bl.html.haml @@ -98,7 +98,7 @@ =# product_order_product.archived_product_option.lang(I18n.locale).name if product_order_product.archived_product_option %td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s} - = number_to_currency(product_order_product.archived_product.final_price_ht.to_f, locale: :fr) if product_order_product.archived_product + = number_to_currency((product_order_product.price_ht? ? product_order_product.price_ht : product_order_product.archived_product.final_price_ht.to_f), locale: :fr) if product_order_product.archived_product %td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s} =product_order_product.qty diff --git a/app/views/admin/product_order_documents/_vsg_achats.html.haml b/app/views/admin/product_order_documents/_vsg_achats.html.haml index 67b17b5..5ae2064 100644 --- a/app/views/admin/product_order_documents/_vsg_achats.html.haml +++ b/app/views/admin/product_order_documents/_vsg_achats.html.haml @@ -98,7 +98,7 @@ =# product_order_product.archived_product_option.lang(I18n.locale).name if product_order_product.archived_product_option %td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s} - = number_to_currency(product_order_product.archived_product.final_price_ht.to_f, locale: :fr) if product_order_product.archived_product + = number_to_currency((product_order_product.price_ht? ? product_order_product.price_ht : product_order_product.archived_product.final_price_ht.to_f), locale: :fr) if product_order_product.archived_product %td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s} =product_order_product.qty diff --git a/app/views/admin/products/_form.html.haml b/app/views/admin/products/_form.html.haml index 45391c8..c99c7ed 100755 --- a/app/views/admin/products/_form.html.haml +++ b/app/views/admin/products/_form.html.haml @@ -22,6 +22,11 @@ =form.input :price_ht, :label => "Prix (HT) :" =form.input :price_reduced_ht, :label => "Prix (HT) avec réduction :" + =form.input :constraint_qty, :label => "Contraindre les quantités ?", :as => :boolean + =form.input :step_start, :label => "Quantité mini :" + =form.input :step_group, :label => "Valeur d'indentation :" + =form.input :step_stop, :label => "Quantité max :" + %hr diff --git a/app/views/admin/products/_index_block.html.haml b/app/views/admin/products/_index_block.html.haml index 26d61dd..5ad911a 100755 --- a/app/views/admin/products/_index_block.html.haml +++ b/app/views/admin/products/_index_block.html.haml @@ -1,6 +1,7 @@ %table.table#products %thead %tr + %th Réseau %th %th Catégorie diff --git a/app/views/admin/products/_product.html.haml b/app/views/admin/products/_product.html.haml index 3d3c4bc..dbd8a0b 100755 --- a/app/views/admin/products/_product.html.haml +++ b/app/views/admin/products/_product.html.haml @@ -1,4 +1,7 @@ %tr#product_row.product_row{:id => product.id, :data => {:id => product.id}} + %td{:style => "width:130px;"} + =product.reseaux.name if product.reseaux + %td{:style => "width:200px;"} =image_tag product.default_image.image_file.file.large.medium.small.thumb.url if product.default_image %td diff --git a/app/views/admin/products/_stock_form.html.haml b/app/views/admin/products/_stock_form.html.haml index 1cc6a99..c9d99d7 100755 --- a/app/views/admin/products/_stock_form.html.haml +++ b/app/views/admin/products/_stock_form.html.haml @@ -7,6 +7,7 @@ %td Taille %td Stock théorique %td Stock réél + %td Prix =form.semantic_fields_for :product_stocks do |product_stock| @@ -20,6 +21,14 @@ %td=product_stock.text_field :stock_th %td=product_stock.text_field :stock + %td + + + %p= link_to_add_fields "Ajouter une ligne", product_stock, :product_degressifs + + .product_degressifs_form + =product_stock.semantic_fields_for :product_degressifs do |form| + =render :partial => "admin/product_degressifs/form", :locals => {:form => form} .actions = form.submit "Sauvegarder", :class => "btn btn-primary" diff --git a/app/views/admin/products/stock.js.erb b/app/views/admin/products/stock.js.erb index dbe1a88..611c5b4 100755 --- a/app/views/admin/products/stock.js.erb +++ b/app/views/admin/products/stock.js.erb @@ -1 +1 @@ -show_pane_hover("<%= escape_javascript(render(:partial => "stock_form"))%>",550,600); \ No newline at end of file +show_pane_hover("<%= escape_javascript(render(:partial => "stock_form"))%>",900,600); \ No newline at end of file diff --git a/app/views/admin/sub_products/_form.html.haml b/app/views/admin/sub_products/_form.html.haml index 34398d2..ccd499c 100755 --- a/app/views/admin/sub_products/_form.html.haml +++ b/app/views/admin/sub_products/_form.html.haml @@ -6,6 +6,7 @@ =form.input :name =form.input :qte + =form.input :price_type, :label => "Type de calcul :", :collection => [["Prix fixe", "price"],["Pourcentage du P.U.", "percent"], ["Reste de la somme", "reste"]], :include_blank => false =form.input :price_ht =form.input :reference =form.input :fournisseur_id, :collection => Fournisseur.all, :as => :select diff --git a/app/views/public/product_order_products/_product_order_product.html.haml b/app/views/public/product_order_products/_product_order_product.html.haml index 9dc0fbf..2dd35b5 100755 --- a/app/views/public/product_order_products/_product_order_product.html.haml +++ b/app/views/public/product_order_products/_product_order_product.html.haml @@ -15,15 +15,43 @@ %td.boutique-right - = number_to_currency(product_order_product.product.final_price_ht.to_f, locale: :fr) + = number_to_currency(product_order_product.dyn_price_ht.to_f, locale: :fr) + %td{:style => "width:150px;text-align:center;"} -if !@recap .qty_form = form_for [:public, product_order_product] do |f| - -if [1,2].include?(product_order_product.product_id) - = f.select :qty, [10,20,30,40,50,60,70,80,90,100, 150, 200, 250, 300, 400, 500, 600, 700, 800, 900, 1000], {:style => "width:30px;"} + + -if product_order_product.product.constraint_qty + -if product_order_product.product.step_stop? + -max = product_order_product.product.step_stop + -else + -max = 500 + + -if product_order_product.product.step_start? + -min = product_order_product.product.step_start + -else + -min = 1 + + -if product_order_product.product.step_group? + -group = product_order_product.product.step_group + -else + -group = 10 + + -qte_table = [min.to_i] + + -i = min + -while i < max do + -i += group + -qte_table << i.to_i + + = f.select :qty, qte_table, {:style => "width:30px;"} + -else - = f.text_field :qty, :style => "width:30px;" + -if [1,2].include?(product_order_product.product_id) + = f.select :qty, [10,20,30,40,50,60,70,80,90,100, 150, 200, 250, 300, 400, 500, 600, 700, 800, 900, 1000], {:style => "width:30px;"} + -else + = f.text_field :qty, :style => "width:30px;" = f.submit "Mettre à jour" =link_to ic(:"trash-o"), public_product_order_product_path(:id => product_order_product.id, :product_order_product => {:qty => 0}), :method => :put -else diff --git a/db/migrate/20180808142104_add_type_to_sub_products.rb b/db/migrate/20180808142104_add_type_to_sub_products.rb new file mode 100644 index 0000000..1392f9a --- /dev/null +++ b/db/migrate/20180808142104_add_type_to_sub_products.rb @@ -0,0 +1,5 @@ +class AddTypeToSubProducts < ActiveRecord::Migration + def change + add_column :sub_products, :price_type, :string + end +end diff --git a/db/migrate/20180808143322_create_product_degressifs.rb b/db/migrate/20180808143322_create_product_degressifs.rb new file mode 100644 index 0000000..9b0025d --- /dev/null +++ b/db/migrate/20180808143322_create_product_degressifs.rb @@ -0,0 +1,12 @@ +class CreateProductDegressifs < ActiveRecord::Migration + def change + create_table :product_degressifs do |t| + t.references :product_stock, index: true, foreign_key: true + t.decimal :price, precision: 10, scale: 2 + t.decimal :price_remise, precision: 10, scale: 2 + t.decimal :nbr, precision: 10, scale: 2 + t.boolean :archived, :default => false + t.timestamps null: false + end + end +end diff --git a/db/migrate/20180809120902_add_steps_to_products.rb b/db/migrate/20180809120902_add_steps_to_products.rb new file mode 100644 index 0000000..0bf262e --- /dev/null +++ b/db/migrate/20180809120902_add_steps_to_products.rb @@ -0,0 +1,8 @@ +class AddStepsToProducts < ActiveRecord::Migration + def change + add_column :products, :step_start, :decimal, precision: 10, scale: 2 + add_column :products, :step_group, :decimal, precision: 10, scale: 2 + add_column :products, :step_stop, :decimal, precision: 10, scale: 2 + add_column :products, :constraint_qty, :boolean + end +end diff --git a/db/schema.rb b/db/schema.rb index bbb13d7..f160ed2 100755 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,15 +11,15 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180417075800) do +ActiveRecord::Schema.define(version: 20180809120902) do create_table "abonnements", force: :cascade do |t| t.integer "abonnement_type_id", limit: 4 t.string "slug", limit: 255 t.datetime "start_at" t.datetime "end_at" - t.boolean "paid", limit: 1 - t.boolean "enabled", limit: 1 + t.boolean "paid" + t.boolean "enabled" t.decimal "price", precision: 10, scale: 2 t.integer "customer_id", limit: 4 t.datetime "created_at", null: false @@ -62,7 +62,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do create_table "albums", force: :cascade do |t| t.string "name", limit: 255 - t.boolean "super_admin", limit: 1 + t.boolean "super_admin" t.datetime "created_at" t.datetime "updated_at" end @@ -85,9 +85,9 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "tag", limit: 255 t.text "description", limit: 65535 t.text "keywords", limit: 65535 - t.boolean "enabled", limit: 1 + t.boolean "enabled" t.integer "image_file_id", limit: 4 - t.boolean "title_cached", limit: 1 + t.boolean "title_cached" t.string "tags_cache", limit: 255 t.string "tags_cache_slug", limit: 255 t.integer "category_id", limit: 4 @@ -116,7 +116,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do end create_table "break_contents", force: :cascade do |t| - t.boolean "line", limit: 1 + t.boolean "line" t.integer "height", limit: 4 t.string "style", limit: 255 t.datetime "created_at" @@ -126,13 +126,13 @@ ActiveRecord::Schema.define(version: 20180417075800) do create_table "categories", force: :cascade do |t| t.string "name", limit: 255 t.string "slug", limit: 255 - t.boolean "enabled", limit: 1 + t.boolean "enabled" t.text "description", limit: 65535 t.integer "image_file_id", limit: 4 t.integer "position", limit: 4 t.integer "parent_id", limit: 4 t.string "permalink", limit: 255 - t.boolean "front_page", limit: 1 + t.boolean "front_page" t.datetime "created_at" t.datetime "updated_at" end @@ -150,7 +150,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "pseudo", limit: 255, default: "" t.string "email", limit: 255, default: "" t.string "website", limit: 255, default: "" - t.boolean "enabled", limit: 1 + t.boolean "enabled" t.text "comment", limit: 65535 t.integer "commentable_id", limit: 4 t.string "commentable_type", limit: 255 @@ -164,15 +164,15 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "admin_id", limit: 4 t.integer "contact_id", limit: 4 t.datetime "deleted_at" - t.boolean "read_by_admin", limit: 1, default: false - t.boolean "read_by_customer", limit: 1, default: false + t.boolean "read_by_admin", default: false + t.boolean "read_by_customer", default: false t.text "content", limit: 65535 t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "conversations", force: :cascade do |t| - t.boolean "oneone", limit: 1 + t.boolean "oneone" t.integer "first_customer_id", limit: 4 t.string "second_customer_id", limit: 255 t.datetime "created_at", null: false @@ -190,8 +190,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "parent_id", limit: 4 t.datetime "last_message_at" t.string "remote_ip", limit: 255 - t.boolean "enabled", limit: 1 - t.boolean "readed", limit: 1 + t.boolean "enabled" + t.boolean "readed" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "conversation_id", limit: 4 @@ -213,8 +213,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "parent_id", limit: 4 t.string "parent_code", limit: 255 t.string "parent_at_create", limit: 255 - t.boolean "archived", limit: 1 - t.boolean "enabled", limit: 1 + t.boolean "archived" + t.boolean "enabled" t.string "username", limit: 255 t.string "name", limit: 255 t.string "firstname", limit: 255 @@ -224,7 +224,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.text "bio", limit: 65535 t.string "avatar", limit: 255 t.string "localisation", limit: 255 - t.boolean "pro", limit: 1, default: false + t.boolean "pro", default: false t.string "token", limit: 255 t.string "mlm_token", limit: 255 t.string "address", limit: 255 @@ -257,11 +257,11 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.datetime "last_sign_in_at" t.string "current_sign_in_ip", limit: 255 t.string "last_sign_in_ip", limit: 255 - t.boolean "lock", limit: 1 + t.boolean "lock" t.datetime "locked_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "account_validated", limit: 1 + t.boolean "account_validated" t.datetime "account_validated_at" t.float "latitude", limit: 24 t.float "longitude", limit: 24 @@ -269,10 +269,10 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.text "particulars_text", limit: 65535 t.float "capital", limit: 24 t.string "role_signataire", limit: 255 - t.boolean "referent", limit: 1, default: false - t.boolean "chef_reseau", limit: 1, default: false + t.boolean "referent", default: false + t.boolean "chef_reseau", default: false t.string "reseaux_token", limit: 255 - t.boolean "particular_idem", limit: 1 + t.boolean "particular_idem" t.integer "particular_send_id", limit: 4 t.integer "particular_bill_id", limit: 4 end @@ -297,7 +297,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "returned_document", limit: 255 t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "particulars", limit: 1 + t.boolean "particulars" t.string "download_token", limit: 255 end @@ -334,8 +334,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do create_table "domains", force: :cascade do |t| t.string "name", limit: 255 t.string "slug", limit: 255 - t.boolean "superadmin", limit: 1 - t.boolean "enabled", limit: 1 + t.boolean "superadmin" + t.boolean "enabled" t.text "description", limit: 65535 t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -366,7 +366,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do create_table "file_folders", force: :cascade do |t| t.string "name", limit: 255 - t.boolean "super_admin", limit: 1 + t.boolean "super_admin" t.datetime "created_at" t.datetime "updated_at" end @@ -379,7 +379,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "email", limit: 255 - t.boolean "send_email", limit: 1 + t.boolean "send_email" end create_table "gallery_contents", force: :cascade do |t| @@ -415,13 +415,13 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "width", limit: 4 t.integer "height", limit: 4 t.string "alignement", limit: 255 - t.boolean "expandable", limit: 1 + t.boolean "expandable" t.string "style", limit: 255 t.string "alt", limit: 255 t.integer "cible_id", limit: 4 t.string "cible_type", limit: 255 - t.boolean "with_cible", limit: 1 - t.boolean "popup", limit: 1 + t.boolean "with_cible" + t.boolean "popup" t.datetime "created_at" t.datetime "updated_at" end @@ -443,7 +443,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do create_table "lang_sites", force: :cascade do |t| t.string "name", limit: 255 t.string "slug", limit: 255 - t.boolean "enabled", limit: 1 + t.boolean "enabled" t.datetime "created_at", null: false t.datetime "updated_at", null: false end @@ -452,7 +452,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "type", limit: 4 t.string "name", limit: 255 t.string "title", limit: 255 - t.boolean "popup", limit: 1 + t.boolean "popup" t.string "url", limit: 255 t.string "style", limit: 255 t.integer "cible_id", limit: 4 @@ -467,7 +467,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "email", limit: 255 t.integer "customer_id", limit: 4 t.string "token", limit: 255 - t.boolean "readed", limit: 1 + t.boolean "readed" t.datetime "created_at" t.datetime "updated_at" end @@ -480,7 +480,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "address", limit: 255 t.string "name", limit: 255 t.integer "view", limit: 4 - t.boolean "info_bule", limit: 1 + t.boolean "info_bule" t.integer "zoom", limit: 4 t.datetime "created_at" t.datetime "updated_at" @@ -502,18 +502,18 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "repertoire_id", limit: 4 t.integer "parent_id", limit: 4 t.integer "position", limit: 4 - t.boolean "super_admin", limit: 1 - t.boolean "enabled", limit: 1 - t.boolean "visible", limit: 1 - t.boolean "deleted", limit: 1 + t.boolean "super_admin" + t.boolean "enabled" + t.boolean "visible" + t.boolean "deleted" t.integer "menu_id", limit: 4 t.integer "menu_content_id", limit: 4 t.string "menu_content_type", limit: 255 t.integer "archive_id", limit: 4 - t.boolean "archived", limit: 1 + t.boolean "archived" t.datetime "archived_at" - t.boolean "password", limit: 1 - t.boolean "comment", limit: 1 + t.boolean "password" + t.boolean "comment" t.datetime "created_at" t.datetime "updated_at" end @@ -578,8 +578,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do create_table "newsgroups", force: :cascade do |t| t.string "name", limit: 255 t.string "slug", limit: 255 - t.boolean "default_checked", limit: 1 - t.boolean "enabled", limit: 1 + t.boolean "default_checked" + t.boolean "enabled" t.datetime "created_at", null: false t.datetime "updated_at", null: false end @@ -588,7 +588,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "title", limit: 255 t.text "content", limit: 65535 t.datetime "sendmail" - t.boolean "archive", limit: 1 + t.boolean "archive" t.datetime "created_at" t.datetime "updated_at" end @@ -627,7 +627,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do end create_table "particulars", force: :cascade do |t| - t.boolean "pro", limit: 1 + t.boolean "pro" t.string "organisation", limit: 255 t.string "name", limit: 255 t.string "firstname", limit: 255 @@ -647,7 +647,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "owner_type", limit: 255 t.integer "owner_id", limit: 4 t.string "particular_type", limit: 255 - t.boolean "skip_validation", limit: 1 + t.boolean "skip_validation" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "civilite", limit: 255 @@ -658,7 +658,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "element_type", limit: 255 t.integer "element_id", limit: 4 t.datetime "paid_at" - t.boolean "paid", limit: 1 + t.boolean "paid" t.string "ogone_payid", limit: 255 t.string "ogone_pm", limit: 255 t.string "ogone_status", limit: 255 @@ -752,17 +752,29 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.datetime "last_sign_in_at" t.string "current_sign_in_ip", limit: 255 t.string "last_sign_in_ip", limit: 255 - t.boolean "lock", limit: 1 + t.boolean "lock" t.datetime "locked_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "remote_ip", limit: 255 t.string "token", limit: 255 - t.boolean "particular_idem", limit: 1, default: false + t.boolean "particular_idem", default: false t.integer "particular_bill_id", limit: 4 t.integer "particular_send_id", limit: 4 end + create_table "product_degressifs", force: :cascade do |t| + t.integer "product_stock_id", limit: 4 + t.decimal "price", precision: 10, scale: 2 + t.decimal "price_remise", precision: 10, scale: 2 + t.decimal "nbr", precision: 10, scale: 2 + t.boolean "archived", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "product_degressifs", ["product_stock_id"], name: "index_product_degressifs_on_product_stock_id", using: :btree + create_table "product_fdps", force: :cascade do |t| t.decimal "price", precision: 10, scale: 2 t.text "country", limit: 65535 @@ -771,7 +783,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "delais", limit: 255 t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "archived", limit: 1 + t.boolean "archived" end create_table "product_images", force: :cascade do |t| @@ -796,7 +808,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "product_id", limit: 4 t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "archived", limit: 1 + t.boolean "archived" t.text "bl_title", limit: 65535 end @@ -810,7 +822,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "name", limit: 255 t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "archived", limit: 1 + t.boolean "archived" end add_index "product_option_langs", ["product_option_id"], name: "index_product_option_langs_on_product_option_id", using: :btree @@ -819,7 +831,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "product_id", limit: 4 t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "archived", limit: 1 + t.boolean "archived" end add_index "product_options", ["product_id"], name: "index_product_options_on_product_id", using: :btree @@ -873,7 +885,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "payplug_card_last_number", limit: 255 t.datetime "paid_at" t.datetime "tr_canceled_at" - t.boolean "tr_canceled", limit: 1, default: false + t.boolean "tr_canceled", default: false t.string "token", limit: 255 t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -913,30 +925,30 @@ ActiveRecord::Schema.define(version: 20180417075800) do create_table "product_orders", force: :cascade do |t| t.decimal "amount", precision: 10, scale: 2 - t.boolean "particular_idem", limit: 1, default: false - t.boolean "paid", limit: 1, default: false + t.boolean "particular_idem", default: false + t.boolean "paid", default: false t.integer "particular_bill_id", limit: 4 t.string "particular_send_id", limit: 255 t.string "token", limit: 255 - t.boolean "completed_finish", limit: 1, default: false + t.boolean "completed_finish", default: false t.integer "product_order_payment_ok_id", limit: 4 t.integer "product_order_payment_type_ok_id", limit: 4 t.integer "bill_index", limit: 4 t.string "bill_number", limit: 255 t.string "bill_year", limit: 255 - t.boolean "bill_ok", limit: 1, default: false + t.boolean "bill_ok", default: false t.integer "product_customer_id", limit: 4 t.datetime "paid_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "product_fdp_id", limit: 4 t.integer "product_fdp_archived_id", limit: 4 - t.boolean "cgv", limit: 1 + t.boolean "cgv" t.integer "customer_id", limit: 4 t.string "bl_number", limit: 255 t.integer "bl_index", limit: 4 t.integer "bl_year", limit: 4 - t.boolean "shiped", limit: 1 + t.boolean "shiped" t.integer "reseaux_id", limit: 4 end @@ -955,7 +967,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.integer "position", limit: 4 t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "archived", limit: 1 + t.boolean "archived" end create_table "product_stocks", force: :cascade do |t| @@ -973,17 +985,21 @@ ActiveRecord::Schema.define(version: 20180417075800) do 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.boolean "enabled", limit: 1 + t.boolean "enabled" 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.integer "product_category_id", limit: 4 t.integer "product_collection_id", limit: 4 - t.boolean "archived", limit: 1, default: false + t.boolean "archived", default: false t.integer "reseaux_id", limit: 4 t.string "sage_reference", limit: 255 t.string "sage_tiers", limit: 255 + t.decimal "step_start", precision: 10, scale: 2 + t.decimal "step_group", precision: 10, scale: 2 + t.decimal "step_stop", precision: 10, scale: 2 + t.boolean "constraint_qty" end add_index "products", ["product_category_id"], name: "index_products_on_product_category_id", using: :btree @@ -1035,7 +1051,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "sub_product_reference_id", limit: 4 - t.boolean "archived", limit: 1 + t.boolean "archived" + t.string "price_type", limit: 255 end create_table "table_contents", force: :cascade do |t| @@ -1066,7 +1083,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do t.string "name", limit: 255 t.string "slug", limit: 255 t.integer "parent_id", limit: 4 - t.boolean "public", limit: 1 + t.boolean "public" t.string "taggable_type", limit: 255 t.integer "taggable_id", limit: 4 t.datetime "created_at" @@ -1122,6 +1139,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do add_foreign_key "product_category_langs", "product_categories" add_foreign_key "product_collection_langs", "product_collections" add_foreign_key "product_collections", "product_categories" + add_foreign_key "product_degressifs", "product_stocks" add_foreign_key "product_images", "image_files" add_foreign_key "product_langs", "product_categories" add_foreign_key "product_langs", "product_collections" diff --git a/test/fixtures/product_degressives.yml b/test/fixtures/product_degressives.yml new file mode 100644 index 0000000..4e80450 --- /dev/null +++ b/test/fixtures/product_degressives.yml @@ -0,0 +1,13 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + product_stock_id: + price: 9.99 + price_remise: 9.99 + nbr: 9.99 + +two: + product_stock_id: + price: 9.99 + price_remise: 9.99 + nbr: 9.99 diff --git a/test/models/product_degressive_test.rb b/test/models/product_degressive_test.rb new file mode 100644 index 0000000..c93469f --- /dev/null +++ b/test/models/product_degressive_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class ProductDegressiveTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end