spree_core 3.7.14.1 → 4.0.0.beta
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/Gemfile +1 -1
- data/app/controllers/spree/base_controller.rb +0 -1
- data/app/finders/spree/taxons/find.rb +6 -5
- data/app/helpers/spree/base_helper.rb +0 -9
- data/app/helpers/spree/products_helper.rb +1 -1
- data/app/models/concerns/spree/product_scopes.rb +254 -0
- data/app/models/concerns/spree/user_address.rb +5 -2
- data/app/models/friendly_id/slug_decorator.rb +8 -2
- data/app/models/spree/ability.rb +21 -22
- data/app/models/spree/address.rb +37 -24
- data/app/models/spree/adjustment.rb +0 -10
- data/app/models/spree/app_dependencies.rb +2 -2
- data/app/models/spree/asset.rb +1 -12
- data/app/models/spree/country.rb +2 -2
- data/app/models/spree/credit_card.rb +4 -5
- data/app/models/spree/gateway/bogus.rb +1 -1
- data/app/models/spree/image.rb +8 -1
- data/app/models/spree/image/configuration/active_storage.rb +0 -2
- data/app/models/spree/order.rb +13 -78
- data/app/models/spree/order/address_book.rb +86 -0
- data/app/models/spree/order/checkout.rb +4 -22
- data/app/models/spree/order/currency_updater.rb +1 -1
- data/app/models/spree/order/store_credit.rb +0 -18
- data/app/models/spree/order_merger.rb +1 -0
- data/app/models/spree/payment.rb +4 -2
- data/app/models/spree/payment/gateway_options.rb +1 -1
- data/app/models/spree/payment/processing.rb +2 -0
- data/app/models/spree/preferences/configuration.rb +1 -1
- data/app/models/spree/preferences/preferable.rb +1 -1
- data/app/models/spree/product.rb +2 -3
- data/app/models/spree/promotion_handler/coupon.rb +2 -1
- data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
- data/app/models/spree/return_item.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/default.rb +2 -0
- data/app/models/spree/return_item/eligibility_validator/{rma_required.rb → r_m_a_required.rb} +0 -0
- data/app/models/spree/shipment.rb +1 -1
- data/app/models/spree/store_credit.rb +4 -5
- data/app/models/spree/taxon_image.rb +1 -1
- data/app/models/spree/taxonomy.rb +1 -1
- data/app/services/spree/cart/add_item.rb +3 -1
- data/app/services/spree/cart/update.rb +1 -1
- data/config/locales/en.yml +15 -0
- data/db/default/spree/stores.rb +1 -0
- data/db/default/spree/zones.rb +16 -0
- data/db/migrate/20140806144901_add_type_to_reimbursement_type.rb +1 -1
- data/db/migrate/20141101231208_fix_adjustment_order_presence.rb +2 -2
- data/db/migrate/20170323151450_add_missing_unique_indexes_for_unique_attributes.rb +1 -1
- data/db/migrate/20190305121659_add_iso_and_iso3_validation_on_presence_and_uniqueness.rb +18 -0
- data/db/migrate/20190523092729_add_user_id_and_deleted_at_to_spree_addresses.rb +12 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +3 -1
- data/lib/spree/core.rb +0 -2
- data/lib/spree/core/importer/order.rb +64 -103
- data/lib/spree/core/importer/product.rb +2 -2
- data/lib/spree/core/product_duplicator.rb +1 -5
- data/lib/spree/core/version.rb +1 -3
- data/lib/spree/permitted_attributes.rb +3 -1
- data/lib/spree/testing_support/ability_helpers.rb +3 -11
- data/lib/spree/testing_support/capybara_config.rb +4 -1
- data/lib/spree/testing_support/capybara_ext.rb +22 -98
- data/lib/spree/testing_support/controller_requests.rb +36 -26
- data/lib/spree/testing_support/factories/image_factory.rb +2 -6
- data/lib/spree/testing_support/factories/return_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/taxon_factory.rb +1 -1
- data/lib/spree/testing_support/i18n.rb +6 -8
- data/lib/spree/testing_support/image_helpers.rb +5 -11
- data/lib/tasks/exchanges.rake +35 -37
- data/spree_core.gemspec +11 -14
- metadata +63 -103
- data/app/models/concerns/spree/acts_as_taggable.rb +0 -11
- data/app/models/spree/image/configuration/paperclip.rb +0 -64
- data/app/models/spree/order_contents.rb +0 -54
- data/app/models/spree/product/scopes.rb +0 -250
- data/app/models/spree/tag.rb +0 -4
- data/app/models/spree/taxon_image/configuration/paperclip.rb +0 -27
- data/config/initializers/acts_as_taggable_on.rb +0 -9
- data/config/initializers/use_paperclip.rb +0 -3
- data/db/migrate/20160511071954_acts_as_taggable_on_spree_migration.rb +0 -40
- data/db/migrate/20160511072249_change_collation_for_spree_tag_names.rb +0 -9
- data/db/migrate/20160511072335_add_missing_indexes_to_spree_taggings.rb +0 -14
- data/lib/spree/core/controller_helpers/respond_with.rb +0 -67
- data/lib/spree/responder.rb +0 -44
- data/lib/spree/testing_support/factories/tag_factory.rb +0 -5
@@ -48,16 +48,6 @@ module Spree
|
|
48
48
|
|
49
49
|
self.competing_promos_source_types = ['Spree::PromotionAction']
|
50
50
|
|
51
|
-
scope :open, -> {
|
52
|
-
ActiveSupport::Deprecation.warn 'Adjustment.open is deprecated. Please use Adjustment.not_finalized instead', caller
|
53
|
-
not_finalized
|
54
|
-
}
|
55
|
-
|
56
|
-
scope :closed, -> {
|
57
|
-
ActiveSupport::Deprecation.warn 'Adjustment.closed is deprecated. Please use Adjustment.finalized instead', caller
|
58
|
-
finalized
|
59
|
-
}
|
60
|
-
|
61
51
|
scope :not_finalized, -> { where(state: 'open') }
|
62
52
|
scope :finalized, -> { where(state: 'closed') }
|
63
53
|
scope :tax, -> { where(source_type: 'Spree::TaxRate') }
|
@@ -17,14 +17,14 @@ module Spree
|
|
17
17
|
attr_accessor *INJECTION_POINTS
|
18
18
|
|
19
19
|
def initialize
|
20
|
-
|
20
|
+
set_default_ability
|
21
21
|
set_default_services
|
22
22
|
set_default_finders
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
26
26
|
|
27
|
-
def
|
27
|
+
def set_default_ability
|
28
28
|
@ability_class = 'Spree::Ability'
|
29
29
|
end
|
30
30
|
|
data/app/models/spree/asset.rb
CHANGED
@@ -1,17 +1,6 @@
|
|
1
1
|
module Spree
|
2
|
-
if Rails.application.config.use_paperclip
|
3
|
-
ActiveSupport::Deprecation.warn(<<-EOS, caller)
|
4
|
-
Paperclip support is deprecated, and will be removed in Spree 4.0.
|
5
|
-
Please migrate to ActiveStorage, to avoid problems after update
|
6
|
-
https://github.com/thoughtbot/paperclip/blob/master/MIGRATING.md
|
7
|
-
EOS
|
8
|
-
Paperclip.interpolates :viewable_id do |attachment, _style|
|
9
|
-
attachment.instance.viewable_id
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
2
|
class Asset < Spree::Base
|
14
|
-
include Support::ActiveStorage
|
3
|
+
include Support::ActiveStorage
|
15
4
|
|
16
5
|
belongs_to :viewable, polymorphic: true, touch: true
|
17
6
|
acts_as_list scope: [:viewable_id, :viewable_type]
|
data/app/models/spree/country.rb
CHANGED
@@ -4,8 +4,8 @@ module Spree
|
|
4
4
|
# https://github.com/rails/rails/issues/3458
|
5
5
|
before_destroy :ensure_not_default
|
6
6
|
|
7
|
-
has_many :states, dependent: :destroy
|
8
7
|
has_many :addresses, dependent: :restrict_with_error
|
8
|
+
has_many :states, dependent: :destroy
|
9
9
|
has_many :zone_members,
|
10
10
|
-> { where(zoneable_type: 'Spree::Country') },
|
11
11
|
class_name: 'Spree::ZoneMember',
|
@@ -14,7 +14,7 @@ module Spree
|
|
14
14
|
|
15
15
|
has_many :zones, through: :zone_members, class_name: 'Spree::Zone'
|
16
16
|
|
17
|
-
validates :name, :iso_name, presence: true, uniqueness: { case_sensitive: false }
|
17
|
+
validates :name, :iso_name, :iso, :iso3, presence: true, uniqueness: { case_sensitive: false }
|
18
18
|
|
19
19
|
def self.default
|
20
20
|
country_id = Spree::Config[:default_country_id]
|
@@ -24,9 +24,10 @@ module Spree
|
|
24
24
|
attribute :month, ActiveRecord::Type::Integer.new
|
25
25
|
attribute :year, ActiveRecord::Type::Integer.new
|
26
26
|
|
27
|
-
attr_reader :number
|
27
|
+
attr_reader :number
|
28
28
|
attr_accessor :encrypted_data,
|
29
29
|
:imported,
|
30
|
+
:verification_value,
|
30
31
|
:manual_entry
|
31
32
|
|
32
33
|
with_options if: :require_card_numbers?, on: :create do
|
@@ -100,11 +101,9 @@ module Spree
|
|
100
101
|
end
|
101
102
|
end
|
102
103
|
|
103
|
-
def verification_value=(value)
|
104
|
-
@verification_value = value.to_s.gsub(/\s/, '')
|
105
|
-
end
|
106
|
-
|
107
104
|
def set_last_digits
|
105
|
+
number.to_s.gsub!(/\s/, '')
|
106
|
+
verification_value.to_s.gsub!(/\s/, '')
|
108
107
|
self.last_digits ||= number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
|
109
108
|
end
|
110
109
|
|
@@ -22,7 +22,7 @@ module Spree
|
|
22
22
|
|
23
23
|
# simulate the storage of credit card profile using remote service
|
24
24
|
if success = VALID_CCS.include?(payment.source.number)
|
25
|
-
payment.source.
|
25
|
+
payment.source.update(gateway_customer_profile_id: generate_profile_id(success))
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
data/app/models/spree/image.rb
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
module Spree
|
2
2
|
class Image < Asset
|
3
|
-
include
|
3
|
+
include Configuration::ActiveStorage
|
4
4
|
include Rails.application.routes.url_helpers
|
5
|
+
|
6
|
+
# In Rails 5.x class constants are being undefined/redefined during the code reloading process
|
7
|
+
# in a rails development environment, after which the actual ruby objects stored in those class constants
|
8
|
+
# are no longer equal (subclass == self) what causes error ActiveRecord::SubclassNotFound
|
9
|
+
# Invalid single-table inheritance type: Spree::Image is not a subclass of Spree::Image.
|
10
|
+
# The line below prevents the error.
|
11
|
+
self.inheritance_column = nil
|
5
12
|
|
6
13
|
def styles
|
7
14
|
self.class.styles.map do |_, size|
|
@@ -29,14 +29,12 @@ module Spree
|
|
29
29
|
|
30
30
|
def check_attachment_presence
|
31
31
|
unless attachment.attached?
|
32
|
-
attachment.purge
|
33
32
|
errors.add(:attachment, :attachment_must_be_present)
|
34
33
|
end
|
35
34
|
end
|
36
35
|
|
37
36
|
def check_attachment_content_type
|
38
37
|
if attachment.attached? && !attachment.content_type.in?(accepted_image_types)
|
39
|
-
attachment.purge
|
40
38
|
errors.add(:attachment, :not_allowed_content_type)
|
41
39
|
end
|
42
40
|
end
|
data/app/models/spree/order.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require_dependency 'spree/order/checkout'
|
2
|
+
require_dependency 'spree/order/currency_updater'
|
3
|
+
require_dependency 'spree/order/payments'
|
4
|
+
require_dependency 'spree/order/store_credit'
|
2
5
|
|
3
6
|
module Spree
|
4
7
|
class Order < Spree::Base
|
@@ -9,6 +12,7 @@ module Spree
|
|
9
12
|
include Spree::Order::CurrencyUpdater
|
10
13
|
include Spree::Order::Payments
|
11
14
|
include Spree::Order::StoreCredit
|
15
|
+
include Spree::Order::AddressBook
|
12
16
|
include Spree::Core::NumberGenerator.new(prefix: 'R')
|
13
17
|
include Spree::Core::TokenGenerator
|
14
18
|
|
@@ -22,30 +26,6 @@ module Spree
|
|
22
26
|
alias display_ship_total display_shipment_total
|
23
27
|
alias_attribute :ship_total, :shipment_total
|
24
28
|
|
25
|
-
def guest_token
|
26
|
-
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
27
|
-
Order#guest_token is deprecated and will be removed in Spree 4.0. Please use Order#token instead
|
28
|
-
DEPRECATION
|
29
|
-
|
30
|
-
token
|
31
|
-
end
|
32
|
-
|
33
|
-
def guest_token?
|
34
|
-
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
35
|
-
Order#guest_token? is deprecated and will be removed in Spree 4.0. Please use Order#token? instead
|
36
|
-
DEPRECATION
|
37
|
-
|
38
|
-
token?
|
39
|
-
end
|
40
|
-
|
41
|
-
def guest_token=(value)
|
42
|
-
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
43
|
-
Order#guest_token= is deprecated and will be removed in Spree 4.0. Please use Order#token= instead
|
44
|
-
DEPRECATION
|
45
|
-
|
46
|
-
self.token = value
|
47
|
-
end
|
48
|
-
|
49
29
|
MONEY_THRESHOLD = 100_000_000
|
50
30
|
MONEY_VALIDATION = {
|
51
31
|
presence: true,
|
@@ -93,11 +73,11 @@ module Spree
|
|
93
73
|
end
|
94
74
|
|
95
75
|
belongs_to :bill_address, foreign_key: :bill_address_id, class_name: 'Spree::Address',
|
96
|
-
optional: true
|
76
|
+
optional: true, dependent: :destroy
|
97
77
|
alias_attribute :billing_address, :bill_address
|
98
78
|
|
99
79
|
belongs_to :ship_address, foreign_key: :ship_address_id, class_name: 'Spree::Address',
|
100
|
-
optional: true
|
80
|
+
optional: true, dependent: :destroy
|
101
81
|
alias_attribute :shipping_address, :ship_address
|
102
82
|
|
103
83
|
belongs_to :store, class_name: 'Spree::Store'
|
@@ -186,17 +166,6 @@ module Spree
|
|
186
166
|
update_hooks.add(hook)
|
187
167
|
end
|
188
168
|
|
189
|
-
# Use this method in other gems that wish to register their own custom logic
|
190
|
-
# that should be called when determining if two line items are equal.
|
191
|
-
def self.register_line_item_comparison_hook(hook)
|
192
|
-
ActiveSupport::Deprecation.warn(<<-EOS, caller)
|
193
|
-
Order.register_line_item_comparison_hook is deprecated and will be removed in Spree 4.0. Please use
|
194
|
-
`Rails.application.config.spree.line_item_comparison_hooks << hook` instead.
|
195
|
-
EOS
|
196
|
-
|
197
|
-
Rails.application.config.spree.line_item_comparison_hooks << hook
|
198
|
-
end
|
199
|
-
|
200
169
|
# For compatiblity with Calculator::PriceSack
|
201
170
|
def amount
|
202
171
|
line_items.inject(0.0) { |sum, li| sum + li.amount }
|
@@ -265,15 +234,6 @@ module Spree
|
|
265
234
|
@merger ||= Spree::OrderMerger.new(self)
|
266
235
|
end
|
267
236
|
|
268
|
-
def clone_billing_address
|
269
|
-
if bill_address && ship_address.nil?
|
270
|
-
self.ship_address = bill_address.clone
|
271
|
-
else
|
272
|
-
ship_address.attributes = bill_address.attributes.except('id', 'updated_at', 'created_at')
|
273
|
-
end
|
274
|
-
true
|
275
|
-
end
|
276
|
-
|
277
237
|
def ensure_store_presence
|
278
238
|
self.store ||= Spree::Store.default
|
279
239
|
end
|
@@ -288,10 +248,6 @@ module Spree
|
|
288
248
|
inventory_units.all?(&:returned?)
|
289
249
|
end
|
290
250
|
|
291
|
-
def contents
|
292
|
-
@contents ||= Spree::OrderContents.new(self)
|
293
|
-
end
|
294
|
-
|
295
251
|
# Associates the specified user with the order.
|
296
252
|
def associate_user!(user, override_email = true)
|
297
253
|
self.user = user
|
@@ -315,29 +271,10 @@ module Spree
|
|
315
271
|
def find_line_item_by_variant(variant, options = {})
|
316
272
|
line_items.detect do |line_item|
|
317
273
|
line_item.variant_id == variant.id &&
|
318
|
-
|
274
|
+
Spree::Dependencies.cart_compare_line_items_service.constantize.new.call(order: self, line_item: line_item, options: options).value
|
319
275
|
end
|
320
276
|
end
|
321
277
|
|
322
|
-
# This method enables extensions to participate in the
|
323
|
-
# "Are these line items equal" decision.
|
324
|
-
#
|
325
|
-
# When adding to cart, an extension would send something like:
|
326
|
-
# params[:product_customizations]={...}
|
327
|
-
#
|
328
|
-
# and would provide:
|
329
|
-
#
|
330
|
-
# def product_customizations_match
|
331
|
-
def line_item_options_match(line_item, options)
|
332
|
-
ActiveSupport::Deprecation.warn(<<-EOS, caller)
|
333
|
-
Order#add is deprecated and will be removed in Spree 4.0. Please use
|
334
|
-
Spree::CompareLineItems service instead.
|
335
|
-
EOS
|
336
|
-
return true unless options
|
337
|
-
|
338
|
-
Spree::Dependencies.cart_compare_line_items_service.constantize.new.call(order: self, line_item: line_item, options: options).value
|
339
|
-
end
|
340
|
-
|
341
278
|
# Creates new tax charges if there are any applicable rates. If prices already
|
342
279
|
# include taxes then price adjustments are created instead.
|
343
280
|
def create_tax_charge!
|
@@ -540,9 +477,15 @@ module Spree
|
|
540
477
|
def apply_free_shipping_promotions
|
541
478
|
Spree::PromotionHandler::FreeShipping.new(self).activate
|
542
479
|
shipments.each { |shipment| Spree::Adjustable::AdjustmentsUpdater.update(shipment) }
|
480
|
+
create_shipment_tax_charge!
|
543
481
|
update_with_updater!
|
544
482
|
end
|
545
483
|
|
484
|
+
# Applies user promotions when login after filling the cart
|
485
|
+
def apply_unassigned_promotions
|
486
|
+
::Spree::PromotionHandler::Cart.new(self).activate
|
487
|
+
end
|
488
|
+
|
546
489
|
# Clean shipments and make order back to address state
|
547
490
|
#
|
548
491
|
# At some point the might need to force the order to transition from address
|
@@ -728,14 +671,6 @@ module Spree
|
|
728
671
|
self.currency ||= store.default_currency || Spree::Config[:currency]
|
729
672
|
end
|
730
673
|
|
731
|
-
def set_currency
|
732
|
-
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
733
|
-
Spree::Order#set_currency was renamed to Spree::Order#ensure_currency_presence
|
734
|
-
and will be removed in Spree 4.0. Please update your code to avoid problems after update
|
735
|
-
DEPRECATION
|
736
|
-
ensure_currency_presence
|
737
|
-
end
|
738
|
-
|
739
674
|
def create_token
|
740
675
|
self.token ||= generate_token
|
741
676
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# https://github.com/spree-contrib/spree_address_book/blob/master/app/models/spree/order_decorator.rb
|
2
|
+
module Spree
|
3
|
+
class Order < Spree::Base
|
4
|
+
module AddressBook
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
def clone_shipping_address
|
8
|
+
if ship_address
|
9
|
+
self.bill_address = ship_address
|
10
|
+
end
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def clone_billing_address
|
15
|
+
if bill_address
|
16
|
+
self.ship_address = bill_address
|
17
|
+
end
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
def bill_address_id=(id)
|
22
|
+
address = Spree::Address.find_by(id: id)
|
23
|
+
if address && address.user_id == user_id
|
24
|
+
self['bill_address_id'] = address.id
|
25
|
+
user.update_attribute(:bill_address_id, address.id)
|
26
|
+
bill_address.reload
|
27
|
+
else
|
28
|
+
self['bill_address_id'] = nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def bill_address_attributes=(attributes)
|
33
|
+
self.bill_address = update_or_create_address(attributes)
|
34
|
+
user.bill_address = bill_address if user
|
35
|
+
end
|
36
|
+
|
37
|
+
def ship_address_id=(id)
|
38
|
+
address = Spree::Address.find_by(id: id)
|
39
|
+
if address && address.user_id == user_id
|
40
|
+
self['ship_address_id'] = address.id
|
41
|
+
user.update_attribute(:ship_address_id, address.id)
|
42
|
+
ship_address.reload
|
43
|
+
else
|
44
|
+
self['ship_address_id'] = nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def ship_address_attributes=(attributes)
|
49
|
+
self.ship_address = update_or_create_address(attributes)
|
50
|
+
user.ship_address = ship_address if user
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def update_or_create_address(attributes = {})
|
56
|
+
return if attributes.blank?
|
57
|
+
|
58
|
+
attributes = attributes.select { |_k, v| v.present? }
|
59
|
+
|
60
|
+
if user
|
61
|
+
address = user.addresses.build(attributes.except(:id)).check
|
62
|
+
return address if address.id
|
63
|
+
end
|
64
|
+
|
65
|
+
if attributes[:id]
|
66
|
+
address = Spree::Address.find(attributes[:id])
|
67
|
+
attributes.delete(:id)
|
68
|
+
|
69
|
+
if address&.editable?
|
70
|
+
address.update_attributes(attributes)
|
71
|
+
return address
|
72
|
+
else
|
73
|
+
attributes.delete(:id)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
unless attributes[:id]
|
78
|
+
address = Spree::Address.new(attributes)
|
79
|
+
address.save
|
80
|
+
end
|
81
|
+
|
82
|
+
address
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -94,7 +94,6 @@ module Spree
|
|
94
94
|
before_transition from: :address, do: :update_line_item_prices!
|
95
95
|
before_transition from: :address, do: :create_tax_charge!
|
96
96
|
before_transition to: :address, do: :assign_default_addresses!
|
97
|
-
before_transition from: :address, do: :persist_user_address!
|
98
97
|
end
|
99
98
|
|
100
99
|
if states[:delivery]
|
@@ -103,6 +102,7 @@ module Spree
|
|
103
102
|
before_transition to: :delivery, do: :set_shipments_cost
|
104
103
|
before_transition to: :delivery, do: :create_shipment_tax_charge!
|
105
104
|
before_transition from: :delivery, do: :apply_free_shipping_promotions
|
105
|
+
before_transition to: :delivery, do: :apply_unassigned_promotions
|
106
106
|
end
|
107
107
|
|
108
108
|
before_transition to: :resumed, do: :ensure_line_item_variants_are_not_discontinued
|
@@ -246,7 +246,7 @@ module Spree
|
|
246
246
|
attributes[:payments_attributes].first[:request_env] = request_env
|
247
247
|
end
|
248
248
|
|
249
|
-
success =
|
249
|
+
success = update(attributes)
|
250
250
|
set_shipments_cost if shipments.any?
|
251
251
|
end
|
252
252
|
|
@@ -256,31 +256,13 @@ module Spree
|
|
256
256
|
|
257
257
|
def assign_default_addresses!
|
258
258
|
if user
|
259
|
-
|
259
|
+
self.bill_address = user.bill_address if !bill_address_id && user.bill_address&.valid?
|
260
260
|
# Skip setting ship address if order doesn't have a delivery checkout step
|
261
261
|
# to avoid triggering validations on shipping address
|
262
|
-
|
262
|
+
self.ship_address = user.ship_address if !ship_address_id && user.ship_address&.valid? && checkout_steps.include?('delivery')
|
263
263
|
end
|
264
264
|
end
|
265
265
|
|
266
|
-
def clone_billing
|
267
|
-
return unless !bill_address_id && user.bill_address.try(:valid?)
|
268
|
-
|
269
|
-
self.bill_address = user.bill_address.try(:clone)
|
270
|
-
end
|
271
|
-
|
272
|
-
def clone_shipping
|
273
|
-
return unless !ship_address_id && user.ship_address.try(:valid?)
|
274
|
-
|
275
|
-
self.ship_address = user.ship_address.try(:clone)
|
276
|
-
end
|
277
|
-
|
278
|
-
def persist_user_address!
|
279
|
-
return unless !temporary_address && user && user.respond_to?(:persist_order_address) && bill_address_id
|
280
|
-
|
281
|
-
user.persist_order_address(self)
|
282
|
-
end
|
283
|
-
|
284
266
|
def persist_user_credit_card
|
285
267
|
return unless !temporary_credit_card && user_id && valid_credit_cards.present?
|
286
268
|
|