Suite
This commit is contained in:
parent
02075116a3
commit
c5207c343c
12
Gemfile
12
Gemfile
@ -1,11 +1,8 @@
|
|||||||
source 'https://rubygems.org'
|
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'
|
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 'zip-zip' # will load compatibility for old rubyzip API.
|
||||||
|
|
||||||
|
|
||||||
gem 'ogone-rails'
|
gem 'ogone-rails'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
gem "mysql2"
|
163
Gemfile.lock
163
Gemfile.lock
@ -1,36 +1,36 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actionmailer (4.2.0)
|
actionmailer (4.2.6)
|
||||||
actionpack (= 4.2.0)
|
actionpack (= 4.2.6)
|
||||||
actionview (= 4.2.0)
|
actionview (= 4.2.6)
|
||||||
activejob (= 4.2.0)
|
activejob (= 4.2.6)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||||
actionpack (4.2.0)
|
actionpack (4.2.6)
|
||||||
actionview (= 4.2.0)
|
actionview (= 4.2.6)
|
||||||
activesupport (= 4.2.0)
|
activesupport (= 4.2.6)
|
||||||
rack (~> 1.6.0)
|
rack (~> 1.6)
|
||||||
rack-test (~> 0.6.2)
|
rack-test (~> 0.6.2)
|
||||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||||
actionview (4.2.0)
|
actionview (4.2.6)
|
||||||
activesupport (= 4.2.0)
|
activesupport (= 4.2.6)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubis (~> 2.7.0)
|
erubis (~> 2.7.0)
|
||||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||||
activejob (4.2.0)
|
activejob (4.2.6)
|
||||||
activesupport (= 4.2.0)
|
activesupport (= 4.2.6)
|
||||||
globalid (>= 0.3.0)
|
globalid (>= 0.3.0)
|
||||||
activemodel (4.2.0)
|
activemodel (4.2.6)
|
||||||
activesupport (= 4.2.0)
|
activesupport (= 4.2.6)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
activerecord (4.2.0)
|
activerecord (4.2.6)
|
||||||
activemodel (= 4.2.0)
|
activemodel (= 4.2.6)
|
||||||
activesupport (= 4.2.0)
|
activesupport (= 4.2.6)
|
||||||
arel (~> 6.0)
|
arel (~> 6.0)
|
||||||
activesupport (4.2.0)
|
activesupport (4.2.6)
|
||||||
i18n (~> 0.7)
|
i18n (~> 0.7)
|
||||||
json (~> 1.7, >= 1.7.7)
|
json (~> 1.7, >= 1.7.7)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
@ -39,11 +39,11 @@ GEM
|
|||||||
acts_as_commentable (4.0.2)
|
acts_as_commentable (4.0.2)
|
||||||
acts_as_tree (2.1.0)
|
acts_as_tree (2.1.0)
|
||||||
activerecord (>= 3.0.0)
|
activerecord (>= 3.0.0)
|
||||||
arel (6.0.0)
|
arel (6.0.4)
|
||||||
bcrypt (3.1.10)
|
bcrypt (3.1.10)
|
||||||
binding_of_caller (0.7.2)
|
binding_of_caller (0.7.2)
|
||||||
debug_inspector (>= 0.0.1)
|
debug_inspector (>= 0.0.1)
|
||||||
builder (3.2.2)
|
builder (3.2.3)
|
||||||
byebug (3.5.1)
|
byebug (3.5.1)
|
||||||
columnize (~> 0.8)
|
columnize (~> 0.8)
|
||||||
debugger-linecache (~> 1.2)
|
debugger-linecache (~> 1.2)
|
||||||
@ -67,19 +67,21 @@ GEM
|
|||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.9.1)
|
coffee-script-source (1.9.1)
|
||||||
columnize (0.9.0)
|
columnize (0.9.0)
|
||||||
concurrent-ruby (1.0.0)
|
concurrent-ruby (1.0.5)
|
||||||
connection_pool (2.2.0)
|
connection_pool (2.2.0)
|
||||||
|
crass (1.0.4)
|
||||||
debug_inspector (0.0.2)
|
debug_inspector (0.0.2)
|
||||||
debugger-linecache (1.2.0)
|
debugger-linecache (1.2.0)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
execjs (2.3.0)
|
execjs (2.3.0)
|
||||||
|
ffi (1.9.25)
|
||||||
formtastic (2.3.0)
|
formtastic (2.3.0)
|
||||||
actionpack (>= 3.0)
|
actionpack (>= 3.0)
|
||||||
formtastic-bootstrap (3.0.0)
|
formtastic-bootstrap (3.0.0)
|
||||||
formtastic (>= 2.2)
|
formtastic (>= 2.2)
|
||||||
geocoder (1.2.9)
|
geocoder (1.2.9)
|
||||||
globalid (0.3.3)
|
globalid (0.4.1)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.2.0)
|
||||||
gravatar_image_tag (1.2.0)
|
gravatar_image_tag (1.2.0)
|
||||||
haml (4.0.6)
|
haml (4.0.6)
|
||||||
tilt
|
tilt
|
||||||
@ -90,13 +92,13 @@ GEM
|
|||||||
html2haml (>= 1.0.1)
|
html2haml (>= 1.0.1)
|
||||||
railties (>= 4.0.1)
|
railties (>= 4.0.1)
|
||||||
highline (1.7.2)
|
highline (1.7.2)
|
||||||
hike (1.2.3)
|
|
||||||
html2haml (2.0.0)
|
html2haml (2.0.0)
|
||||||
erubis (~> 2.7.0)
|
erubis (~> 2.7.0)
|
||||||
haml (~> 4.0.0)
|
haml (~> 4.0.0)
|
||||||
nokogiri (~> 1.6.0)
|
nokogiri (~> 1.6.0)
|
||||||
ruby_parser (~> 3.5)
|
ruby_parser (~> 3.5)
|
||||||
i18n (0.7.0)
|
i18n (0.9.5)
|
||||||
|
concurrent-ruby (~> 1.0)
|
||||||
jbuilder (2.2.8)
|
jbuilder (2.2.8)
|
||||||
activesupport (>= 3.0.0, < 5)
|
activesupport (>= 3.0.0, < 5)
|
||||||
multi_json (~> 1.2)
|
multi_json (~> 1.2)
|
||||||
@ -104,7 +106,7 @@ GEM
|
|||||||
rails-dom-testing (~> 1.0)
|
rails-dom-testing (~> 1.0)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
json (1.8.2)
|
json (1.8.6)
|
||||||
kaminari (0.16.3)
|
kaminari (0.16.3)
|
||||||
actionpack (>= 3.0.0)
|
actionpack (>= 3.0.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
@ -112,15 +114,19 @@ GEM
|
|||||||
kaminari (>= 0.13.0)
|
kaminari (>= 0.13.0)
|
||||||
rails
|
rails
|
||||||
kgio (2.9.3)
|
kgio (2.9.3)
|
||||||
loofah (2.0.1)
|
loofah (2.2.2)
|
||||||
|
crass (~> 1.0.2)
|
||||||
nokogiri (>= 1.5.9)
|
nokogiri (>= 1.5.9)
|
||||||
mail (2.6.3)
|
mail (2.7.0)
|
||||||
mime-types (>= 1.16, < 3)
|
mini_mime (>= 0.1.1)
|
||||||
mime-types (2.4.3)
|
mime-types (3.1)
|
||||||
mini_portile (0.6.2)
|
mime-types-data (~> 3.2015)
|
||||||
minitest (5.5.1)
|
mime-types-data (3.2016.0521)
|
||||||
multi_json (1.10.1)
|
mini_mime (1.0.0)
|
||||||
mysql2 (0.3.18)
|
mini_portile2 (2.1.0)
|
||||||
|
minitest (5.11.3)
|
||||||
|
multi_json (1.13.1)
|
||||||
|
mysql2 (0.4.8)
|
||||||
net-scp (1.2.1)
|
net-scp (1.2.1)
|
||||||
net-ssh (>= 2.6.5)
|
net-ssh (>= 2.6.5)
|
||||||
net-sftp (2.1.2)
|
net-sftp (2.1.2)
|
||||||
@ -128,42 +134,45 @@ GEM
|
|||||||
net-ssh (2.7.0)
|
net-ssh (2.7.0)
|
||||||
net-ssh-gateway (1.2.0)
|
net-ssh-gateway (1.2.0)
|
||||||
net-ssh (>= 2.6.5)
|
net-ssh (>= 2.6.5)
|
||||||
nokogiri (1.6.6.2)
|
nokogiri (1.6.8.1)
|
||||||
mini_portile (~> 0.6.0)
|
mini_portile2 (~> 2.1.0)
|
||||||
ogone-rails (0.1.10)
|
ogone-rails (0.1.10)
|
||||||
activesupport
|
activesupport
|
||||||
paranoia (2.1.4)
|
paranoia (2.1.4)
|
||||||
activerecord (~> 4.0)
|
activerecord (~> 4.0)
|
||||||
posix-spawn (0.3.11)
|
posix-spawn (0.3.11)
|
||||||
rack (1.6.0)
|
rack (1.6.10)
|
||||||
rack-test (0.6.3)
|
rack-test (0.6.3)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rails (4.2.0)
|
rails (4.2.6)
|
||||||
actionmailer (= 4.2.0)
|
actionmailer (= 4.2.6)
|
||||||
actionpack (= 4.2.0)
|
actionpack (= 4.2.6)
|
||||||
actionview (= 4.2.0)
|
actionview (= 4.2.6)
|
||||||
activejob (= 4.2.0)
|
activejob (= 4.2.6)
|
||||||
activemodel (= 4.2.0)
|
activemodel (= 4.2.6)
|
||||||
activerecord (= 4.2.0)
|
activerecord (= 4.2.6)
|
||||||
activesupport (= 4.2.0)
|
activesupport (= 4.2.6)
|
||||||
bundler (>= 1.3.0, < 2.0)
|
bundler (>= 1.3.0, < 2.0)
|
||||||
railties (= 4.2.0)
|
railties (= 4.2.6)
|
||||||
sprockets-rails
|
sprockets-rails
|
||||||
rails-deprecated_sanitizer (1.0.3)
|
rails-deprecated_sanitizer (1.0.3)
|
||||||
activesupport (>= 4.2.0.alpha)
|
activesupport (>= 4.2.0.alpha)
|
||||||
rails-dom-testing (1.0.5)
|
rails-dom-testing (1.0.9)
|
||||||
activesupport (>= 4.2.0.beta, < 5.0)
|
activesupport (>= 4.2.0, < 5.0)
|
||||||
nokogiri (~> 1.6.0)
|
nokogiri (~> 1.6)
|
||||||
rails-deprecated_sanitizer (>= 1.0.1)
|
rails-deprecated_sanitizer (>= 1.0.1)
|
||||||
rails-html-sanitizer (1.0.1)
|
rails-html-sanitizer (1.0.4)
|
||||||
loofah (~> 2.0)
|
loofah (~> 2.2, >= 2.2.2)
|
||||||
railties (4.2.0)
|
railties (4.2.6)
|
||||||
actionpack (= 4.2.0)
|
actionpack (= 4.2.6)
|
||||||
activesupport (= 4.2.0)
|
activesupport (= 4.2.6)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
raindrops (0.13.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)
|
rdoc (4.2.0)
|
||||||
json (~> 1.4)
|
json (~> 1.4)
|
||||||
redis (3.2.2)
|
redis (3.2.2)
|
||||||
@ -173,13 +182,17 @@ GEM
|
|||||||
rubyzip (1.2.0)
|
rubyzip (1.2.0)
|
||||||
rvm-capistrano (1.4.1)
|
rvm-capistrano (1.4.1)
|
||||||
capistrano (>= 2.0.0)
|
capistrano (>= 2.0.0)
|
||||||
sass (3.4.12)
|
sass (3.5.7)
|
||||||
sass-rails (5.0.1)
|
sass-listen (~> 4.0.0)
|
||||||
railties (>= 4.0.0, < 5.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)
|
sass (~> 3.1)
|
||||||
sprockets (>= 2.8, < 4.0)
|
sprockets (>= 2.8, < 4.0)
|
||||||
sprockets-rails (>= 2.0, < 4.0)
|
sprockets-rails (>= 2.0, < 4.0)
|
||||||
tilt (~> 1.1)
|
tilt (>= 1.1, < 3)
|
||||||
sdoc (0.4.1)
|
sdoc (0.4.1)
|
||||||
json (~> 1.7, >= 1.7.7)
|
json (~> 1.7, >= 1.7.7)
|
||||||
rdoc (~> 4.0)
|
rdoc (~> 4.0)
|
||||||
@ -191,18 +204,16 @@ GEM
|
|||||||
redis (~> 3.2, >= 3.2.1)
|
redis (~> 3.2, >= 3.2.1)
|
||||||
slop (3.6.0)
|
slop (3.6.0)
|
||||||
spring (1.3.2)
|
spring (1.3.2)
|
||||||
sprockets (2.12.3)
|
sprockets (3.7.2)
|
||||||
hike (~> 1.2)
|
concurrent-ruby (~> 1.0)
|
||||||
multi_json (~> 1.0)
|
rack (> 1, < 3)
|
||||||
rack (~> 1.0)
|
sprockets-rails (3.2.1)
|
||||||
tilt (~> 1.1, != 1.3.0)
|
actionpack (>= 4.0)
|
||||||
sprockets-rails (2.2.4)
|
activesupport (>= 4.0)
|
||||||
actionpack (>= 3.0)
|
sprockets (>= 3.0.0)
|
||||||
activesupport (>= 3.0)
|
thor (0.20.0)
|
||||||
sprockets (>= 2.8, < 4.0)
|
thread_safe (0.3.6)
|
||||||
thor (0.19.1)
|
tilt (2.0.8)
|
||||||
thread_safe (0.3.4)
|
|
||||||
tilt (1.4.1)
|
|
||||||
turbolinks (2.5.3)
|
turbolinks (2.5.3)
|
||||||
coffee-rails
|
coffee-rails
|
||||||
twitter-bootstrap-rails (3.2.0)
|
twitter-bootstrap-rails (3.2.0)
|
||||||
@ -210,7 +221,7 @@ GEM
|
|||||||
execjs (~> 2.2)
|
execjs (~> 2.2)
|
||||||
rails (~> 4.1)
|
rails (~> 4.1)
|
||||||
railties (~> 4.1)
|
railties (~> 4.1)
|
||||||
tzinfo (1.2.2)
|
tzinfo (1.2.5)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
uglifier (2.7.0)
|
uglifier (2.7.0)
|
||||||
execjs (>= 0.3.0)
|
execjs (>= 0.3.0)
|
||||||
@ -255,7 +266,7 @@ DEPENDENCIES
|
|||||||
ogone-rails
|
ogone-rails
|
||||||
paranoia (~> 2.0)
|
paranoia (~> 2.0)
|
||||||
posix-spawn
|
posix-spawn
|
||||||
rails (= 4.2.0)
|
rails (= 4.2.6)
|
||||||
rmagick
|
rmagick
|
||||||
rubyzip (>= 1.0.0)
|
rubyzip (>= 1.0.0)
|
||||||
rvm-capistrano (= 1.4.1)
|
rvm-capistrano (= 1.4.1)
|
||||||
@ -274,4 +285,4 @@ DEPENDENCIES
|
|||||||
zip-zip
|
zip-zip
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
1.16.1
|
1.16.2
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/* pane_hover */
|
/* pane_hover */
|
||||||
#qi_pane_hover{
|
#qi_pane_hover{
|
||||||
position:fixed;
|
position:fixed;
|
||||||
top:40px;
|
top:0px;
|
||||||
left:0px;
|
left:0px;
|
||||||
bottom:0px;
|
bottom:0px;
|
||||||
right:0px;
|
right:0px;
|
||||||
@ -26,9 +26,12 @@
|
|||||||
|
|
||||||
#qi_pane_hover #qi_pane_hover_content{
|
#qi_pane_hover #qi_pane_hover_content{
|
||||||
margin:auto;
|
margin:auto;
|
||||||
position:relative;
|
position:absolute;
|
||||||
max-width:100%;
|
max-width:100%;
|
||||||
max-height:90%;
|
right:0;
|
||||||
|
top:0;
|
||||||
|
bottom:0;
|
||||||
|
height:auto !important;
|
||||||
background:white;
|
background:white;
|
||||||
background: #f8f8f8;
|
background: #f8f8f8;
|
||||||
|
|
||||||
@ -47,7 +50,7 @@
|
|||||||
top:0px;
|
top:0px;
|
||||||
right:0px;
|
right:0px;
|
||||||
left:0px;
|
left:0px;
|
||||||
bottom:37px;
|
bottom:44px;
|
||||||
overflow:auto;
|
overflow:auto;
|
||||||
padding:10px;
|
padding:10px;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ class Admin::ProductOrderDocumentsController < ApplicationController
|
|||||||
@product_order_document = ProductOrderDocument.find_by_token(params[:id])
|
@product_order_document = ProductOrderDocument.find_by_token(params[:id])
|
||||||
@product_order = @product_order_document.product_order
|
@product_order = @product_order_document.product_order
|
||||||
#params[:inline] = true
|
#params[:inline] = true
|
||||||
if true
|
if false
|
||||||
|
|
||||||
@temp_file = "#{Rails.root}/pdf/bl/DOC_#{@product_order_document.id}_temp.pdf"
|
@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"
|
@final_file = "#{Rails.root}/pdf/bl/DOC_#{@product_order_document.id}.pdf"
|
||||||
|
@ -10,9 +10,32 @@ class Public::ProductOrderProductsController < ApplicationController
|
|||||||
# Trying to retreive an existing pop in the current cart
|
# 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
|
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 the pop exists in the current cart, just increase the quantity
|
||||||
if existing_product_order_product
|
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
|
existing_product_order_product.qty += 10
|
||||||
else
|
else
|
||||||
existing_product_order_product.qty += 1
|
existing_product_order_product.qty += 1
|
||||||
@ -26,7 +49,12 @@ class Public::ProductOrderProductsController < ApplicationController
|
|||||||
if [1,2].include?(@product.id)
|
if [1,2].include?(@product.id)
|
||||||
@product_order_product.qty = 10
|
@product_order_product.qty = 10
|
||||||
else
|
else
|
||||||
@product_order_product.qty = 1
|
if min
|
||||||
|
@product_order_product.qty = min
|
||||||
|
else
|
||||||
|
@product_order_product.qty = 1
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@product_order_product.save
|
@product_order_product.save
|
||||||
|
3
app/models/product_degressif.rb
Normal file
3
app/models/product_degressif.rb
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
class ProductDegressif < ActiveRecord::Base
|
||||||
|
belongs_to :product_stock
|
||||||
|
end
|
@ -13,6 +13,11 @@ class ProductOrderProduct < ActiveRecord::Base
|
|||||||
|
|
||||||
has_many :sub_products
|
has_many :sub_products
|
||||||
|
|
||||||
|
before_save do
|
||||||
|
self.price_ht = self.dyn_price_ht
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
def sage_reference
|
def sage_reference
|
||||||
if self.product
|
if self.product
|
||||||
self.product.sage_reference
|
self.product.sage_reference
|
||||||
@ -35,40 +40,69 @@ class ProductOrderProduct < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def final_price_ht_with_qty
|
def final_price_ht_with_qty
|
||||||
qty.to_f * product.final_price_ht.to_f
|
qty.to_f * dyn_price_ht.to_f
|
||||||
end
|
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
|
def archived_price_ttc_with_qty
|
||||||
if archived_product
|
if self.price_ht?
|
||||||
qty.to_f * archived_product.price_ttc.to_f
|
qty.to_f * self.price_ht*self.tva_archived
|
||||||
else
|
else
|
||||||
0
|
if archived_product
|
||||||
|
qty.to_f * archived_product.price_ttc.to_f
|
||||||
|
else
|
||||||
|
0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def archived_final_price_ttc_with_qty
|
def archived_final_price_ttc_with_qty
|
||||||
if archived_product
|
if self.price_ht?
|
||||||
qty.to_f * archived_product.final_price_ttc.to_f
|
qty.to_f * self.price_ht*self.tva_archived
|
||||||
else
|
else
|
||||||
0
|
|
||||||
|
if archived_product
|
||||||
|
qty.to_f * archived_product.final_price_ttc.to_f
|
||||||
|
else
|
||||||
|
0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def archived_final_price_ht_with_qty
|
def archived_final_price_ht_with_qty
|
||||||
if archived_product
|
if self.price_ht?
|
||||||
qty.to_f * archived_product.final_price_ht.to_f
|
qty.to_f * self.price_ht
|
||||||
else
|
else
|
||||||
0
|
if archived_product
|
||||||
|
qty.to_f * archived_product.final_price_ht.to_f
|
||||||
|
else
|
||||||
|
0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def verify_qty
|
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
|
if product_stock_t and self.qty > product_stock_t.stock_th
|
||||||
self.qty = product_stock_t.stock_th
|
self.qty = product_stock_t.stock_th
|
||||||
@ -79,7 +113,7 @@ class ProductOrderProduct < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update_stock_th
|
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
|
if product_stock_t
|
||||||
product_stock_t.stock_th = product_stock_t.stock_th - self.qty
|
product_stock_t.stock_th = product_stock_t.stock_th - self.qty
|
||||||
@ -89,7 +123,7 @@ class ProductOrderProduct < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update_stock
|
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
|
if product_stock
|
||||||
product_stock.stock = product_stock.stock - self.qty
|
product_stock.stock = product_stock.stock - self.qty
|
||||||
@ -97,6 +131,9 @@ class ProductOrderProduct < ActiveRecord::Base
|
|||||||
|
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
@ -2,4 +2,10 @@ class ProductStock < ActiveRecord::Base
|
|||||||
belongs_to :product
|
belongs_to :product
|
||||||
belongs_to :product_size
|
belongs_to :product_size
|
||||||
belongs_to :product_option
|
belongs_to :product_option
|
||||||
|
|
||||||
|
has_many :product_degressifs, :dependent => :destroy
|
||||||
|
|
||||||
|
accepts_nested_attributes_for :product_degressifs
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -4,7 +4,7 @@ class SubProduct < ActiveRecord::Base
|
|||||||
belongs_to :product_order_product
|
belongs_to :product_order_product
|
||||||
|
|
||||||
def price_ht_with_qte
|
def price_ht_with_qte
|
||||||
self.price_ht * self.qte
|
self.calculated_price.to_f * self.qte
|
||||||
end
|
end
|
||||||
|
|
||||||
def qte_tot
|
def qte_tot
|
||||||
@ -16,7 +16,38 @@ class SubProduct < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def price_tot_with_qte
|
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
|
||||||
|
|
||||||
end
|
end
|
||||||
|
11
app/views/admin/product_degressifs/_form.html.haml
Executable file
11
app/views/admin/product_degressifs/_form.html.haml
Executable file
@ -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
|
||||||
|
|
185
app/views/admin/product_order_documents/_general.html.haml
Normal file
185
app/views/admin/product_order_documents/_general.html.haml
Normal file
@ -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
|
||||||
|
|
||||||
|
<!---
|
||||||
|
.fdp
|
||||||
|
%table.table
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
=@product_order.product_fdp_archived.fdp_description
|
||||||
|
%td
|
||||||
|
=number_to_currency @product_order.product_fdp_archived.price
|
||||||
|
="--->"
|
||||||
|
|
@ -98,7 +98,7 @@
|
|||||||
=# product_order_product.archived_product_option.lang(I18n.locale).name if product_order_product.archived_product_option
|
=# 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}
|
%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}
|
%td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s}
|
||||||
=product_order_product.qty
|
=product_order_product.qty
|
||||||
|
@ -98,7 +98,7 @@
|
|||||||
=# product_order_product.archived_product_option.lang(I18n.locale).name if product_order_product.archived_product_option
|
=# 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}
|
%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}
|
%td{:style => "text-align:right;"+("border-bottom: 0;"if @product_order.reseaux_id == 19).to_s}
|
||||||
=product_order_product.qty
|
=product_order_product.qty
|
||||||
|
@ -22,6 +22,11 @@
|
|||||||
=form.input :price_ht, :label => "Prix (HT) :"
|
=form.input :price_ht, :label => "Prix (HT) :"
|
||||||
=form.input :price_reduced_ht, :label => "Prix (HT) avec réduction :"
|
=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
|
%hr
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
%table.table#products
|
%table.table#products
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
|
%th Réseau
|
||||||
%th
|
%th
|
||||||
%th
|
%th
|
||||||
Catégorie
|
Catégorie
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
%tr#product_row.product_row{:id => product.id, :data => {:id => product.id}}
|
%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;"}
|
%td{:style => "width:200px;"}
|
||||||
=image_tag product.default_image.image_file.file.large.medium.small.thumb.url if product.default_image
|
=image_tag product.default_image.image_file.file.large.medium.small.thumb.url if product.default_image
|
||||||
%td
|
%td
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
%td Taille
|
%td Taille
|
||||||
%td Stock théorique
|
%td Stock théorique
|
||||||
%td Stock réél
|
%td Stock réél
|
||||||
|
%td Prix
|
||||||
|
|
||||||
=form.semantic_fields_for :product_stocks do |product_stock|
|
=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_th
|
||||||
%td=product_stock.text_field :stock
|
%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
|
.actions
|
||||||
= form.submit "Sauvegarder", :class => "btn btn-primary"
|
= form.submit "Sauvegarder", :class => "btn btn-primary"
|
||||||
|
@ -1 +1 @@
|
|||||||
show_pane_hover("<%= escape_javascript(render(:partial => "stock_form"))%>",550,600);
|
show_pane_hover("<%= escape_javascript(render(:partial => "stock_form"))%>",900,600);
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
=form.input :name
|
=form.input :name
|
||||||
=form.input :qte
|
=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 :price_ht
|
||||||
=form.input :reference
|
=form.input :reference
|
||||||
=form.input :fournisseur_id, :collection => Fournisseur.all, :as => :select
|
=form.input :fournisseur_id, :collection => Fournisseur.all, :as => :select
|
||||||
|
@ -15,15 +15,43 @@
|
|||||||
|
|
||||||
|
|
||||||
%td.boutique-right
|
%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;"}
|
%td{:style => "width:150px;text-align:center;"}
|
||||||
-if !@recap
|
-if !@recap
|
||||||
.qty_form
|
.qty_form
|
||||||
= form_for [:public, product_order_product] do |f|
|
= 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
|
-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"
|
= 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
|
=link_to ic(:"trash-o"), public_product_order_product_path(:id => product_order_product.id, :product_order_product => {:qty => 0}), :method => :put
|
||||||
-else
|
-else
|
||||||
|
5
db/migrate/20180808142104_add_type_to_sub_products.rb
Normal file
5
db/migrate/20180808142104_add_type_to_sub_products.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
class AddTypeToSubProducts < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :sub_products, :price_type, :string
|
||||||
|
end
|
||||||
|
end
|
12
db/migrate/20180808143322_create_product_degressifs.rb
Normal file
12
db/migrate/20180808143322_create_product_degressifs.rb
Normal file
@ -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
|
8
db/migrate/20180809120902_add_steps_to_products.rb
Normal file
8
db/migrate/20180809120902_add_steps_to_products.rb
Normal file
@ -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
|
150
db/schema.rb
150
db/schema.rb
@ -11,15 +11,15 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# 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|
|
create_table "abonnements", force: :cascade do |t|
|
||||||
t.integer "abonnement_type_id", limit: 4
|
t.integer "abonnement_type_id", limit: 4
|
||||||
t.string "slug", limit: 255
|
t.string "slug", limit: 255
|
||||||
t.datetime "start_at"
|
t.datetime "start_at"
|
||||||
t.datetime "end_at"
|
t.datetime "end_at"
|
||||||
t.boolean "paid", limit: 1
|
t.boolean "paid"
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.decimal "price", precision: 10, scale: 2
|
t.decimal "price", precision: 10, scale: 2
|
||||||
t.integer "customer_id", limit: 4
|
t.integer "customer_id", limit: 4
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
@ -62,7 +62,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
|
|
||||||
create_table "albums", force: :cascade do |t|
|
create_table "albums", force: :cascade do |t|
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.boolean "super_admin", limit: 1
|
t.boolean "super_admin"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -85,9 +85,9 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "tag", limit: 255
|
t.string "tag", limit: 255
|
||||||
t.text "description", limit: 65535
|
t.text "description", limit: 65535
|
||||||
t.text "keywords", limit: 65535
|
t.text "keywords", limit: 65535
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.integer "image_file_id", limit: 4
|
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", limit: 255
|
||||||
t.string "tags_cache_slug", limit: 255
|
t.string "tags_cache_slug", limit: 255
|
||||||
t.integer "category_id", limit: 4
|
t.integer "category_id", limit: 4
|
||||||
@ -116,7 +116,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
end
|
end
|
||||||
|
|
||||||
create_table "break_contents", force: :cascade do |t|
|
create_table "break_contents", force: :cascade do |t|
|
||||||
t.boolean "line", limit: 1
|
t.boolean "line"
|
||||||
t.integer "height", limit: 4
|
t.integer "height", limit: 4
|
||||||
t.string "style", limit: 255
|
t.string "style", limit: 255
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
@ -126,13 +126,13 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
create_table "categories", force: :cascade do |t|
|
create_table "categories", force: :cascade do |t|
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.string "slug", limit: 255
|
t.string "slug", limit: 255
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.text "description", limit: 65535
|
t.text "description", limit: 65535
|
||||||
t.integer "image_file_id", limit: 4
|
t.integer "image_file_id", limit: 4
|
||||||
t.integer "position", limit: 4
|
t.integer "position", limit: 4
|
||||||
t.integer "parent_id", limit: 4
|
t.integer "parent_id", limit: 4
|
||||||
t.string "permalink", limit: 255
|
t.string "permalink", limit: 255
|
||||||
t.boolean "front_page", limit: 1
|
t.boolean "front_page"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -150,7 +150,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "pseudo", limit: 255, default: ""
|
t.string "pseudo", limit: 255, default: ""
|
||||||
t.string "email", limit: 255, default: ""
|
t.string "email", limit: 255, default: ""
|
||||||
t.string "website", limit: 255, default: ""
|
t.string "website", limit: 255, default: ""
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.text "comment", limit: 65535
|
t.text "comment", limit: 65535
|
||||||
t.integer "commentable_id", limit: 4
|
t.integer "commentable_id", limit: 4
|
||||||
t.string "commentable_type", limit: 255
|
t.string "commentable_type", limit: 255
|
||||||
@ -164,15 +164,15 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.integer "admin_id", limit: 4
|
t.integer "admin_id", limit: 4
|
||||||
t.integer "contact_id", limit: 4
|
t.integer "contact_id", limit: 4
|
||||||
t.datetime "deleted_at"
|
t.datetime "deleted_at"
|
||||||
t.boolean "read_by_admin", limit: 1, default: false
|
t.boolean "read_by_admin", default: false
|
||||||
t.boolean "read_by_customer", limit: 1, default: false
|
t.boolean "read_by_customer", default: false
|
||||||
t.text "content", limit: 65535
|
t.text "content", limit: 65535
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "conversations", force: :cascade do |t|
|
create_table "conversations", force: :cascade do |t|
|
||||||
t.boolean "oneone", limit: 1
|
t.boolean "oneone"
|
||||||
t.integer "first_customer_id", limit: 4
|
t.integer "first_customer_id", limit: 4
|
||||||
t.string "second_customer_id", limit: 255
|
t.string "second_customer_id", limit: 255
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
@ -190,8 +190,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.integer "parent_id", limit: 4
|
t.integer "parent_id", limit: 4
|
||||||
t.datetime "last_message_at"
|
t.datetime "last_message_at"
|
||||||
t.string "remote_ip", limit: 255
|
t.string "remote_ip", limit: 255
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.boolean "readed", limit: 1
|
t.boolean "readed"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.integer "conversation_id", limit: 4
|
t.integer "conversation_id", limit: 4
|
||||||
@ -213,8 +213,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.integer "parent_id", limit: 4
|
t.integer "parent_id", limit: 4
|
||||||
t.string "parent_code", limit: 255
|
t.string "parent_code", limit: 255
|
||||||
t.string "parent_at_create", limit: 255
|
t.string "parent_at_create", limit: 255
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.string "username", limit: 255
|
t.string "username", limit: 255
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.string "firstname", limit: 255
|
t.string "firstname", limit: 255
|
||||||
@ -224,7 +224,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.text "bio", limit: 65535
|
t.text "bio", limit: 65535
|
||||||
t.string "avatar", limit: 255
|
t.string "avatar", limit: 255
|
||||||
t.string "localisation", 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 "token", limit: 255
|
||||||
t.string "mlm_token", limit: 255
|
t.string "mlm_token", limit: 255
|
||||||
t.string "address", limit: 255
|
t.string "address", limit: 255
|
||||||
@ -257,11 +257,11 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.datetime "last_sign_in_at"
|
t.datetime "last_sign_in_at"
|
||||||
t.string "current_sign_in_ip", limit: 255
|
t.string "current_sign_in_ip", limit: 255
|
||||||
t.string "last_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 "locked_at"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_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.datetime "account_validated_at"
|
||||||
t.float "latitude", limit: 24
|
t.float "latitude", limit: 24
|
||||||
t.float "longitude", limit: 24
|
t.float "longitude", limit: 24
|
||||||
@ -269,10 +269,10 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.text "particulars_text", limit: 65535
|
t.text "particulars_text", limit: 65535
|
||||||
t.float "capital", limit: 24
|
t.float "capital", limit: 24
|
||||||
t.string "role_signataire", limit: 255
|
t.string "role_signataire", limit: 255
|
||||||
t.boolean "referent", limit: 1, default: false
|
t.boolean "referent", default: false
|
||||||
t.boolean "chef_reseau", limit: 1, default: false
|
t.boolean "chef_reseau", default: false
|
||||||
t.string "reseaux_token", limit: 255
|
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_send_id", limit: 4
|
||||||
t.integer "particular_bill_id", limit: 4
|
t.integer "particular_bill_id", limit: 4
|
||||||
end
|
end
|
||||||
@ -297,7 +297,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "returned_document", limit: 255
|
t.string "returned_document", limit: 255
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "particulars", limit: 1
|
t.boolean "particulars"
|
||||||
t.string "download_token", limit: 255
|
t.string "download_token", limit: 255
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -334,8 +334,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
create_table "domains", force: :cascade do |t|
|
create_table "domains", force: :cascade do |t|
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.string "slug", limit: 255
|
t.string "slug", limit: 255
|
||||||
t.boolean "superadmin", limit: 1
|
t.boolean "superadmin"
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.text "description", limit: 65535
|
t.text "description", limit: 65535
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_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|
|
create_table "file_folders", force: :cascade do |t|
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.boolean "super_admin", limit: 1
|
t.boolean "super_admin"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -379,7 +379,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "email", limit: 255
|
t.string "email", limit: 255
|
||||||
t.boolean "send_email", limit: 1
|
t.boolean "send_email"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "gallery_contents", force: :cascade do |t|
|
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 "width", limit: 4
|
||||||
t.integer "height", limit: 4
|
t.integer "height", limit: 4
|
||||||
t.string "alignement", limit: 255
|
t.string "alignement", limit: 255
|
||||||
t.boolean "expandable", limit: 1
|
t.boolean "expandable"
|
||||||
t.string "style", limit: 255
|
t.string "style", limit: 255
|
||||||
t.string "alt", limit: 255
|
t.string "alt", limit: 255
|
||||||
t.integer "cible_id", limit: 4
|
t.integer "cible_id", limit: 4
|
||||||
t.string "cible_type", limit: 255
|
t.string "cible_type", limit: 255
|
||||||
t.boolean "with_cible", limit: 1
|
t.boolean "with_cible"
|
||||||
t.boolean "popup", limit: 1
|
t.boolean "popup"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -443,7 +443,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
create_table "lang_sites", force: :cascade do |t|
|
create_table "lang_sites", force: :cascade do |t|
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.string "slug", limit: 255
|
t.string "slug", limit: 255
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
end
|
||||||
@ -452,7 +452,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.integer "type", limit: 4
|
t.integer "type", limit: 4
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.string "title", limit: 255
|
t.string "title", limit: 255
|
||||||
t.boolean "popup", limit: 1
|
t.boolean "popup"
|
||||||
t.string "url", limit: 255
|
t.string "url", limit: 255
|
||||||
t.string "style", limit: 255
|
t.string "style", limit: 255
|
||||||
t.integer "cible_id", limit: 4
|
t.integer "cible_id", limit: 4
|
||||||
@ -467,7 +467,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "email", limit: 255
|
t.string "email", limit: 255
|
||||||
t.integer "customer_id", limit: 4
|
t.integer "customer_id", limit: 4
|
||||||
t.string "token", limit: 255
|
t.string "token", limit: 255
|
||||||
t.boolean "readed", limit: 1
|
t.boolean "readed"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -480,7 +480,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "address", limit: 255
|
t.string "address", limit: 255
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.integer "view", limit: 4
|
t.integer "view", limit: 4
|
||||||
t.boolean "info_bule", limit: 1
|
t.boolean "info_bule"
|
||||||
t.integer "zoom", limit: 4
|
t.integer "zoom", limit: 4
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
@ -502,18 +502,18 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.integer "repertoire_id", limit: 4
|
t.integer "repertoire_id", limit: 4
|
||||||
t.integer "parent_id", limit: 4
|
t.integer "parent_id", limit: 4
|
||||||
t.integer "position", limit: 4
|
t.integer "position", limit: 4
|
||||||
t.boolean "super_admin", limit: 1
|
t.boolean "super_admin"
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.boolean "visible", limit: 1
|
t.boolean "visible"
|
||||||
t.boolean "deleted", limit: 1
|
t.boolean "deleted"
|
||||||
t.integer "menu_id", limit: 4
|
t.integer "menu_id", limit: 4
|
||||||
t.integer "menu_content_id", limit: 4
|
t.integer "menu_content_id", limit: 4
|
||||||
t.string "menu_content_type", limit: 255
|
t.string "menu_content_type", limit: 255
|
||||||
t.integer "archive_id", limit: 4
|
t.integer "archive_id", limit: 4
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
t.datetime "archived_at"
|
t.datetime "archived_at"
|
||||||
t.boolean "password", limit: 1
|
t.boolean "password"
|
||||||
t.boolean "comment", limit: 1
|
t.boolean "comment"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -578,8 +578,8 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
create_table "newsgroups", force: :cascade do |t|
|
create_table "newsgroups", force: :cascade do |t|
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.string "slug", limit: 255
|
t.string "slug", limit: 255
|
||||||
t.boolean "default_checked", limit: 1
|
t.boolean "default_checked"
|
||||||
t.boolean "enabled", limit: 1
|
t.boolean "enabled"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
end
|
||||||
@ -588,7 +588,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "title", limit: 255
|
t.string "title", limit: 255
|
||||||
t.text "content", limit: 65535
|
t.text "content", limit: 65535
|
||||||
t.datetime "sendmail"
|
t.datetime "sendmail"
|
||||||
t.boolean "archive", limit: 1
|
t.boolean "archive"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
@ -627,7 +627,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
end
|
end
|
||||||
|
|
||||||
create_table "particulars", force: :cascade do |t|
|
create_table "particulars", force: :cascade do |t|
|
||||||
t.boolean "pro", limit: 1
|
t.boolean "pro"
|
||||||
t.string "organisation", limit: 255
|
t.string "organisation", limit: 255
|
||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.string "firstname", limit: 255
|
t.string "firstname", limit: 255
|
||||||
@ -647,7 +647,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "owner_type", limit: 255
|
t.string "owner_type", limit: 255
|
||||||
t.integer "owner_id", limit: 4
|
t.integer "owner_id", limit: 4
|
||||||
t.string "particular_type", limit: 255
|
t.string "particular_type", limit: 255
|
||||||
t.boolean "skip_validation", limit: 1
|
t.boolean "skip_validation"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "civilite", limit: 255
|
t.string "civilite", limit: 255
|
||||||
@ -658,7 +658,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "element_type", limit: 255
|
t.string "element_type", limit: 255
|
||||||
t.integer "element_id", limit: 4
|
t.integer "element_id", limit: 4
|
||||||
t.datetime "paid_at"
|
t.datetime "paid_at"
|
||||||
t.boolean "paid", limit: 1
|
t.boolean "paid"
|
||||||
t.string "ogone_payid", limit: 255
|
t.string "ogone_payid", limit: 255
|
||||||
t.string "ogone_pm", limit: 255
|
t.string "ogone_pm", limit: 255
|
||||||
t.string "ogone_status", 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.datetime "last_sign_in_at"
|
||||||
t.string "current_sign_in_ip", limit: 255
|
t.string "current_sign_in_ip", limit: 255
|
||||||
t.string "last_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 "locked_at"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "remote_ip", limit: 255
|
t.string "remote_ip", limit: 255
|
||||||
t.string "token", 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_bill_id", limit: 4
|
||||||
t.integer "particular_send_id", limit: 4
|
t.integer "particular_send_id", limit: 4
|
||||||
end
|
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|
|
create_table "product_fdps", force: :cascade do |t|
|
||||||
t.decimal "price", precision: 10, scale: 2
|
t.decimal "price", precision: 10, scale: 2
|
||||||
t.text "country", limit: 65535
|
t.text "country", limit: 65535
|
||||||
@ -771,7 +783,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "delais", limit: 255
|
t.string "delais", limit: 255
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "product_images", force: :cascade do |t|
|
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.integer "product_id", limit: 4
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
t.text "bl_title", limit: 65535
|
t.text "bl_title", limit: 65535
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -810,7 +822,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.string "name", limit: 255
|
t.string "name", limit: 255
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "product_option_langs", ["product_option_id"], name: "index_product_option_langs_on_product_option_id", using: :btree
|
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.integer "product_id", limit: 4
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "product_options", ["product_id"], name: "index_product_options_on_product_id", using: :btree
|
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.string "payplug_card_last_number", limit: 255
|
||||||
t.datetime "paid_at"
|
t.datetime "paid_at"
|
||||||
t.datetime "tr_canceled_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.string "token", limit: 255
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_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|
|
create_table "product_orders", force: :cascade do |t|
|
||||||
t.decimal "amount", precision: 10, scale: 2
|
t.decimal "amount", precision: 10, scale: 2
|
||||||
t.boolean "particular_idem", limit: 1, default: false
|
t.boolean "particular_idem", default: false
|
||||||
t.boolean "paid", limit: 1, default: false
|
t.boolean "paid", default: false
|
||||||
t.integer "particular_bill_id", limit: 4
|
t.integer "particular_bill_id", limit: 4
|
||||||
t.string "particular_send_id", limit: 255
|
t.string "particular_send_id", limit: 255
|
||||||
t.string "token", 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_ok_id", limit: 4
|
||||||
t.integer "product_order_payment_type_ok_id", limit: 4
|
t.integer "product_order_payment_type_ok_id", limit: 4
|
||||||
t.integer "bill_index", limit: 4
|
t.integer "bill_index", limit: 4
|
||||||
t.string "bill_number", limit: 255
|
t.string "bill_number", limit: 255
|
||||||
t.string "bill_year", 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.integer "product_customer_id", limit: 4
|
||||||
t.datetime "paid_at"
|
t.datetime "paid_at"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.integer "product_fdp_id", limit: 4
|
t.integer "product_fdp_id", limit: 4
|
||||||
t.integer "product_fdp_archived_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.integer "customer_id", limit: 4
|
||||||
t.string "bl_number", limit: 255
|
t.string "bl_number", limit: 255
|
||||||
t.integer "bl_index", limit: 4
|
t.integer "bl_index", limit: 4
|
||||||
t.integer "bl_year", limit: 4
|
t.integer "bl_year", limit: 4
|
||||||
t.boolean "shiped", limit: 1
|
t.boolean "shiped"
|
||||||
t.integer "reseaux_id", limit: 4
|
t.integer "reseaux_id", limit: 4
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -955,7 +967,7 @@ ActiveRecord::Schema.define(version: 20180417075800) do
|
|||||||
t.integer "position", limit: 4
|
t.integer "position", limit: 4
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "product_stocks", force: :cascade do |t|
|
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|
|
create_table "products", force: :cascade do |t|
|
||||||
t.decimal "price_ht", precision: 10, scale: 2
|
t.decimal "price_ht", precision: 10, scale: 2
|
||||||
t.decimal "price_reduced_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 "default_image_id", limit: 4
|
||||||
t.integer "position", limit: 4
|
t.integer "position", limit: 4
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.integer "product_category_id", limit: 4
|
t.integer "product_category_id", limit: 4
|
||||||
t.integer "product_collection_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.integer "reseaux_id", limit: 4
|
||||||
t.string "sage_reference", limit: 255
|
t.string "sage_reference", limit: 255
|
||||||
t.string "sage_tiers", 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
|
end
|
||||||
|
|
||||||
add_index "products", ["product_category_id"], name: "index_products_on_product_category_id", using: :btree
|
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 "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.integer "sub_product_reference_id", limit: 4
|
t.integer "sub_product_reference_id", limit: 4
|
||||||
t.boolean "archived", limit: 1
|
t.boolean "archived"
|
||||||
|
t.string "price_type", limit: 255
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "table_contents", force: :cascade do |t|
|
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 "name", limit: 255
|
||||||
t.string "slug", limit: 255
|
t.string "slug", limit: 255
|
||||||
t.integer "parent_id", limit: 4
|
t.integer "parent_id", limit: 4
|
||||||
t.boolean "public", limit: 1
|
t.boolean "public"
|
||||||
t.string "taggable_type", limit: 255
|
t.string "taggable_type", limit: 255
|
||||||
t.integer "taggable_id", limit: 4
|
t.integer "taggable_id", limit: 4
|
||||||
t.datetime "created_at"
|
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_category_langs", "product_categories"
|
||||||
add_foreign_key "product_collection_langs", "product_collections"
|
add_foreign_key "product_collection_langs", "product_collections"
|
||||||
add_foreign_key "product_collections", "product_categories"
|
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_images", "image_files"
|
||||||
add_foreign_key "product_langs", "product_categories"
|
add_foreign_key "product_langs", "product_categories"
|
||||||
add_foreign_key "product_langs", "product_collections"
|
add_foreign_key "product_langs", "product_collections"
|
||||||
|
13
test/fixtures/product_degressives.yml
vendored
Normal file
13
test/fixtures/product_degressives.yml
vendored
Normal file
@ -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
|
7
test/models/product_degressive_test.rb
Normal file
7
test/models/product_degressive_test.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class ProductDegressiveTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user