spree_core 6.0.0 → 6.0.2

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/jobs/spree/seller_transfers/execute_pending_due_job.rb +7 -5
  4. data/app/jobs/spree/seller_transfers/execute_pending_job.rb +37 -17
  5. data/app/maintenance_tasks/spree/maintenance_tasks/upgrade/store_regional_settings.rb +63 -0
  6. data/app/models/concerns/spree/admin_user_methods.rb +23 -0
  7. data/app/models/concerns/spree/translatable_resource.rb +19 -0
  8. data/app/models/concerns/spree/user_roles.rb +9 -4
  9. data/app/models/spree/invitation.rb +11 -2
  10. data/app/models/spree/order.rb +3 -1
  11. data/app/models/spree/order_promotion.rb +3 -1
  12. data/app/models/spree/order_routing/strategy/rules.rb +8 -48
  13. data/app/models/spree/payment.rb +16 -1
  14. data/app/models/spree/payment_method/store_credit.rb +3 -1
  15. data/app/models/spree/payment_method.rb +14 -1
  16. data/app/models/spree/payment_source.rb +3 -1
  17. data/app/models/spree/promotion/actions/create_item_adjustments.rb +1 -1
  18. data/app/models/spree/promotion.rb +10 -1
  19. data/app/models/spree/promotion_handler/cart.rb +7 -1
  20. data/app/models/spree/promotion_handler/coupon.rb +1 -29
  21. data/app/models/spree/refresh_token.rb +26 -0
  22. data/app/models/spree/seller_transfer.rb +51 -0
  23. data/app/models/spree/stock/coordinator.rb +37 -17
  24. data/app/models/spree/stock/packer.rb +19 -9
  25. data/app/models/spree/stock/prioritizer.rb +30 -15
  26. data/app/models/spree/store.rb +35 -2
  27. data/app/models/spree/variant.rb +1 -1
  28. data/app/services/spree/carts/update.rb +2 -1
  29. data/app/services/spree/promotions/detach_from_owner.rb +72 -0
  30. data/app/services/spree/stock_reservations/reserve.rb +78 -26
  31. data/app/workflows/spree/carts/recalculate.rb +5 -1
  32. data/app/workflows/spree/seller_transfers/reverse.rb +5 -44
  33. data/db/migrate/20260809150001_promote_shipping_categories_to_delivery_profiles.rb +15 -6
  34. data/db/migrate/20261029100001_add_lockout_columns_to_spree_admin_users.rb +8 -0
  35. data/db/migrate/20261030100001_scope_payment_sources_profile_id_uniqueness_to_payment_method.rb +38 -0
  36. data/db/migrate/20261031000001_add_last_active_at_to_spree_admin_users.rb +7 -0
  37. data/db/migrate/20261031100001_delete_orphaned_spree_option_value_variants.rb +10 -0
  38. data/lib/generators/spree/dummy/dummy_generator.rb +0 -1
  39. data/lib/generators/spree/dummy/templates/rails/database.yml +6 -9
  40. data/lib/generators/spree/dummy/templates/rails/test.rb +9 -5
  41. data/lib/generators/spree/dummy_model/templates/migration.rb.tt +1 -1
  42. data/lib/spree/checkout/default_requirements.rb +33 -5
  43. data/lib/spree/core/version.rb +1 -1
  44. data/lib/spree/core.rb +1 -3
  45. data/lib/spree/testing_support/common_rake.rb +3 -2
  46. data/lib/spree/testing_support/lifecycle_events.rb +1 -3
  47. data/lib/spree/time_zones.rb +34 -0
  48. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +15 -1
  49. data/lib/tasks/delivery_migration.rake +17 -1
  50. data/lib/tasks/remove_orphan_order_promotions.rake +20 -0
  51. metadata +15 -78
  52. data/lib/generators/spree/authentication/dummy/dummy_generator.rb +0 -54
  53. data/lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt +0 -52
  54. data/lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt +0 -33
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 6.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2026-10-27 00:00:00.000000000 Z
13
+ date: 2026-11-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: i18n-tasks
@@ -66,14 +66,14 @@ dependencies:
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '3.0'
69
+ version: '4.0'
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '3.0'
76
+ version: '4.0'
77
77
  - !ruby/object:Gem::Dependency
78
78
  name: acts-as-taggable-on
79
79
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +108,6 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: 3.3.1
111
- - !ruby/object:Gem::Dependency
112
- name: benchmark
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: cancancan
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -198,26 +184,6 @@ dependencies:
198
184
  - - ">="
199
185
  - !ruby/object:Gem::Version
200
186
  version: '0'
201
- - !ruby/object:Gem::Dependency
202
- name: highline
203
- requirement: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - ">="
206
- - !ruby/object:Gem::Version
207
- version: '2'
208
- - - "<"
209
- - !ruby/object:Gem::Version
210
- version: '4'
211
- type: :runtime
212
- prerelease: false
213
- version_requirements: !ruby/object:Gem::Requirement
214
- requirements:
215
- - - ">="
216
- - !ruby/object:Gem::Version
217
- version: '2'
218
- - - "<"
219
- - !ruby/object:Gem::Version
220
- version: '4'
221
187
  - !ruby/object:Gem::Dependency
222
188
  name: json
223
189
  requirement: !ruby/object:Gem::Requirement
@@ -442,20 +408,6 @@ dependencies:
442
408
  - - "~>"
443
409
  - !ruby/object:Gem::Version
444
410
  version: '1.5'
445
- - !ruby/object:Gem::Dependency
446
- name: rexml
447
- requirement: !ruby/object:Gem::Requirement
448
- requirements:
449
- - - ">="
450
- - !ruby/object:Gem::Version
451
- version: '0'
452
- type: :runtime
453
- prerelease: false
454
- version_requirements: !ruby/object:Gem::Requirement
455
- requirements:
456
- - - ">="
457
- - !ruby/object:Gem::Version
458
- version: '0'
459
411
  - !ruby/object:Gem::Dependency
460
412
  name: stringex
461
413
  requirement: !ruby/object:Gem::Requirement
@@ -608,26 +560,6 @@ dependencies:
608
560
  - - ">="
609
561
  - !ruby/object:Gem::Version
610
562
  version: '0'
611
- - !ruby/object:Gem::Dependency
612
- name: safely_block
613
- requirement: !ruby/object:Gem::Requirement
614
- requirements:
615
- - - ">="
616
- - !ruby/object:Gem::Version
617
- version: '0.4'
618
- - - "<"
619
- - !ruby/object:Gem::Version
620
- version: '2.0'
621
- type: :runtime
622
- prerelease: false
623
- version_requirements: !ruby/object:Gem::Requirement
624
- requirements:
625
- - - ">="
626
- - !ruby/object:Gem::Version
627
- version: '0.4'
628
- - - "<"
629
- - !ruby/object:Gem::Version
630
- version: '2.0'
631
563
  - !ruby/object:Gem::Dependency
632
564
  name: phonelib
633
565
  requirement: !ruby/object:Gem::Requirement
@@ -785,6 +717,7 @@ files:
785
717
  - app/maintenance_tasks/spree/maintenance_tasks/upgrade/promotion_option_value_rules.rb
786
718
  - app/maintenance_tasks/spree/maintenance_tasks/upgrade/rake_step.rb
787
719
  - app/maintenance_tasks/spree/maintenance_tasks/upgrade/returns.rb
720
+ - app/maintenance_tasks/spree/maintenance_tasks/upgrade/store_regional_settings.rb
788
721
  - app/maintenance_tasks/spree/maintenance_tasks/upgrade/users_to_customers.rb
789
722
  - app/maintenance_tasks/spree/maintenance_tasks/upgrade_step.rb
790
723
  - app/models/concerns/spree/account_deactivation.rb
@@ -1435,6 +1368,7 @@ files:
1435
1368
  - app/services/spree/products/duplicator.rb
1436
1369
  - app/services/spree/products/for_context.rb
1437
1370
  - app/services/spree/products/select_buy_box.rb
1371
+ - app/services/spree/promotions/detach_from_owner.rb
1438
1372
  - app/services/spree/purchases/amount_due_at_checkout.rb
1439
1373
  - app/services/spree/returns/eligibility_validator.rb
1440
1374
  - app/services/spree/sample_data/helper.rb
@@ -2027,6 +1961,10 @@ files:
2027
1961
  - db/migrate/20261017100001_add_tax_exemption_reason_to_spree_tax_exemption_certificates.rb
2028
1962
  - db/migrate/20261022000001_store_credit_actor_polymorphic.rb
2029
1963
  - db/migrate/20261023100001_add_deactivated_at_to_spree_admin_users.rb
1964
+ - db/migrate/20261029100001_add_lockout_columns_to_spree_admin_users.rb
1965
+ - db/migrate/20261030100001_scope_payment_sources_profile_id_uniqueness_to_payment_method.rb
1966
+ - db/migrate/20261031000001_add_last_active_at_to_spree_admin_users.rb
1967
+ - db/migrate/20261031100001_delete_orphaned_spree_option_value_variants.rb
2030
1968
  - db/sample_data/channels.rb
2031
1969
  - db/sample_data/collections.rb
2032
1970
  - db/sample_data/custom_field_definitions.rb
@@ -2056,9 +1994,6 @@ files:
2056
1994
  - lib/generators/spree/api_resource/templates/store_controller.rb.tt
2057
1995
  - lib/generators/spree/api_resource/templates/store_controller_spec.rb.tt
2058
1996
  - lib/generators/spree/api_resource/templates/store_serializer.rb.tt
2059
- - lib/generators/spree/authentication/dummy/dummy_generator.rb
2060
- - lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt
2061
- - lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt
2062
1997
  - lib/generators/spree/controller_decorator/controller_decorator_generator.rb
2063
1998
  - lib/generators/spree/controller_decorator/templates/controller_decorator.rb.tt
2064
1999
  - lib/generators/spree/dummy/dummy_generator.rb
@@ -2312,6 +2247,7 @@ files:
2312
2247
  - lib/spree/testing_support/store.rb
2313
2248
  - lib/spree/testing_support/tax_identifier_validators.rb
2314
2249
  - lib/spree/testing_support/url_helpers.rb
2250
+ - lib/spree/time_zones.rb
2315
2251
  - lib/spree/translations.rb
2316
2252
  - lib/spree/upgrade.rb
2317
2253
  - lib/spree/upgrades/5_4_to_5_5/manifest.yml
@@ -2360,6 +2296,7 @@ files:
2360
2296
  - lib/tasks/products.rake
2361
2297
  - lib/tasks/publications.rake
2362
2298
  - lib/tasks/remove_master_variant.rake
2299
+ - lib/tasks/remove_orphan_order_promotions.rake
2363
2300
  - lib/tasks/rich_text.rake
2364
2301
  - lib/tasks/sample_data.rake
2365
2302
  - lib/tasks/search.rake
@@ -2397,9 +2334,9 @@ licenses:
2397
2334
  - BSD-3-Clause
2398
2335
  metadata:
2399
2336
  bug_tracker_uri: https://github.com/spree/spree/issues
2400
- changelog_uri: https://github.com/spree/spree/releases/tag/v6.0.0
2401
- documentation_uri: https://docs.spreecommerce.org/
2402
- source_code_uri: https://github.com/spree/spree/tree/v6.0.0
2337
+ changelog_uri: https://github.com/spree/spree/releases/tag/v6.0.2
2338
+ documentation_uri: https://spreecommerce.org/docs/
2339
+ source_code_uri: https://github.com/spree/spree/tree/v6.0.2
2403
2340
  post_install_message:
2404
2341
  rdoc_options: []
2405
2342
  require_paths:
@@ -1,54 +0,0 @@
1
- require 'rails/generators'
2
-
3
- module Spree
4
- module Authentication
5
- class DummyGenerator < Rails::Generators::Base
6
- desc 'Set up a Spree installation with dummy authentication for testing. Creates a separate spree_admin_users table.'
7
-
8
- def self.source_paths
9
- paths = superclass.source_paths
10
- paths << File.expand_path('templates', __dir__)
11
- paths.flatten
12
- end
13
-
14
- def create_authentication_helpers
15
- template 'authentication_helpers.rb.tt', 'lib/spree/authentication_helpers.rb'
16
- end
17
-
18
- def configure_authentication_helpers
19
- file_action = File.exist?('config/initializers/spree.rb') ? :append_file : :create_file
20
- send(file_action, 'config/initializers/spree.rb') do
21
- <<~RUBY
22
-
23
- Rails.application.config.to_prepare do
24
- require_dependency 'spree/authentication_helpers'
25
- end
26
- RUBY
27
- end
28
- end
29
-
30
- def create_admin_users_migration
31
- # Use a fixed early timestamp (20210913) to ensure this migration runs BEFORE
32
- # any Spree core migrations that reference spree_admin_users table.
33
- # The earliest such migration is 20250122113708_add_first_and_last_name_to_spree_admin_class.rb
34
- # We use a timestamp before the main Spree migration (20210914000000_spree_four_three.rb)
35
- migration_file = File.join('db', 'migrate', '20210913000000_create_spree_admin_users.rb')
36
-
37
- # Skip if migration already exists
38
- return if File.exist?(migration_file) || migration_exists?('create_spree_admin_users')
39
-
40
- template 'create_spree_admin_users.rb.tt', migration_file
41
- end
42
-
43
- private
44
-
45
- def migration_exists?(name)
46
- Dir.glob(File.join('db', 'migrate', "*_#{name}.rb")).any?
47
- end
48
-
49
- def migration_version
50
- "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
51
- end
52
- end
53
- end
54
- end
@@ -1,52 +0,0 @@
1
- # Dummy authentication helpers for testing purposes.
2
- # These provide stub implementations that don't require actual routes.
3
- module Spree
4
- module AuthenticationHelpers
5
- def self.included(receiver)
6
- receiver.helper_method(
7
- :spree_current_user,
8
- :spree_login_path,
9
- :spree_signup_path,
10
- :spree_logout_path,
11
- :spree_forgot_password_path,
12
- :spree_edit_password_path,
13
- :spree_admin_login_path,
14
- :spree_admin_logout_path
15
- )
16
- end
17
-
18
- def spree_current_user
19
- @spree_current_user
20
- end
21
-
22
- def spree_login_path(_opts = {})
23
- '/login'
24
- end
25
-
26
- def spree_signup_path(_opts = {})
27
- '/signup'
28
- end
29
-
30
- def spree_logout_path(_opts = {})
31
- '/logout'
32
- end
33
-
34
- def spree_forgot_password_path(_opts = {})
35
- '/forgot_password'
36
- end
37
-
38
- def spree_edit_password_path(_opts = {})
39
- '/edit_password'
40
- end
41
-
42
- def spree_admin_login_path(_opts = {})
43
- '/admin/login'
44
- end
45
-
46
- def spree_admin_logout_path(_opts = {})
47
- '/admin/logout'
48
- end
49
- end
50
- end
51
-
52
- ApplicationController.include Spree::AuthenticationHelpers if defined?(ApplicationController)
@@ -1,33 +0,0 @@
1
- class CreateSpreeAdminUsers < ActiveRecord::Migration<%= migration_version %>
2
- def change
3
- create_table :spree_admin_users do |t|
4
- t.string :encrypted_password, limit: 128
5
- t.string :password_digest
6
- t.string :email
7
- t.string :remember_token
8
- t.string :persistence_token
9
- t.string :reset_password_token
10
- t.string :perishable_token
11
- t.integer :sign_in_count, default: 0, null: false
12
- t.integer :failed_attempts, default: 0, null: false
13
- t.datetime :last_request_at
14
- t.datetime :current_sign_in_at
15
- t.datetime :last_sign_in_at
16
- t.string :current_sign_in_ip
17
- t.string :last_sign_in_ip
18
- t.string :login
19
- t.string :authentication_token
20
- t.string :unlock_token
21
- t.datetime :locked_at
22
- t.datetime :remember_created_at
23
- t.datetime :reset_password_sent_at
24
- t.string :first_name
25
- t.string :last_name
26
- t.string :selected_locale
27
-
28
- t.timestamps
29
- end
30
-
31
- add_index :spree_admin_users, :email, unique: true
32
- end
33
- end