solidus_core 4.3.6 → 4.4.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 (213) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +2 -2
  3. data/app/mailers/spree/base_mailer.rb +1 -1
  4. data/app/mailers/spree/carton_mailer.rb +1 -1
  5. data/app/mailers/spree/order_mailer.rb +3 -3
  6. data/app/mailers/spree/reimbursement_mailer.rb +1 -1
  7. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
  8. data/app/models/concerns/spree/active_storage_adapter.rb +1 -1
  9. data/app/models/concerns/spree/display_money.rb +1 -1
  10. data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
  11. data/app/models/concerns/spree/user_address_book.rb +4 -4
  12. data/app/models/concerns/spree/user_methods.rb +3 -3
  13. data/app/models/spree/address.rb +6 -6
  14. data/app/models/spree/adjustment.rb +13 -66
  15. data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
  16. data/app/models/spree/carton.rb +2 -2
  17. data/app/models/spree/credit_card.rb +6 -6
  18. data/app/models/spree/deprecated_configurable_class.rb +40 -0
  19. data/app/models/spree/fulfilment_changer.rb +4 -4
  20. data/app/models/spree/inventory_unit.rb +2 -2
  21. data/app/models/spree/line_item.rb +1 -1
  22. data/app/models/spree/null_promotion_adjuster.rb +13 -0
  23. data/app/models/spree/null_promotion_advertiser.rb +9 -0
  24. data/app/models/spree/null_promotion_finder.rb +9 -0
  25. data/app/models/spree/null_promotion_handler.rb +44 -0
  26. data/app/models/spree/order.rb +15 -22
  27. data/app/models/spree/order_cancellations.rb +8 -8
  28. data/app/models/spree/order_mutex.rb +2 -2
  29. data/app/models/spree/order_shipping.rb +10 -9
  30. data/app/models/spree/order_updater.rb +6 -10
  31. data/app/models/spree/payment/processing.rb +2 -2
  32. data/app/models/spree/payment.rb +2 -2
  33. data/app/models/spree/payment_create.rb +1 -1
  34. data/app/models/spree/payment_method/store_credit.rb +1 -1
  35. data/app/models/spree/payment_source.rb +5 -1
  36. data/app/models/spree/permission_set.rb +11 -0
  37. data/app/models/spree/product.rb +7 -28
  38. data/app/models/spree/refund.rb +1 -1
  39. data/app/models/spree/reimbursement.rb +4 -4
  40. data/app/models/spree/reimbursement_performer.rb +3 -3
  41. data/app/models/spree/reimbursement_tax_calculator.rb +2 -2
  42. data/app/models/spree/reimbursement_type/credit.rb +1 -1
  43. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
  44. data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
  45. data/app/models/spree/return_item.rb +9 -9
  46. data/app/models/spree/role.rb +3 -1
  47. data/app/models/spree/role_permission.rb +8 -0
  48. data/app/models/spree/shipment.rb +7 -7
  49. data/app/models/spree/shipping_category.rb +2 -0
  50. data/app/models/spree/shipping_rate.rb +1 -1
  51. data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +4 -11
  52. data/app/models/spree/stock/estimator.rb +1 -1
  53. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  54. data/app/models/spree/stock/package.rb +2 -2
  55. data/app/models/spree/stock/simple_coordinator.rb +1 -1
  56. data/app/models/spree/stock_location.rb +5 -5
  57. data/app/models/spree/store.rb +1 -1
  58. data/app/models/spree/store_credit.rb +15 -15
  59. data/app/models/spree/store_credit_event.rb +3 -3
  60. data/app/models/spree/tax_calculator/default.rb +2 -2
  61. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -1
  62. data/app/models/spree/tax_category.rb +3 -1
  63. data/app/models/spree/tax_rate.rb +3 -3
  64. data/app/models/spree/taxonomy.rb +2 -2
  65. data/app/models/spree/unit_cancel.rb +1 -2
  66. data/app/models/spree/variant/vat_price_generator.rb +1 -1
  67. data/app/models/spree/variant.rb +7 -2
  68. data/app/models/spree/wallet.rb +2 -2
  69. data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
  70. data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
  71. data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
  72. data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
  73. data/config/locales/en.yml +4 -91
  74. data/db/default/spree/permission_sets.rb +10 -0
  75. data/db/default/spree/return_reasons.rb +3 -1
  76. data/db/default/spree/states.rb +1 -1
  77. data/db/migrate/20160101010000_solidus_one_four.rb +0 -117
  78. data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
  79. data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
  80. data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
  81. data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
  82. data/db/seeds.rb +1 -0
  83. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  84. data/lib/generators/solidus/update/update_generator.rb +1 -1
  85. data/lib/generators/spree/dummy/templates/rails/test.rb +6 -1
  86. data/lib/spree/app_configuration.rb +53 -84
  87. data/lib/spree/core/class_constantizer.rb +2 -2
  88. data/lib/spree/core/controller_helpers/payment_parameters.rb +1 -1
  89. data/lib/spree/core/engine.rb +1 -0
  90. data/lib/spree/core/environment/calculators.rb +35 -3
  91. data/lib/spree/core/environment/promotions.rb +25 -4
  92. data/lib/spree/core/environment_extension.rb +16 -2
  93. data/lib/spree/core/importer/order.rb +5 -5
  94. data/lib/spree/core/importer/product.rb +3 -3
  95. data/lib/spree/core/nested_class_set.rb +28 -0
  96. data/lib/spree/core/null_promotion_configuration.rb +84 -0
  97. data/lib/spree/core/product_filters.rb +1 -1
  98. data/lib/spree/core/search/variant.rb +2 -2
  99. data/lib/spree/core/state_machines/order.rb +0 -1
  100. data/lib/spree/core/validators/email.rb +1 -1
  101. data/lib/spree/core/version.rb +2 -2
  102. data/lib/spree/core.rb +2 -10
  103. data/lib/spree/deprecator.rb +9 -0
  104. data/lib/spree/i18n.rb +1 -1
  105. data/lib/spree/mailer_previews/carton_preview.rb +1 -1
  106. data/lib/spree/permission_sets/base.rb +13 -1
  107. data/lib/spree/permission_sets/configuration_display.rb +10 -0
  108. data/lib/spree/permission_sets/configuration_management.rb +10 -0
  109. data/lib/spree/permission_sets/dashboard_display.rb +12 -0
  110. data/lib/spree/permission_sets/default_customer.rb +11 -1
  111. data/lib/spree/permission_sets/order_display.rb +10 -0
  112. data/lib/spree/permission_sets/order_management.rb +10 -0
  113. data/lib/spree/permission_sets/product_display.rb +10 -0
  114. data/lib/spree/permission_sets/product_management.rb +10 -0
  115. data/lib/spree/permission_sets/restricted_stock_display.rb +10 -0
  116. data/lib/spree/permission_sets/restricted_stock_management.rb +10 -0
  117. data/lib/spree/permission_sets/stock_display.rb +10 -0
  118. data/lib/spree/permission_sets/stock_management.rb +10 -0
  119. data/lib/spree/permission_sets/super_user.rb +10 -0
  120. data/lib/spree/permission_sets/user_display.rb +10 -0
  121. data/lib/spree/permission_sets/user_management.rb +10 -0
  122. data/lib/spree/permission_sets.rb +0 -2
  123. data/lib/spree/permitted_attributes.rb +2 -2
  124. data/lib/spree/preferences/store.rb +2 -2
  125. data/lib/spree/testing_support/capybara_ext.rb +1 -1
  126. data/lib/spree/testing_support/dummy_ability.rb +7 -0
  127. data/lib/spree/testing_support/dummy_app/database.yml +2 -2
  128. data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
  129. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +2 -2
  130. data/lib/spree/testing_support/dummy_app.rb +13 -11
  131. data/lib/spree/testing_support/extension_rake.rb +2 -2
  132. data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -2
  133. data/lib/spree/testing_support/factories/calculator_factory.rb +1 -5
  134. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  135. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  136. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +3 -3
  137. data/lib/spree/testing_support/factories/order_factory.rb +5 -24
  138. data/lib/spree/testing_support/factories/product_factory.rb +1 -1
  139. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -1
  140. data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -1
  141. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  142. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  143. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  144. data/lib/spree/testing_support/order_walkthrough.rb +3 -3
  145. data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
  146. data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
  147. data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
  148. data/lib/spree/user_class_handle.rb +2 -2
  149. data/lib/tasks/colorado_delivery_fee.rake +2 -2
  150. data/solidus_core.gemspec +5 -7
  151. metadata +54 -91
  152. data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
  153. data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
  154. data/app/models/spree/calculator/distributed_amount.rb +0 -33
  155. data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
  156. data/app/models/spree/calculator/flexi_rate.rb +0 -22
  157. data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
  158. data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
  159. data/app/models/spree/calculator/tiered_percent.rb +0 -62
  160. data/app/models/spree/order_promotion.rb +0 -27
  161. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -81
  162. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -98
  163. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
  164. data/app/models/spree/promotion/actions/free_shipping.rb +0 -59
  165. data/app/models/spree/promotion/order_adjustments_recalculator.rb +0 -92
  166. data/app/models/spree/promotion/rules/first_order.rb +0 -38
  167. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
  168. data/app/models/spree/promotion/rules/item_total.rb +0 -86
  169. data/app/models/spree/promotion/rules/minimum_quantity.rb +0 -59
  170. data/app/models/spree/promotion/rules/nth_order.rb +0 -45
  171. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
  172. data/app/models/spree/promotion/rules/option_value.rb +0 -50
  173. data/app/models/spree/promotion/rules/product.rb +0 -86
  174. data/app/models/spree/promotion/rules/store.rb +0 -26
  175. data/app/models/spree/promotion/rules/taxon.rb +0 -91
  176. data/app/models/spree/promotion/rules/user.rb +0 -34
  177. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
  178. data/app/models/spree/promotion/rules/user_role.rb +0 -45
  179. data/app/models/spree/promotion.rb +0 -271
  180. data/app/models/spree/promotion_action.rb +0 -47
  181. data/app/models/spree/promotion_category.rb +0 -8
  182. data/app/models/spree/promotion_chooser.rb +0 -34
  183. data/app/models/spree/promotion_code/batch_builder.rb +0 -64
  184. data/app/models/spree/promotion_code.rb +0 -54
  185. data/app/models/spree/promotion_code_batch.rb +0 -27
  186. data/app/models/spree/promotion_handler/cart.rb +0 -75
  187. data/app/models/spree/promotion_handler/coupon.rb +0 -123
  188. data/app/models/spree/promotion_handler/page.rb +0 -26
  189. data/app/models/spree/promotion_handler/shipping.rb +0 -61
  190. data/app/models/spree/promotion_rule.rb +0 -55
  191. data/app/models/spree/promotion_rule_store.rb +0 -10
  192. data/app/models/spree/promotion_rule_taxon.rb +0 -8
  193. data/app/models/spree/promotion_rule_user.rb +0 -10
  194. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
  195. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
  196. data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
  197. data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
  198. data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
  199. data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
  200. data/db/migrate/20220317165036_set_promotions_with_any_policy_to_all_if_possible.rb +0 -20
  201. data/db/migrate/20230322085416_remove_match_policy_from_spree_promotion.rb +0 -5
  202. data/db/migrate/20230325132905_remove_unused_columns_from_promotion_rules.rb +0 -6
  203. data/db/migrate/20230325161633_drop_unused_promo_action_line_items.rb +0 -13
  204. data/db/migrate/20231027084517_add_order_promotions_foreign_key.rb +0 -10
  205. data/db/migrate/20231031175215_add_promotion_order_promotion_foreign_key.rb +0 -10
  206. data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
  207. data/lib/spree/permission_sets/promotion_display.rb +0 -25
  208. data/lib/spree/permission_sets/promotion_management.rb +0 -25
  209. data/lib/spree/ransack_4_1_patch.rb +0 -16
  210. data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -8
  211. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -7
  212. data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -8
  213. data/lib/spree/testing_support/factories/promotion_factory.rb +0 -98
@@ -410,6 +410,7 @@ en:
410
410
  analytics_id: Analytics ID
411
411
  spree/user:
412
412
  email: Email
413
+ last_active: Last active
413
414
  lifetime_value: Total spent
414
415
  password: Password
415
416
  password_confirmation: Password Confirmation
@@ -877,27 +878,6 @@ en:
877
878
  new_price: New Price
878
879
  table:
879
880
  variant_pricing: Variant Prices
880
- promotion_status:
881
- active: Active
882
- expired: Expired
883
- inactive: Inactive
884
- not_started: Not started
885
- promotions:
886
- actions:
887
- calculator_label: Calculated by
888
- activations_edit:
889
- auto: All orders will attempt to use this promotion
890
- multiple_codes_html: This promotion uses %{count} promotion codes
891
- single_code_html: 'This promotion uses the promotion code: <code>%{code}</code>'
892
- activations_new:
893
- auto: Apply to all orders
894
- multiple_codes: Multiple promotion codes
895
- single_code: Single promotion code
896
- form:
897
- activation: Activation
898
- expires_at_placeholder: Never
899
- general: General
900
- starts_at_placeholder: Immediately
901
881
  shipping_methods:
902
882
  form:
903
883
  stock_locations_placeholder: Choose stock locations
@@ -963,8 +943,6 @@ en:
963
943
  overview: Overview
964
944
  payments: Payments
965
945
  products: Products
966
- promotion_categories: Promotion Categories
967
- promotions: Promotions
968
946
  properties: Property Types
969
947
  rma: RMA
970
948
  settings: Settings
@@ -1066,8 +1044,6 @@ en:
1066
1044
  back_to_payment_methods_list: Back To Payment Methods List
1067
1045
  back_to_payments_list: Back To Payments List
1068
1046
  back_to_products_list: Back To Products List
1069
- back_to_promotion_categories_list: Back To Promotions Categories List
1070
- back_to_promotions_list: Back To Promotions List
1071
1047
  back_to_properties_list: Back To Property Types List
1072
1048
  back_to_refund_reason_list: Back To Refund Reason List
1073
1049
  back_to_reimbursement_type_list: Back To Reimbursement Type List
@@ -1093,7 +1069,6 @@ en:
1093
1069
  backordered: Backordered
1094
1070
  backorders_allowed: backorders allowed
1095
1071
  balance_due: Balance Due
1096
- base_amount: Base Amount
1097
1072
  base_percent: Base Percent
1098
1073
  bill_address: Bill Address
1099
1074
  bill_address_required: Valid billing address required
@@ -1143,8 +1118,6 @@ en:
1143
1118
  choose_dashboard_locale: Choose Dashboard Locale
1144
1119
  choose_dashboard_theme: Choose Dashboard Theme
1145
1120
  choose_location: Choose Location
1146
- choose_promotion_action: Choose Action
1147
- choose_promotion_rule: Choose Rule
1148
1121
  choose_reason: Choose Reason
1149
1122
  city: City
1150
1123
  clear_cache: Clear Cache
@@ -1442,7 +1415,6 @@ en:
1442
1415
  create: Create
1443
1416
  create_a_new_account: Create a new account
1444
1417
  create_one: Create One.
1445
- create_promotion_code: Create promotion code
1446
1418
  create_reimbursement: Create reimbursement
1447
1419
  created_at: Created At
1448
1420
  created_by: Created by
@@ -1456,7 +1428,6 @@ en:
1456
1428
  currency: Currency
1457
1429
  currency_settings: Currency Settings
1458
1430
  current: Current
1459
- current_promotion_usage: 'Current Usage: %{count}'
1460
1431
  customer: Customer
1461
1432
  customer_details: Customer Details
1462
1433
  customer_details_updated: Customer Details Updated
@@ -1495,10 +1466,8 @@ en:
1495
1466
  destroy: Destroy
1496
1467
  details: Details
1497
1468
  discount_amount: Discount Amount
1498
- discount_rules: Discount Rules
1499
1469
  dismiss_banner: No. Thanks! I'm not interested, do not display this message again
1500
1470
  display: Display
1501
- download_promotion_codes_list: Download codes list
1502
1471
  edit: Edit
1503
1472
  edit_refund_reason: Edit Refund Reason
1504
1473
  editing_adjustment_reason: Editing Adjustment Reason
@@ -1506,8 +1475,6 @@ en:
1506
1475
  editing_option_type: Editing Option Type
1507
1476
  editing_payment_method: Editing Payment Method
1508
1477
  editing_product: Editing Product
1509
- editing_promotion: Editing Promotion
1510
- editing_promotion_category: Editing Promotion Category
1511
1478
  editing_property: Editing Property Type
1512
1479
  editing_refund: Editing Refund
1513
1480
  editing_refund_reason: Editing Refund Reason
@@ -1549,7 +1516,6 @@ en:
1549
1516
  end: End
1550
1517
  ending_in: Ending in
1551
1518
  error: error
1552
- error_user_destroy_with_orders: Cannot delete a user with orders
1553
1519
  errors:
1554
1520
  messages:
1555
1521
  cannot_delete_finalized_stock_location: Stock Location cannot be destroyed if you have open stock transfers.
@@ -1611,7 +1577,6 @@ en:
1611
1577
  general: General
1612
1578
  google_analytics: Google Analytics
1613
1579
  google_analytics_id: Analytics ID
1614
- group_size: Group size
1615
1580
  guest_checkout: Guest Checkout
1616
1581
  guest_user_account: Checkout as a Guest
1617
1582
  has_no_shipped_units: has no shipped units
@@ -1624,7 +1589,6 @@ en:
1624
1589
  hide_out_of_stock: Hide out of stock
1625
1590
  hints:
1626
1591
  spree/calculator:
1627
- promotions: This is used to determine the promotional discount to be applied to an order, an item, or shipping charges.
1628
1592
  shipping_methods: This is used to calculate the shipping rates on a per order or per package rate.
1629
1593
  tax_rates: The "Default Tax" calculator is used for both sales tax (United States-style taxes) and value-added tax (VAT). Typically this calculator should be the only tax calculator required by your store. "Flat Fee" can be used for any taxes that require a flat fee be charged to the customer.
1630
1594
  spree/price:
@@ -1637,10 +1601,6 @@ en:
1637
1601
  promotionable: 'This determines whether or not promotions can apply to this product.<br>Default: Checked'
1638
1602
  shipping_category: 'This determines what kind of shipping this product requires.<br> Default: Default'
1639
1603
  tax_category: 'This determines what kind of taxation is applied to this product.<br> Default: %{default_tax_category}'
1640
- spree/promotion:
1641
- expires_at: This determines when the promotion expires. <br> If no value is specified, the promotion will never expire.
1642
- promo_code_will_be_disabled: Selecting this option, promo codes will be disabled for this promotion because all its rules / actions will be applied automatically to all orders.
1643
- starts_at: This determines when the promotion can be applied to orders. <br> If no value is specified, the promotion will be immediately available.
1644
1604
  spree/shipping_method:
1645
1605
  available_to_all: Uncheck to select specific stock locations this shipping method will be available in.
1646
1606
  spree/stock_location:
@@ -1703,8 +1663,6 @@ en:
1703
1663
  intercept_email_instructions: Override email recipient and replace with this address.
1704
1664
  invalid_exchange_variant: Invalid exchange variant.
1705
1665
  invalid_payment_method_type: Invalid payment method type.
1706
- invalid_promotion_action: Invalid promotion action.
1707
- invalid_promotion_rule: Invalid promotion rule.
1708
1666
  invalidate: Invalidate
1709
1667
  inventory: Inventory
1710
1668
  inventory_adjustment: Inventory Adjustment
@@ -1771,7 +1729,6 @@ en:
1771
1729
  look_for_similar_items: Look for similar items
1772
1730
  make_refund: Make refund
1773
1731
  make_sure_the_above_reimbursement_amount_is_correct: Make sure the above reimbursement amount is correct
1774
- manage_promotion_categories: Manage Promotion Categories
1775
1732
  manage_stock: Store Stock
1776
1733
  manage_variants: Manage Variants
1777
1734
  manual_intervention_required: Manual intervention required
@@ -1817,9 +1774,6 @@ en:
1817
1774
  new_payment: New Payment
1818
1775
  new_payment_method: New Payment Method
1819
1776
  new_product: New Product
1820
- new_promotion: New Promotion
1821
- new_promotion_category: New Promotion Category
1822
- new_promotion_code_batch: New Promotion Code Batch
1823
1777
  new_property: New Property Type
1824
1778
  new_refund: New Refund
1825
1779
  new_refund_reason: New Refund Reason
@@ -1843,7 +1797,6 @@ en:
1843
1797
  new_variant: New Variant
1844
1798
  new_zone: New Zone
1845
1799
  next: Next
1846
- no_actions_added: No actions added
1847
1800
  no_images_found: No images found
1848
1801
  no_inventory_selected: No inventory selected
1849
1802
  no_option_values_on_product_html: This product has no associated option values. Add some to it through Option Types in the %{link}.
@@ -1852,13 +1805,11 @@ en:
1852
1805
  no_payment_methods_found: No payment methods found
1853
1806
  no_pending_payments: No pending payments
1854
1807
  no_products_found: No products found
1855
- no_promotions_found: No promotions found
1856
1808
  no_resource: No %{resource} found.
1857
1809
  no_resource_found: No %{resource} found
1858
1810
  no_resource_found_html: No %{resource} found, %{add_one_link}!
1859
1811
  no_resource_found_link: Add One
1860
1812
  no_results: No results
1861
- no_rules_added: No rules added
1862
1813
  no_shipping_method_selected: No shipping method selected.
1863
1814
  no_shipping_methods_found: No shipping methods found
1864
1815
  no_stock_locations_found: No stock locations found
@@ -1882,6 +1833,8 @@ en:
1882
1833
  product_not_deleted: Product could not be deleted
1883
1834
  variant_deleted: Variant has been deleted
1884
1835
  variant_not_deleted: Variant could not be deleted
1836
+ null_promotion_handler:
1837
+ coupon_code_applied: Coupon code has been applied.
1885
1838
  num_orders: "# Orders"
1886
1839
  number: Number
1887
1840
  number_of_codes: "%{count} codes"
@@ -1902,6 +1855,7 @@ en:
1902
1855
  order_approved: Order approved
1903
1856
  order_canceled: Order canceled
1904
1857
  order_completed: Order completed
1858
+ order_count: Order Count
1905
1859
  order_details: Order Details
1906
1860
  order_email_resent: Order Email Resent
1907
1861
  order_information: Order Information
@@ -2020,21 +1974,10 @@ en:
2020
1974
  product_has_no_description: This product has no description
2021
1975
  product_not_available_in_this_currency: This product is not available in the selected currency.
2022
1976
  product_properties: Product Properties
2023
- product_rule:
2024
- choose_products: Choose products
2025
- label: Order must contain %{select} of these products
2026
- match_all: all
2027
- match_any: at least one
2028
- match_none: none
2029
- product_source:
2030
- group: From product group
2031
- manual: Manually choose
2032
1977
  product_without_default_price_cta: Please, create a Master Price!
2033
1978
  product_without_default_price_info: This Product has no price in the default currency (%{default_currency}).
2034
1979
  products: Products
2035
1980
  promotion: Promotion
2036
- promotion_action: Promotion Action
2037
- promotion_actions: Actions
2038
1981
  promotion_code_batch_mailer:
2039
1982
  promotion_code_batch_errored:
2040
1983
  message: 'Promotion code batch errored (%{error}) for promotion: '
@@ -2042,20 +1985,7 @@ en:
2042
1985
  promotion_code_batch_finished:
2043
1986
  message: 'All %{number_of_codes} codes have been created for promotion: '
2044
1987
  subject: Promotion code batch finished
2045
- promotion_code_batches:
2046
- errored: 'Errored: %{error}'
2047
- finished: All %{number_of_codes} codes have been created.
2048
- processing: 'Processing: %{number_of_codes_processed} / %{number_of_codes}'
2049
- promotion_form:
2050
- match_policies:
2051
- all: Match all of these rules
2052
- any: Match any of these rules
2053
- promotion_rule: Promotion Rule
2054
- promotion_successfully_created: Promotion has been successfully created!
2055
1988
  promotion_total_changed_before_complete: One or more of the promotions on your order have become ineligible and were removed. Please check the new order amounts and try again.
2056
- promotion_uses: Promotion uses
2057
- promotionable: Promotable
2058
- promotions: Promotions
2059
1989
  propagate_all_variants: Propagate all variants
2060
1990
  properties: Property Types
2061
1991
  property: Property Type
@@ -2156,7 +2086,6 @@ en:
2156
2086
  rma_number: RMA Number
2157
2087
  rma_value: RMA Value
2158
2088
  roles: Roles
2159
- rules: Rules
2160
2089
  sales_total: Sales Total
2161
2090
  sales_total_description: Sales Total For All Orders
2162
2091
  sales_totals: Sales Totals
@@ -2305,8 +2234,6 @@ en:
2305
2234
  user_has_no_store_credits: User does not have any available store credit
2306
2235
  store_credit_category:
2307
2236
  default: Default
2308
- store_rule:
2309
- choose_stores: Choose Stores
2310
2237
  street_address: Street Address
2311
2238
  street_address_2: Street Address (cont'd)
2312
2239
  subtotal: Subtotal
@@ -2329,12 +2256,6 @@ en:
2329
2256
  taxon_attachment_removal_error: There was an error removing the attachment
2330
2257
  taxon_edit: Edit Taxon
2331
2258
  taxon_placeholder: Add a Taxon
2332
- taxon_rule:
2333
- choose_taxons: Choose taxons
2334
- label: Order must contain %{select} of these taxons
2335
- match_all: all
2336
- match_any: at least one
2337
- match_none: none
2338
2259
  taxonomies: Taxonomies
2339
2260
  taxonomy: Taxonomy
2340
2261
  taxonomy_edit: Edit taxonomy
@@ -2399,13 +2320,6 @@ en:
2399
2320
  use_new_cc: Use a new card
2400
2321
  use_new_cc_or_payment_method: Use a new card / payment method
2401
2322
  user: User
2402
- user_role_rule:
2403
- choose_roles: Choose Roles
2404
- label: User must contain %{select} of these roles
2405
- match_all: all
2406
- match_any: at least one
2407
- user_rule:
2408
- choose_users: Choose Users
2409
2323
  users: Users
2410
2324
  validation:
2411
2325
  cannot_be_less_than_shipped_units: cannot be less than the number of shipped units.
@@ -2427,7 +2341,6 @@ en:
2427
2341
  variants: Variants
2428
2342
  version: Version
2429
2343
  view_product: View Product On Store
2430
- view_promotion_codes_list: View codes list
2431
2344
  void: Void
2432
2345
  weight: Weight
2433
2346
  what_is_a_cvv: What is a (CVV) Credit Card Code?
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ Spree::PermissionSets::Base.subclasses.each do |permission|
4
+ Spree::PermissionSet.create!(
5
+ name: permission.name.demodulize,
6
+ set: permission.name,
7
+ privilege: permission.privilege,
8
+ category: permission.category
9
+ )
10
+ end
@@ -3,7 +3,9 @@
3
3
  Spree::ReturnReason.find_or_create_by(name: 'Better price available')
4
4
  Spree::ReturnReason.find_or_create_by(name: 'Missed estimated delivery date')
5
5
  Spree::ReturnReason.find_or_create_by(name: 'Missing parts or accessories')
6
- Spree::ReturnReason.find_or_create_by(name: 'Damaged/Defective')
6
+ Spree::ReturnReason.find_or_create_by(name: 'Damaged during transport')
7
+ Spree::ReturnReason.find_or_create_by(name: 'Defective within warranty period')
8
+ Spree::ReturnReason.find_or_create_by(name: 'Other defects or damages')
7
9
  Spree::ReturnReason.find_or_create_by(name: 'Different from what was ordered')
8
10
  Spree::ReturnReason.find_or_create_by(name: 'Different from description')
9
11
  Spree::ReturnReason.find_or_create_by(name: 'No longer needed/wanted')
@@ -2,7 +2,7 @@
2
2
 
3
3
  def create_states(subregions, country)
4
4
  subregions.each do |subregion|
5
- Spree::State.where(abbr: subregion.code, country: country).first_or_create!(
5
+ Spree::State.where(abbr: subregion.code, country:).first_or_create!(
6
6
  name: subregion.name
7
7
  )
8
8
  end
@@ -85,19 +85,15 @@ class SolidusOneFour < ActiveRecord::Migration[5.0]
85
85
  t.integer "adjustable_id", null: false
86
86
  t.decimal "amount", precision: 10, scale: 2
87
87
  t.string "label"
88
- t.boolean "eligible", default: true
89
88
  t.datetime "created_at", precision: 6
90
89
  t.datetime "updated_at", precision: 6
91
90
  t.integer "order_id", null: false
92
91
  t.boolean "included", default: false
93
- t.integer "promotion_code_id"
94
92
  t.integer "adjustment_reason_id"
95
93
  t.boolean "finalized", default: false, null: false
96
94
  t.index ["adjustable_id", "adjustable_type"], name: "index_spree_adjustments_on_adjustable_id_and_adjustable_type"
97
95
  t.index ["adjustable_id"], name: "index_adjustments_on_order_id"
98
- t.index ["eligible"], name: "index_spree_adjustments_on_eligible"
99
96
  t.index ["order_id"], name: "index_spree_adjustments_on_order_id"
100
- t.index ["promotion_code_id"], name: "index_spree_adjustments_on_promotion_code_id"
101
97
  t.index ["source_id", "source_type"], name: "index_spree_adjustments_on_source_id_and_source_type"
102
98
  end
103
99
 
@@ -326,16 +322,6 @@ class SolidusOneFour < ActiveRecord::Migration[5.0]
326
322
  t.index ["user_id"], name: "index_spree_orders_on_user_id"
327
323
  end
328
324
 
329
- create_table "spree_orders_promotions", force: :cascade do |t|
330
- t.integer "order_id"
331
- t.integer "promotion_id"
332
- t.integer "promotion_code_id"
333
- t.datetime "created_at", precision: 6
334
- t.datetime "updated_at", precision: 6
335
- t.index ["order_id", "promotion_id"], name: "index_spree_orders_promotions_on_order_id_and_promotion_id"
336
- t.index ["promotion_code_id"], name: "index_spree_orders_promotions_on_promotion_code_id"
337
- end
338
-
339
325
  create_table "spree_payment_capture_events", force: :cascade do |t|
340
326
  t.decimal "amount", precision: 10, scale: 2, default: "0.0"
341
327
  t.integer "payment_id"
@@ -411,15 +397,6 @@ class SolidusOneFour < ActiveRecord::Migration[5.0]
411
397
  t.index ["product_id"], name: "index_spree_product_option_types_on_product_id"
412
398
  end
413
399
 
414
- create_table "spree_product_promotion_rules", force: :cascade do |t|
415
- t.integer "product_id"
416
- t.integer "promotion_rule_id"
417
- t.datetime "created_at", precision: 6
418
- t.datetime "updated_at", precision: 6
419
- t.index ["product_id"], name: "index_products_promotion_rules_on_product_id"
420
- t.index ["promotion_rule_id"], name: "index_products_promotion_rules_on_promotion_rule_id"
421
- end
422
-
423
400
  create_table "spree_product_properties", force: :cascade do |t|
424
401
  t.string "value"
425
402
  t.integer "product_id"
@@ -463,100 +440,6 @@ class SolidusOneFour < ActiveRecord::Migration[5.0]
463
440
  t.index ["taxon_id"], name: "index_spree_products_taxons_on_taxon_id"
464
441
  end
465
442
 
466
- create_table "spree_promotion_action_line_items", force: :cascade do |t|
467
- t.integer "promotion_action_id"
468
- t.integer "variant_id"
469
- t.integer "quantity", default: 1
470
- t.datetime "created_at", precision: 6
471
- t.datetime "updated_at", precision: 6
472
- t.index ["promotion_action_id"], name: "index_spree_promotion_action_line_items_on_promotion_action_id"
473
- t.index ["variant_id"], name: "index_spree_promotion_action_line_items_on_variant_id"
474
- end
475
-
476
- create_table "spree_promotion_actions", force: :cascade do |t|
477
- t.integer "promotion_id"
478
- t.integer "position"
479
- t.string "type"
480
- t.datetime "deleted_at"
481
- t.text "preferences"
482
- t.datetime "created_at", precision: 6
483
- t.datetime "updated_at", precision: 6
484
- t.index ["deleted_at"], name: "index_spree_promotion_actions_on_deleted_at"
485
- t.index ["id", "type"], name: "index_spree_promotion_actions_on_id_and_type"
486
- t.index ["promotion_id"], name: "index_spree_promotion_actions_on_promotion_id"
487
- end
488
-
489
- create_table "spree_promotion_categories", force: :cascade do |t|
490
- t.string "name"
491
- t.datetime "created_at", precision: 6
492
- t.datetime "updated_at", precision: 6
493
- t.string "code"
494
- end
495
-
496
- create_table "spree_promotion_codes", force: :cascade do |t|
497
- t.integer "promotion_id", null: false
498
- t.string "value", null: false
499
- t.datetime "created_at", precision: 6
500
- t.datetime "updated_at", precision: 6
501
- t.index ["promotion_id"], name: "index_spree_promotion_codes_on_promotion_id"
502
- t.index ["value"], name: "index_spree_promotion_codes_on_value", unique: true
503
- end
504
-
505
- create_table "spree_promotion_rule_taxons", force: :cascade do |t|
506
- t.integer "taxon_id"
507
- t.integer "promotion_rule_id"
508
- t.datetime "created_at", precision: 6
509
- t.datetime "updated_at", precision: 6
510
- t.index ["promotion_rule_id"], name: "index_spree_promotion_rule_taxons_on_promotion_rule_id"
511
- t.index ["taxon_id"], name: "index_spree_promotion_rule_taxons_on_taxon_id"
512
- end
513
-
514
- create_table "spree_promotion_rules", force: :cascade do |t|
515
- t.integer "promotion_id"
516
- t.integer "product_group_id"
517
- t.string "type"
518
- t.datetime "created_at", precision: 6
519
- t.datetime "updated_at", precision: 6
520
- t.string "code"
521
- t.text "preferences"
522
- t.index ["product_group_id"], name: "index_promotion_rules_on_product_group_id"
523
- t.index ["promotion_id"], name: "index_spree_promotion_rules_on_promotion_id"
524
- end
525
-
526
- create_table "spree_promotion_rules_users", force: :cascade do |t|
527
- t.integer "user_id"
528
- t.integer "promotion_rule_id"
529
- t.datetime "created_at", precision: 6
530
- t.datetime "updated_at", precision: 6
531
- t.index ["promotion_rule_id"], name: "index_promotion_rules_users_on_promotion_rule_id"
532
- t.index ["user_id"], name: "index_promotion_rules_users_on_user_id"
533
- end
534
-
535
- create_table "spree_promotions", force: :cascade do |t|
536
- t.string "description"
537
- t.datetime "expires_at"
538
- t.datetime "starts_at"
539
- t.string "name"
540
- t.string "type"
541
- t.integer "usage_limit"
542
- t.string "match_policy", default: "all"
543
- t.string "code"
544
- t.boolean "advertise", default: false
545
- t.string "path"
546
- t.datetime "created_at", precision: 6
547
- t.datetime "updated_at", precision: 6
548
- t.integer "promotion_category_id"
549
- t.integer "per_code_usage_limit"
550
- t.boolean "apply_automatically", default: false
551
- t.index ["advertise"], name: "index_spree_promotions_on_advertise"
552
- t.index ["apply_automatically"], name: "index_spree_promotions_on_apply_automatically"
553
- t.index ["code"], name: "index_spree_promotions_on_code"
554
- t.index ["expires_at"], name: "index_spree_promotions_on_expires_at"
555
- t.index ["id", "type"], name: "index_spree_promotions_on_id_and_type"
556
- t.index ["promotion_category_id"], name: "index_spree_promotions_on_promotion_category_id"
557
- t.index ["starts_at"], name: "index_spree_promotions_on_starts_at"
558
- end
559
-
560
443
  create_table "spree_properties", force: :cascade do |t|
561
444
  t.string "name"
562
445
  t.string "presentation", null: false
@@ -0,0 +1,9 @@
1
+ class CreateSpreePermissionSetsInCore < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :spree_permission_sets, if_not_exists: true do |t|
4
+ t.string :name
5
+ t.string :set
6
+ t.timestamps null: false
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class CreateSpreeRolesPermissionsInCore < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :spree_role_permissions, if_not_exists: true do |t|
4
+ t.references :role
5
+ t.references :permission_set
6
+ t.timestamps null: false
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class AddDescriptionToSpreeRoles < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_column :spree_roles, :description, :text
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class AddPrivilegeAndCategoryToSpreePermissionSets < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_column :spree_permission_sets, :privilege, :string
4
+ add_column :spree_permission_sets, :category, :string
5
+ end
6
+ end
data/db/seeds.rb CHANGED
@@ -13,6 +13,7 @@ shell = Thor::Base.shell.new
13
13
  zones
14
14
  refund_reasons
15
15
  roles
16
+ permission_sets
16
17
  shipping_categories
17
18
  ).each do |seed|
18
19
  shell.say_status :seed, seed
@@ -1 +1 @@
1
- apply 'https://github.com/solidusio/solidus_starter_frontend/raw/v4.3/template.rb'
1
+ apply 'https://github.com/solidusio/solidus_starter_frontend/raw/v4.4/template.rb'
@@ -110,7 +110,7 @@ module Solidus
110
110
  end
111
111
 
112
112
  def changes_template_for(klass, from, to)
113
- changes = Spree::Preferences::PreferenceDifferentiator.new(klass).call(from: from, to: to)
113
+ changes = Spree::Preferences::PreferenceDifferentiator.new(klass).call(from:, to:)
114
114
  return '# No changes' if changes.empty?
115
115
 
116
116
  [
@@ -18,7 +18,12 @@ Dummy::Application.configure do
18
18
  config.eager_load = false
19
19
 
20
20
  # Raise exceptions instead of rendering exception templates
21
- config.action_dispatch.show_exceptions = false # Should be :none for Rails 7.1+
21
+ if Rails.gem_version >= Gem::Version.new('7.1')
22
+ config.action_controller.raise_on_missing_callback_actions = true
23
+ config.action_dispatch.show_exceptions = :none
24
+ else
25
+ config.action_dispatch.show_exceptions = false
26
+ end
22
27
 
23
28
  # Disable request forgery protection in test environment
24
29
  config.action_controller.allow_forgery_protection = false