office_clerk 0.8 → 0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -2
  3. data/Gemfile.lock +159 -100
  4. data/Guardfile +3 -0
  5. data/README.md +7 -2
  6. data/Rakefile +9 -0
  7. data/app/assets/images/missing_list.png +0 -0
  8. data/app/assets/images/missing_product.png +0 -0
  9. data/app/assets/images/missing_thumb.png +0 -0
  10. data/app/assets/javascripts/office_clerk.js +7 -5
  11. data/app/assets/stylesheets/office_clerk.css.scss +89 -14
  12. data/app/controllers/baskets_controller.rb +37 -26
  13. data/app/controllers/orders_controller.rb +44 -29
  14. data/app/controllers/products_controller.rb +6 -6
  15. data/app/controllers/purchases_controller.rb +18 -8
  16. data/app/helpers/admin_helper.rb +16 -21
  17. data/app/helpers/baskets_helper.rb +31 -0
  18. data/app/helpers/categories_helper.rb +3 -0
  19. data/app/helpers/office_helper.rb +34 -7
  20. data/app/helpers/orders_helper.rb +2 -3
  21. data/app/models/basket.rb +46 -20
  22. data/app/models/clerk.rb +6 -1
  23. data/app/models/item.rb +7 -0
  24. data/app/models/order.rb +18 -6
  25. data/app/models/product.rb +23 -8
  26. data/app/views/addresses/show.html.haml +2 -2
  27. data/app/views/baskets/_small.html.haml +2 -2
  28. data/app/views/baskets/edit.html.haml +19 -16
  29. data/app/views/baskets/index.html.haml +13 -5
  30. data/app/views/baskets/show.html.haml +3 -3
  31. data/app/views/categories/_treeview.html.haml +1 -2
  32. data/app/views/categories/edit.html.haml +4 -5
  33. data/app/views/categories/index.html.haml +7 -7
  34. data/app/views/categories/show.html.haml +3 -4
  35. data/app/views/clerks/edit.html.haml +4 -3
  36. data/app/views/clerks/index.html.haml +6 -6
  37. data/app/views/clerks/show.html.haml +3 -3
  38. data/app/views/layouts/_admin_menu.html.haml +8 -8
  39. data/app/views/layouts/_messages.html.haml +2 -2
  40. data/app/views/layouts/office_clerk.haml +10 -27
  41. data/app/views/order_mailer/confirm.text.erb +1 -2
  42. data/app/views/order_mailer/shipped.text.erb +2 -1
  43. data/app/views/orders/index.csv.erb +6 -6
  44. data/app/views/orders/index.html.haml +25 -20
  45. data/app/views/orders/shipment.haml +57 -0
  46. data/app/views/orders/show.html.haml +106 -39
  47. data/app/views/products/_head.haml +1 -2
  48. data/app/views/products/_line.html.haml +1 -1
  49. data/app/views/products/_preview_box.haml +14 -10
  50. data/app/views/products/_triple.html.haml +1 -1
  51. data/app/views/products/edit.html.haml +4 -4
  52. data/app/views/products/index.html.haml +24 -13
  53. data/app/views/products/show.html.haml +15 -12
  54. data/app/views/purchases/index.html.haml +11 -7
  55. data/app/views/purchases/show.html.haml +42 -25
  56. data/app/views/sessions/sign_up.haml +10 -10
  57. data/app/views/suppliers/edit.html.haml +2 -2
  58. data/app/views/suppliers/index.html.haml +6 -7
  59. data/app/views/suppliers/show.html.haml +2 -3
  60. data/config/i18n-tasks.yml +97 -0
  61. data/config/initializers/migrate.rb +11 -1
  62. data/config/initializers/paperclip.rb +17 -0
  63. data/config/locales/config.yml +0 -1
  64. data/config/locales/en.yml +99 -116
  65. data/config/locales/fi.yml +101 -117
  66. data/config/routes.rb +18 -15
  67. data/db/migrate/20131226143612_categories.rb +2 -2
  68. data/db/migrate/20131226151332_products.rb +3 -3
  69. data/lib/office_clerk/engine.rb +5 -8
  70. data/lib/office_clerk/shipping_method.rb +12 -1
  71. data/lib/office_clerk/version.rb +1 -1
  72. data/office_clerk.gemspec +5 -5
  73. data/spec/controllers/baskets_controller_spec.rb +2 -2
  74. data/spec/controllers/orders_controller_spec.rb +0 -29
  75. data/spec/controllers/products_controller_spec.rb +4 -3
  76. data/spec/controllers/purchases_controller_spec.rb +3 -4
  77. data/spec/factories/orders.rb +6 -1
  78. data/spec/factories/products.rb +3 -0
  79. data/spec/features/baskets/edit_spec.rb +6 -1
  80. data/spec/features/baskets/index_spec.rb +1 -0
  81. data/spec/features/baskets/search_spec.rb +1 -1
  82. data/spec/features/orders/filter_spec.rb +19 -0
  83. data/spec/features/orders/inventory_spec.rb +19 -0
  84. data/spec/features/orders/ordering_spec.rb +84 -0
  85. data/spec/features/paginate_spec.rb +11 -0
  86. data/spec/features/sessions_spec.rb +2 -1
  87. data/spec/{models/locale_spec.rb → i18n_spec.rb} +19 -1
  88. data/spec/mailers/order_mailer_spec.rb +2 -1
  89. data/spec/models/baskets/inventory_spec.rb +9 -2
  90. data/spec/models/baskets/items_spec.rb +6 -1
  91. data/spec/models/order_spec.rb +20 -1
  92. data/spec/routing/baskets_routing_spec.rb +5 -1
  93. data/spec/routing/orders_routing_spec.rb +0 -12
  94. data/spec/spec_helper.rb +16 -3
  95. data/test_app/bin/setup +29 -0
  96. data/test_app/config/application.rb +3 -0
  97. data/test_app/config/boot.rb +1 -2
  98. data/test_app/config/environment.rb +1 -1
  99. data/test_app/config/environments/development.rb +1 -1
  100. data/test_app/config/environments/production.rb +20 -21
  101. data/test_app/config/environments/test.rb +7 -4
  102. data/test_app/config/initializers/assets.rb +11 -0
  103. data/test_app/config/initializers/cookies_serializer.rb +3 -0
  104. data/test_app/config/initializers/mime_types.rb +0 -1
  105. data/test_app/config/initializers/session_store.rb +1 -1
  106. data/test_app/config/routes.rb +1 -2
  107. data/test_app/config/secrets.yml +22 -0
  108. data/test_app/db/migrate/20141114205526_suppliers.office.rb +1 -1
  109. data/test_app/db/migrate/20141114205527_categories.office.rb +3 -3
  110. data/test_app/db/migrate/20141114205528_items.office.rb +1 -1
  111. data/test_app/db/migrate/20141114205529_orders.office.rb +1 -1
  112. data/test_app/db/migrate/20141114205530_baskets.office.rb +1 -1
  113. data/test_app/db/migrate/20141114205531_purchases.office.rb +1 -1
  114. data/test_app/db/migrate/20141114205532_products.office.rb +4 -4
  115. data/test_app/db/schema.rb +26 -26
  116. metadata +35 -28
  117. data/app/views/orders/edit.html.haml +0 -25
  118. data/app/views/orders/ship.haml +0 -91
  119. data/app/views/purchases/edit.html.haml +0 -9
  120. data/spec/features/orders_spec.rb +0 -37
data/Guardfile CHANGED
@@ -25,5 +25,8 @@ guard :rspec , :cmd => command do
25
25
  # Turnip features and steps
26
26
  watch(%r{^spec/acceptance/(.+)\.feature$})
27
27
  watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
28
+
29
+ # locales
30
+ watch(%r{^config/locales/.*yml}) { |m| "spec/i18n_spec.rb" }
28
31
  end
29
32
 
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  ## Office Clerk
2
+
3
+ [![Join the chat at https://gitter.im/rubyclerks/office_clerk](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/rubyclerks/office_clerk?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2
4
  [![Build Status](https://travis-ci.org/rubyclerks/office_clerk.svg?branch=master)](https://travis-ci.org/rubyclerks/office_clerk)
3
5
  [![Gem Version](https://badge.fury.io/rb/office_clerk.svg)](http://badge.fury.io/rb/office_clerk)
4
6
  [![Code Climate](https://codeclimate.com/github/rubyclerks/office_clerk/badges/gpa.svg)](https://codeclimate.com/github/rubyclerks/office_clerk)
5
- [![Test Coverage](https://codeclimate.com/github/rubyclerks/office_clerk/badges/coverage.svg)](https://codeclimate.com/github/rubyclerks/office_clerk)
7
+ [![Test Coverage](https://codeclimate.com/github/rubyclerks/office_clerk/badges/coverage.svg) 300+](https://codeclimate.com/github/rubyclerks/office_clerk)
6
8
 
7
9
  Office Clerk is the back office helper, your accountant, storage manager, secretary and more. It is the heart of the [RubyClerks team](http://rubyclerks.org) , the manager as it were.
8
10
 
@@ -45,7 +47,10 @@ The longer route, adding to existing project
45
47
 
46
48
  If you got this far and still have question , mail me, or mail the [list](https://groups.google.com/forum/#!forum/rubyclerks)
47
49
 
48
- I will start writing User/Developer guides soon, your question will help. Off course your help will help even more :-)
50
+ Check the [User Guide](http://rubyclerks.org/user_guide/01_index.html),
51
+ then the [Developer Guide](http://rubyclerks.org/developer_guide/01_index.html).
52
+
53
+ Fill issues if you find, or discuss with me for ideas.
49
54
 
50
55
  ### Similar Projects
51
56
 
data/Rakefile CHANGED
@@ -3,4 +3,13 @@
3
3
 
4
4
  require File.expand_path('../test_app/config/application', __FILE__)
5
5
 
6
+ require 'bundler/gem_tasks'
7
+
6
8
  TestApp::Application.load_tasks
9
+
10
+ desc 'Rebuild test and run specs'
11
+ task :full_test do
12
+ system("rake db:drop db:migrate RAILS_ENV=test && rspec")
13
+ end
14
+
15
+ task :default => 'full_test'
Binary file
Binary file
@@ -1,11 +1,12 @@
1
- //= require jquery
1
+ //= require jquery.min
2
+ //= require jquery_ujs
2
3
  //= require best_in_place
3
4
 
4
- //= require jquery-ui
5
+ //= require jquery-ui/datepicker
5
6
  //= require jquery-ui/datepicker-fi
6
7
  //= require best_in_place.jquery-ui
7
8
 
8
- //= require bootstrap
9
+ //= require bootstrap.min
9
10
  //= require_self
10
11
 
11
12
  $.datepicker.setDefaults( $.datepicker.regional[ 'fi' ] );
@@ -13,14 +14,13 @@ $.datepicker.setDefaults( $.datepicker.regional[ 'fi' ] );
13
14
  $(function() {
14
15
  $( ".datepicker" ).datepicker( );
15
16
  });
16
-
17
+
17
18
  function initPage(){
18
19
  // Add Error Form style with bootstrap
19
20
  $("div.form-group>div.field_with_errors").parent().addClass("error");
20
21
  $("#error_explanation").addClass("text-error");
21
22
 
22
23
  }
23
-
24
24
  $(window).bind('page:change', function() {
25
25
  initPage();
26
26
  });
@@ -28,4 +28,6 @@ $(window).bind('page:change', function() {
28
28
  $(document).ready(function() {
29
29
  /* Activating Best In Place */
30
30
  jQuery(".best_in_place").best_in_place();
31
+ /* and fading alerts */
32
+ jQuery(".alert").delay(5000).fadeOut("slow");
31
33
  });
@@ -38,14 +38,17 @@ a.online{
38
38
  color: green;
39
39
  }
40
40
 
41
- .alert-notice {
42
- background-color: #00FFEB;
41
+ .alert {
43
42
  padding: 8px;
44
43
  radius: $global-radius;
45
44
  }
46
45
 
47
- .alert-error {
48
- background-color: red;
46
+ .alert-notice {
47
+ background-color: #00FFEB;
48
+ }
49
+
50
+ .alert-alert {
51
+ background-color: #ff8080;
49
52
  };
50
53
 
51
54
 
@@ -55,7 +58,7 @@ body {
55
58
 
56
59
  .new-button {
57
60
  top: 15px;
58
- text-align: right;
61
+ text-align: right;
59
62
  }
60
63
 
61
64
  .strip {
@@ -80,7 +83,7 @@ ul.pagination li {
80
83
  ul.pagination li a{
81
84
  background-color: rgba(255, 255, 255, 0.9);
82
85
  }
83
-
86
+
84
87
  .admin-table {
85
88
  font-size: 0.5rem;
86
89
 
@@ -90,38 +93,110 @@ thead, tbody { vertical-align: top;
90
93
 
91
94
  }
92
95
 
93
- .tausta {
96
+ .tausta {
94
97
  background: $tausta-bg;
95
98
  border-radius: 6px;
96
99
  padding-top: 6px;
97
100
  margin-bottom: 20px;
98
101
  }
99
102
 
100
- .products{
103
+ .products{
101
104
  background: image-url('office_clerk/products-2.jpg') no-repeat;
102
105
  }
103
106
 
104
- .baskets{
107
+ .baskets{
105
108
  background: image-url('office_clerk/baskets-2.jpg') no-repeat;
106
109
  }
107
110
 
108
- .orders{
111
+ .orders{
109
112
  background: image-url('office_clerk/orders-2.jpg') no-repeat;
110
113
  }
111
114
 
112
- .purchases{
115
+ .purchases{
113
116
  background: image-url('office_clerk/purchases-2.jpg') no-repeat;
114
117
  height: 161px;
115
118
  }
116
119
 
117
- .categories{
120
+ .categories{
118
121
  background: image-url('office_clerk/categories-2.jpg') no-repeat;
119
122
  }
120
123
 
121
- .suppliers{
124
+ .suppliers{
122
125
  background: image-url('office_clerk/suppliers-2.jpg') no-repeat;
123
126
  }
124
127
 
125
- .clerks{
128
+ .clerks{
126
129
  background: image-url('office_clerk/clerks-2.jpg') no-repeat;
127
130
  }
131
+
132
+ .admin {
133
+ .product-container {
134
+ margin-bottom: 31px;
135
+ position: relative;
136
+ border: 1px solid #5BE7E2;
137
+ box-shadow: 2px 2px 5px #E8EDF0;
138
+ overflow: hidden;
139
+ width: 260px;
140
+ }
141
+
142
+ .product-container h4 {
143
+ position: absolute;
144
+ left: 0;
145
+ padding: 10px;
146
+ color: #000000;
147
+ font-size: 1.5rem;
148
+ background: #94cef6;
149
+ margin: 0px;
150
+ width: 100%;
151
+ z-index: 1;
152
+ }
153
+
154
+ .square-image {
155
+ height: 200px;
156
+ }
157
+
158
+ .square-image img {
159
+ position: absolute;
160
+ bottom: 4px;
161
+ }
162
+
163
+ .bottom {
164
+ position: absolute;
165
+ bottom: 0;
166
+ right: 0;
167
+ }
168
+
169
+ .product-fact {
170
+ border-top: 1px solid #0078ff;
171
+ background: rgba(255, 255, 255, 0.7);
172
+ padding: 5px 10px 0 5px;
173
+ position: relative;
174
+ top: 75px;
175
+ }
176
+
177
+ .product-fact p {
178
+ font-size: 1.2rem;
179
+ font-weight: 500;
180
+ color: #000000;
181
+ line-height: 110%;
182
+ margin-bottom: 3px;
183
+ }
184
+
185
+ .product-list-price {
186
+ color: #04617A;
187
+ font-weight: 400;
188
+ font-size: 2.6rem;
189
+ text-align: right;
190
+ position: absolute;
191
+ bottom: 2px;
192
+ right: 22px; }
193
+
194
+ }
195
+
196
+ .no-bg {
197
+ background: none;
198
+ }
199
+
200
+ .no-border td {
201
+ border: none;
202
+ }
@@ -1,11 +1,12 @@
1
1
  # encoding : utf-8
2
2
  class BasketsController < AdminController
3
+ include BasketsHelper
3
4
 
4
- before_filter :load_basket, :only => [:show, :edit, :change , :update, :destroy , :order ,
5
- :checkout, :purchase , :discount , :ean]
5
+ before_filter :load_basket, :only => [:show, :edit, :change , :update, :destroy , :order ,
6
+ :checkout, :purchase , :discount , :ean , :zero]
6
7
 
7
8
  def index
8
- @q = Basket.search( params[:q] )
9
+ @q = Basket.ransack( params[:q] )
9
10
  @basket_scope = @q.result( :distinct => true )
10
11
  @baskets = @basket_scope.includes({:items => :product} , :kori).paginate( :page => params[:page], :per_page => 20 )
11
12
  end
@@ -18,8 +19,7 @@ class BasketsController < AdminController
18
19
  order = @basket.kori || Order.new( :basket => @basket )
19
20
  order.pos_checkout( current_clerk.email )
20
21
  order.save!
21
- styles = OfficeClerk.config(:print_styles)
22
- if(styles && styles.split.include?("receipt"))
22
+ if has_receipt?
23
23
  redirect_to receipt_order_path(order)
24
24
  else
25
25
  redirect_to order_path(order)
@@ -30,14 +30,18 @@ class BasketsController < AdminController
30
30
  gon.basket_id = @basket.id
31
31
  end
32
32
 
33
+ def zero
34
+ @basket.zero_prices!
35
+ render :edit
36
+ end
37
+
33
38
  #as an action this order is meant as a verb, ie order this basket
34
39
  def order
35
40
  if @basket.empty?
36
- render :edit , :notice => t(:basket_empty)
37
- return
41
+ return render :edit , :notice => t(:basket_empty)
38
42
  end
39
43
  order = Order.create! :basket => @basket , :email => current_clerk.email , :ordered_on => Date.today
40
- redirect_to :action => :show , :controller => :orders , :id => order.id
44
+ redirect_to order_path(order)
41
45
  end
42
46
 
43
47
  def purchase
@@ -50,7 +54,7 @@ class BasketsController < AdminController
50
54
  return
51
55
  end
52
56
  purchase = Purchase.create! :basket => @basket
53
- redirect_to :action => :show , :controller => :purchases , :id => purchase.id
57
+ redirect_to office.purchase_path(purchase)
54
58
  end
55
59
 
56
60
  def new
@@ -62,23 +66,23 @@ class BasketsController < AdminController
62
66
  def discount
63
67
  if discount = params[:discount]
64
68
  if i_id = params[:item]
65
- item = @basket.items.find { |item| item.id.to_s == i_id }
69
+ item = @basket.items.find { |it| it.id.to_s == i_id }
66
70
  item_discount( item , discount )
67
71
  else
68
- @basket.items.each do |item|
69
- item_discount( item , discount )
72
+ @basket.items.each do |it|
73
+ item_discount( it , discount )
70
74
  end
71
75
  end
72
76
  @basket.save!
73
77
  else
74
78
  flash[:error] = "No discount given"
75
79
  end
76
- redirect_to :action => :edit
80
+ redirect_to office.edit_basket_path(@basket)
77
81
  end
78
82
 
79
83
  # ean search at the top of basket edit
80
84
  def ean
81
- return if locked?
85
+ return if redirect_if_locked
82
86
  ean = params[:ean]
83
87
  ean.sub!("P+" , "P-") if ean[0,2] == "P+"
84
88
  prod = Product.find_by_ean ean
@@ -90,16 +94,15 @@ class BasketsController < AdminController
90
94
  @basket.add_product prod
91
95
  else
92
96
  # stor the basket in the session ( or the url ???)
93
- redirect_to :action => :index, :controller => :products,
94
- :q => {"name_or_product_name_cont"=> ean},:basket => @basket.id
97
+ redirect_to office.products_path(:q => {"name_or_product_name_cont"=> ean},:basket => @basket.id)
95
98
  return
96
99
  end
97
100
  end
98
- redirect_to :action => :edit
101
+ redirect_to office.basket_path(@basket)
99
102
  end
100
103
 
101
104
  def edit
102
- return if locked?
105
+ return if redirect_if_locked
103
106
  if p_id = (params[:add] || params[:delete])
104
107
  add = params[:add].blank? ? -1 : 1
105
108
  @basket.add_product Product.find(p_id) , add
@@ -118,7 +121,7 @@ class BasketsController < AdminController
118
121
  end
119
122
 
120
123
  def update
121
- return if locked?
124
+ return if redirect_if_locked
122
125
  @basket.update_attributes(params_for_basket)
123
126
  flash.notice = t(:update_success, :model => "basket")
124
127
  redirect_to edit_basket_path(@basket)
@@ -126,18 +129,27 @@ class BasketsController < AdminController
126
129
 
127
130
  def destroy
128
131
  # the idea is that you can't delete a basket once something has been "done" with it (order..)
129
- @basket.destroy unless @basket.kori_type
130
- redirect_to baskets_url
132
+ if @basket.locked?
133
+ flash.notice = t('basket_locked')
134
+ else
135
+ flash.notice = t('basket') + " " + t(:deleted)
136
+ @basket.destroy
137
+ end
138
+ redirect_to baskets_path
131
139
  end
132
140
 
133
141
  private
134
142
 
135
143
  # check if the @basket is locked (no edits allowed)
136
144
  # and if so redirect to show
137
- def locked?
138
- return false unless @basket.locked
139
- redirect_to :action => :show , :notice => t('basket_locked')
140
- return true
145
+ # return if redirect happened
146
+ def redirect_if_locked
147
+ if @basket.locked?
148
+ flash.notice = t('basket_locked')
149
+ redirect_to :action => :show
150
+ return true
151
+ end
152
+ return false
141
153
  end
142
154
 
143
155
  def item_discount item , discount
@@ -155,4 +167,3 @@ class BasketsController < AdminController
155
167
  params.require(:basket).permit( :items_attributes => [:quantity , :price , :id] )
156
168
  end
157
169
  end
158
-
@@ -1,12 +1,13 @@
1
1
  # encoding : utf-8
2
2
  class OrdersController < AdminController
3
3
 
4
- before_filter :load_order, :only => [:show, :edit, :update , :pay , :ship , :mail]
4
+ before_filter :load_order, :only => [ :show, :edit, :destroy, :update , :cancel,
5
+ :ship, :shipment , :pay , :mail]
5
6
 
6
7
  def index
7
8
  @q = Order.search(params[:q])
8
- @order_scope = @q.result( :distinct => true)
9
- @orders = @order_scope.includes(:basket => :items ).paginate(:page => params[:page],:per_page => 20)
9
+ @order_scope = @q.result( :distinct => true).includes(:basket => :items )
10
+ @orders = @order_scope.paginate(:page => params[:page],:per_page => 20)
10
11
  end
11
12
 
12
13
  def show
@@ -14,51 +15,56 @@ class OrdersController < AdminController
14
15
  end
15
16
 
16
17
  def new
17
- @order = Order.new
18
- @order.build_basket
19
- render :edit
18
+ basket = Basket.create!
19
+ @order = Order.new :email => current_clerk.email , :basket => basket , :ordered_on => Date.today
20
+ if( copy = params[:address])
21
+ order = Order.find copy
22
+ @order.email = order.email
23
+ @order.address = order.address
24
+ end
25
+ @order.save!
26
+ redirect_to edit_basket_path basket
20
27
  end
21
28
 
22
29
  def mail
23
30
  action = params[:act]
24
- puts "MAIL #{action}"
25
31
  mail = eval("OrderMailer.#{action}(@order)")
26
32
  mail.deliver
27
33
  flash.notice = "Sent #{action}"
28
34
  redirect_to :action => :show
29
35
  end
30
36
  def pay
31
- @order.pay_now!
32
- render :show
37
+ @order.pay_now
38
+ @order.save
39
+ return redirect_to orders_path , :notice => t(:update_success) + ":#{@order.number}"
33
40
  end
41
+
34
42
  def ship
35
- return if request.get?
36
- order_ps = params.require(:order).permit( :email,:name , :street , :city , :phone , :shipment_type )
37
- order_ps[:shipped_on] = Date.today
38
- if @order.update_attributes(order_ps)
39
- redirect_to order_path(@order), :notice => t(:OK)
40
- return
41
- end
43
+ @order.ship_now
44
+ @order.basket.deduct!
45
+ @order.save!
46
+ return redirect_to order_path(@order), :notice => t(:update_success)
42
47
  end
43
-
44
- def edit
48
+
49
+ # after many user mistakes we now let the user undo those, cancel to go back to edit
50
+ def cancel
51
+ @order.cancel!
52
+ return redirect_to order_path(@order), :notice => t(:update_success)
45
53
  end
46
54
 
47
- def create
48
- @order = Order.create(params_for_order)
49
- @order.build_basket() unless @order.basket
50
- if @order.save
51
- redirect_to order_path(@order), :notice => t(:create_success, :model => "order")
52
- else
53
- render :edit
54
- end
55
+ def shipment
56
+ return if request.get?
57
+ return redirect_to order_path(@order), :notice => t(:update_success) if @order.update_attributes(params_for_order)
58
+ end
59
+
60
+ def edit
55
61
  end
56
62
 
57
63
  def update
58
64
  @order.build_basket unless @order.basket
59
65
  respond_to do |format|
60
66
  if @order.update_attributes(params_for_order)
61
- format.html { redirect_to(@order, :notice => t(:update_success, :model => "order")) }
67
+ format.html { redirect_to(@order, :notice => t(:update_success, :model => :order)) }
62
68
  format.json { respond_with_bip(@order) }
63
69
  else
64
70
  format.html { render :action => :edit }
@@ -67,6 +73,16 @@ class OrdersController < AdminController
67
73
  end
68
74
  end
69
75
 
76
+ def destroy
77
+ if @order.basket.locked?
78
+ flash.notice = t(:basket_locked)
79
+ else
80
+ @order.destroy
81
+ flash.notice = t(:order) + " " + t(:deleted)
82
+ end
83
+ redirect_to orders_url
84
+ end
85
+
70
86
  private
71
87
 
72
88
  def load_order
@@ -74,7 +90,6 @@ class OrdersController < AdminController
74
90
  end
75
91
 
76
92
  def params_for_order
77
- params.require(:order).permit(:shipment_price,:shipment_tax,:shipment_type, :note)
93
+ params.require(:order).permit(:payment_info,:shipment_info,:shipment_price,:shipment_tax,:shipment_type, :note , :name ,:street, :city , :phone , :email)
78
94
  end
79
95
  end
80
-