solidus_backend 2.9.6 → 2.11.0

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 (270) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend.js +5 -1
  3. data/app/assets/javascripts/spree/backend/adjustments.js +1 -1
  4. data/app/assets/javascripts/spree/backend/admin.js +18 -29
  5. data/app/assets/javascripts/spree/backend/collections/states.js +1 -1
  6. data/app/assets/javascripts/spree/backend/components/admin_nav.js +24 -0
  7. data/app/assets/javascripts/spree/backend/components/selectable_table.js +5 -0
  8. data/app/assets/javascripts/spree/backend/components/selectable_table/return_items.js +5 -0
  9. data/app/assets/javascripts/spree/backend/components/selectable_table/summary.js +7 -0
  10. data/app/assets/javascripts/spree/backend/components/sortable_table.js +31 -25
  11. data/app/assets/javascripts/spree/backend/components/tabs.js +1 -1
  12. data/app/assets/javascripts/spree/backend/models/order.js +11 -2
  13. data/app/assets/javascripts/spree/backend/models/payment.js +1 -1
  14. data/app/assets/javascripts/spree/backend/models/shipment.js +1 -1
  15. data/app/assets/javascripts/spree/backend/models/stock_item.js +1 -1
  16. data/app/assets/javascripts/spree/backend/option_type_autocomplete.js +2 -2
  17. data/app/assets/javascripts/spree/backend/option_value_picker.js +2 -2
  18. data/app/assets/javascripts/spree/backend/orders/cart.js +6 -0
  19. data/app/assets/javascripts/spree/backend/product_picker.js +2 -2
  20. data/app/assets/javascripts/spree/backend/routes.js +40 -21
  21. data/app/assets/javascripts/spree/backend/shipments.js +5 -67
  22. data/app/assets/javascripts/spree/backend/shipping_methods/stock_locations_picker.js +18 -0
  23. data/app/assets/javascripts/spree/backend/stock_management.js +4 -2
  24. data/app/assets/javascripts/spree/backend/taxon_autocomplete.js +2 -2
  25. data/app/assets/javascripts/spree/backend/taxons.js +3 -3
  26. data/app/assets/javascripts/spree/backend/templates/index.js +2 -1
  27. data/app/assets/javascripts/spree/backend/templates/orders/customer_details/autocomplete.hbs +2 -2
  28. data/app/assets/javascripts/spree/backend/templates/stock_items/stock_location_stock_item.hbs +5 -1
  29. data/app/assets/javascripts/spree/backend/templates/tables/return_item_sum_amount.hbs +7 -0
  30. data/app/assets/javascripts/spree/backend/templates/tables/selectable_label.hbs +6 -0
  31. data/app/assets/javascripts/spree/backend/user_picker.js +3 -4
  32. data/app/assets/javascripts/spree/backend/variant_autocomplete.js +2 -2
  33. data/app/assets/javascripts/spree/backend/views/cart/empty_cart_button.js +29 -0
  34. data/app/assets/javascripts/spree/backend/views/cart/line_item_table.js +5 -0
  35. data/app/assets/javascripts/spree/backend/views/index.js +5 -0
  36. data/app/assets/javascripts/spree/backend/views/order/address.js +8 -6
  37. data/app/assets/javascripts/spree/backend/views/order/customer_select.js +2 -3
  38. data/app/assets/javascripts/spree/backend/views/order/details_adjustments.js +4 -1
  39. data/app/assets/javascripts/spree/backend/views/stock/edit_stock_item_row.js +4 -0
  40. data/app/assets/javascripts/spree/backend/views/tables/return_items.js +9 -0
  41. data/app/assets/javascripts/spree/backend/views/tables/selectable_table.js +70 -0
  42. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/sum_return_item_amount.js +32 -0
  43. data/app/assets/javascripts/spree/backend/views/tables/selectable_table/summary.js +45 -0
  44. data/app/assets/stylesheets/spree/backend/_bootstrap_custom.scss +2 -0
  45. data/app/assets/stylesheets/spree/backend/components/_breadcrumb.scss +3 -3
  46. data/app/assets/stylesheets/spree/backend/components/_messages.scss +4 -0
  47. data/app/assets/stylesheets/spree/backend/components/_navigation.scss +181 -49
  48. data/app/assets/stylesheets/spree/backend/globals/{_mixins.css → _mixins.scss} +0 -0
  49. data/app/assets/stylesheets/spree/backend/globals/_variables.scss +2 -0
  50. data/app/assets/stylesheets/spree/backend/sections/_orders.scss +5 -1
  51. data/app/assets/stylesheets/spree/backend/sections/_style_guide.scss +4 -0
  52. data/app/assets/stylesheets/spree/backend/shared/_forms.scss +1 -0
  53. data/app/assets/stylesheets/spree/backend/shared/_header.scss +5 -1
  54. data/app/assets/stylesheets/spree/backend/shared/_layout.scss +0 -9
  55. data/app/controllers/spree/admin/adjustments_controller.rb +1 -1
  56. data/app/controllers/spree/admin/base_controller.rb +7 -1
  57. data/app/controllers/spree/admin/cancellations_controller.rb +2 -0
  58. data/app/controllers/spree/admin/customer_returns_controller.rb +4 -4
  59. data/app/controllers/spree/admin/images_controller.rb +2 -1
  60. data/app/controllers/spree/admin/orders/customer_details_controller.rb +2 -0
  61. data/app/controllers/spree/admin/orders_controller.rb +9 -4
  62. data/app/controllers/spree/admin/payment_methods_controller.rb +4 -4
  63. data/app/controllers/spree/admin/payments_controller.rb +5 -3
  64. data/app/controllers/spree/admin/product_properties_controller.rb +2 -2
  65. data/app/controllers/spree/admin/products_controller.rb +19 -25
  66. data/app/controllers/spree/admin/promotion_codes_controller.rb +9 -4
  67. data/app/controllers/spree/admin/refunds_controller.rb +19 -0
  68. data/app/controllers/spree/admin/resource_controller.rb +39 -10
  69. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  70. data/app/controllers/spree/admin/root_controller.rb +1 -1
  71. data/app/controllers/spree/admin/search_controller.rb +1 -2
  72. data/app/controllers/spree/admin/stock_items_controller.rb +6 -5
  73. data/app/controllers/spree/admin/stock_locations_controller.rb +4 -0
  74. data/app/controllers/spree/admin/stock_movements_controller.rb +7 -0
  75. data/app/controllers/spree/admin/style_guide_controller.rb +1 -1
  76. data/app/controllers/spree/admin/taxons/attachment_controller.rb +20 -0
  77. data/app/controllers/spree/admin/taxons_controller.rb +12 -1
  78. data/app/controllers/spree/admin/users/api_key_controller.rb +29 -0
  79. data/app/controllers/spree/admin/users_controller.rb +43 -22
  80. data/app/controllers/spree/admin/variants_controller.rb +4 -2
  81. data/app/controllers/spree/admin/zones_controller.rb +1 -1
  82. data/app/helpers/spree/admin/base_helper.rb +4 -0
  83. data/app/helpers/spree/admin/customer_returns_helper.rb +1 -1
  84. data/app/helpers/spree/admin/navigation_helper.rb +4 -3
  85. data/app/helpers/spree/admin/orders_helper.rb +8 -4
  86. data/app/helpers/spree/admin/stock_movements_helper.rb +8 -4
  87. data/app/helpers/spree/promotion_rules_helper.rb +1 -1
  88. data/app/views/spree/admin/customer_returns/_return_item_selection.html.erb +2 -3
  89. data/app/views/spree/admin/customer_returns/new.html.erb +1 -1
  90. data/app/views/spree/admin/images/index.html.erb +25 -21
  91. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +8 -1
  92. data/app/views/spree/admin/option_types/edit.html.erb +4 -2
  93. data/app/views/spree/admin/orders/_line_items_edit_form.html.erb +1 -0
  94. data/app/views/spree/admin/orders/customer_details/_form.html.erb +13 -13
  95. data/app/views/spree/admin/orders/edit.html.erb +3 -4
  96. data/app/views/spree/admin/orders/index.html.erb +23 -13
  97. data/app/views/spree/admin/payment_methods/_form.html.erb +7 -2
  98. data/app/views/spree/admin/payment_methods/new.html.erb +1 -1
  99. data/app/views/spree/admin/payments/index.html.erb +3 -1
  100. data/app/views/spree/admin/prices/_master_variant_table.html.erb +41 -41
  101. data/app/views/spree/admin/prices/_table.html.erb +3 -3
  102. data/app/views/spree/admin/product_properties/_product_property_fields.html.erb +7 -2
  103. data/app/views/spree/admin/product_properties/index.html.erb +14 -2
  104. data/app/views/spree/admin/products/_form.html.erb +13 -2
  105. data/app/views/spree/admin/products/index.html.erb +1 -1
  106. data/app/views/spree/admin/promotion_code_batches/new.html.erb +1 -1
  107. data/app/views/spree/admin/promotion_codes/index.html.erb +1 -1
  108. data/app/views/spree/admin/promotion_codes/new.html.erb +1 -1
  109. data/app/views/spree/admin/promotions/_actions.html.erb +2 -1
  110. data/app/views/spree/admin/promotions/_activations_new.html.erb +1 -1
  111. data/app/views/spree/admin/promotions/_rules.html.erb +1 -1
  112. data/app/views/spree/admin/promotions/edit.html.erb +2 -2
  113. data/app/views/spree/admin/promotions/index.html.erb +13 -6
  114. data/app/views/spree/admin/return_authorizations/_form.html.erb +3 -10
  115. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  116. data/app/views/spree/admin/return_authorizations/new.html.erb +1 -1
  117. data/app/views/spree/admin/search/users.json.jbuilder +15 -1
  118. data/app/views/spree/admin/shared/_address.html.erb +6 -6
  119. data/app/views/spree/admin/shared/_address_form.html.erb +15 -8
  120. data/app/views/spree/admin/shared/_calculator_fields.html.erb +5 -0
  121. data/app/views/spree/admin/shared/_navigation.html.erb +3 -0
  122. data/app/views/spree/admin/shared/_new_resource_links.html.erb +1 -1
  123. data/app/views/spree/admin/shared/_order_submenu.html.erb +6 -6
  124. data/app/views/spree/admin/shared/_payments_tabs.html.erb +1 -1
  125. data/app/views/spree/admin/shared/_settings_checkout_tabs.html.erb +5 -5
  126. data/app/views/spree/admin/shared/_settings_sub_menu.html.erb +7 -7
  127. data/app/views/spree/admin/shared/_shipping_tabs.html.erb +3 -3
  128. data/app/views/spree/admin/shared/_taxes_tabs.html.erb +2 -2
  129. data/app/views/spree/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
  130. data/app/views/spree/admin/shipping_methods/_form.html.erb +19 -1
  131. data/app/views/spree/admin/stock_items/_stock_management.html.erb +1 -1
  132. data/app/views/spree/admin/stock_locations/edit.html.erb +1 -1
  133. data/app/views/spree/admin/stock_locations/index.html.erb +4 -2
  134. data/app/views/spree/admin/stock_movements/index.html.erb +30 -1
  135. data/app/views/spree/admin/store_credit_reasons/index.html.erb +1 -1
  136. data/app/views/spree/admin/store_credits/index.html.erb +1 -1
  137. data/app/views/spree/admin/stores/_form.html.erb +6 -0
  138. data/app/views/spree/admin/style_guide/topics/tables/_building_tables.html.erb +27 -3
  139. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -0
  140. data/app/views/spree/admin/tax_rates/_form.html.erb +1 -1
  141. data/app/views/spree/admin/taxonomies/new.html.erb +1 -1
  142. data/app/views/spree/admin/taxons/_form.html.erb +1 -5
  143. data/app/views/spree/admin/taxons/attachment_forms/_paperclip.html.erb +16 -0
  144. data/app/views/spree/admin/users/_form.html.erb +14 -12
  145. data/app/views/spree/admin/users/_tabs.html.erb +1 -1
  146. data/app/views/spree/admin/users/edit.html.erb +5 -6
  147. data/app/views/spree/admin/users/items.html.erb +5 -3
  148. data/app/views/spree/admin/users/orders.html.erb +5 -3
  149. data/app/views/spree/admin/variants/_table_filter.html.erb +1 -1
  150. data/app/views/spree/admin/variants/index.html.erb +2 -2
  151. data/app/views/spree/layouts/admin.html.erb +1 -2
  152. data/config/initializers/form_builder.rb +2 -2
  153. data/config/routes.rb +4 -6
  154. data/lib/spree/backend.rb +1 -0
  155. data/lib/spree/backend/config.rb +9 -0
  156. data/lib/spree/backend/engine.rb +5 -5
  157. data/{app/models → lib}/spree/backend_configuration.rb +19 -3
  158. data/solidus_backend.gemspec +5 -4
  159. data/vendor/assets/stylesheets/solidus_admin/bootstrap/_variables.scss +1 -1
  160. metadata +44 -124
  161. data/app/assets/javascripts/spree/backend/returns/return_item_selection.js +0 -35
  162. data/app/assets/javascripts/spree/backend/templates/variants/autocomplete_stock.hbs +0 -56
  163. data/app/views/spree/admin/orders/_add_product.html.erb +0 -12
  164. data/script/rails +0 -10
  165. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -26
  166. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +0 -83
  167. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -235
  168. data/spec/controllers/spree/admin/locale_controller_spec.rb +0 -45
  169. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  170. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -128
  171. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -408
  172. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -95
  173. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -194
  174. data/spec/controllers/spree/admin/prices_controller_spec.rb +0 -45
  175. data/spec/controllers/spree/admin/product_properties_controller_spec.rb +0 -71
  176. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -270
  177. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -23
  178. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +0 -32
  179. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -36
  180. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -122
  181. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -35
  182. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -137
  183. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -190
  184. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -291
  185. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -29
  186. data/spec/controllers/spree/admin/root_controller_spec.rb +0 -43
  187. data/spec/controllers/spree/admin/search_controller_spec.rb +0 -106
  188. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -16
  189. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -52
  190. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -44
  191. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +0 -311
  192. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -264
  193. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -71
  194. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -167
  195. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -114
  196. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -54
  197. data/spec/features/admin/configuration/store_spec.rb +0 -62
  198. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -58
  199. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -31
  200. data/spec/features/admin/configuration/taxonomies_spec.rb +0 -54
  201. data/spec/features/admin/configuration/zones_spec.rb +0 -41
  202. data/spec/features/admin/homepage_spec.rb +0 -86
  203. data/spec/features/admin/javascript_format_money_spec.rb +0 -22
  204. data/spec/features/admin/locale_spec.rb +0 -34
  205. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -55
  206. data/spec/features/admin/orders/adjustments_spec.rb +0 -130
  207. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -45
  208. data/spec/features/admin/orders/cancelling_inventory_spec.rb +0 -50
  209. data/spec/features/admin/orders/customer_details_spec.rb +0 -204
  210. data/spec/features/admin/orders/customer_returns_spec.rb +0 -28
  211. data/spec/features/admin/orders/line_items_spec.rb +0 -52
  212. data/spec/features/admin/orders/listing_spec.rb +0 -186
  213. data/spec/features/admin/orders/log_entries_spec.rb +0 -56
  214. data/spec/features/admin/orders/new_order_spec.rb +0 -331
  215. data/spec/features/admin/orders/new_refund_spec.rb +0 -35
  216. data/spec/features/admin/orders/order_details_spec.rb +0 -581
  217. data/spec/features/admin/orders/payments_spec.rb +0 -330
  218. data/spec/features/admin/orders/return_authorizations_spec.rb +0 -27
  219. data/spec/features/admin/orders/return_payment_state_spec.rb +0 -65
  220. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -49
  221. data/spec/features/admin/orders/shipments_spec.rb +0 -145
  222. data/spec/features/admin/payments/store_credits_spec.rb +0 -23
  223. data/spec/features/admin/products/edit/images_spec.rb +0 -76
  224. data/spec/features/admin/products/edit/products_spec.rb +0 -92
  225. data/spec/features/admin/products/edit/taxons_spec.rb +0 -51
  226. data/spec/features/admin/products/edit/variants_spec.rb +0 -63
  227. data/spec/features/admin/products/option_types_spec.rb +0 -116
  228. data/spec/features/admin/products/pricing_spec.rb +0 -127
  229. data/spec/features/admin/products/products_spec.rb +0 -336
  230. data/spec/features/admin/products/properties_spec.rb +0 -141
  231. data/spec/features/admin/products/stock_management_spec.rb +0 -101
  232. data/spec/features/admin/products/variant_spec.rb +0 -89
  233. data/spec/features/admin/promotion_adjustments_spec.rb +0 -277
  234. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -90
  235. data/spec/features/admin/promotions/product_rule_spec.rb +0 -35
  236. data/spec/features/admin/promotions/promotion_categories_spec.rb +0 -83
  237. data/spec/features/admin/promotions/promotion_spec.rb +0 -52
  238. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -76
  239. data/spec/features/admin/promotions/user_rule_spec.rb +0 -42
  240. data/spec/features/admin/reimbursements_spec.rb +0 -18
  241. data/spec/features/admin/store_credits_spec.rb +0 -132
  242. data/spec/features/admin/stores_spec.rb +0 -37
  243. data/spec/features/admin/style_guide_spec.rb +0 -14
  244. data/spec/features/admin/taxons_spec.rb +0 -78
  245. data/spec/features/admin/users_spec.rb +0 -402
  246. data/spec/helpers/admin/base_helper_spec.rb +0 -49
  247. data/spec/helpers/admin/navigation_helper_spec.rb +0 -139
  248. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -29
  249. data/spec/helpers/admin/store_credit_events_helper_spec.rb +0 -97
  250. data/spec/helpers/promotion_rules_helper_spec.rb +0 -14
  251. data/spec/javascripts/fixtures/_boot.html.erb +0 -8
  252. data/spec/javascripts/fixtures/number_with_currency/with_currency_select.html.erb +0 -3
  253. data/spec/javascripts/fixtures/number_with_currency/without_select.html.erb +0 -3
  254. data/spec/javascripts/format_money_spec.js +0 -48
  255. data/spec/javascripts/spec_helper.js +0 -13
  256. data/spec/javascripts/support/show_errors.js +0 -8
  257. data/spec/javascripts/support/with_translations.js +0 -11
  258. data/spec/javascripts/translation_spec.js +0 -58
  259. data/spec/javascripts/views/number_with_currency_spec.js +0 -72
  260. data/spec/models/spree/backend_configuration/menu_item_spec.rb +0 -17
  261. data/spec/models/spree/backend_configuration_spec.rb +0 -22
  262. data/spec/spec_helper.rb +0 -122
  263. data/spec/support/appear_before_matcher.rb +0 -10
  264. data/spec/support/feature/base_feature_helper.rb +0 -12
  265. data/spec/support/feature/order_feature_helper.rb +0 -27
  266. data/spec/support/ror_ringer.jpeg +0 -0
  267. data/spec/teaspoon_env.rb +0 -51
  268. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  269. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
  270. data/spec/views/spree/admin/shared/navigation_footer_spec.rb +0 -67
@@ -1,35 +0,0 @@
1
- Spree.ready(function() {
2
- function checkAddItemBox() {
3
- $(this).closest('tr').find('input.add-item').attr('checked', 'checked');
4
- updateSuggestedAmount();
5
- }
6
-
7
- function updateSuggestedAmount() {
8
- var totalPretaxRefund = 0;
9
- var checkedItems = formFields.find('input.add-item:checked');
10
- $.each(checkedItems, function(i, checkbox) {
11
- totalPretaxRefund += parseFloat($(checkbox).parents('tr').find('.refund-amount-input').val());
12
- });
13
-
14
- var displayTotal = isNaN(totalPretaxRefund) ? '' : totalPretaxRefund.toFixed(2);
15
- formFields.find('span#total_pre_tax_refund').html(displayTotal);
16
- }
17
-
18
- var formFields = $("[data-hook='admin_customer_return_form_fields'], \
19
- [data-hook='admin_return_authorization_form_fields']");
20
-
21
- if(formFields.length > 0) {
22
- updateSuggestedAmount();
23
-
24
- formFields.find('input#select-all').on('change', function(ev) {
25
- var checkBoxes = $(ev.currentTarget).parents('table:first').find('input.add-item');
26
- checkBoxes.prop('checked', this.checked);
27
- updateSuggestedAmount();
28
- });
29
-
30
- formFields.find('input.add-item').on('change', updateSuggestedAmount);
31
- formFields.find('.refund-amount-input').on('keyup', updateSuggestedAmount);
32
-
33
- formFields.find('input, select').not('.add-item').on('change', checkAddItemBox);
34
- }
35
- });
@@ -1,56 +0,0 @@
1
- <fieldset class="no-border-bottom">
2
- <legend align="center">{{ t "select_stock" }}</legend>
3
- <table class="stock-levels" data-hook="stock-levels">
4
- <colgroup>
5
- <col style="width: 30%;" />
6
- <col style="width: 40%;" />
7
- <col style="width: 20%;" />
8
- <col style="width: 10%;" />
9
- </colgroup>
10
- <thead>
11
- <th>{{ t "location" }}</th>
12
- <th>{{ t "count_on_hand" }}</th>
13
- <th>{{ t "quantity" }}</th>
14
- <th class="actions"></th>
15
- </thead>
16
- <tbody>
17
- {{#each variant.stock_items}}
18
- <tr class="vertical-middle">
19
- <td>{{this.stock_location_name}}</td>
20
- {{#unless ../variant.track_inventory}}
21
- <td>
22
- It doesn't track inventory
23
- </td>
24
- <td>
25
- <form>
26
- <input class="quantity" id="stock_item_quantity" data-stock-location-id="{{this.stock_location_id}}" type="number" min="1" value="1">
27
- </form>
28
- </td>
29
- <td class="actions">
30
- <button class="add_variant no-text fa fa-plus icon_link with-tip" data-stock-location-id="{{this.stock_location_id}}" title="{{ t "add" }}" data-action="add"></button>
31
- </td>
32
- {{else}}
33
- {{#if this.available}}
34
- <td>
35
- {{this.count_on_hand}}
36
- {{#if this.backorderable}} ({{ t "backorders_allowed" }}) {{/if}}
37
- </td>
38
- <td>
39
- <form>
40
- <input class="quantity" id="stock_item_quantity" data-stock-location-id="{{this.stock_location_id}}" type="number" min="1" value="1">
41
- </form>
42
- </td>
43
- <td class="actions">
44
- <button class="add_variant no-text fa fa-plus icon_link with-tip" data-stock-location-id="{{this.stock_location_id}}" title="{{ t "add" }}" data-action="add"></button>
45
- </td>
46
- {{else}}
47
- <td>{{ t "out_of_stock" }}</td>
48
- <td>0</td>
49
- <td></td>
50
- {{/if}}
51
- {{/unless}}
52
- </tr>
53
- {{/each}}
54
- </tbody>
55
- </table>
56
- </fieldset>
@@ -1,12 +0,0 @@
1
- <div id="add-line-item" class="js-shipment-add-variant" data-hook>
2
- <fieldset class="no-border-bottom">
3
- <legend align="center"><%= t('spree.add_product') %></legend>
4
-
5
- <div data-hook="add_product_name" class="field">
6
- <%= label_tag :add_variant_id, t('spree.name_or_sku') %>
7
- <%= text_field_tag :add_variant_id, "", class: "variant_autocomplete fullwidth" %>
8
- </div>
9
- </fieldset>
10
-
11
- <div id="stock_details"></div>
12
- </div>
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
5
-
6
- ENGINE_ROOT = File.expand_path('..', __dir__)
7
- ENGINE_PATH = File.expand_path('../lib/spree/backend/engine', __dir__)
8
-
9
- require 'rails/all'
10
- require 'rails/engine/commands'
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Spree's rpsec controller tests get the Spree::ControllerHacks
4
- # we don't need those for the anonymous controller here, so
5
- # we call process directly instead of get
6
- require 'spec_helper'
7
-
8
- describe Spree::Admin::BaseController, type: :controller do
9
- controller(Spree::Admin::BaseController) do
10
- def index
11
- authorize! :update, Spree::Order
12
- render plain: 'test'
13
- end
14
- end
15
-
16
- context "unauthorized request" do
17
- before do
18
- allow_any_instance_of(Spree::Admin::BaseController).to receive(:try_spree_current_user).and_return(nil)
19
- end
20
-
21
- it "redirects to unauthorized" do
22
- get :index
23
- expect(response).to redirect_to '/unauthorized'
24
- end
25
- end
26
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Spree::Admin::CancellationsController do
6
- stub_authorization!
7
-
8
- describe "#index" do
9
- subject { get :index, params: { order_id: order.number } }
10
-
11
- let(:order) { create(:order_ready_to_ship, line_items_count: 1) }
12
-
13
- context "for an order with inventory" do
14
- render_views
15
-
16
- it "succeeds" do
17
- expect(response).to be_ok
18
- end
19
- end
20
- end
21
-
22
- describe "#cancel" do
23
- subject { post :short_ship, params: { order_id: order.number, inventory_unit_ids: inventory_units.map(&:id) } }
24
-
25
- let(:order) { create(:order_with_line_items, line_items_attributes: [{ quantity: 4 }]) }
26
- let(:referer) { "order_admin_page" }
27
-
28
- context "no inventory unit ids are provided" do
29
- subject { post :short_ship, params: { order_id: order.number } }
30
-
31
- it "redirects back" do
32
- subject
33
- expect(response).to redirect_to(spree.admin_order_cancellations_path(order))
34
- end
35
-
36
- it "sets an error message" do
37
- subject
38
- expect(flash[:error]).to eq I18n.t('spree.no_inventory_selected')
39
- end
40
- end
41
-
42
- context "unable to find all the inventory" do
43
- let(:inventory_units) { [Spree::InventoryUnit.new(id: -1)] }
44
-
45
- it "redirects back" do
46
- subject
47
- expect(response).to redirect_to(spree.admin_order_cancellations_path(order))
48
- end
49
-
50
- it "sets an error message" do
51
- subject
52
- expect(flash[:error]).to eq I18n.t('spree.unable_to_find_all_inventory_units')
53
- end
54
- end
55
-
56
- context "successfully cancels inventory" do
57
- let(:inventory_units) { order.inventory_units.not_canceled }
58
-
59
- it "redirects to admin order edit" do
60
- subject
61
- expect(response).to redirect_to(spree.edit_admin_order_path(order))
62
- end
63
-
64
- it "sets an success message" do
65
- subject
66
- expect(flash[:success]).to eq I18n.t('spree.inventory_canceled')
67
- end
68
-
69
- it "creates a unit cancel" do
70
- expect { subject }.to change { Spree::UnitCancel.count }.by(4)
71
- end
72
-
73
- it "cancels the inventory" do
74
- subject
75
- expect(order.reload.inventory_units.map(&:state).uniq).to match_array(['canceled'])
76
- end
77
-
78
- it "adjusts the order" do
79
- expect { subject }.to change { order.reload.total }.by(-40.0)
80
- end
81
- end
82
- end
83
- end
@@ -1,235 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- module Spree
6
- module Admin
7
- describe CustomerReturnsController, type: :controller do
8
- stub_authorization!
9
-
10
- describe "#index" do
11
- let(:order) { customer_return.order }
12
- let(:customer_return) { create(:customer_return) }
13
-
14
- subject do
15
- get :index, params: { order_id: customer_return.order.to_param }
16
- end
17
-
18
- before { subject }
19
-
20
- it "loads the order" do
21
- expect(assigns(:order)).to eq order
22
- end
23
-
24
- it "loads the customer return" do
25
- expect(assigns(:customer_returns)).to include(customer_return)
26
- end
27
- end
28
-
29
- describe "#new" do
30
- let(:order) { create(:shipped_order, line_items_count: 1) }
31
- let!(:inactive_reimbursement_type) { create(:reimbursement_type, active: false) }
32
- let!(:first_active_reimbursement_type) { create(:reimbursement_type) }
33
- let!(:second_active_reimbursement_type) { create(:reimbursement_type) }
34
-
35
- subject do
36
- get :new, params: { order_id: order.to_param }
37
- end
38
-
39
- it "loads the order" do
40
- subject
41
- expect(assigns(:order)).to eq order
42
- end
43
-
44
- it "builds a new customer return" do
45
- subject
46
- expect(assigns(:customer_return)).to_not be_persisted
47
- end
48
-
49
- context "with previous customer return" do
50
- let(:return_reason_1) { create(:return_reason) }
51
- let(:return_reason_2) { create(:return_reason) }
52
- let(:return_reason_3) { create(:return_reason) }
53
- let!(:inactive_rma_reason) { create(:return_reason, active: false) }
54
-
55
- let(:order) { create(:shipped_order, line_items_count: 4) }
56
- let(:rma) { create(:return_authorization, order: order, reason: return_reason_1) }
57
-
58
- let!(:rma_return_item) { create(:return_item, return_authorization: rma, inventory_unit: order.inventory_units.first, return_reason: return_reason_2) }
59
- let!(:customer_return_return_item) { create(:return_item, return_authorization: nil, inventory_unit: order.inventory_units.last, return_reason: return_reason_3) }
60
-
61
- context "all return items are associated with a customer return" do
62
- let!(:previous_customer_return) { create(:customer_return_without_return_items, return_items: [rma_return_item, customer_return_return_item]) }
63
-
64
- before { subject }
65
-
66
- it "loads the possible return items" do
67
- total_inventory_count = 4
68
- rma_return_items_count = 1
69
- customer_return_return_items_count = 1
70
- expect(assigns(:new_return_items).length).to eq(total_inventory_count - rma_return_items_count - customer_return_return_items_count)
71
- end
72
-
73
- it "builds new return items" do
74
- expect(assigns(:new_return_items).all? { |return_item| !return_item.persisted? }).to eq true
75
- end
76
-
77
- it "does not have any rma return items" do
78
- expect(assigns(:rma_return_items)).to eq []
79
- end
80
-
81
- it "loads the correct return authorization reasons" do
82
- expect(assigns(:reasons)).to match_array([return_reason_1, return_reason_2, return_reason_3])
83
- end
84
- end
85
-
86
- context "there is a return item associated with an rma but not a customer return" do
87
- let!(:previous_customer_return) { create(:customer_return_without_return_items, return_items: [customer_return_return_item]) }
88
-
89
- before do
90
- subject
91
- end
92
-
93
- it "loads the possible return items" do
94
- rma_return_item_count = rma.return_items.count
95
- total_unit_count = order.inventory_units.count
96
- customer_returned_count = previous_customer_return.return_items.count
97
- expected_total = total_unit_count - customer_returned_count - rma_return_item_count
98
- expect(assigns(:new_return_items).length).to eq expected_total
99
- end
100
-
101
- it "builds new return items" do
102
- expect(assigns(:new_return_items).all? { |return_item| !return_item.persisted? }).to eq true
103
- end
104
-
105
- it "loads the persisted rma return items" do
106
- expect(assigns(:rma_return_items).all?(&:persisted?)).to eq true
107
- end
108
-
109
- it "has one rma return item" do
110
- expect(assigns(:rma_return_items)).to include(rma_return_item)
111
- end
112
-
113
- it "loads the correct return authorization reasons" do
114
- expect(assigns(:reasons)).to match_array([return_reason_1, return_reason_2, return_reason_3])
115
- end
116
- end
117
- end
118
- end
119
-
120
- describe "#edit" do
121
- let(:order) { customer_return.order }
122
- let(:customer_return) { create(:customer_return, line_items_count: 3) }
123
-
124
- let!(:inactive_rma_reason) { create(:return_reason, active: false) }
125
-
126
- let!(:accepted_return_item) { customer_return.return_items.order('id').first.tap(&:accept!) }
127
- let!(:rejected_return_item) { customer_return.return_items.order('id').second.tap(&:reject!) }
128
- let!(:manual_intervention_return_item) { customer_return.return_items.order('id').third.tap(&:require_manual_intervention!) }
129
-
130
- subject do
131
- get :edit, params: { order_id: order.to_param, id: customer_return.to_param }
132
- end
133
-
134
- it "loads the order" do
135
- subject
136
- expect(assigns(:order)).to eq order
137
- end
138
-
139
- it "loads the customer return" do
140
- subject
141
- expect(assigns(:customer_return)).to eq customer_return
142
- end
143
-
144
- it "loads the accepted return items" do
145
- subject
146
- expect(assigns(:accepted_return_items)).to eq [accepted_return_item]
147
- end
148
-
149
- it "loads the rejected return items" do
150
- subject
151
- expect(assigns(:rejected_return_items)).to eq [rejected_return_item]
152
- end
153
-
154
- it "loads the return items that require manual intervention" do
155
- subject
156
- expect(assigns(:manual_intervention_return_items)).to eq [manual_intervention_return_item]
157
- end
158
-
159
- it "loads the return items that are still pending" do
160
- subject
161
- expect(assigns(:pending_return_items)).to eq []
162
- end
163
-
164
- it "loads the reimbursements that are still pending" do
165
- subject
166
- expect(assigns(:pending_reimbursements)).to eq []
167
- end
168
-
169
- it "loads the correct return authorization reasons" do
170
- subject
171
- expect(assigns(:reasons)).to match(Spree::ReturnReason.active)
172
- end
173
-
174
- context "a return item has an inactive return authorization reason" do
175
- before(:each) do
176
- accepted_return_item.update_attributes(return_reason_id: inactive_rma_reason.id)
177
- end
178
-
179
- it "includes the inactive return authorization reason" do
180
- subject
181
- expect(assigns(:reasons)).to match(Spree::ReturnReason.active + [inactive_rma_reason])
182
- end
183
- end
184
- end
185
-
186
- describe "#create" do
187
- let(:order) { create(:shipped_order, line_items_count: 1) }
188
- let(:reception_status_event) { 'receive' }
189
- let(:stock_location_id) { order.shipments.last.stock_location.id }
190
- let(:customer_return_params) do
191
- {
192
- order_id: order.to_param,
193
- customer_return: {
194
- stock_location_id: stock_location_id,
195
- return_items_attributes: {
196
- "0" => {
197
- returned: "1",
198
- amount: "15.99",
199
- inventory_unit_id: order.inventory_units.shipped.last.id,
200
- reception_status_event: reception_status_event
201
- }
202
- }
203
- }
204
- }
205
- end
206
-
207
- subject { post :create, params: customer_return_params }
208
-
209
- it { expect { subject }.to change { Spree::CustomerReturn.count }.by(1) }
210
- it do
211
- subject
212
- expect(response).to redirect_to spree.edit_admin_order_customer_return_path(order, id: Spree::CustomerReturn.last.id)
213
- end
214
-
215
- it 'executes the reception status event on the return items' do
216
- subject
217
- customer_return = Spree::CustomerReturn.last
218
- expect(customer_return.return_items.map(&:reception_status).uniq).to eq ['received']
219
- end
220
-
221
- context "missing stock location" do
222
- let(:stock_location_id) { '' }
223
- it { expect{ subject }.to_not change { Spree::CustomerReturn.count } }
224
- it { subject; expect(response).to render_template(:new) }
225
- end
226
-
227
- context "missing reception status event" do
228
- let(:reception_status_event) { '' }
229
- it { expect{ subject }.to_not change { Spree::CustomerReturn.count } }
230
- it { subject; expect(response).to redirect_to spree.new_admin_order_customer_return_path(order) }
231
- end
232
- end
233
- end
234
- end
235
- end