spree_backend 3.0.10 → 3.1.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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)