spree_backend 3.0.10 → 3.1.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +22 -19
  3. data/app/assets/javascripts/spree/backend/admin.js +10 -17
  4. data/app/assets/javascripts/spree/backend/handlebar_extensions.js +0 -2
  5. data/app/assets/javascripts/spree/backend/product_picker.js +1 -2
  6. data/app/assets/javascripts/spree/backend/spree-select2.js +0 -1
  7. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +1 -0
  8. data/app/assets/javascripts/spree/backend/taxons.js.coffee +6 -1
  9. data/app/assets/stylesheets/spree/backend/components/_labels.scss +1 -0
  10. data/app/assets/stylesheets/spree/backend/components/_page_header.scss +15 -0
  11. data/app/assets/stylesheets/spree/backend/shared/_base.scss +9 -1
  12. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +5 -1
  13. data/app/controllers/spree/admin/adjustments_controller.rb +2 -2
  14. data/app/controllers/spree/admin/customer_returns_controller.rb +5 -4
  15. data/app/controllers/spree/admin/option_types_controller.rb +1 -1
  16. data/app/controllers/spree/admin/option_values_controller.rb +1 -1
  17. data/app/controllers/spree/admin/orders/customer_details_controller.rb +37 -20
  18. data/app/controllers/spree/admin/orders_controller.rb +6 -6
  19. data/app/controllers/spree/admin/payment_methods_controller.rb +3 -3
  20. data/app/controllers/spree/admin/payments_controller.rb +2 -2
  21. data/app/controllers/spree/admin/products_controller.rb +11 -2
  22. data/app/controllers/spree/admin/promotions_controller.rb +0 -2
  23. data/app/controllers/spree/admin/properties_controller.rb +0 -2
  24. data/app/controllers/spree/admin/resource_controller.rb +6 -7
  25. data/app/controllers/spree/admin/return_index_controller.rb +28 -0
  26. data/app/controllers/spree/admin/stock_transfers_controller.rb +2 -4
  27. data/app/controllers/spree/admin/store_credit_categories_controller.rb +6 -0
  28. data/app/controllers/spree/admin/store_credits_controller.rb +94 -0
  29. data/app/controllers/spree/admin/taxons_controller.rb +14 -12
  30. data/app/controllers/spree/admin/users_controller.rb +4 -25
  31. data/app/controllers/spree/admin/variants_controller.rb +7 -4
  32. data/app/helpers/spree/admin/base_helper.rb +9 -0
  33. data/app/helpers/spree/admin/navigation_helper.rb +19 -8
  34. data/app/helpers/spree/admin/orders_helper.rb +11 -7
  35. data/app/views/spree/admin/countries/edit.html.erb +4 -0
  36. data/app/views/spree/admin/countries/new.html.erb +1 -1
  37. data/app/views/spree/admin/general_settings/edit.html.erb +19 -18
  38. data/app/views/spree/admin/option_types/edit.html.erb +2 -0
  39. data/app/views/spree/admin/option_types/new.html.erb +4 -0
  40. data/app/views/spree/admin/orders/_add_line_item.html.erb +3 -3
  41. data/app/views/spree/admin/orders/_add_product.html.erb +3 -3
  42. data/app/views/spree/admin/orders/_form.html.erb +22 -22
  43. data/app/views/spree/admin/orders/_line_items.html.erb +5 -5
  44. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +19 -19
  45. data/app/views/spree/admin/orders/_order_actions.html.erb +12 -0
  46. data/app/views/spree/admin/orders/_risk_analysis.html.erb +2 -2
  47. data/app/views/spree/admin/orders/cart.html.erb +7 -11
  48. data/app/views/spree/admin/orders/customer_details/_form.html.erb +4 -4
  49. data/app/views/spree/admin/orders/customer_details/edit.html.erb +3 -3
  50. data/app/views/spree/admin/orders/edit.html.erb +6 -10
  51. data/app/views/spree/admin/orders/index.html.erb +7 -5
  52. data/app/views/spree/admin/payment_methods/_form.html.erb +1 -1
  53. data/app/views/spree/admin/payment_methods/edit.html.erb +4 -0
  54. data/app/views/spree/admin/payment_methods/index.html.erb +8 -2
  55. data/app/views/spree/admin/payment_methods/new.html.erb +4 -0
  56. data/app/views/spree/admin/payments/index.html.erb +1 -1
  57. data/app/views/spree/admin/payments/source_forms/_storecredit.html.erb +9 -0
  58. data/app/views/spree/admin/payments/source_views/_storecredit.html.erb +29 -0
  59. data/app/views/spree/admin/products/_form.html.erb +12 -3
  60. data/app/views/spree/admin/products/edit.html.erb +1 -0
  61. data/app/views/spree/admin/products/index.html.erb +10 -0
  62. data/app/views/spree/admin/products/new.html.erb +4 -0
  63. data/app/views/spree/admin/promotion_categories/edit.html.erb +4 -0
  64. data/app/views/spree/admin/promotion_categories/new.html.erb +4 -0
  65. data/app/views/spree/admin/promotions/edit.html.erb +4 -0
  66. data/app/views/spree/admin/promotions/new.html.erb +4 -0
  67. data/app/views/spree/admin/properties/edit.html.erb +4 -0
  68. data/app/views/spree/admin/properties/new.html.erb +4 -0
  69. data/app/views/spree/admin/prototypes/edit.html.erb +4 -0
  70. data/app/views/spree/admin/prototypes/new.html.erb +4 -0
  71. data/app/views/spree/admin/refund_reasons/destroy.js.erb +1 -0
  72. data/app/views/spree/admin/reports/sales_total.html.erb +1 -1
  73. data/app/views/spree/admin/return_authorization_reasons/destroy.js.erb +1 -0
  74. data/app/views/spree/admin/return_index/customer_returns.html.erb +64 -0
  75. data/app/views/spree/admin/return_index/return_authorizations.html.erb +76 -0
  76. data/app/views/spree/admin/roles/edit.html.erb +4 -0
  77. data/app/views/spree/admin/roles/new.html.erb +4 -0
  78. data/app/views/spree/admin/shared/_destroy.js.erb +6 -3
  79. data/app/views/spree/admin/shared/_error_messages.html.erb +1 -1
  80. data/app/views/spree/admin/shared/_index_table_options.html.erb +7 -1
  81. data/app/views/spree/admin/shared/_main_menu.html.erb +6 -0
  82. data/app/views/spree/admin/shared/_order_tabs.html.erb +1 -1
  83. data/app/views/spree/admin/shared/named_types/_index.html.erb +2 -1
  84. data/app/views/spree/admin/shared/sub_menu/_configuration.html.erb +1 -0
  85. data/app/views/spree/admin/shared/sub_menu/_returns.html.erb +4 -0
  86. data/app/views/spree/admin/shipping_categories/edit.html.erb +4 -0
  87. data/app/views/spree/admin/shipping_categories/new.html.erb +4 -0
  88. data/app/views/spree/admin/state_changes/index.html.erb +2 -2
  89. data/app/views/spree/admin/states/edit.html.erb +4 -0
  90. data/app/views/spree/admin/states/new.html.erb +4 -0
  91. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  92. data/app/views/spree/admin/stock_movements/_form.html.erb +3 -3
  93. data/app/views/spree/admin/stock_movements/edit.html.erb +2 -1
  94. data/app/views/spree/admin/stock_movements/index.html.erb +2 -2
  95. data/app/views/spree/admin/stock_movements/new.html.erb +4 -4
  96. data/app/views/spree/admin/store_credit_categories/_form.html.erb +8 -0
  97. data/app/views/spree/admin/store_credit_categories/edit.html.erb +10 -0
  98. data/app/views/spree/admin/store_credit_categories/index.html.erb +34 -0
  99. data/app/views/spree/admin/store_credit_categories/new.html.erb +10 -0
  100. data/app/views/spree/admin/store_credits/_form.html.erb +18 -0
  101. data/app/views/spree/admin/store_credits/edit.html.erb +12 -0
  102. data/app/views/spree/admin/store_credits/index.html.erb +46 -0
  103. data/app/views/spree/admin/store_credits/new.html.erb +12 -0
  104. data/app/views/spree/admin/tax_categories/edit.html.erb +1 -1
  105. data/app/views/spree/admin/tax_categories/new.html.erb +1 -1
  106. data/app/views/spree/admin/tax_rates/edit.html.erb +4 -0
  107. data/app/views/spree/admin/tax_rates/index.html.erb +1 -1
  108. data/app/views/spree/admin/tax_rates/new.html.erb +4 -0
  109. data/app/views/spree/admin/taxonomies/edit.erb +5 -1
  110. data/app/views/spree/admin/taxonomies/new.html.erb +4 -0
  111. data/app/views/spree/admin/taxons/_form.html.erb +1 -1
  112. data/app/views/spree/admin/users/_form.html.erb +5 -6
  113. data/app/views/spree/admin/users/_lifetime_stats.html.erb +6 -2
  114. data/app/views/spree/admin/users/_sidebar.html.erb +3 -0
  115. data/app/views/spree/admin/users/_user_page_actions.html.erb +1 -1
  116. data/app/views/spree/admin/users/items.html.erb +1 -1
  117. data/app/views/spree/admin/users/new.html.erb +4 -0
  118. data/app/views/spree/admin/users/orders.html.erb +1 -1
  119. data/app/views/spree/admin/variants/_form.html.erb +8 -1
  120. data/app/views/spree/admin/variants/index.html.erb +4 -2
  121. data/app/views/spree/admin/zones/index.html.erb +1 -1
  122. data/config/routes.rb +19 -9
  123. data/lib/spree/backend/callbacks.rb +4 -8
  124. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +164 -9
  125. data/spec/controllers/spree/admin/orders_controller_spec.rb +16 -9
  126. data/spec/controllers/spree/admin/payments_controller_spec.rb +10 -10
  127. data/spec/controllers/spree/admin/products_controller_spec.rb +61 -12
  128. data/spec/controllers/spree/admin/return_index_controller_spec.rb +37 -0
  129. data/spec/controllers/spree/admin/users_controller_spec.rb +3 -3
  130. data/spec/features/admin/configuration/analytics_tracker_spec.rb +3 -2
  131. data/spec/features/admin/configuration/countries_spec.rb +1 -1
  132. data/spec/features/admin/configuration/general_settings_spec.rb +1 -0
  133. data/spec/features/admin/configuration/payment_methods_spec.rb +4 -4
  134. data/spec/features/admin/configuration/store_credit_categories_spec.rb +50 -0
  135. data/spec/features/admin/homepage_spec.rb +19 -11
  136. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +2 -2
  137. data/spec/features/admin/orders/customer_details_spec.rb +8 -21
  138. data/spec/features/admin/orders/line_items_spec.rb +2 -2
  139. data/spec/features/admin/orders/listing_spec.rb +3 -6
  140. data/spec/features/admin/orders/new_order_spec.rb +13 -14
  141. data/spec/features/admin/orders/payments_spec.rb +1 -1
  142. data/spec/features/admin/products/products_spec.rb +2 -2
  143. data/spec/features/admin/products/stock_management_spec.rb +5 -4
  144. data/spec/features/admin/refund_reasons/refund_reasons_spec.rb +57 -0
  145. data/spec/features/admin/reports_spec.rb +2 -2
  146. data/spec/features/admin/return_authorization_reasons/return_authorization_reasons_spec.rb +63 -0
  147. data/spec/features/admin/returns/customer_returns_spec.rb +80 -0
  148. data/spec/features/admin/returns/return_authorizations_spec.rb +152 -0
  149. data/spec/features/admin/store_credits_spec.rb +93 -0
  150. data/spec/features/admin/users_spec.rb +8 -6
  151. data/spec/helpers/admin/base_helper_spec.rb +6 -0
  152. data/spec/routing/admin_path_spec.rb +22 -0
  153. data/spec/spec_helper.rb +1 -0
  154. data/spree_backend.gemspec +0 -1
  155. metadata +36 -10
  156. data/CHANGELOG.md +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34893ade454f9c8b3c5532fb4c8797ca6764dc4e
4
- data.tar.gz: e5a82d124459cdb245f6be5bde93fbbd70957713
3
+ metadata.gz: 72f29c266e31ffa57b06e31e539805843fd76f6b
4
+ data.tar.gz: 783e730217fa4b781cf3943da4f3e11d4b84dc04
5
5
  SHA512:
6
- metadata.gz: 5b8865a55bd4afcac15e2be3e56c7ad4f38ac9cca73a2fa8103b8eef3e90d176e4846fdb3032381cce6a7c9ea9c2d5dee610dd5cf3ea7bfd29cb6ac1f11e5f37
7
- data.tar.gz: d569d3854e03168b6f68040556be0f7c975ec9e77680c669e06bcb8e837b0283b02a1f529a2e14cce6969808dcd7bd7b4baa13c1d1863105d412d7737444f06c
6
+ metadata.gz: 436b9616f06b71d298ba59c69ed05b2cbdbc2c9b606d58e506dd0a5424c8eb2fea8eebf3d1ab1e2e9981974f20b9892f9d5bb2e010aa39a8cc917c741115f888
7
+ data.tar.gz: 48da0978b94d953e2007c97b090fd05fe8db10fa7d010d5406cb7815cc6119a52e195e827980b62d1f088f14d4f323d201fb72c909e79785a7fe10b14aaf1c81
@@ -1,4 +1,6 @@
1
+ //= require modernizr
1
2
  //= require bootstrap-sprockets
3
+ //= require handlebars
2
4
  //= require jquery
3
5
  //= require jquery.cookie
4
6
  //= require jquery.jstree/jquery.jstree
@@ -6,9 +8,10 @@
6
8
  //= require jquery-ui/datepicker
7
9
  //= require jquery-ui/sortable
8
10
  //= require jquery-ui/autocomplete
9
- //= require modernizr
11
+ //= require select2
10
12
  //= require underscore-min.js
11
13
  //= require velocity
14
+
12
15
  //= require spree
13
16
  //= require spree/backend/spree-select2
14
17
  //= require spree/backend/address_states
@@ -47,30 +50,30 @@
47
50
  //= require spree/backend/variant_management
48
51
  //= require spree/backend/zone
49
52
 
50
- Spree.routes.clear_cache = Spree.pathFor('admin/general_settings/clear_cache')
51
- Spree.routes.checkouts_api = Spree.pathFor('api/checkouts')
52
- Spree.routes.classifications_api = Spree.pathFor('api/classifications')
53
- Spree.routes.option_type_search = Spree.pathFor('api/option_types')
54
- Spree.routes.option_value_search = Spree.pathFor('api/option_values')
55
- Spree.routes.orders_api = Spree.pathFor('api/orders')
56
- Spree.routes.products_api = Spree.pathFor('api/products')
57
- Spree.routes.product_search = Spree.pathFor('admin/search/products')
58
- Spree.routes.shipments_api = Spree.pathFor('api/shipments')
59
- Spree.routes.checkouts_api = Spree.pathFor('api/checkouts')
60
- Spree.routes.stock_locations_api = Spree.pathFor('api/stock_locations')
61
- Spree.routes.taxon_products_api = Spree.pathFor('api/taxons/products')
62
- Spree.routes.taxons_search = Spree.pathFor('api/taxons')
63
- Spree.routes.user_search = Spree.pathFor('admin/search/users')
64
- Spree.routes.variants_api = Spree.pathFor('api/variants')
53
+ Spree.routes.clear_cache = Spree.adminPathFor('general_settings/clear_cache')
54
+ Spree.routes.checkouts_api = Spree.pathFor('api/v1/checkouts')
55
+ Spree.routes.classifications_api = Spree.pathFor('api/v1/classifications')
56
+ Spree.routes.option_type_search = Spree.pathFor('api/v1/option_types')
57
+ Spree.routes.option_value_search = Spree.pathFor('api/v1/option_values')
58
+ Spree.routes.orders_api = Spree.pathFor('api/v1/orders')
59
+ Spree.routes.products_api = Spree.pathFor('api/v1/products')
60
+ Spree.routes.product_search = Spree.adminPathFor('search/products')
61
+ Spree.routes.shipments_api = Spree.pathFor('api/v1/shipments')
62
+ Spree.routes.checkouts_api = Spree.pathFor('api/v1/checkouts')
63
+ Spree.routes.stock_locations_api = Spree.pathFor('api/v1/stock_locations')
64
+ Spree.routes.taxon_products_api = Spree.pathFor('api/v1/taxons/products')
65
+ Spree.routes.taxons_search = Spree.pathFor('api/v1/taxons')
66
+ Spree.routes.user_search = Spree.adminPathFor('search/users')
67
+ Spree.routes.variants_api = Spree.pathFor('api/v1/variants')
65
68
 
66
69
  Spree.routes.edit_product = function(product_id) {
67
- return Spree.pathFor('admin/products/' + product_id + '/edit')
70
+ return Spree.adminPathFor('products/' + product_id + '/edit')
68
71
  }
69
72
 
70
73
  Spree.routes.payments_api = function(order_id) {
71
- return Spree.pathFor('api/orders/' + order_id + '/payments')
74
+ return Spree.pathFor('api/v1/orders/' + order_id + '/payments')
72
75
  }
73
76
 
74
77
  Spree.routes.stock_items_api = function(stock_location_id) {
75
- return Spree.pathFor('api/stock_locations/' + stock_location_id + '/stock_items')
78
+ return Spree.pathFor('api/v1/stock_locations/' + stock_location_id + '/stock_items')
76
79
  }
@@ -1,13 +1,3 @@
1
- //= require_self
2
- //= require spree/backend/handlebar_extensions
3
- //= require spree/backend/variant_autocomplete
4
- //= require spree/backend/taxon_autocomplete
5
- //= require spree/backend/option_type_autocomplete
6
- //= require spree/backend/user_picker
7
- //= require spree/backend/product_picker
8
- //= require spree/backend/option_value_picker
9
- //= require spree/backend/taxons
10
-
11
1
  /**
12
2
  This is a collection of javascript functions and whatnot
13
3
  under the spree namespace that do stuff we find helpful.
@@ -192,8 +182,8 @@ jQuery(function($) {
192
182
  }
193
183
  });
194
184
 
195
- // Make flash messages dissapear
196
- setTimeout('$(".alert-auto-dissapear").slideUp()', 5000);
185
+ // Make flash messages disappear
186
+ setTimeout('$(".alert-auto-disappear").slideUp()', 5000);
197
187
 
198
188
  });
199
189
 
@@ -201,12 +191,12 @@ jQuery(function($) {
201
191
  $.fn.visible = function(cond) { this[cond ? 'show' : 'hide' ]() };
202
192
 
203
193
  show_flash = function(type, message) {
204
- var flash_div = $('.flash.' + type);
194
+ var flash_div = $('.alert-' + type);
205
195
  if (flash_div.length == 0) {
206
196
  flash_div = $('<div class="alert alert-' + type + '" />');
207
197
  $('#content').prepend(flash_div);
208
198
  }
209
- flash_div.html(message).show().delay(5000).slideUp();
199
+ flash_div.html(message).show().delay(10000).slideUp();
210
200
  }
211
201
 
212
202
 
@@ -292,9 +282,12 @@ $(document).ready(function(){
292
282
  },
293
283
  dataType: 'script',
294
284
  success: function(response) {
295
- el.parents("tr").fadeOut('hide', function() {
296
- $(this).remove();
297
- });
285
+ var $flash_element = $('.alert-success');
286
+ if ($flash_element.length) {
287
+ el.parents("tr").fadeOut('hide', function() {
288
+ $(this).remove();
289
+ });
290
+ }
298
291
  },
299
292
  error: function(response, textStatus, errorThrown) {
300
293
  show_flash('error', response.responseText);
@@ -1,4 +1,3 @@
1
- //= require handlebars
2
1
  Handlebars.registerHelper("t", function(key) {
3
2
  if (Spree.translations[key]) {
4
3
  return Spree.translations[key]
@@ -6,4 +5,3 @@ Handlebars.registerHelper("t", function(key) {
6
5
  console.error("No translation found for " + key + ". Does it exist within spree/admin/shared/_translations.html.erb?")
7
6
  }
8
7
  });
9
-
@@ -26,8 +26,7 @@ $.fn.productAutocomplete = function (options) {
26
26
  data: function (term, page) {
27
27
  return {
28
28
  q: {
29
- name_cont: term,
30
- sku_cont: term
29
+ name_or_master_sku_cont: term,
31
30
  },
32
31
  m: 'OR',
33
32
  token: Spree.api_key
@@ -1,4 +1,3 @@
1
- //= require select2
2
1
  jQuery(function($) {
3
2
  // Make select beautiful
4
3
  $('select.select2').select2({
@@ -12,6 +12,7 @@ var set_taxon_select = function(selector){
12
12
  initSelection: function (element, callback) {
13
13
  var url = Spree.url(Spree.routes.taxons_search, {
14
14
  ids: element.val(),
15
+ without_children: true,
15
16
  token: Spree.api_key
16
17
  });
17
18
  return $.getJSON(url, null, function (data) {
@@ -45,13 +45,18 @@ $(document).ready ->
45
45
  id: e.val,
46
46
  token: Spree.api_key
47
47
  success: (data) ->
48
- el.empty();
48
+ el.empty()
49
49
  if data.products.length == 0
50
50
  $('#taxon_products').html("<div class='alert alert-info'>" + Spree.translations.no_results + "</div>")
51
51
  else
52
52
  for product in data.products
53
53
  if product.master.images[0] != undefined && product.master.images[0].small_url != undefined
54
54
  product.image = product.master.images[0].small_url
55
+ else
56
+ for variant in product.variants
57
+ if variant.images[0] != undefined && variant.images[0].small_url != undefined
58
+ product.image = variant.images[0].small_url
59
+ break
55
60
  el.append(productTemplate({ product: product }))
56
61
 
57
62
  $('#taxon_products').on "click", ".js-delete-product", (e) ->
@@ -9,6 +9,7 @@
9
9
  .label-success,
10
10
  .label-sold,
11
11
  .label-open
12
+ .label-authorized
12
13
  {
13
14
  background-color: $brand-success;
14
15
 
@@ -7,6 +7,21 @@
7
7
  line-height: 38px;
8
8
  }
9
9
 
10
+ &.with-page-tabs {
11
+ border-bottom: 0;
12
+ margin-bottom: 6px;
13
+ padding-bottom: 0;
14
+
15
+ h1 {
16
+ margin-bottom: 8px;
17
+ }
18
+
19
+ .nav-tabs {
20
+ padding-left: 15px;
21
+ padding-top: 15px;
22
+ }
23
+ }
24
+
10
25
  .page-actions {
11
26
  text-align: right;
12
27
 
@@ -2,6 +2,10 @@ body {
2
2
  padding-top: $navbar-height + 2px;
3
3
  }
4
4
 
5
+ .table-wrapper {
6
+ overflow: auto;
7
+ }
8
+
5
9
  .row {
6
10
  padding: 0 0 15px 0;
7
11
  }
@@ -14,4 +18,8 @@ body {
14
18
  @each $side in top bottom left right {
15
19
  .no-margin-#{$side} { margin-#{side}: 0; }
16
20
  .no-padding-#{$side} { padding-#{side}: 0; }
17
- }
21
+ }
22
+
23
+ .alert-error {
24
+ @extend .alert-danger;
25
+ }
@@ -51,4 +51,8 @@ input.form-control {
51
51
 
52
52
  .checkbox > .help-block {
53
53
  margin-top: 0;
54
- }
54
+ }
55
+
56
+ .display-inline {
57
+ display: inline;
58
+ }
@@ -13,7 +13,7 @@ module Spree
13
13
  before_action :find_adjustment, only: [:destroy, :edit, :update]
14
14
 
15
15
  def index
16
- @adjustments = @order.all_adjustments.order("created_at ASC")
16
+ @adjustments = @order.all_adjustments.order(created_at: :asc)
17
17
  end
18
18
 
19
19
  private
@@ -24,7 +24,7 @@ module Spree
24
24
  end
25
25
 
26
26
  def update_totals
27
- @order.reload.update!
27
+ @order.reload.update_with_updater!
28
28
  end
29
29
 
30
30
  # Override method used to create a new instance to correctly
@@ -10,10 +10,11 @@ module Spree
10
10
  create.fails :load_form_data
11
11
 
12
12
  def edit
13
- @pending_return_items = @customer_return.return_items.select(&:pending?)
14
- @accepted_return_items = @customer_return.return_items.select(&:accepted?)
15
- @rejected_return_items = @customer_return.return_items.select(&:rejected?)
16
- @manual_intervention_return_items = @customer_return.return_items.select(&:manual_intervention_required?)
13
+ returned_items = @customer_return.return_items
14
+ @pending_return_items = returned_items.select(&:pending?)
15
+ @accepted_return_items = returned_items.select(&:accepted?)
16
+ @rejected_return_items = returned_items.select(&:rejected?)
17
+ @manual_intervention_return_items = returned_items.select(&:manual_intervention_required?)
17
18
  @pending_reimbursements = @customer_return.reimbursements.select(&:pending?)
18
19
 
19
20
  super
@@ -38,7 +38,7 @@ module Spree
38
38
 
39
39
  def set_available_option_types
40
40
  @available_option_types = if @product.option_type_ids.any?
41
- OptionType.where('id NOT IN (?)', @product.option_type_ids)
41
+ OptionType.where.not(id: @product.option_type_ids)
42
42
  else
43
43
  OptionType.all
44
44
  end
@@ -4,7 +4,7 @@ module Spree
4
4
  def destroy
5
5
  option_value = Spree::OptionValue.find(params[:id])
6
6
  option_value.destroy
7
- render :text => nil
7
+ render text: nil
8
8
  end
9
9
  end
10
10
  end
@@ -3,6 +3,7 @@ module Spree
3
3
  module Orders
4
4
  class CustomerDetailsController < Spree::Admin::BaseController
5
5
  before_action :load_order
6
+ before_action :load_user, only: :update, unless: :guest_checkout?
6
7
 
7
8
  def show
8
9
  edit
@@ -20,37 +21,53 @@ module Spree
20
21
 
21
22
  def update
22
23
  if @order.update_attributes(order_params)
23
- if params[:guest_checkout] == "false"
24
- @order.associate_user!(Spree.user_class.find(params[:user_id]), @order.email.blank?)
24
+ @order.associate_user!(@user, @order.email.blank?) unless guest_checkout?
25
+ @order.next unless @order.complete?
26
+ @order.refresh_shipment_rates(Spree::ShippingMethod::DISPLAY_ON_FRONT_AND_BACK_END)
27
+
28
+ if @order.errors.empty?
29
+ flash[:success] = Spree.t('customer_details_updated')
30
+ redirect_to edit_admin_order_url(@order)
31
+ else
32
+ render action: :edit
25
33
  end
26
- @order.next
27
- @order.refresh_shipment_rates(ShippingMethod::DISPLAY_ON_FRONT_AND_BACK_END)
28
- flash[:success] = Spree.t('customer_details_updated')
29
- redirect_to edit_admin_order_url(@order)
30
34
  else
31
35
  render action: :edit
32
36
  end
33
-
34
37
  end
35
38
 
36
39
  private
37
- def order_params
38
- params.require(:order).permit(
39
- :email,
40
- :use_billing,
41
- bill_address_attributes: permitted_address_attributes,
42
- ship_address_attributes: permitted_address_attributes
43
- )
44
- end
45
40
 
46
- def load_order
47
- @order = Order.includes(:adjustments).friendly.find(params[:order_id])
48
- end
41
+ def order_params
42
+ params.require(:order).permit(
43
+ :email,
44
+ :use_billing,
45
+ bill_address_attributes: permitted_address_attributes,
46
+ ship_address_attributes: permitted_address_attributes
47
+ )
48
+ end
49
+
50
+ def load_order
51
+ @order = Order.includes(:adjustments).friendly.find(params[:order_id])
52
+ end
53
+
54
+ def model_class
55
+ Spree::Order
56
+ end
49
57
 
50
- def model_class
51
- Spree::Order
58
+ def load_user
59
+ @user = (Spree.user_class.find_by(id: params[:user_id]) ||
60
+ Spree.user_class.find_by(email: order_params[:email]))
61
+
62
+ unless @user
63
+ flash.now[:error] = Spree.t(:user_not_found)
64
+ render :edit
52
65
  end
66
+ end
53
67
 
68
+ def guest_checkout?
69
+ params[:guest_checkout] == 'true'
70
+ end
54
71
  end
55
72
  end
56
73
  end
@@ -34,9 +34,9 @@ module Spree
34
34
  params[:q][:completed_at_lt] = params[:q].delete(:created_at_lt)
35
35
  end
36
36
 
37
- @search = Order.accessible_by(current_ability, :index).ransack(params[:q])
37
+ @search = Order.preload(:user).accessible_by(current_ability, :index).ransack(params[:q])
38
38
 
39
- # lazyoading other models here (via includes) may result in an invalid query
39
+ # lazy loading other models here (via includes) may result in an invalid query
40
40
  # e.g. SELECT DISTINCT DISTINCT "spree_orders".id, "spree_orders"."created_at" AS alias_0 FROM "spree_orders"
41
41
  # see https://github.com/spree/spree/pull/3919
42
42
  @orders = @search.result(distinct: true).
@@ -72,7 +72,7 @@ module Spree
72
72
 
73
73
  def update
74
74
  if @order.update_attributes(params[:order]) && @order.line_items.present?
75
- @order.update!
75
+ @order.update_with_updater!
76
76
  unless @order.completed?
77
77
  # Jump to next step if order is not completed.
78
78
  redirect_to admin_order_customer_path(@order) and return
@@ -81,7 +81,7 @@ module Spree
81
81
  @order.errors.add(:line_items, Spree.t('errors.messages.blank')) if @order.line_items.empty?
82
82
  end
83
83
 
84
- render :action => :edit
84
+ render action: :edit
85
85
  end
86
86
 
87
87
  def cancel
@@ -110,7 +110,7 @@ module Spree
110
110
  end
111
111
 
112
112
  def open_adjustments
113
- adjustments = @order.all_adjustments.where(state: 'closed')
113
+ adjustments = @order.all_adjustments.closed
114
114
  adjustments.update_all(state: 'open')
115
115
  flash[:success] = Spree.t(:all_adjustments_opened)
116
116
 
@@ -118,7 +118,7 @@ module Spree
118
118
  end
119
119
 
120
120
  def close_adjustments
121
- adjustments = @order.all_adjustments.where(state: 'open')
121
+ adjustments = @order.all_adjustments.open
122
122
  adjustments.update_all(state: 'closed')
123
123
  flash[:success] = Spree.t(:all_adjustments_closed)
124
124
 
@@ -13,7 +13,7 @@ module Spree
13
13
  invoke_callbacks(:create, :before)
14
14
  if @payment_method.save
15
15
  invoke_callbacks(:create, :after)
16
- flash[:success] = Spree.t(:successfully_created, :resource => Spree.t(:payment_method))
16
+ flash[:success] = Spree.t(:successfully_created, resource: Spree.t(:payment_method))
17
17
  redirect_to edit_admin_payment_method_path(@payment_method)
18
18
  else
19
19
  invoke_callbacks(:create, :fails)
@@ -27,7 +27,7 @@ module Spree
27
27
  if @payment_method['type'].to_s != payment_method_type
28
28
  @payment_method.update_columns(
29
29
  type: payment_method_type,
30
- updated_at: Time.now,
30
+ updated_at: Time.current,
31
31
  )
32
32
  @payment_method = PaymentMethod.find(params[:id])
33
33
  end
@@ -42,7 +42,7 @@ module Spree
42
42
 
43
43
  if @payment_method.update_attributes(attributes)
44
44
  invoke_callbacks(:update, :after)
45
- flash[:success] = Spree.t(:successfully_updated, :resource => Spree.t(:payment_method))
45
+ flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:payment_method))
46
46
  redirect_to edit_admin_payment_method_path(@payment_method)
47
47
  else
48
48
  invoke_callbacks(:update, :fails)