solidus_core 4.3.4 → 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 (211) 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 +9 -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 +17 -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 -90
  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 -6
  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 +17 -12
  131. data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -2
  132. data/lib/spree/testing_support/factories/calculator_factory.rb +1 -5
  133. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  134. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  135. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +3 -3
  136. data/lib/spree/testing_support/factories/order_factory.rb +5 -24
  137. data/lib/spree/testing_support/factories/product_factory.rb +1 -1
  138. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -1
  139. data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -1
  140. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  141. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  142. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  143. data/lib/spree/testing_support/order_walkthrough.rb +3 -3
  144. data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
  145. data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
  146. data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
  147. data/lib/tasks/colorado_delivery_fee.rake +2 -2
  148. data/solidus_core.gemspec +6 -6
  149. metadata +60 -91
  150. data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
  151. data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
  152. data/app/models/spree/calculator/distributed_amount.rb +0 -33
  153. data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
  154. data/app/models/spree/calculator/flexi_rate.rb +0 -22
  155. data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
  156. data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
  157. data/app/models/spree/calculator/tiered_percent.rb +0 -62
  158. data/app/models/spree/order_promotion.rb +0 -27
  159. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -81
  160. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -98
  161. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
  162. data/app/models/spree/promotion/actions/free_shipping.rb +0 -59
  163. data/app/models/spree/promotion/order_adjustments_recalculator.rb +0 -92
  164. data/app/models/spree/promotion/rules/first_order.rb +0 -38
  165. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
  166. data/app/models/spree/promotion/rules/item_total.rb +0 -86
  167. data/app/models/spree/promotion/rules/minimum_quantity.rb +0 -59
  168. data/app/models/spree/promotion/rules/nth_order.rb +0 -45
  169. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
  170. data/app/models/spree/promotion/rules/option_value.rb +0 -50
  171. data/app/models/spree/promotion/rules/product.rb +0 -86
  172. data/app/models/spree/promotion/rules/store.rb +0 -26
  173. data/app/models/spree/promotion/rules/taxon.rb +0 -91
  174. data/app/models/spree/promotion/rules/user.rb +0 -34
  175. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
  176. data/app/models/spree/promotion/rules/user_role.rb +0 -45
  177. data/app/models/spree/promotion.rb +0 -271
  178. data/app/models/spree/promotion_action.rb +0 -47
  179. data/app/models/spree/promotion_category.rb +0 -8
  180. data/app/models/spree/promotion_chooser.rb +0 -34
  181. data/app/models/spree/promotion_code/batch_builder.rb +0 -64
  182. data/app/models/spree/promotion_code.rb +0 -54
  183. data/app/models/spree/promotion_code_batch.rb +0 -27
  184. data/app/models/spree/promotion_handler/cart.rb +0 -75
  185. data/app/models/spree/promotion_handler/coupon.rb +0 -123
  186. data/app/models/spree/promotion_handler/page.rb +0 -26
  187. data/app/models/spree/promotion_handler/shipping.rb +0 -61
  188. data/app/models/spree/promotion_rule.rb +0 -55
  189. data/app/models/spree/promotion_rule_store.rb +0 -10
  190. data/app/models/spree/promotion_rule_taxon.rb +0 -8
  191. data/app/models/spree/promotion_rule_user.rb +0 -10
  192. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
  193. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
  194. data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
  195. data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
  196. data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
  197. data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
  198. data/db/migrate/20220317165036_set_promotions_with_any_policy_to_all_if_possible.rb +0 -20
  199. data/db/migrate/20230322085416_remove_match_policy_from_spree_promotion.rb +0 -5
  200. data/db/migrate/20230325132905_remove_unused_columns_from_promotion_rules.rb +0 -6
  201. data/db/migrate/20230325161633_drop_unused_promo_action_line_items.rb +0 -13
  202. data/db/migrate/20231027084517_add_order_promotions_foreign_key.rb +0 -10
  203. data/db/migrate/20231031175215_add_promotion_order_promotion_foreign_key.rb +0 -10
  204. data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
  205. data/lib/spree/permission_sets/promotion_display.rb +0 -25
  206. data/lib/spree/permission_sets/promotion_management.rb +0 -25
  207. data/lib/spree/ransack_4_1_patch.rb +0 -16
  208. data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -8
  209. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -7
  210. data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -8
  211. 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
@@ -1610,7 +1577,6 @@ en:
1610
1577
  general: General
1611
1578
  google_analytics: Google Analytics
1612
1579
  google_analytics_id: Analytics ID
1613
- group_size: Group size
1614
1580
  guest_checkout: Guest Checkout
1615
1581
  guest_user_account: Checkout as a Guest
1616
1582
  has_no_shipped_units: has no shipped units
@@ -1623,7 +1589,6 @@ en:
1623
1589
  hide_out_of_stock: Hide out of stock
1624
1590
  hints:
1625
1591
  spree/calculator:
1626
- promotions: This is used to determine the promotional discount to be applied to an order, an item, or shipping charges.
1627
1592
  shipping_methods: This is used to calculate the shipping rates on a per order or per package rate.
1628
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.
1629
1594
  spree/price:
@@ -1636,10 +1601,6 @@ en:
1636
1601
  promotionable: 'This determines whether or not promotions can apply to this product.<br>Default: Checked'
1637
1602
  shipping_category: 'This determines what kind of shipping this product requires.<br> Default: Default'
1638
1603
  tax_category: 'This determines what kind of taxation is applied to this product.<br> Default: %{default_tax_category}'
1639
- spree/promotion:
1640
- expires_at: This determines when the promotion expires. <br> If no value is specified, the promotion will never expire.
1641
- 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.
1642
- starts_at: This determines when the promotion can be applied to orders. <br> If no value is specified, the promotion will be immediately available.
1643
1604
  spree/shipping_method:
1644
1605
  available_to_all: Uncheck to select specific stock locations this shipping method will be available in.
1645
1606
  spree/stock_location:
@@ -1702,8 +1663,6 @@ en:
1702
1663
  intercept_email_instructions: Override email recipient and replace with this address.
1703
1664
  invalid_exchange_variant: Invalid exchange variant.
1704
1665
  invalid_payment_method_type: Invalid payment method type.
1705
- invalid_promotion_action: Invalid promotion action.
1706
- invalid_promotion_rule: Invalid promotion rule.
1707
1666
  invalidate: Invalidate
1708
1667
  inventory: Inventory
1709
1668
  inventory_adjustment: Inventory Adjustment
@@ -1770,7 +1729,6 @@ en:
1770
1729
  look_for_similar_items: Look for similar items
1771
1730
  make_refund: Make refund
1772
1731
  make_sure_the_above_reimbursement_amount_is_correct: Make sure the above reimbursement amount is correct
1773
- manage_promotion_categories: Manage Promotion Categories
1774
1732
  manage_stock: Store Stock
1775
1733
  manage_variants: Manage Variants
1776
1734
  manual_intervention_required: Manual intervention required
@@ -1816,9 +1774,6 @@ en:
1816
1774
  new_payment: New Payment
1817
1775
  new_payment_method: New Payment Method
1818
1776
  new_product: New Product
1819
- new_promotion: New Promotion
1820
- new_promotion_category: New Promotion Category
1821
- new_promotion_code_batch: New Promotion Code Batch
1822
1777
  new_property: New Property Type
1823
1778
  new_refund: New Refund
1824
1779
  new_refund_reason: New Refund Reason
@@ -1842,7 +1797,6 @@ en:
1842
1797
  new_variant: New Variant
1843
1798
  new_zone: New Zone
1844
1799
  next: Next
1845
- no_actions_added: No actions added
1846
1800
  no_images_found: No images found
1847
1801
  no_inventory_selected: No inventory selected
1848
1802
  no_option_values_on_product_html: This product has no associated option values. Add some to it through Option Types in the %{link}.
@@ -1851,13 +1805,11 @@ en:
1851
1805
  no_payment_methods_found: No payment methods found
1852
1806
  no_pending_payments: No pending payments
1853
1807
  no_products_found: No products found
1854
- no_promotions_found: No promotions found
1855
1808
  no_resource: No %{resource} found.
1856
1809
  no_resource_found: No %{resource} found
1857
1810
  no_resource_found_html: No %{resource} found, %{add_one_link}!
1858
1811
  no_resource_found_link: Add One
1859
1812
  no_results: No results
1860
- no_rules_added: No rules added
1861
1813
  no_shipping_method_selected: No shipping method selected.
1862
1814
  no_shipping_methods_found: No shipping methods found
1863
1815
  no_stock_locations_found: No stock locations found
@@ -1881,6 +1833,8 @@ en:
1881
1833
  product_not_deleted: Product could not be deleted
1882
1834
  variant_deleted: Variant has been deleted
1883
1835
  variant_not_deleted: Variant could not be deleted
1836
+ null_promotion_handler:
1837
+ coupon_code_applied: Coupon code has been applied.
1884
1838
  num_orders: "# Orders"
1885
1839
  number: Number
1886
1840
  number_of_codes: "%{count} codes"
@@ -1901,6 +1855,7 @@ en:
1901
1855
  order_approved: Order approved
1902
1856
  order_canceled: Order canceled
1903
1857
  order_completed: Order completed
1858
+ order_count: Order Count
1904
1859
  order_details: Order Details
1905
1860
  order_email_resent: Order Email Resent
1906
1861
  order_information: Order Information
@@ -2019,21 +1974,10 @@ en:
2019
1974
  product_has_no_description: This product has no description
2020
1975
  product_not_available_in_this_currency: This product is not available in the selected currency.
2021
1976
  product_properties: Product Properties
2022
- product_rule:
2023
- choose_products: Choose products
2024
- label: Order must contain %{select} of these products
2025
- match_all: all
2026
- match_any: at least one
2027
- match_none: none
2028
- product_source:
2029
- group: From product group
2030
- manual: Manually choose
2031
1977
  product_without_default_price_cta: Please, create a Master Price!
2032
1978
  product_without_default_price_info: This Product has no price in the default currency (%{default_currency}).
2033
1979
  products: Products
2034
1980
  promotion: Promotion
2035
- promotion_action: Promotion Action
2036
- promotion_actions: Actions
2037
1981
  promotion_code_batch_mailer:
2038
1982
  promotion_code_batch_errored:
2039
1983
  message: 'Promotion code batch errored (%{error}) for promotion: '
@@ -2041,20 +1985,7 @@ en:
2041
1985
  promotion_code_batch_finished:
2042
1986
  message: 'All %{number_of_codes} codes have been created for promotion: '
2043
1987
  subject: Promotion code batch finished
2044
- promotion_code_batches:
2045
- errored: 'Errored: %{error}'
2046
- finished: All %{number_of_codes} codes have been created.
2047
- processing: 'Processing: %{number_of_codes_processed} / %{number_of_codes}'
2048
- promotion_form:
2049
- match_policies:
2050
- all: Match all of these rules
2051
- any: Match any of these rules
2052
- promotion_rule: Promotion Rule
2053
- promotion_successfully_created: Promotion has been successfully created!
2054
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.
2055
- promotion_uses: Promotion uses
2056
- promotionable: Promotable
2057
- promotions: Promotions
2058
1989
  propagate_all_variants: Propagate all variants
2059
1990
  properties: Property Types
2060
1991
  property: Property Type
@@ -2155,7 +2086,6 @@ en:
2155
2086
  rma_number: RMA Number
2156
2087
  rma_value: RMA Value
2157
2088
  roles: Roles
2158
- rules: Rules
2159
2089
  sales_total: Sales Total
2160
2090
  sales_total_description: Sales Total For All Orders
2161
2091
  sales_totals: Sales Totals
@@ -2304,8 +2234,6 @@ en:
2304
2234
  user_has_no_store_credits: User does not have any available store credit
2305
2235
  store_credit_category:
2306
2236
  default: Default
2307
- store_rule:
2308
- choose_stores: Choose Stores
2309
2237
  street_address: Street Address
2310
2238
  street_address_2: Street Address (cont'd)
2311
2239
  subtotal: Subtotal
@@ -2328,12 +2256,6 @@ en:
2328
2256
  taxon_attachment_removal_error: There was an error removing the attachment
2329
2257
  taxon_edit: Edit Taxon
2330
2258
  taxon_placeholder: Add a Taxon
2331
- taxon_rule:
2332
- choose_taxons: Choose taxons
2333
- label: Order must contain %{select} of these taxons
2334
- match_all: all
2335
- match_any: at least one
2336
- match_none: none
2337
2259
  taxonomies: Taxonomies
2338
2260
  taxonomy: Taxonomy
2339
2261
  taxonomy_edit: Edit taxonomy
@@ -2398,13 +2320,6 @@ en:
2398
2320
  use_new_cc: Use a new card
2399
2321
  use_new_cc_or_payment_method: Use a new card / payment method
2400
2322
  user: User
2401
- user_role_rule:
2402
- choose_roles: Choose Roles
2403
- label: User must contain %{select} of these roles
2404
- match_all: all
2405
- match_any: at least one
2406
- user_rule:
2407
- choose_users: Choose Users
2408
2323
  users: Users
2409
2324
  validation:
2410
2325
  cannot_be_less_than_shipped_units: cannot be less than the number of shipped units.
@@ -2426,7 +2341,6 @@ en:
2426
2341
  variants: Variants
2427
2342
  version: Version
2428
2343
  view_product: View Product On Store
2429
- view_promotion_codes_list: View codes list
2430
2344
  void: Void
2431
2345
  weight: Weight
2432
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