spree_core 4.8.3 → 4.9.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.
- checksums.yaml +4 -4
- data/app/finders/spree/line_items/find_by_variant.rb +4 -2
- data/app/finders/spree/products/find.rb +1 -1
- data/app/finders/spree/variants/find.rb +30 -0
- data/app/models/spree/address.rb +12 -2
- data/app/models/spree/adjustment.rb +5 -0
- data/app/models/spree/asset.rb +8 -0
- data/app/models/spree/calculator/flat_rate.rb +3 -0
- data/app/models/spree/calculator/flexi_rate.rb +3 -0
- data/app/models/spree/calculator/percent_on_line_item.rb +3 -0
- data/app/models/spree/calculator/shipping/flat_rate.rb +13 -1
- data/app/models/spree/cms_section_image.rb +0 -6
- data/app/models/spree/customer_return.rb +1 -0
- data/app/models/spree/icon.rb +0 -6
- data/app/models/spree/image/configuration/active_storage.rb +0 -8
- data/app/models/spree/image.rb +17 -0
- data/app/models/spree/line_item.rb +23 -6
- data/app/models/spree/option_value_variant.rb +4 -0
- data/app/models/spree/order/currency_updater.rb +2 -2
- data/app/models/spree/order/webhooks.rb +19 -0
- data/app/models/spree/order.rb +17 -6
- data/app/models/spree/order_merger.rb +6 -0
- data/app/models/spree/payment/gateway_options.rb +4 -0
- data/app/models/spree/payment/webhooks.rb +15 -0
- data/app/models/spree/payment.rb +7 -7
- data/app/models/spree/price.rb +45 -0
- data/app/models/spree/product/webhooks.rb +17 -0
- data/app/models/spree/product.rb +7 -9
- data/app/models/spree/promotion/actions/free_shipping.rb +13 -0
- data/app/models/spree/promotion/rules/first_order.rb +6 -1
- data/app/models/spree/promotion.rb +2 -2
- data/app/models/spree/promotion_handler/coupon.rb +3 -2
- data/app/models/spree/refund.rb +14 -2
- data/app/models/spree/reimbursement/emails.rb +11 -0
- data/app/models/spree/reimbursement.rb +1 -6
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment/emails.rb +11 -0
- data/app/models/spree/shipment/webhooks.rb +11 -0
- data/app/models/spree/shipment.rb +58 -7
- data/app/models/spree/shipment_handler.rb +2 -6
- data/app/models/spree/shipping_method.rb +6 -0
- data/app/models/spree/shipping_method_zone.rb +4 -2
- data/app/models/spree/shipping_rate.rb +1 -1
- data/app/models/spree/stock/package.rb +4 -0
- data/app/models/spree/stock/quantifier.rb +22 -4
- data/app/models/spree/stock_item/webhooks.rb +6 -0
- data/app/models/spree/stock_item.rb +1 -3
- data/app/models/spree/stock_location.rb +15 -0
- data/app/models/spree/stock_movement/webhooks.rb +6 -0
- data/app/models/spree/stock_movement.rb +1 -3
- data/app/models/spree/store.rb +1 -5
- data/app/models/spree/store_credit.rb +11 -12
- data/app/models/spree/store_favicon_image.rb +0 -6
- data/app/models/spree/store_logo.rb +0 -5
- data/app/models/spree/store_mailer_logo.rb +0 -6
- data/app/models/spree/tax_rate.rb +3 -1
- data/app/models/spree/taxon_image/configuration/active_storage.rb +0 -6
- data/app/models/spree/variant/webhooks.rb +6 -0
- data/app/models/spree/variant.rb +21 -3
- data/app/models/spree/wishlist.rb +9 -0
- data/app/presenters/spree/variants/options_presenter.rb +34 -2
- data/app/services/spree/cart/add_item.rb +2 -0
- data/app/services/spree/cart/destroy.rb +14 -4
- data/app/services/spree/seeds/all.rb +3 -0
- data/app/services/spree/seeds/payment_methods.rb +18 -0
- data/app/services/spree/seeds/stock_locations.rb +1 -1
- data/app/services/spree/seeds/zones.rb +19 -19
- data/config/locales/en.yml +2 -0
- data/db/migrate/20240623172111_add_deleted_at_to_spree_stock_locations.rb +6 -0
- data/db/migrate/20240725124530_add_refunder_to_spree_refunds.rb +6 -0
- data/lib/spree/core/controller_helpers/order.rb +5 -5
- data/lib/spree/core/dependencies.rb +2 -1
- data/lib/spree/core/preferences/preferable.rb +4 -2
- data/lib/spree/core/preferences/preferable_class_methods.rb +3 -2
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core/webhooks.rb +15 -7
- data/lib/spree/core.rb +1 -0
- data/lib/spree/money.rb +1 -1
- data/lib/spree/testing_support/authorization_helpers.rb +2 -2
- data/lib/spree/testing_support/common_rake.rb +1 -1
- data/spree_core.gemspec +1 -0
- metadata +31 -4
data/app/models/spree/variant.rb
CHANGED
@@ -5,9 +5,7 @@ module Spree
|
|
5
5
|
|
6
6
|
include Spree::MemoizedData
|
7
7
|
include Spree::Metadata
|
8
|
-
|
9
|
-
include Spree::Webhooks::HasWebhooks
|
10
|
-
end
|
8
|
+
include Spree::Variant::Webhooks
|
11
9
|
|
12
10
|
MEMOIZED_METHODS = %w(purchasable in_stock backorderable tax_category options_text compare_at_price)
|
13
11
|
|
@@ -108,6 +106,14 @@ module Spree
|
|
108
106
|
not_discontinued.not_deleted.
|
109
107
|
for_currency_and_available_price_amount(currency)
|
110
108
|
end
|
109
|
+
|
110
|
+
scope :with_option_value, lambda { |option_name, option_value|
|
111
|
+
option_type_ids = OptionType.where(name: option_name).ids
|
112
|
+
return none if option_type_ids.empty?
|
113
|
+
|
114
|
+
joins(:option_values).where(Spree::OptionValue.table_name => { name: option_value, option_type_id: option_type_ids })
|
115
|
+
}
|
116
|
+
|
111
117
|
# FIXME: cost price should be represented with DisplayMoney class
|
112
118
|
LOCALIZED_NUMBERS = %w(cost_price weight depth width height)
|
113
119
|
|
@@ -172,6 +178,18 @@ module Spree
|
|
172
178
|
!!deleted_at
|
173
179
|
end
|
174
180
|
|
181
|
+
# Returns an array of hashes with the option type name, value and presentation
|
182
|
+
# @return [Array<Hash>]
|
183
|
+
def options
|
184
|
+
option_values.includes(:option_type).map do |option_value|
|
185
|
+
{
|
186
|
+
name: option_value.option_type.name,
|
187
|
+
value: option_value.name,
|
188
|
+
presentation: option_value.presentation
|
189
|
+
}
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
175
193
|
def options=(options = {})
|
176
194
|
options.each do |option|
|
177
195
|
next if option[:name].blank? || option[:value].blank?
|
@@ -15,6 +15,8 @@ module Spree
|
|
15
15
|
belongs_to :store, class_name: 'Spree::Store'
|
16
16
|
|
17
17
|
has_many :wished_items, class_name: 'Spree::WishedItem', dependent: :destroy
|
18
|
+
has_many :variants, through: :wished_items, source: :variant, class_name: 'Spree::Variant'
|
19
|
+
has_many :products, -> { distinct }, through: :variants, source: :product, class_name: 'Spree::Product'
|
18
20
|
|
19
21
|
after_commit :ensure_default_exists_and_is_unique
|
20
22
|
validates :name, :store, :user, presence: true
|
@@ -27,6 +29,13 @@ module Spree
|
|
27
29
|
token
|
28
30
|
end
|
29
31
|
|
32
|
+
# returns the number of wished items in the wishlist
|
33
|
+
#
|
34
|
+
# @return [Integer]
|
35
|
+
def wished_items_count
|
36
|
+
@wished_items_count ||= variant_ids.count
|
37
|
+
end
|
38
|
+
|
30
39
|
def self.get_by_param(param)
|
31
40
|
find_by(token: param)
|
32
41
|
end
|
@@ -19,10 +19,22 @@ module Spree
|
|
19
19
|
join_options(options)
|
20
20
|
end
|
21
21
|
|
22
|
+
def to_hash
|
23
|
+
options = option_values
|
24
|
+
options = sort_options(options)
|
25
|
+
options = present_options_as_hash(options)
|
26
|
+
|
27
|
+
join_hash_options(options)
|
28
|
+
end
|
29
|
+
|
22
30
|
private
|
23
31
|
|
24
32
|
def sort_options(options)
|
25
|
-
options.
|
33
|
+
if options.first&.association(:option_type)&.loaded?
|
34
|
+
options.sort_by { |o| o.option_type.position }
|
35
|
+
else
|
36
|
+
options.includes(:option_type).sort_by { |o| o.option_type.position }
|
37
|
+
end
|
26
38
|
end
|
27
39
|
|
28
40
|
def present_options(options)
|
@@ -34,7 +46,7 @@ module Spree
|
|
34
46
|
end
|
35
47
|
|
36
48
|
def present_color_option(option)
|
37
|
-
"#{option.option_type.presentation}: #{option.
|
49
|
+
"#{option.option_type.presentation}: #{option.presentation}"
|
38
50
|
end
|
39
51
|
|
40
52
|
def present_option(option)
|
@@ -44,6 +56,26 @@ module Spree
|
|
44
56
|
def join_options(options)
|
45
57
|
options.to_sentence(words_connector: WORDS_CONNECTOR, two_words_connector: WORDS_CONNECTOR)
|
46
58
|
end
|
59
|
+
|
60
|
+
def present_options_as_hash(options)
|
61
|
+
options.map do |ov|
|
62
|
+
method = "present_#{ov.option_type.name}_option_as_hash"
|
63
|
+
|
64
|
+
respond_to?(method, true) ? send(method, ov) : present_option_as_hash(ov)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def present_option_as_hash(option)
|
69
|
+
{}.tap do |hash|
|
70
|
+
hash.store(option.option_type.presentation.downcase, option.presentation)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def join_hash_options(options)
|
75
|
+
return {} if options.empty?
|
76
|
+
|
77
|
+
options.inject(:merge).symbolize_keys
|
78
|
+
end
|
47
79
|
end
|
48
80
|
end
|
49
81
|
end
|
@@ -16,6 +16,8 @@ module Spree
|
|
16
16
|
options ||= {}
|
17
17
|
quantity ||= 1
|
18
18
|
|
19
|
+
return failure(variant, "#{variant.name} is not available in #{order.currency}") if variant.amount_in(order.currency).nil?
|
20
|
+
|
19
21
|
line_item = Spree::Dependencies.line_item_by_variant_finder.constantize.new.execute(order: order, variant: variant, options: options)
|
20
22
|
|
21
23
|
line_item_created = line_item.nil?
|
@@ -7,31 +7,41 @@ module Spree
|
|
7
7
|
run :check_if_can_be_destroyed
|
8
8
|
run :cancel_shipments
|
9
9
|
run :void_payments
|
10
|
+
run :clear_addresses
|
10
11
|
run :destroy_order
|
11
12
|
end
|
12
13
|
|
13
14
|
private
|
14
15
|
|
15
16
|
def check_if_can_be_destroyed(order:)
|
16
|
-
return failure(Spree.t(:cannot_be_destroyed)) unless order&.can_be_destroyed?
|
17
|
+
return failure(false, Spree.t(:cannot_be_destroyed)) unless order&.can_be_destroyed?
|
17
18
|
|
18
19
|
success(order: order)
|
19
20
|
end
|
20
21
|
|
21
22
|
def cancel_shipments(order:)
|
22
|
-
order.shipments.each(&:cancel
|
23
|
+
order.shipments.each(&:cancel)
|
23
24
|
|
24
25
|
success(order: order)
|
25
26
|
end
|
26
27
|
|
27
28
|
def void_payments(order:)
|
28
|
-
order.payments.each(&:void
|
29
|
+
order.payments.each(&:void)
|
30
|
+
|
31
|
+
success(order: order)
|
32
|
+
end
|
33
|
+
|
34
|
+
def clear_addresses(order:)
|
35
|
+
order.ship_address = nil unless order.ship_address&.can_be_deleted?
|
36
|
+
order.bill_address = nil unless order.bill_address&.can_be_deleted?
|
29
37
|
|
30
38
|
success(order: order)
|
31
39
|
end
|
32
40
|
|
33
41
|
def destroy_order(order:)
|
34
|
-
order.destroy
|
42
|
+
destroyed_result = order.destroy
|
43
|
+
|
44
|
+
return failure(false, Spree.t(:cannot_be_destroyed)) unless destroyed_result.present?
|
35
45
|
|
36
46
|
success(order)
|
37
47
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Spree
|
2
|
+
module Seeds
|
3
|
+
class PaymentMethods
|
4
|
+
prepend Spree::ServiceModule::Base
|
5
|
+
|
6
|
+
def call
|
7
|
+
payment_method = Spree::PaymentMethod::StoreCredit.find_or_initialize_by(
|
8
|
+
name: Spree.t(:store_credit_name),
|
9
|
+
description: Spree.t(:store_credit_name),
|
10
|
+
active: true
|
11
|
+
)
|
12
|
+
|
13
|
+
payment_method.stores = Spree::Store.all if payment_method.new_record?
|
14
|
+
payment_method.save!
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -7,32 +7,32 @@ module Spree
|
|
7
7
|
eu_vat = Spree::Zone.where(name: 'EU_VAT', description: 'Countries that make up the EU VAT zone.', kind: 'country').first_or_create!
|
8
8
|
uk_vat = Spree::Zone.where(name: 'UK_VAT', kind: 'country').first_or_create!
|
9
9
|
north_america = Spree::Zone.where(name: 'North America', description: 'USA + Canada', kind: 'country').first_or_create!
|
10
|
-
|
10
|
+
Spree::Zone.where(name: 'South America', description: 'South America', kind: 'country').first_or_create!
|
11
11
|
middle_east = Spree::Zone.where(name: 'Middle East', description: 'Middle East', kind: 'country').first_or_create!
|
12
12
|
asia = Spree::Zone.where(name: 'Asia', description: 'Asia', kind: 'country').first_or_create!
|
13
13
|
|
14
|
-
%w(PL FI PT RO DE FR SK HU SI IE AT ES IT BE SE LV BG LT CY LU MT DK NL EE HR CZ GR)
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
create_zone_members(eu_vat, %w(PL FI PT RO DE FR SK HU SI IE AT ES IT BE SE LV BG LT CY LU MT DK NL EE HR CZ GR))
|
15
|
+
create_zone_members(north_america, %w(US CA))
|
16
|
+
create_zone_members(middle_east, %w(BH CY EG IR IQ IL JO KW LB OM QA SA SY TR AE YE))
|
17
|
+
create_zone_members(asia, %w(AF AM AZ BH BD BT BN KH CN CX CC GE HK IN ID IR IQ IL JP JO KZ KW KG LA LB MO MY MV MN MM NP
|
18
|
+
KP OM PK PS PH QA SA SG KR LK SY TW TJ TH TR TM AE UZ VN YE))
|
18
19
|
uk_vat.zone_members.where(zoneable: Spree::Country.find_by(iso: 'GB')).first_or_create!
|
20
|
+
end
|
19
21
|
|
20
|
-
|
21
|
-
north_america.zone_members.where(zoneable: Spree::Country.find_by!(iso: name)).first_or_create!
|
22
|
-
end
|
23
|
-
|
24
|
-
%w(BH CY EG IR IQ IL JO KW LB OM QA SA SY TR AE YE).each do |name|
|
25
|
-
middle_east.zone_members.where(zoneable: Spree::Country.find_by!(iso: name)).first_or_create!
|
26
|
-
end
|
27
|
-
|
28
|
-
%w(AF AM AZ BH BD BT BN KH CN CX CC GE HK IN ID IR IQ IL JP JO KZ KW KG LA LB MO MY MV MN MM NP
|
29
|
-
KP OM PK PS PH QA SA SG KR LK SY TW TJ TH TR TM AE UZ VN YE).each do |name|
|
30
|
-
asia.zone_members.where(zoneable: Spree::Country.find_by!(iso: name)).first_or_create!
|
31
|
-
end
|
22
|
+
protected
|
32
23
|
|
33
|
-
|
34
|
-
|
24
|
+
def create_zone_members(zone, country_codes)
|
25
|
+
countries_ids = Spree::Country.where(iso: country_codes).ids
|
26
|
+
zone_members = countries_ids.map do |country_id|
|
27
|
+
{
|
28
|
+
zoneable_id: country_id,
|
29
|
+
zoneable_type: 'Spree::Country',
|
30
|
+
zone_id: zone.id,
|
31
|
+
created_at: Time.current,
|
32
|
+
updated_at: Time.current
|
33
|
+
}
|
35
34
|
end
|
35
|
+
Spree::ZoneMember.insert_all(zone_members)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/config/locales/en.yml
CHANGED
@@ -576,6 +576,7 @@ en:
|
|
576
576
|
alternative_phone: Alternative Phone
|
577
577
|
amount: Amount
|
578
578
|
and: and
|
579
|
+
apply_only_on_full_priced_items: Apply only on full priced items
|
579
580
|
approve: approve
|
580
581
|
approver: Approver
|
581
582
|
approved_at: Approved at
|
@@ -1580,6 +1581,7 @@ en:
|
|
1580
1581
|
states_required: States Required
|
1581
1582
|
status: Status
|
1582
1583
|
stock: Stock
|
1584
|
+
default_stock_location_name: Shop location
|
1583
1585
|
stock_location: Stock Location
|
1584
1586
|
stock_location_info: Stock location info
|
1585
1587
|
stock_locations: Stock Locations
|
@@ -83,11 +83,7 @@ module Spree
|
|
83
83
|
def find_order_by_token_or_user(options = {}, with_adjustments = false)
|
84
84
|
options[:lock] ||= false
|
85
85
|
|
86
|
-
includes =
|
87
|
-
{ line_items: [variant: [:images, :option_values, :product]] }
|
88
|
-
else
|
89
|
-
{}
|
90
|
-
end
|
86
|
+
includes = options[:includes] ? order_includes : {}
|
91
87
|
|
92
88
|
# Find any incomplete orders for the token
|
93
89
|
incomplete_orders = current_store.orders.incomplete.includes(includes)
|
@@ -104,6 +100,10 @@ module Spree
|
|
104
100
|
|
105
101
|
order
|
106
102
|
end
|
103
|
+
|
104
|
+
def order_includes
|
105
|
+
{ line_items: [variant: [:images, :option_values, :product]] }
|
106
|
+
end
|
107
107
|
end
|
108
108
|
end
|
109
109
|
end
|
@@ -97,7 +97,8 @@ module Spree
|
|
97
97
|
credit_card_finder: 'Spree::CreditCards::Find',
|
98
98
|
products_finder: 'Spree::Products::Find',
|
99
99
|
taxon_finder: 'Spree::Taxons::Find',
|
100
|
-
line_item_by_variant_finder: 'Spree::LineItems::FindByVariant'
|
100
|
+
line_item_by_variant_finder: 'Spree::LineItems::FindByVariant',
|
101
|
+
variant_finder: 'Spree::Variants::Find'
|
101
102
|
}.freeze
|
102
103
|
|
103
104
|
include Spree::DependenciesHelper
|
@@ -101,14 +101,16 @@ module Spree::Preferences::Preferable
|
|
101
101
|
|
102
102
|
private
|
103
103
|
|
104
|
-
def convert_preference_value(value, type)
|
104
|
+
def convert_preference_value(value, type, nullable: false)
|
105
105
|
case type
|
106
106
|
when :string, :text
|
107
107
|
value.to_s
|
108
108
|
when :password
|
109
109
|
value.to_s
|
110
110
|
when :decimal
|
111
|
-
|
111
|
+
decimal_value = value.presence
|
112
|
+
decimal_value ||= 0 unless nullable
|
113
|
+
decimal_value.present? ? decimal_value.to_s.to_d : decimal_value
|
112
114
|
when :integer
|
113
115
|
value.to_i
|
114
116
|
when :boolean
|
@@ -2,10 +2,11 @@ module Spree::Preferences
|
|
2
2
|
module PreferableClassMethods
|
3
3
|
def preference(name, type, *args)
|
4
4
|
options = args.extract_options!
|
5
|
-
options.assert_valid_keys(:default, :deprecated)
|
5
|
+
options.assert_valid_keys(:default, :deprecated, :nullable)
|
6
6
|
default = options[:default]
|
7
7
|
default = -> { options[:default] } unless default.is_a?(Proc)
|
8
8
|
deprecated = options[:deprecated]
|
9
|
+
nullable = options[:nullable]
|
9
10
|
|
10
11
|
# cache_key will be nil for new objects, then if we check if there
|
11
12
|
# is a pending preference before going to default
|
@@ -16,7 +17,7 @@ module Spree::Preferences
|
|
16
17
|
end
|
17
18
|
|
18
19
|
define_method preference_setter_method(name) do |value|
|
19
|
-
value = convert_preference_value(value, type)
|
20
|
+
value = convert_preference_value(value, type, nullable: nullable)
|
20
21
|
preferences[name] = value
|
21
22
|
|
22
23
|
Spree::Deprecation.warn("`#{name}` is deprecated. #{deprecated}") if deprecated
|
data/lib/spree/core/version.rb
CHANGED
data/lib/spree/core/webhooks.rb
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
module Spree
|
2
2
|
module Webhooks
|
3
3
|
def self.disable_webhooks
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
prev_value = disabled?
|
5
|
+
RequestStore.store[:disable_spree_webhooks] = true
|
6
|
+
yield
|
7
|
+
ensure
|
8
|
+
RequestStore.store[:disable_spree_webhooks] = prev_value
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.disabled?
|
12
|
+
# rubocop:disable Style/RedundantFetchBlock
|
13
|
+
RequestStore.fetch(:disable_spree_webhooks) { false }
|
14
|
+
# rubocop:enable Style/RedundantFetchBlock
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.disabled=(value)
|
18
|
+
RequestStore.store[:disable_spree_webhooks] = value
|
11
19
|
end
|
12
20
|
end
|
13
21
|
end
|
data/lib/spree/core.rb
CHANGED
@@ -19,6 +19,7 @@ require 'ransack'
|
|
19
19
|
require 'state_machines-activerecord'
|
20
20
|
require 'active_storage_validations'
|
21
21
|
require 'activerecord-typedstore'
|
22
|
+
require 'request_store'
|
22
23
|
|
23
24
|
# This is required because ActiveModel::Validations#invalid? conflicts with the
|
24
25
|
# invalid state of a Payment. In the future this should be removed.
|
data/lib/spree/money.rb
CHANGED
@@ -28,7 +28,7 @@ module Spree
|
|
28
28
|
|
29
29
|
def initialize(amount, options = {})
|
30
30
|
::Money.default_currency ||= Spree::Store.default.default_currency || 'USD'
|
31
|
-
@money = Monetize.parse(
|
31
|
+
@money = Monetize.parse(amount, (options[:currency] || Spree::Store.default.default_currency))
|
32
32
|
@options = Spree::Money.default_formatting_rules.merge(options)
|
33
33
|
end
|
34
34
|
|
@@ -37,12 +37,12 @@ module Spree
|
|
37
37
|
ability_class.register_ability(ability)
|
38
38
|
end
|
39
39
|
|
40
|
-
let(:user) { Spree.
|
40
|
+
let(:user) { Spree.admin_user_class.new }
|
41
41
|
let(:admin_app) { Spree::OauthApplication.create!(name: 'Admin Panel', scopes: 'admin') }
|
42
42
|
let(:admin_token) { Spree::OauthAccessToken.create!(application: admin_app, scopes: 'admin').token }
|
43
43
|
|
44
44
|
before do
|
45
|
-
allow(Spree.
|
45
|
+
allow(Spree.admin_user_class).to receive(:find_by).and_return(user)
|
46
46
|
if defined?(Spree::Admin)
|
47
47
|
allow_any_instance_of(Spree::Admin::BaseController).to receive(:try_spree_current_user).and_return(user)
|
48
48
|
allow_any_instance_of(Spree::Admin::BaseController).to receive(:admin_oauth_application).and_return(admin_app)
|
@@ -17,7 +17,7 @@ namespace :common do
|
|
17
17
|
Spree::DummyGenerator.start ["--lib_name=#{ENV['LIB_NAME']}"]
|
18
18
|
|
19
19
|
# install frontend libraries
|
20
|
-
unless ['spree/api', 'spree/core', 'spree/sample'].include?(ENV['LIB_NAME'])
|
20
|
+
unless ['spree/api', 'spree/core', 'spree/sample', 'spree/emails'].include?(ENV['LIB_NAME'])
|
21
21
|
system('bin/rails importmap:install')
|
22
22
|
system('bin/rails turbo:install')
|
23
23
|
system('bin/rails stimulus:install')
|
data/spree_core.gemspec
CHANGED
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: 4.
|
4
|
+
version: 4.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-08-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -525,6 +525,20 @@ dependencies:
|
|
525
525
|
- - "~>"
|
526
526
|
- !ruby/object:Gem::Version
|
527
527
|
version: '1.0'
|
528
|
+
- !ruby/object:Gem::Dependency
|
529
|
+
name: request_store
|
530
|
+
requirement: !ruby/object:Gem::Requirement
|
531
|
+
requirements:
|
532
|
+
- - "~>"
|
533
|
+
- !ruby/object:Gem::Version
|
534
|
+
version: '1.7'
|
535
|
+
type: :runtime
|
536
|
+
prerelease: false
|
537
|
+
version_requirements: !ruby/object:Gem::Requirement
|
538
|
+
requirements:
|
539
|
+
- - "~>"
|
540
|
+
- !ruby/object:Gem::Version
|
541
|
+
version: '1.7'
|
528
542
|
description: Spree Models, Helpers, Services and core libraries
|
529
543
|
email: hello@spreecommerce.org
|
530
544
|
executables: []
|
@@ -550,6 +564,7 @@ files:
|
|
550
564
|
- app/finders/spree/products/find.rb
|
551
565
|
- app/finders/spree/stores/find_current.rb
|
552
566
|
- app/finders/spree/taxons/find.rb
|
567
|
+
- app/finders/spree/variants/find.rb
|
553
568
|
- app/finders/spree/variants/option_types_finder.rb
|
554
569
|
- app/finders/spree/variants/visible_finder.rb
|
555
570
|
- app/helpers/spree/base_helper.rb
|
@@ -664,6 +679,7 @@ files:
|
|
664
679
|
- app/models/spree/order/emails.rb
|
665
680
|
- app/models/spree/order/payments.rb
|
666
681
|
- app/models/spree/order/store_credit.rb
|
682
|
+
- app/models/spree/order/webhooks.rb
|
667
683
|
- app/models/spree/order_contents.rb
|
668
684
|
- app/models/spree/order_inventory.rb
|
669
685
|
- app/models/spree/order_merger.rb
|
@@ -672,6 +688,7 @@ files:
|
|
672
688
|
- app/models/spree/payment.rb
|
673
689
|
- app/models/spree/payment/gateway_options.rb
|
674
690
|
- app/models/spree/payment/processing.rb
|
691
|
+
- app/models/spree/payment/webhooks.rb
|
675
692
|
- app/models/spree/payment_capture_event.rb
|
676
693
|
- app/models/spree/payment_method.rb
|
677
694
|
- app/models/spree/payment_method/check.rb
|
@@ -680,6 +697,7 @@ files:
|
|
680
697
|
- app/models/spree/preference.rb
|
681
698
|
- app/models/spree/price.rb
|
682
699
|
- app/models/spree/product.rb
|
700
|
+
- app/models/spree/product/webhooks.rb
|
683
701
|
- app/models/spree/product_option_type.rb
|
684
702
|
- app/models/spree/product_promotion_rule.rb
|
685
703
|
- app/models/spree/product_property.rb
|
@@ -716,6 +734,7 @@ files:
|
|
716
734
|
- app/models/spree/refund_reason.rb
|
717
735
|
- app/models/spree/reimbursement.rb
|
718
736
|
- app/models/spree/reimbursement/credit.rb
|
737
|
+
- app/models/spree/reimbursement/emails.rb
|
719
738
|
- app/models/spree/reimbursement/reimbursement_type_engine.rb
|
720
739
|
- app/models/spree/reimbursement/reimbursement_type_validator.rb
|
721
740
|
- app/models/spree/reimbursement_performer.rb
|
@@ -742,6 +761,8 @@ files:
|
|
742
761
|
- app/models/spree/role.rb
|
743
762
|
- app/models/spree/role_user.rb
|
744
763
|
- app/models/spree/shipment.rb
|
764
|
+
- app/models/spree/shipment/emails.rb
|
765
|
+
- app/models/spree/shipment/webhooks.rb
|
745
766
|
- app/models/spree/shipment_handler.rb
|
746
767
|
- app/models/spree/shipping_calculator.rb
|
747
768
|
- app/models/spree/shipping_category.rb
|
@@ -768,8 +789,10 @@ files:
|
|
768
789
|
- app/models/spree/stock/splitter/shipping_category.rb
|
769
790
|
- app/models/spree/stock/splitter/weight.rb
|
770
791
|
- app/models/spree/stock_item.rb
|
792
|
+
- app/models/spree/stock_item/webhooks.rb
|
771
793
|
- app/models/spree/stock_location.rb
|
772
794
|
- app/models/spree/stock_movement.rb
|
795
|
+
- app/models/spree/stock_movement/webhooks.rb
|
773
796
|
- app/models/spree/stock_transfer.rb
|
774
797
|
- app/models/spree/store.rb
|
775
798
|
- app/models/spree/store_credit.rb
|
@@ -789,6 +812,7 @@ files:
|
|
789
812
|
- app/models/spree/taxon_image/configuration/active_storage.rb
|
790
813
|
- app/models/spree/taxonomy.rb
|
791
814
|
- app/models/spree/variant.rb
|
815
|
+
- app/models/spree/variant/webhooks.rb
|
792
816
|
- app/models/spree/wished_item.rb
|
793
817
|
- app/models/spree/wishlist.rb
|
794
818
|
- app/models/spree/zone.rb
|
@@ -851,6 +875,7 @@ files:
|
|
851
875
|
- app/services/spree/seeds/all.rb
|
852
876
|
- app/services/spree/seeds/countries.rb
|
853
877
|
- app/services/spree/seeds/default_reimbursement_types.rb
|
878
|
+
- app/services/spree/seeds/payment_methods.rb
|
854
879
|
- app/services/spree/seeds/roles.rb
|
855
880
|
- app/services/spree/seeds/shipping_categories.rb
|
856
881
|
- app/services/spree/seeds/states.rb
|
@@ -939,6 +964,8 @@ files:
|
|
939
964
|
- db/migrate/20230512094803_rename_data_feeds_column_provider_to_type.rb
|
940
965
|
- db/migrate/20240303174340_fix_spree_stock_item_unique_index.rb
|
941
966
|
- db/migrate/20240514105216_add_weight_and_dimension_units_to_spree_variants.rb
|
967
|
+
- db/migrate/20240623172111_add_deleted_at_to_spree_stock_locations.rb
|
968
|
+
- db/migrate/20240725124530_add_refunder_to_spree_refunds.rb
|
942
969
|
- db/seeds.rb
|
943
970
|
- lib/friendly_id/paranoia.rb
|
944
971
|
- lib/generators/spree/custom_authentication/custom_authentication_generator.rb
|
@@ -1119,9 +1146,9 @@ licenses:
|
|
1119
1146
|
- BSD-3-Clause
|
1120
1147
|
metadata:
|
1121
1148
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
1122
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v4.
|
1149
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v4.9.0
|
1123
1150
|
documentation_uri: https://docs.spreecommerce.org/
|
1124
|
-
source_code_uri: https://github.com/spree/spree/tree/v4.
|
1151
|
+
source_code_uri: https://github.com/spree/spree/tree/v4.9.0
|
1125
1152
|
post_install_message:
|
1126
1153
|
rdoc_options: []
|
1127
1154
|
require_paths:
|