solidus_core 4.1.6 → 4.5.1

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 (308) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/logo/solidus.svg +18 -1
  3. data/app/assets/images/logo/solidus_logo.png +0 -0
  4. data/app/helpers/spree/base_helper.rb +2 -2
  5. data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
  6. data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
  7. data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
  8. data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
  9. data/app/helpers/spree/core/controller_helpers/pricing.rb +19 -0
  10. data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
  11. data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
  12. data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
  13. data/app/mailers/spree/base_mailer.rb +1 -1
  14. data/app/mailers/spree/carton_mailer.rb +1 -1
  15. data/app/mailers/spree/order_mailer.rb +3 -3
  16. data/app/mailers/spree/reimbursement_mailer.rb +1 -1
  17. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
  18. data/app/models/concerns/spree/active_storage_adapter.rb +1 -1
  19. data/app/models/concerns/spree/display_money.rb +1 -1
  20. data/app/models/concerns/spree/metadata.rb +64 -0
  21. data/app/models/concerns/spree/named_type.rb +2 -0
  22. data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
  23. data/app/models/concerns/spree/user_address_book.rb +8 -9
  24. data/app/models/concerns/spree/user_methods.rb +3 -3
  25. data/app/models/spree/address.rb +10 -8
  26. data/app/models/spree/adjustment.rb +15 -65
  27. data/app/models/spree/adjustment_reason.rb +2 -0
  28. data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
  29. data/app/models/spree/carton.rb +2 -2
  30. data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
  31. data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
  32. data/app/models/spree/core/state_machines/order.rb +42 -0
  33. data/app/models/spree/core/state_machines/payment.rb +61 -0
  34. data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
  35. data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
  36. data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  37. data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
  38. data/app/models/spree/core/state_machines/shipment.rb +58 -0
  39. data/app/models/spree/credit_card.rb +12 -9
  40. data/app/models/spree/customer_return.rb +2 -0
  41. data/app/models/spree/deprecated_configurable_class.rb +40 -0
  42. data/app/models/spree/fulfilment_changer.rb +4 -4
  43. data/app/models/spree/inventory_unit.rb +2 -2
  44. data/app/models/spree/item_total.rb +28 -0
  45. data/app/models/spree/legacy_user.rb +1 -0
  46. data/app/models/spree/line_item.rb +22 -4
  47. data/app/models/spree/money.rb +120 -0
  48. data/app/models/spree/null_promotion_adjuster.rb +13 -0
  49. data/app/models/spree/null_promotion_advertiser.rb +9 -0
  50. data/app/models/spree/null_promotion_finder.rb +9 -0
  51. data/app/models/spree/null_promotion_handler.rb +44 -0
  52. data/app/models/spree/option_value.rb +1 -0
  53. data/app/models/spree/order.rb +54 -36
  54. data/app/models/spree/order_cancellations.rb +8 -8
  55. data/app/models/spree/order_inventory.rb +6 -4
  56. data/app/models/spree/order_merger.rb +1 -1
  57. data/app/models/spree/order_mutex.rb +2 -2
  58. data/app/models/spree/order_shipping.rb +9 -9
  59. data/app/models/spree/order_taxation.rb +1 -0
  60. data/app/models/spree/order_updater.rb +19 -40
  61. data/app/models/spree/payment/processing.rb +2 -2
  62. data/app/models/spree/payment.rb +3 -2
  63. data/app/models/spree/payment_create.rb +1 -1
  64. data/app/models/spree/payment_method/bogus_credit_card.rb +14 -9
  65. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +12 -6
  66. data/app/models/spree/payment_method/store_credit.rb +1 -1
  67. data/app/models/spree/payment_method.rb +3 -1
  68. data/app/models/spree/payment_source.rb +5 -1
  69. data/app/models/spree/permission_set.rb +11 -0
  70. data/app/models/spree/permission_sets/base.rb +45 -0
  71. data/app/models/spree/permission_sets/configuration_display.rb +53 -0
  72. data/app/models/spree/permission_sets/configuration_management.rb +52 -0
  73. data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
  74. data/app/models/spree/permission_sets/default_customer.rb +83 -0
  75. data/app/models/spree/permission_sets/order_display.rb +50 -0
  76. data/app/models/spree/permission_sets/order_management.rb +50 -0
  77. data/app/models/spree/permission_sets/product_display.rb +43 -0
  78. data/app/models/spree/permission_sets/product_management.rb +47 -0
  79. data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
  80. data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
  81. data/app/models/spree/permission_sets/stock_display.rb +26 -0
  82. data/app/models/spree/permission_sets/stock_management.rb +26 -0
  83. data/app/models/spree/permission_sets/super_user.rb +26 -0
  84. data/app/models/spree/permission_sets/user_display.rb +27 -0
  85. data/app/models/spree/permission_sets/user_management.rb +44 -0
  86. data/app/models/spree/preference.rb +1 -1
  87. data/app/models/spree/product.rb +13 -9
  88. data/app/models/spree/refund.rb +3 -1
  89. data/app/models/spree/refund_reason.rb +6 -1
  90. data/app/models/spree/reimbursement.rb +4 -4
  91. data/app/models/spree/reimbursement_performer.rb +3 -3
  92. data/app/models/spree/reimbursement_tax_calculator.rb +2 -2
  93. data/app/models/spree/reimbursement_type/credit.rb +1 -1
  94. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
  95. data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
  96. data/app/models/spree/reimbursement_type.rb +6 -1
  97. data/app/models/spree/return_authorization.rb +2 -0
  98. data/app/models/spree/return_item.rb +10 -10
  99. data/app/models/spree/return_reason.rb +6 -1
  100. data/app/models/spree/role.rb +3 -1
  101. data/app/models/spree/role_permission.rb +8 -0
  102. data/app/models/spree/shipment.rb +9 -7
  103. data/app/models/spree/shipping_category.rb +2 -0
  104. data/app/models/spree/shipping_rate.rb +2 -3
  105. data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +8 -12
  106. data/app/models/spree/stock/estimator.rb +1 -1
  107. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  108. data/app/models/spree/stock/package.rb +2 -2
  109. data/app/models/spree/stock/simple_coordinator.rb +36 -22
  110. data/app/models/spree/stock_item.rb +1 -0
  111. data/app/models/spree/stock_location.rb +5 -5
  112. data/app/models/spree/store.rb +3 -1
  113. data/app/models/spree/store_credit.rb +17 -15
  114. data/app/models/spree/store_credit_event.rb +4 -3
  115. data/app/models/spree/store_credit_reason.rb +6 -1
  116. data/app/models/spree/store_selector/by_server_name.rb +1 -1
  117. data/app/models/spree/tax/tax_helpers.rb +12 -1
  118. data/app/models/spree/tax_calculator/default.rb +3 -3
  119. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -1
  120. data/app/models/spree/tax_category.rb +3 -1
  121. data/app/models/spree/tax_rate.rb +7 -3
  122. data/app/models/spree/taxon.rb +22 -2
  123. data/app/models/spree/taxon_brand_selector.rb +22 -0
  124. data/app/models/spree/taxonomy.rb +2 -2
  125. data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
  126. data/app/models/spree/unit_cancel.rb +1 -2
  127. data/app/models/spree/user_address.rb +9 -3
  128. data/app/models/spree/variant/scopes.rb +4 -0
  129. data/app/models/spree/variant/vat_price_generator.rb +1 -1
  130. data/app/models/spree/variant.rb +21 -8
  131. data/app/models/spree/wallet.rb +2 -2
  132. data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
  133. data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
  134. data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
  135. data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
  136. data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
  137. data/config/locales/en.yml +33 -90
  138. data/db/default/spree/permission_sets.rb +10 -0
  139. data/db/default/spree/return_reasons.rb +3 -1
  140. data/db/default/spree/states.rb +1 -1
  141. data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
  142. data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
  143. data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +1 -1
  144. data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
  145. data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
  146. data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
  147. data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
  148. data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
  149. data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
  150. data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
  151. data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
  152. data/db/seeds.rb +1 -0
  153. data/lib/generators/solidus/install/app_templates/authentication/custom.rb +0 -5
  154. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  155. data/lib/generators/solidus/install/install_generator.rb +64 -15
  156. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +15 -12
  157. data/lib/generators/solidus/update/update_generator.rb +1 -1
  158. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  159. data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -1
  160. data/lib/generators/spree/dummy/templates/rails/database.yml +41 -93
  161. data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
  162. data/lib/generators/spree/dummy/templates/rails/test.rb +6 -1
  163. data/lib/spree/app_configuration.rb +102 -67
  164. data/lib/spree/core/class_constantizer.rb +2 -2
  165. data/lib/spree/core/controller_helpers/auth.rb +5 -61
  166. data/lib/spree/core/controller_helpers/common.rb +5 -80
  167. data/lib/spree/core/controller_helpers/order.rb +5 -86
  168. data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -163
  169. data/lib/spree/core/controller_helpers/pricing.rb +5 -17
  170. data/lib/spree/core/controller_helpers/search.rb +5 -14
  171. data/lib/spree/core/controller_helpers/store.rb +5 -17
  172. data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
  173. data/lib/spree/core/engine.rb +13 -5
  174. data/lib/spree/core/environment/calculators.rb +35 -3
  175. data/lib/spree/core/environment/promotions.rb +25 -4
  176. data/lib/spree/core/environment_extension.rb +16 -2
  177. data/lib/spree/core/importer/order.rb +5 -5
  178. data/lib/spree/core/importer/product.rb +3 -3
  179. data/lib/spree/core/nested_class_set.rb +28 -0
  180. data/lib/spree/core/null_promotion_configuration.rb +84 -0
  181. data/lib/spree/core/product_filters.rb +1 -1
  182. data/lib/spree/core/search/variant.rb +2 -2
  183. data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
  184. data/lib/spree/core/state_machines/order.rb +5 -251
  185. data/lib/spree/core/state_machines/payment.rb +5 -59
  186. data/lib/spree/core/state_machines/reimbursement.rb +5 -31
  187. data/lib/spree/core/state_machines/return_authorization.rb +5 -30
  188. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
  189. data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
  190. data/lib/spree/core/state_machines/shipment.rb +5 -56
  191. data/lib/spree/core/state_machines.rb +48 -81
  192. data/lib/spree/core/validators/email.rb +1 -1
  193. data/lib/spree/core/version.rb +2 -2
  194. data/lib/spree/core.rb +2 -14
  195. data/lib/spree/deprecator.rb +9 -0
  196. data/lib/spree/i18n.rb +1 -1
  197. data/lib/spree/mailer_previews/carton_preview.rb +1 -1
  198. data/lib/spree/money.rb +5 -118
  199. data/lib/spree/permission_sets/base.rb +5 -30
  200. data/lib/spree/permission_sets/configuration_display.rb +5 -41
  201. data/lib/spree/permission_sets/configuration_management.rb +5 -40
  202. data/lib/spree/permission_sets/dashboard_display.rb +5 -14
  203. data/lib/spree/permission_sets/default_customer.rb +5 -71
  204. data/lib/spree/permission_sets/order_display.rb +5 -38
  205. data/lib/spree/permission_sets/order_management.rb +5 -38
  206. data/lib/spree/permission_sets/product_display.rb +5 -31
  207. data/lib/spree/permission_sets/product_management.rb +5 -35
  208. data/lib/spree/permission_sets/restricted_stock_display.rb +5 -21
  209. data/lib/spree/permission_sets/restricted_stock_management.rb +5 -21
  210. data/lib/spree/permission_sets/stock_display.rb +5 -14
  211. data/lib/spree/permission_sets/stock_management.rb +5 -14
  212. data/lib/spree/permission_sets/super_user.rb +5 -14
  213. data/lib/spree/permission_sets/user_display.rb +5 -15
  214. data/lib/spree/permission_sets/user_management.rb +5 -32
  215. data/lib/spree/permission_sets.rb +5 -18
  216. data/lib/spree/permitted_attributes.rb +21 -9
  217. data/lib/spree/preferences/configuration.rb +4 -0
  218. data/lib/spree/preferences/persistable.rb +7 -1
  219. data/lib/spree/preferences/store.rb +2 -2
  220. data/lib/spree/testing_support/capybara_ext.rb +11 -1
  221. data/lib/spree/testing_support/common_rake.rb +1 -0
  222. data/lib/spree/testing_support/dummy_ability.rb +7 -0
  223. data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
  224. data/lib/spree/testing_support/dummy_app/database.yml +37 -46
  225. data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
  226. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -6
  227. data/lib/spree/testing_support/dummy_app.rb +33 -19
  228. data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -2
  229. data/lib/spree/testing_support/factories/calculator_factory.rb +1 -5
  230. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  231. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  232. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +3 -3
  233. data/lib/spree/testing_support/factories/order_factory.rb +13 -24
  234. data/lib/spree/testing_support/factories/product_factory.rb +1 -1
  235. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -1
  236. data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -1
  237. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  238. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  239. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  240. data/lib/spree/testing_support/order_walkthrough.rb +3 -3
  241. data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
  242. data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
  243. data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
  244. data/lib/tasks/colorado_delivery_fee.rake +2 -2
  245. data/solidus_core.gemspec +7 -10
  246. metadata +107 -109
  247. data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
  248. data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
  249. data/app/models/spree/calculator/distributed_amount.rb +0 -33
  250. data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
  251. data/app/models/spree/calculator/flexi_rate.rb +0 -22
  252. data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
  253. data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
  254. data/app/models/spree/calculator/tiered_percent.rb +0 -62
  255. data/app/models/spree/line_item_action.rb +0 -8
  256. data/app/models/spree/order_promotion.rb +0 -27
  257. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -81
  258. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -98
  259. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
  260. data/app/models/spree/promotion/actions/free_shipping.rb +0 -59
  261. data/app/models/spree/promotion/order_adjustments_recalculator.rb +0 -92
  262. data/app/models/spree/promotion/rules/first_order.rb +0 -38
  263. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
  264. data/app/models/spree/promotion/rules/item_total.rb +0 -86
  265. data/app/models/spree/promotion/rules/nth_order.rb +0 -45
  266. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
  267. data/app/models/spree/promotion/rules/option_value.rb +0 -50
  268. data/app/models/spree/promotion/rules/product.rb +0 -86
  269. data/app/models/spree/promotion/rules/store.rb +0 -26
  270. data/app/models/spree/promotion/rules/taxon.rb +0 -91
  271. data/app/models/spree/promotion/rules/user.rb +0 -34
  272. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
  273. data/app/models/spree/promotion/rules/user_role.rb +0 -45
  274. data/app/models/spree/promotion.rb +0 -271
  275. data/app/models/spree/promotion_action.rb +0 -47
  276. data/app/models/spree/promotion_category.rb +0 -8
  277. data/app/models/spree/promotion_chooser.rb +0 -34
  278. data/app/models/spree/promotion_code/batch_builder.rb +0 -64
  279. data/app/models/spree/promotion_code.rb +0 -54
  280. data/app/models/spree/promotion_code_batch.rb +0 -27
  281. data/app/models/spree/promotion_handler/cart.rb +0 -75
  282. data/app/models/spree/promotion_handler/coupon.rb +0 -123
  283. data/app/models/spree/promotion_handler/page.rb +0 -26
  284. data/app/models/spree/promotion_handler/shipping.rb +0 -61
  285. data/app/models/spree/promotion_rule.rb +0 -55
  286. data/app/models/spree/promotion_rule_role.rb +0 -8
  287. data/app/models/spree/promotion_rule_store.rb +0 -10
  288. data/app/models/spree/promotion_rule_taxon.rb +0 -8
  289. data/app/models/spree/promotion_rule_user.rb +0 -10
  290. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
  291. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
  292. data/bin/rails +0 -13
  293. data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
  294. data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
  295. data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
  296. data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
  297. data/db/migrate/20220317165036_set_promotions_with_any_policy_to_all_if_possible.rb +0 -20
  298. data/db/migrate/20230322085416_remove_match_policy_from_spree_promotion.rb +0 -5
  299. data/db/migrate/20230325132905_remove_unused_columns_from_promotion_rules.rb +0 -6
  300. data/db/migrate/20230325161633_drop_unused_promo_action_line_items.rb +0 -13
  301. data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
  302. data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
  303. data/lib/spree/permission_sets/promotion_display.rb +0 -25
  304. data/lib/spree/permission_sets/promotion_management.rb +0 -25
  305. data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -8
  306. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -7
  307. data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -8
  308. data/lib/spree/testing_support/factories/promotion_factory.rb +0 -98
@@ -1,40 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Full permissions for order management.
6
- #
7
- # This permission set grants full control over all order and related resources,
8
- # including:
9
- #
10
- # - Orders
11
- # - Payments
12
- # - Shipments
13
- # - Adjustments
14
- # - Line items
15
- # - Return authorizations
16
- # - Customer returns
17
- # - Order cancellations
18
- # - Reimbursements
19
- # - Return items
20
- # - Refunds
21
- #
22
- # It also allows reading reimbursement types, but not modifying them.
23
- class OrderManagement < PermissionSets::Base
24
- def activate!
25
- can :read, Spree::ReimbursementType
26
- can :manage, Spree::Order
27
- can :manage, Spree::Payment
28
- can :manage, Spree::Shipment
29
- can :manage, Spree::Adjustment
30
- can :manage, Spree::LineItem
31
- can :manage, Spree::ReturnAuthorization
32
- can :manage, Spree::CustomerReturn
33
- can :manage, Spree::OrderCancellations
34
- can :manage, Spree::Reimbursement
35
- can :manage, Spree::ReturnItem
36
- can :manage, Spree::Refund
37
- end
38
- end
39
- end
40
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,33 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Read-only permissions for products.
6
- #
7
- # This permission set allows users to view all related information about
8
- # products, also from the admin panel, including:
9
- #
10
- # - Products
11
- # - Images
12
- # - Variants
13
- # - Option values
14
- # - Product properties
15
- # - Option types
16
- # - Properties
17
- # - Taxonomies
18
- # - Taxons
19
- class ProductDisplay < PermissionSets::Base
20
- def activate!
21
- can [:read, :admin, :edit], Spree::Product
22
- can [:read, :admin], Spree::Image
23
- can [:read, :admin], Spree::Variant
24
- can [:read, :admin], Spree::OptionValue
25
- can [:read, :admin], Spree::ProductProperty
26
- can [:read, :admin], Spree::OptionType
27
- can [:read, :admin], Spree::Property
28
- can [:read, :admin], Spree::Taxonomy
29
- can [:read, :admin], Spree::Taxon
30
- end
31
- end
32
- end
33
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,37 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Full permissions for product management.
6
- #
7
- # This permission set grants full control over all product and related resources,
8
- # including:
9
- #
10
- # - Products
11
- # - Images
12
- # - Variants
13
- # - Option values
14
- # - Product properties
15
- # - Option types
16
- # - Properties
17
- # - Taxonomies
18
- # - Taxons
19
- # - Classifications
20
- # - Prices
21
- class ProductManagement < PermissionSets::Base
22
- def activate!
23
- can :manage, Spree::Classification
24
- can :manage, Spree::Image
25
- can :manage, Spree::OptionType
26
- can :manage, Spree::OptionValue
27
- can :manage, Spree::Price
28
- can :manage, Spree::Product
29
- can :manage, Spree::ProductProperty
30
- can :manage, Spree::Property
31
- can :manage, Spree::Taxon
32
- can :manage, Spree::Taxonomy
33
- can :manage, Spree::Variant
34
- end
35
- end
36
- end
37
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,23 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Read permissions for stock limited to allowed locations.
6
- #
7
- # This permission set allows users to view information about stock items and
8
- # locations, both of them limited to locations they have access to.
9
- # Permissions are also granted for the admin panel for items.
10
- class RestrictedStockDisplay < PermissionSets::Base
11
- def activate!
12
- can [:read, :admin], Spree::StockItem, stock_location_id: location_ids
13
- can :read, Spree::StockLocation, id: location_ids
14
- end
15
-
16
- private
17
-
18
- def location_ids
19
- @ids ||= user.stock_locations.pluck(:id)
20
- end
21
- end
22
- end
23
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,23 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Full permissions for stock management limited to allowed locations.
6
- #
7
- # This permission set grants full control over all stock items a user has
8
- # access to their locations. Those locations are also readable by the
9
- # corresponding ability.
10
- class RestrictedStockManagement < PermissionSets::Base
11
- def activate!
12
- can :manage, Spree::StockItem, stock_location_id: location_ids
13
- can :read, Spree::StockLocation, id: location_ids
14
- end
15
-
16
- private
17
-
18
- def location_ids
19
- @ids ||= user.stock_locations.pluck(:id)
20
- end
21
- end
22
- end
23
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,16 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Read-only permissions for stock.
6
- #
7
- # This permission set allows users to view information about stock items
8
- # (also from the admin panel) and stock locations.
9
- class StockDisplay < PermissionSets::Base
10
- def activate!
11
- can [:read, :admin], Spree::StockItem
12
- can :read, Spree::StockLocation
13
- end
14
- end
15
- end
16
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,16 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Full permissions for stock management.
6
- #
7
- # This permission set grants full control over all stock items and read
8
- # access to locations.
9
- class StockManagement < PermissionSets::Base
10
- def activate!
11
- can :manage, Spree::StockItem
12
- can :read, Spree::StockLocation
13
- end
14
- end
15
- end
16
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,16 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Full permissions for store administration.
6
- #
7
- # This permission set is always added to users with the `:admin` role.
8
- #
9
- # It grants permission to perform any read or write action on any resource.
10
- class SuperUser < PermissionSets::Base
11
- def activate!
12
- can :manage, :all
13
- end
14
- end
15
- end
16
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,17 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Read-only permissions for users, roles and store credits.
6
- #
7
- # This permission set allows users to view all related information about
8
- # users, roles and store credits, also from the admin panel.
9
- class UserDisplay < PermissionSets::Base
10
- def activate!
11
- can [:read, :admin, :edit, :addresses, :orders, :items], Spree.user_class
12
- can [:read, :admin], Spree::StoreCredit
13
- can :read, Spree::Role
14
- end
15
- end
16
- end
17
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,34 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Full permissions for user management.
6
- #
7
- # This permission set grants full control over all user and
8
- # related resources, including:
9
- #
10
- # - Users
11
- # - Store credits
12
- # - Roles
13
- # - API keys
14
- class UserManagement < PermissionSets::Base
15
- def activate!
16
- can [:admin, :read, :create, :update, :save_in_address_book, :remove_from_address_book, :addresses, :orders, :items], Spree.user_class
17
-
18
- # Note: This does not work with accessible_by.
19
- # See https://github.com/solidusio/solidus/pull/1263
20
- can :update_email, Spree.user_class do |user|
21
- user.spree_roles.none?
22
- end
23
- can :update_password, Spree.user_class do |user|
24
- user.spree_roles.none?
25
- end
26
-
27
- cannot :destroy, Spree.user_class
28
- can :manage, Spree::StoreCredit
29
- can :manage, :api_key
30
- can :read, Spree::Role
31
- end
32
- end
33
- end
34
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,20 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/permission_sets/base'
4
- require 'spree/permission_sets/configuration_display'
5
- require 'spree/permission_sets/configuration_management'
6
- require 'spree/permission_sets/dashboard_display'
7
- require 'spree/permission_sets/default_customer'
8
- require 'spree/permission_sets/order_display'
9
- require 'spree/permission_sets/order_management'
10
- require 'spree/permission_sets/product_display'
11
- require 'spree/permission_sets/product_management'
12
- require 'spree/permission_sets/promotion_display'
13
- require 'spree/permission_sets/promotion_management'
14
- require 'spree/permission_sets/restricted_stock_display'
15
- require 'spree/permission_sets/restricted_stock_management'
16
- require 'spree/permission_sets/stock_display'
17
- require 'spree/permission_sets/stock_management'
18
- require 'spree/permission_sets/super_user'
19
- require 'spree/permission_sets/user_display'
20
- require 'spree/permission_sets/user_management'
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -14,6 +14,7 @@ module Spree
14
14
  :checkout_confirm_attributes,
15
15
  :credit_card_update_attributes,
16
16
  :customer_return_attributes,
17
+ :customer_metadata_attributes,
17
18
  :image_attributes,
18
19
  :inventory_unit_attributes,
19
20
  :line_item_attributes,
@@ -55,21 +56,23 @@ module Spree
55
56
  :stock_location_id, return_items_attributes: [
56
57
  :id, :inventory_unit_id, :return_authorization_id, :returned, :amount,
57
58
  :reception_status_event, :acceptance_status, :exchange_variant_id,
58
- :resellable, :return_reason_id
59
+ :resellable, :return_reason_id, customer_metadata: {}
59
60
  ]
60
61
  ]
61
62
 
63
+ @@customer_metadata_attributes = [customer_metadata: {}]
64
+
62
65
  @@image_attributes = [:alt, :attachment, :position, :viewable_type, :viewable_id]
63
66
 
64
67
  @@inventory_unit_attributes = [:shipment, :variant_id]
65
68
 
66
- @@line_item_attributes = [:id, :variant_id, :quantity]
69
+ @@line_item_attributes = [:id, :variant_id, :quantity, customer_metadata: {}]
67
70
 
68
71
  @@option_value_attributes = [:name, :presentation]
69
72
 
70
73
  @@option_type_attributes = [:name, :presentation, option_values_attributes: option_value_attributes]
71
74
 
72
- @@payment_attributes = [:amount, :payment_method_id, :payment_method]
75
+ @@payment_attributes = [:amount, :payment_method_id, :payment_method, customer_metadata: {}]
73
76
 
74
77
  @@product_properties_attributes = [:property_name, :value, :position]
75
78
 
@@ -78,16 +81,24 @@ module Spree
78
81
  :meta_keywords, :price, :sku, :deleted_at,
79
82
  :option_values_hash, :weight, :height, :width, :depth,
80
83
  :shipping_category_id, :tax_category_id,
81
- :taxon_ids, :option_type_ids, :cost_currency, :cost_price
84
+ :taxon_ids, :option_type_ids, :cost_currency, :cost_price, :primary_taxon_id,
85
+ :gtin, :condition
82
86
  ]
83
87
 
84
88
  @@property_attributes = [:name, :presentation]
85
89
 
86
- @@return_authorization_attributes = [:memo, :stock_location_id, :return_reason_id, return_items_attributes: [:inventory_unit_id, :exchange_variant_id, :return_reason_id, :preferred_reimbursement_type_id]]
90
+ @@return_authorization_attributes = [:memo, :stock_location_id, :return_reason_id,
91
+ customer_metadata: {},
92
+ return_items_attributes: [
93
+ :inventory_unit_id,
94
+ :exchange_variant_id,
95
+ :return_reason_id,
96
+ :preferred_reimbursement_type_id
97
+ ]]
87
98
 
88
99
  @@shipment_attributes = [
89
100
  :special_instructions, :stock_location_id, :id, :tracking,
90
- :selected_shipping_rate_id
101
+ :selected_shipping_rate_id, customer_metadata: {}
91
102
  ]
92
103
 
93
104
  # month / year may be provided by some sources, or others may elect to use one field
@@ -95,7 +106,7 @@ module Spree
95
106
  :number, :month, :year, :expiry, :verification_value,
96
107
  :first_name, :last_name, :cc_type, :gateway_customer_profile_id,
97
108
  :gateway_payment_profile_id, :last_digits, :name, :encrypted_data,
98
- :wallet_payment_source_id, address_attributes: address_attributes
109
+ :wallet_payment_source_id, address_attributes:
99
110
  ]
100
111
 
101
112
  @@stock_item_attributes = [:variant, :stock_location, :backorderable, :variant_id]
@@ -126,7 +137,7 @@ module Spree
126
137
  # by changing a user with higher priveleges' email to one a lower-priveleged
127
138
  # admin owns. Creating a user with an email is handled separate at the
128
139
  # controller level.
129
- @@user_attributes = [:password, :password_confirmation]
140
+ @@user_attributes = [:password, :password_confirmation, customer_metadata: {}]
130
141
 
131
142
  @@variant_attributes = [
132
143
  :name, :presentation, :cost_price, :lock_version,
@@ -140,6 +151,7 @@ module Spree
140
151
 
141
152
  @@checkout_address_attributes = [
142
153
  :use_billing,
154
+ :use_shipping,
143
155
  :email,
144
156
  bill_address_attributes: address_attributes,
145
157
  ship_address_attributes: address_attributes
@@ -152,7 +164,7 @@ module Spree
152
164
 
153
165
  @@checkout_payment_attributes = [
154
166
  payments_attributes: payment_attributes + [
155
- source_attributes: source_attributes
167
+ source_attributes:
156
168
  ]
157
169
  ]
158
170
 
@@ -173,6 +173,10 @@ module Spree::Preferences
173
173
  class_name = class_name.constantize if class_name.is_a?(String)
174
174
  class_name
175
175
  end
176
+
177
+ define_method("#{name}_name") do
178
+ instance_variable_get(ivar) || default
179
+ end
176
180
  end
177
181
 
178
182
  def self.by_version(*args)
@@ -7,7 +7,13 @@ module Spree
7
7
 
8
8
  included do
9
9
  include Spree::Preferences::Preferable
10
- serialize :preferences, Hash
10
+
11
+ if Rails.gem_version >= Gem::Version.new('7.1')
12
+ serialize :preferences, type: Hash, coder: YAML
13
+ else
14
+ serialize :preferences, Hash, coder: YAML
15
+ end
16
+
11
17
  after_initialize :initialize_preference_defaults
12
18
  end
13
19
 
@@ -19,7 +19,7 @@ module Spree::Preferences
19
19
 
20
20
  def exist?(key)
21
21
  @cache.exist?(key) ||
22
- should_persist? && Spree::Preference.where(key: key).exists?
22
+ should_persist? && Spree::Preference.where(key:).exists?
23
23
  end
24
24
 
25
25
  def get(key)
@@ -35,7 +35,7 @@ module Spree::Preferences
35
35
  # has been cleared from the cache
36
36
 
37
37
  # does it exist in the database?
38
- if preference = Spree::Preference.find_by(key: key)
38
+ if preference = Spree::Preference.find_by(key:)
39
39
  # it does exist
40
40
  val = preference.value
41
41
  else
@@ -23,7 +23,7 @@ module Spree
23
23
  field.dispatchEvent(event);
24
24
  JS
25
25
  else
26
- fill_in locator, with: with
26
+ fill_in locator, with:
27
27
  end
28
28
  end
29
29
 
@@ -110,6 +110,16 @@ module Spree
110
110
  # find the original.
111
111
  find('label:not(.select2-offscreen)', text: /#{Regexp.escape(text)}/i, match: :one)
112
112
  end
113
+
114
+ def dialog(parent: 'body', **options)
115
+ within(parent) do
116
+ find('dialog', visible: :all, **options)
117
+ end
118
+ end
119
+
120
+ def turbo_frame_modal
121
+ dialog(parent: find('turbo-frame', visible: :all))
122
+ end
113
123
  end
114
124
  end
115
125
  end
@@ -31,6 +31,7 @@ class CommonRakeTasks
31
31
  'solidus:install',
32
32
  Dir.pwd, # use the current dir as Rails.root
33
33
  "--auto-accept",
34
+ "--admin-preview=#{ENV.fetch('ADMIN_PREVIEW', 'false')}",
34
35
  "--authentication=none",
35
36
  "--payment-method=none",
36
37
  "--migrate=false",
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cancan'
4
+
5
+ class DummyAbility
6
+ include CanCan::Ability
7
+ end
@@ -0,0 +1 @@
1
+ /* Placeholder for compiled tailwind.css file */
@@ -1,54 +1,45 @@
1
- <% db = case ENV['DB']
2
- when 'mysql'
3
- 'mysql'
4
- when 'postgres', 'postgresql'
5
- 'postgres'
6
- when 'sqlite', '', nil
7
- 'sqlite'
8
- else
9
- raise "Invalid DB specified: #{ENV['DB']}"
10
- end %>
11
- <% db_host = case db
12
- when 'mysql'
13
- ENV['DB_MYSQL_HOST'] || ENV['DB_HOST']
14
- when 'postgres'
15
- ENV['DB_POSTGRES_HOST'] || ENV['DB_HOST']
16
- else
17
- ENV['DB_HOST']
18
- end %>
19
- <% db_prefix = ENV['LIB_NAME'].presence || "solidus" %>
20
- <% db_username = ENV['DB_USERNAME'] %>
21
- <% db_password = ENV['DB_PASSWORD'] %>
22
- <% case db
23
- when 'mysql' %>
1
+ <%
2
+ adapter =
3
+ case ENV['DB']
4
+ when 'mysql2', 'mysql' then 'mysql2'
5
+ when 'postgresql', 'postgres' then 'postgresql'
6
+ when 'sqlite3', 'sqlite', '', nil then 'sqlite3'
7
+ else raise "Invalid DB specified " + ENV['DB'].inspect
8
+ end
9
+
10
+ db_host =
11
+ case adapter
12
+ when 'mysql2' then ENV['DB_MYSQL_HOST'] || ENV['DB_HOST']
13
+ when 'postgresql' then ENV['DB_POSTGRES_HOST'] || ENV['DB_HOST']
14
+ else ENV['DB_HOST']
15
+ end
16
+
17
+ db_prefix = ENV['LIB_NAME'].presence || "solidus"
18
+ db_username = ENV['DB_USERNAME']
19
+ db_password = ENV['DB_PASSWORD'] %>
20
+
21
+ default: &default
22
+ adapter: <%= adapter %>
23
+ <% unless db_username.blank? %>username: <%= db_username %><% end %>
24
+ <% unless db_password.blank? %>password: <%= db_password %><% end %>
25
+ <% unless db_host.blank? %>host: <%= db_host %><% end %>
26
+ <% if adapter == 'mysql2' %>encoding: utf8<% end %>
27
+ <% if adapter == 'postgresql' %>min_messages: warning<% end %>
28
+
29
+ <% if adapter == 'mysql2' %>
24
30
  test:
25
- adapter: mysql2
31
+ <<: *default
26
32
  database: <%= db_prefix %>_test
27
- <% unless db_username.blank? %>
28
- username: <%= db_username %>
29
- <% end %>
30
- <% unless db_password.blank? %>
31
- password: <%= db_password %>
32
- <% end %>
33
- <% unless db_host.blank? %>
34
- host: <%= db_host %>
35
- <% end %>
36
- encoding: utf8
37
- <% when 'postgres' %>
33
+
34
+ <% elsif adapter == 'postgresql' %>
38
35
  test:
39
- adapter: postgresql
36
+ <<: *default
40
37
  database: <%= db_prefix %>_test
41
- username: <%= db_username.presence || "postgres" %>
42
- <% unless db_password.blank? %>
43
- password: <%= db_password %>
44
- <% end %>
45
- <% unless db_host.blank? %>
46
- host: <%= db_host %>
47
- <% end %>
48
- min_messages: warning
49
- <% when 'sqlite' %>
38
+
39
+ <% elsif adapter == 'sqlite3' %>
50
40
  test:
51
- adapter: sqlite3
41
+ <<: *default
52
42
  database: db/<%= db_prefix %>_test.sqlite3
53
43
  timeout: 10000
44
+
54
45
  <% end %>
@@ -4,21 +4,6 @@ module DummyApp
4
4
  module Migrations
5
5
  extend self
6
6
 
7
- # Ensure database exists
8
- def database_exists?
9
- ActiveRecord::Base.connection
10
- rescue ActiveRecord::NoDatabaseError
11
- false
12
- else
13
- true
14
- end
15
-
16
- def needs_migration?
17
- return true if !database_exists?
18
-
19
- ActiveRecord::Base.connection.migration_context.needs_migration?
20
- end
21
-
22
7
  def auto_migrate
23
8
  if needs_migration?
24
9
  puts "Configuration changed. Re-running migrations"
@@ -35,6 +20,14 @@ module DummyApp
35
20
 
36
21
  private
37
22
 
23
+ def needs_migration?
24
+ ActiveRecord::Migration.check_all_pending!
25
+ rescue ActiveRecord::PendingMigrationError, ActiveRecord::NoDatabaseError
26
+ true
27
+ else
28
+ false
29
+ end
30
+
38
31
  def sh(cmd)
39
32
  puts cmd
40
33
  system cmd