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
@@ -2,87 +2,54 @@
2
2
 
3
3
  module Spree
4
4
  module Core
5
- class StateMachines
6
- attr_writer :reimbursement,
7
- :return_authorization,
8
- :return_item_acceptance,
9
- :return_item_reception,
10
- :payment,
11
- :inventory_unit,
12
- :shipment,
13
- :order
14
-
15
- def return_authorization
16
- @return_authorization ||= begin
17
- require 'spree/core/state_machines/return_authorization'
18
- 'Spree::Core::StateMachines::ReturnAuthorization'
19
- end
20
-
21
- @return_authorization.constantize
22
- end
23
-
24
- def return_item_reception
25
- @return_item_reception_status ||= begin
26
- require 'spree/core/state_machines/return_item/reception_status'
27
- 'Spree::Core::StateMachines::ReturnItem::ReceptionStatus'
28
- end
29
-
30
- @return_item_reception_status.constantize
31
- end
32
-
33
- def return_item_acceptance
34
- @return_item_acceptance_status ||= begin
35
- require 'spree/core/state_machines/return_item/acceptance_status'
36
- 'Spree::Core::StateMachines::ReturnItem::AcceptanceStatus'
37
- end
38
-
39
- @return_item_acceptance_status.constantize
40
- end
41
-
42
- def payment
43
- @payment ||= begin
44
- require 'spree/core/state_machines/payment'
45
- 'Spree::Core::StateMachines::Payment'
46
- end
47
-
48
- @payment.constantize
49
- end
50
-
51
- def inventory_unit
52
- @inventory_unit ||= begin
53
- require 'spree/core/state_machines/inventory_unit'
54
- 'Spree::Core::StateMachines::InventoryUnit'
55
- end
56
-
57
- @inventory_unit.constantize
58
- end
59
-
60
- def shipment
61
- @shipment ||= begin
62
- require 'spree/core/state_machines/shipment'
63
- 'Spree::Core::StateMachines::Shipment'
64
- end
65
-
66
- @shipment.constantize
67
- end
68
-
69
- def order
70
- @order ||= begin
71
- require 'spree/core/state_machines/order'
72
- 'Spree::Core::StateMachines::Order'
73
- end
74
-
75
- @order.constantize
76
- end
77
-
78
- def reimbursement
79
- @reimbursement ||= begin
80
- require 'spree/core/state_machines/reimbursement'
81
- 'Spree::Core::StateMachines::Reimbursement'
82
- end
83
-
84
- @reimbursement.constantize
85
- end
5
+ class StateMachines < Spree::Preferences::Configuration
6
+ # State Machine module for Reimbursements
7
+ #
8
+ # @!attribute [rw] reimbursement
9
+ # @return [Module] a module that implements the state machine for the `Spree::Reimbursement` model.
10
+ class_name_attribute :reimbursement, default: "Spree::Core::StateMachines::Reimbursement"
11
+
12
+ # State Machine module for Return Authorizations
13
+ #
14
+ # @!attribute [rw] return_authorization
15
+ # @return [Module] a module that implements the state machine for the `Spree::ReturnAuthorization` model.
16
+ class_name_attribute :return_authorization, default: "Spree::Core::StateMachines::ReturnAuthorization"
17
+
18
+ # State Machine module for Return Item Acceptances
19
+ #
20
+ # @!attribute [rw] return_item_acceptance
21
+ # @return [Module] a module that implements the acceptance part of the state machine for the `Spree::ReturnItem` model.
22
+ class_name_attribute :return_item_acceptance, default: "Spree::Core::StateMachines::ReturnItem::AcceptanceStatus"
23
+
24
+ # State Machine module for Return Item Receptions
25
+ #
26
+ # @!attribute [rw] return_item_reception
27
+ # @return [Module] a module that implements the reception part of the state machine for the `Spree::ReturnItem` model.
28
+ class_name_attribute :return_item_reception, default: "Spree::Core::StateMachines::ReturnItem::ReceptionStatus"
29
+
30
+ # State Machine module for Payments
31
+ #
32
+ # @!attribute [rw] payment
33
+ # @return [Module] a module that implements the state machine for the `Spree::Payment` model.
34
+ class_name_attribute :payment, default: "Spree::Core::StateMachines::Payment"
35
+
36
+ # State Machine module for Inventory Units
37
+ #
38
+ # @!attribute [rw] inventory_unit
39
+ # @return [Module] a module that implements the state machine for the `Spree::InventoryUnit` model.
40
+ class_name_attribute :inventory_unit, default: "Spree::Core::StateMachines::InventoryUnit"
41
+
42
+ # State Machine module for Shipments
43
+ #
44
+ # @!attribute [rw] shipment
45
+ # @return [Module] a module that implements the state machine for the `Spree::Shipment` model.
46
+ class_name_attribute :shipment, default: "Spree::Core::StateMachines::Shipment"
47
+
48
+ # State Machine module for Orders
49
+ #
50
+ # @!attribute [rw] order
51
+ # @return [Module] a module that implements the state machine for the `Spree::Order` model.
52
+ class_name_attribute :order, default: "Spree::Core::StateMachines::Order"
86
53
  end
87
54
  end
88
55
  end
@@ -14,7 +14,7 @@ module Spree
14
14
  class EmailValidator < ActiveModel::EachValidator
15
15
  def validate_each(record, attribute, value)
16
16
  unless Spree::Config.default_email_regexp.match? value
17
- record.errors.add(attribute, :invalid, **{ value: value }.merge!(options))
17
+ record.errors.add(attribute, :invalid, **{ value: }.merge!(options))
18
18
  end
19
19
  end
20
20
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spree
4
- VERSION = "4.1.6"
4
+ VERSION = "4.5.1"
5
5
 
6
6
  def self.solidus_version
7
7
  VERSION
8
8
  end
9
9
 
10
10
  def self.previous_solidus_minor_version
11
- '4.0'
11
+ '4.4'
12
12
  end
13
13
 
14
14
  def self.solidus_gem_version
data/lib/spree/core.rb CHANGED
@@ -11,6 +11,7 @@ require "sprockets/railtie"
11
11
 
12
12
  require 'active_support/deprecation'
13
13
  require 'spree/deprecated_instance_variable_proxy'
14
+ require 'spree/deprecator'
14
15
  require 'acts_as_list'
15
16
  require 'awesome_nested_set'
16
17
  require 'cancan'
@@ -26,10 +27,6 @@ require 'state_machines-activerecord'
26
27
  StateMachines::Machine.ignore_method_conflicts = true
27
28
 
28
29
  module Spree
29
- def self.deprecator
30
- @deprecator ||= ActiveSupport::Deprecation.new('5.0', 'Solidus')
31
- end
32
-
33
30
  autoload :Deprecation, 'spree/deprecation'
34
31
 
35
32
  mattr_accessor :user_class, default: 'Spree::LegacyUser'
@@ -108,25 +105,16 @@ require 'spree/core/engine'
108
105
 
109
106
  require 'spree/i18n'
110
107
  require 'spree/localized_number'
111
- require 'spree/money'
112
108
  require 'spree/permitted_attributes'
113
109
 
114
110
  require 'spree/core/importer'
115
111
  require 'spree/core/permalinks'
116
112
  require 'spree/core/product_duplicator'
117
- require 'spree/core/controller_helpers/auth'
118
- require 'spree/core/controller_helpers/common'
119
- require 'spree/core/controller_helpers/order'
120
- require 'spree/core/controller_helpers/payment_parameters'
121
- require 'spree/core/controller_helpers/pricing'
122
- require 'spree/core/controller_helpers/search'
123
- require 'spree/core/controller_helpers/store'
124
- require 'spree/core/controller_helpers/strong_parameters'
125
113
  require 'spree/core/role_configuration'
126
114
  require 'spree/core/state_machines'
127
115
  require 'spree/core/stock_configuration'
116
+ require 'spree/core/null_promotion_configuration'
128
117
  require 'spree/core/validators/email'
129
- require 'spree/permission_sets'
130
118
  require 'spree/user_class_handle'
131
119
 
132
120
  require 'spree/preferences/store'
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/deprecation'
4
+
5
+ module Spree
6
+ def self.deprecator
7
+ @deprecator ||= ActiveSupport::Deprecation.new('5.0', 'Solidus')
8
+ end
9
+ end
data/lib/spree/i18n.rb CHANGED
@@ -5,7 +5,7 @@ require 'i18n'
5
5
  module Spree
6
6
  def self.i18n_available_locales
7
7
  I18n.available_locales.select do |locale|
8
- I18n.t('spree.i18n.this_file_language', locale: locale, fallback: false, default: nil)
8
+ I18n.t('spree.i18n.this_file_language', locale:, fallback: false, default: nil)
9
9
  end
10
10
  end
11
11
 
@@ -7,7 +7,7 @@ module Spree
7
7
  carton = Carton.joins(:orders).last
8
8
  raise "Your database needs at least one shipped order with a carton to render this preview" unless carton
9
9
 
10
- Spree::Config.carton_shipped_email_class.shipped_email(order: carton.orders.first, carton: carton)
10
+ Spree::Config.carton_shipped_email_class.shipped_email(order: carton.orders.first, carton:)
11
11
  end
12
12
  end
13
13
  end
data/lib/spree/money.rb CHANGED
@@ -1,120 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- # Spree::Money is a relatively thin wrapper around Monetize which handles
5
- # formatting via Spree::Config.
6
- class Money
7
- include Comparable
8
- DifferentCurrencyError = Class.new(StandardError)
9
-
10
- class <<self
11
- attr_accessor :default_formatting_rules
12
-
13
- def parse(amount, currency = Spree::Config[:currency])
14
- new(parse_to_money(amount, currency))
15
- end
16
-
17
- # @api private
18
- def parse_to_money(amount, currency)
19
- ::Monetize.parse(amount, currency)
20
- end
21
- end
22
- self.default_formatting_rules = {
23
- # Ruby money currently has this as false, which is wrong for the vast
24
- # majority of locales.
25
- sign_before_symbol: true
26
- }
27
-
28
- attr_reader :money
29
-
30
- delegate :cents, :currency, :to_d, :zero?, to: :money
31
-
32
- # @param amount [Money, #to_s] the value of the money object
33
- # @param options [Hash] the default options for formatting the money object See #format
34
- def initialize(amount, options = {})
35
- if amount.is_a?(::Money)
36
- @money = amount
37
- else
38
- currency = options[:currency] || Spree::Config[:currency]
39
-
40
- @money = Monetize.from_string(amount, currency)
41
- end
42
- @options = Spree::Money.default_formatting_rules.merge(options)
43
- end
44
-
45
- # @return [String] the value of this money object formatted according to
46
- # its options
47
- def to_s
48
- format
49
- end
50
-
51
- # @param options [Hash, String] the options for formatting the money object
52
- # @option options [Boolean] with_currency when true, show the currency
53
- # @option options [Boolean] no_cents when true, round to the closest dollar
54
- # @option options [String] decimal_mark the mark for delimiting the
55
- # decimals
56
- # @option options [String, false, nil] thousands_separator the character to
57
- # delimit powers of 1000, if one is desired, otherwise false or nil
58
- # @option options [Boolean] sign_before_symbol when true the sign of the
59
- # value comes before the currency symbol
60
- # @option options [:before, :after] symbol_position the position of the
61
- # currency symbol
62
- # @return [String] the value of this money object formatted according to
63
- # its options
64
- def format(options = {})
65
- @money.format(@options.merge(options))
66
- end
67
-
68
- # @note If you pass in options, ensure you pass in the { html_wrap: true } as well.
69
- # @param options [Hash] additional formatting options
70
- # @return [String] the value of this money object formatted according to
71
- # its options and any additional options, by default with html_wrap.
72
- def to_html(options = { html_wrap: true })
73
- output = format(options)
74
- # Maintain compatibility by checking html option renamed to html_wrap.
75
- if options[:html_wrap]
76
- output = output.html_safe
77
- end
78
- output
79
- end
80
-
81
- # (see #to_s)
82
- def as_json(*)
83
- to_s
84
- end
85
-
86
- def <=>(other)
87
- if !other.respond_to?(:money)
88
- raise TypeError, "Can't compare #{other.class} to Spree::Money"
89
- end
90
- if currency != other.currency
91
- # By default, ::Money will try to run a conversion on `other.money` and
92
- # try a comparison on that. We do not want any currency conversion to
93
- # take place so we'll catch this here and raise an error.
94
- raise(
95
- DifferentCurrencyError,
96
- "Can't compare #{currency} with #{other.currency}"
97
- )
98
- end
99
- @money <=> other.money
100
- end
101
-
102
- # Delegates comparison to the internal ruby money instance.
103
- #
104
- # @see http://www.rubydoc.info/gems/money/Money/Arithmetic#%3D%3D-instance_method
105
- def ==(other)
106
- raise TypeError, "Can't compare #{other.class} to Spree::Money" if !other.respond_to?(:money)
107
- @money == other.money
108
- end
109
-
110
- def -(other)
111
- raise TypeError, "Can't subtract #{other.class} to Spree::Money" if !other.respond_to?(:money)
112
- self.class.new(@money - other.money)
113
- end
114
-
115
- def +(other)
116
- raise TypeError, "Can't add #{other.class} to Spree::Money" if !other.respond_to?(:money)
117
- self.class.new(@money + other.money)
118
- end
119
- end
120
- 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,32 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # This is the base class used for crafting permission sets.
6
- #
7
- # This is used by {Spree::RoleConfiguration} when adding custom behavior to {Spree::Ability}.
8
- # See one of the subclasses for example structure such as {Spree::PermissionSets::UserDisplay}
9
- #
10
- # @see Spree::RoleConfiguration
11
- # @see Spree::PermissionSets
12
- class Base
13
- # @param ability [CanCan::Ability]
14
- # The ability that will be extended with the current permission set.
15
- # The ability passed in must respond to #user
16
- def initialize(ability)
17
- @ability = ability
18
- end
19
-
20
- # Activate permissions on the ability. Put your can and cannot statements here.
21
- # Must be overriden by subclasses
22
- def activate!
23
- raise NotImplementedError.new
24
- end
25
-
26
- private
27
-
28
- attr_reader :ability
29
- delegate :can, :cannot, :user, to: :ability
30
- end
31
- end
32
- 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,43 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Read-only permissions for e-commerce settings.
6
- #
7
- # Roles with this permission will be able to view information, also from the admin
8
- # panel, about:
9
- #
10
- # - Tax categories
11
- # - Tax rates
12
- # - Zones
13
- # - Countries
14
- # - States
15
- # - Payment methods
16
- # - Taxonomies
17
- # - Shipping methods
18
- # - Shipping categories
19
- # - Stock locations
20
- # - Stock movements
21
- # - Refund reasons
22
- # - Reimbursement types
23
- # - Return reasons
24
- class ConfigurationDisplay < PermissionSets::Base
25
- def activate!
26
- can [:read, :admin], Spree::TaxCategory
27
- can [:read, :admin], Spree::TaxRate
28
- can [:read, :admin], Spree::Zone
29
- can [:read, :admin], Spree::Country
30
- can [:read, :admin], Spree::State
31
- can [:read, :admin], Spree::PaymentMethod
32
- can [:read, :admin], Spree::Taxonomy
33
- can [:read, :admin], Spree::ShippingMethod
34
- can [:read, :admin], Spree::ShippingCategory
35
- can [:read, :admin], Spree::StockLocation
36
- can [:read, :admin], Spree::StockMovement
37
- can [:read, :admin], Spree::RefundReason
38
- can [:read, :admin], Spree::ReimbursementType
39
- can [:read, :admin], Spree::ReturnReason
40
- end
41
- end
42
- end
43
- 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,42 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Read and write permissions for e-commerce settings.
6
- #
7
- # Roles with this permission set will have full control over:
8
- #
9
- # - Tax categories
10
- # - Tax rates
11
- # - Zones
12
- # - Countries
13
- # - States
14
- # - Payment methods
15
- # - Taxonomies
16
- # - Shipping methods
17
- # - Shipping categories
18
- # - Stock locations
19
- # - Stock movements
20
- # - Refund reasons
21
- # - Reimbursement types
22
- # - Return reasons
23
- class ConfigurationManagement < PermissionSets::Base
24
- def activate!
25
- can :manage, Spree::TaxCategory
26
- can :manage, Spree::TaxRate
27
- can :manage, Spree::Zone
28
- can :manage, Spree::Country
29
- can :manage, Spree::State
30
- can :manage, Spree::PaymentMethod
31
- can :manage, Spree::Taxonomy
32
- can :manage, Spree::ShippingMethod
33
- can :manage, Spree::ShippingCategory
34
- can :manage, Spree::StockLocation
35
- can :manage, Spree::StockMovement
36
- can :manage, Spree::RefundReason
37
- can :manage, Spree::ReimbursementType
38
- can :manage, Spree::ReturnReason
39
- end
40
- end
41
- end
42
- 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
- # Permissions for viewing the admin dashboard.
6
- #
7
- # Roles with this permission set will be able to view the admin dashboard,
8
- # which may or not contain sensitive information depending on
9
- # customizations.
10
- class DashboardDisplay < PermissionSets::Base
11
- def activate!
12
- can [:admin, :home], :dashboards
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,73 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Permissions for e-commerce customers.
6
- #
7
- # This permission set is always added to the `:default` role, which in turn
8
- # is the default role for all users without any explicit roles.
9
- #
10
- # Permissions include reading and updating orders when the ability's user
11
- # has been assigned as the order's user, unless the order is already
12
- # completed. Same is true for guest checkout orders.
13
- #
14
- # It grants read-only permissions for the following resources typically used
15
- # during a checkout process:
16
- #
17
- # - Zones
18
- # - Countries
19
- # - States
20
- # - Taxons
21
- # - Taxonomies
22
- # - Products
23
- # - Properties
24
- # - Product properties
25
- # - Variants
26
- # - Option types
27
- # - Option values
28
- # - Stock items
29
- # - Stock locations
30
- #
31
- # Abilities with this role can also create refund authorizations for orders
32
- # with the same user, as well as reading and updating the user record and
33
- # their associated cards.
34
- class DefaultCustomer < PermissionSets::Base
35
- def activate!
36
- can :read, Country
37
- can :read, OptionType
38
- can :read, OptionValue
39
- can :create, Order do |order, token|
40
- # same user, or both nil
41
- order.user == user ||
42
- # guest checkout order
43
- order.email.present? ||
44
- # via API, just like with show and update
45
- (order.guest_token.present? && token == order.guest_token)
46
- end
47
- can [:show, :update], Order, Order.where(user: user) do |order, token|
48
- order.user == user || (order.guest_token.present? && token == order.guest_token)
49
- end
50
- cannot :update, Order do |order|
51
- order.completed?
52
- end
53
- can :create, ReturnAuthorization do |return_authorization|
54
- return_authorization.order.user == user
55
- end
56
- can [:read, :update], CreditCard, user_id: user.id
57
- can :read, Product
58
- can :read, ProductProperty
59
- can :read, Property
60
- can :create, Spree.user_class
61
- can [:show, :update, :update_email], Spree.user_class, id: user.id
62
- can :read, State
63
- can :read, StockItem, stock_location: { active: true }
64
- can :read, StockLocation, active: true
65
- can :read, Taxon
66
- can :read, Taxonomy
67
- can [:save_in_address_book, :remove_from_address_book], Spree.user_class, id: user.id
68
- can [:read, :view_out_of_stock], Variant
69
- can :read, Zone
70
- end
71
- end
72
- end
73
- 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,40 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module PermissionSets
5
- # Read permissions for orders.
6
- #
7
- # This permission set allows users to view all related information about
8
- # orders, also from the admin panel, 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
- # However, it does not allow any modifications to be made to any of these
23
- # resources.
24
- class OrderDisplay < PermissionSets::Base
25
- def activate!
26
- can [:read, :admin, :edit, :cart], Spree::Order
27
- can [:read, :admin], Spree::Payment
28
- can [:read, :admin], Spree::Shipment
29
- can [:read, :admin], Spree::Adjustment
30
- can [:read, :admin], Spree::LineItem
31
- can [:read, :admin], Spree::ReturnAuthorization
32
- can [:read, :admin], Spree::CustomerReturn
33
- can [:read, :admin], Spree::OrderCancellations
34
- can [:read, :admin], Spree::Reimbursement
35
- can [:read, :admin], Spree::ReturnItem
36
- can [:read, :admin], 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
+ )