spree_core 4.3.0.rc3 → 4.3.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.
- checksums.yaml +4 -4
- data/app/models/spree/app_dependencies.rb +3 -1
- data/app/models/spree/cms/sections/featured_article.rb +0 -7
- data/app/models/spree/cms/sections/hero_image.rb +0 -9
- data/app/models/spree/cms/sections/image_gallery.rb +2 -2
- data/app/models/spree/cms/sections/side_by_side_images.rb +2 -2
- data/app/models/spree/cms_section.rb +12 -0
- data/app/models/spree/product.rb +10 -8
- data/app/models/spree/stock_location.rb +9 -0
- data/app/models/spree/taxon.rb +1 -0
- data/app/models/spree/variant.rb +9 -3
- data/app/presenters/spree/filters/options_presenter.rb +20 -0
- data/app/presenters/spree/filters/property_presenter.rb +20 -0
- data/app/services/spree/cart/associate.rb +16 -0
- data/app/services/spree/cart/change_currency.rb +27 -0
- data/app/sorters/spree/products/sort.rb +7 -1
- data/config/locales/en.yml +2 -0
- data/db/migrate/20210527094055_create_spree_products_stores.rb +2 -2
- data/lib/spree/core/version.rb +1 -1
- metadata +7 -6
- data/app/views/spree/shared/_purchased_items_table.text.erb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 820685ea826057c90007aa5e15403d033c893eb89434a0c0a81eacddf832fad3
|
4
|
+
data.tar.gz: 9234169687d3714f37741a75fe4a5adc04e86f4cf0c8c0b32253b847f31d9331
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c826e57778c119e99d7257084b04a71af06ef3d3c6078a699e9b5c8b7ecf7441e6abb4bbd8c1340b0dffd625ba0c57ab13d5ebbe6d7afa74804bea3e01b6662
|
7
|
+
data.tar.gz: 75c0eb28a83ed7e71cf5dbc2b70319fa91559e16e361574446431c37688da6e05af45c47fd34123ec5c747c10f9c90fbdbad93a7cae123426f938c4e84f248f7
|
@@ -13,7 +13,7 @@ module Spree
|
|
13
13
|
:products_finder, :taxon_finder, :line_item_by_variant_finder, :cart_estimate_shipping_rates_service,
|
14
14
|
:account_create_address_service, :account_update_address_service, :account_create_service, :account_update_service,
|
15
15
|
:address_finder, :collection_sorter, :error_handler, :current_store_finder, :cart_empty_service, :cart_destroy_service,
|
16
|
-
:classification_reposition_service, :credit_cards_destroy_service
|
16
|
+
:classification_reposition_service, :credit_cards_destroy_service, :cart_associate_service, :cart_change_currency_service
|
17
17
|
].freeze
|
18
18
|
|
19
19
|
attr_accessor *INJECTION_POINTS
|
@@ -43,6 +43,8 @@ module Spree
|
|
43
43
|
@cart_estimate_shipping_rates_service = 'Spree::Cart::EstimateShippingRates'
|
44
44
|
@cart_empty_service = 'Spree::Cart::Empty'
|
45
45
|
@cart_destroy_service = 'Spree::Cart::Destroy'
|
46
|
+
@cart_associate_service = 'Spree::Cart::Associate'
|
47
|
+
@cart_change_currency_service = 'Spree::Cart::ChangeCurrency'
|
46
48
|
|
47
49
|
# checkout
|
48
50
|
@checkout_next_service = 'Spree::Checkout::Next'
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Spree::Cms::Sections
|
2
2
|
class FeaturedArticle < Spree::CmsSection
|
3
|
-
before_save :reset_link_attributes
|
4
3
|
after_initialize :default_values
|
5
4
|
|
6
5
|
store :content, accessors: [:title, :subtitle, :button_text, :rte_content], coder: JSON
|
@@ -14,12 +13,6 @@ module Spree::Cms::Sections
|
|
14
13
|
|
15
14
|
private
|
16
15
|
|
17
|
-
def reset_link_attributes
|
18
|
-
if linked_resource_type_changed?
|
19
|
-
self.linked_resource_id = nil
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
16
|
def default_values
|
24
17
|
self.gutters ||= 'No Gutters'
|
25
18
|
self.fit ||= 'Screen'
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Spree::Cms::Sections
|
2
2
|
class HeroImage < Spree::CmsSection
|
3
|
-
before_save :reset_link_attributes
|
4
3
|
after_initialize :default_values
|
5
4
|
|
6
5
|
store :content, accessors: [:title, :button_text], coder: JSON
|
@@ -30,14 +29,6 @@ module Spree::Cms::Sections
|
|
30
29
|
|
31
30
|
private
|
32
31
|
|
33
|
-
def reset_link_attributes
|
34
|
-
if linked_resource_type_changed?
|
35
|
-
return if linked_resource_id_was.nil?
|
36
|
-
|
37
|
-
self.linked_resource_id = nil
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
32
|
def default_values
|
42
33
|
self.gutters ||= 'No Gutters'
|
43
34
|
self.fit ||= 'Screen'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spree::Cms::Sections
|
2
2
|
class ImageGallery < Spree::CmsSection
|
3
3
|
after_initialize :default_values
|
4
|
-
|
4
|
+
validate :reset_multiple_link_attributes
|
5
5
|
|
6
6
|
LINKED_RESOURCE_TYPE = if Rails::VERSION::STRING < '6.0'
|
7
7
|
['Spree::Taxon'].freeze
|
@@ -70,7 +70,7 @@ module Spree::Cms::Sections
|
|
70
70
|
|
71
71
|
private
|
72
72
|
|
73
|
-
def
|
73
|
+
def reset_multiple_link_attributes
|
74
74
|
return if Rails::VERSION::STRING < '6.0'
|
75
75
|
|
76
76
|
if link_type_one_changed?
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spree::Cms::Sections
|
2
2
|
class SideBySideImages < Spree::CmsSection
|
3
3
|
after_initialize :default_values
|
4
|
-
|
4
|
+
validate :reset_multiple_link_attributes
|
5
5
|
|
6
6
|
LINKED_RESOURCE_TYPE = if Rails::VERSION::STRING < '6.0'
|
7
7
|
['Spree::Taxon'].freeze
|
@@ -48,7 +48,7 @@ module Spree::Cms::Sections
|
|
48
48
|
|
49
49
|
private
|
50
50
|
|
51
|
-
def
|
51
|
+
def reset_multiple_link_attributes
|
52
52
|
return if Rails::VERSION::STRING < '6.0'
|
53
53
|
|
54
54
|
if link_type_one_changed?
|
@@ -5,6 +5,8 @@ module Spree
|
|
5
5
|
acts_as_list scope: :cms_page
|
6
6
|
belongs_to :cms_page, touch: true
|
7
7
|
|
8
|
+
validate :reset_link_attributes
|
9
|
+
|
8
10
|
IMAGE_COUNT = ['one', 'two', 'three']
|
9
11
|
IMAGE_TYPES = ['image/png', 'image/jpg', 'image/jpeg', 'image/gif'].freeze
|
10
12
|
IMAGE_SIZE = ['sm', 'md', 'lg', 'xl']
|
@@ -53,5 +55,15 @@ module Spree
|
|
53
55
|
def fullscreen?
|
54
56
|
fit == 'Screen'
|
55
57
|
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def reset_link_attributes
|
62
|
+
if linked_resource_type_changed?
|
63
|
+
return if linked_resource_id_was.nil?
|
64
|
+
|
65
|
+
self.linked_resource_id = nil
|
66
|
+
end
|
67
|
+
end
|
56
68
|
end
|
57
69
|
end
|
data/app/models/spree/product.rb
CHANGED
@@ -142,17 +142,17 @@ module Spree
|
|
142
142
|
|
143
143
|
# Cant use short form block syntax due to https://github.com/Netflix/fast_jsonapi/issues/259
|
144
144
|
def purchasable?
|
145
|
-
|
145
|
+
default_variant.purchasable? || variants.any?(&:purchasable?)
|
146
146
|
end
|
147
147
|
|
148
148
|
# Cant use short form block syntax due to https://github.com/Netflix/fast_jsonapi/issues/259
|
149
149
|
def in_stock?
|
150
|
-
|
150
|
+
default_variant.in_stock? || variants.any?(&:in_stock?)
|
151
151
|
end
|
152
152
|
|
153
153
|
# Cant use short form block syntax due to https://github.com/Netflix/fast_jsonapi/issues/259
|
154
154
|
def backorderable?
|
155
|
-
|
155
|
+
default_variant.backorderable? || variants.any?(&:backorderable?)
|
156
156
|
end
|
157
157
|
|
158
158
|
def find_or_build_master
|
@@ -301,11 +301,13 @@ module Spree
|
|
301
301
|
end
|
302
302
|
|
303
303
|
def total_on_hand
|
304
|
-
@total_on_hand ||=
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
304
|
+
@total_on_hand ||= Rails.cache.fetch(['product-total-on-hand', cache_key_with_version]) do
|
305
|
+
if any_variants_not_track_inventory?
|
306
|
+
Float::INFINITY
|
307
|
+
else
|
308
|
+
stock_items.sum(:count_on_hand)
|
309
|
+
end
|
310
|
+
end
|
309
311
|
end
|
310
312
|
|
311
313
|
# Master variant may be deleted (i.e. when the product is deleted)
|
@@ -2,6 +2,7 @@ module Spree
|
|
2
2
|
class StockLocation < Spree::Base
|
3
3
|
has_many :shipments
|
4
4
|
has_many :stock_items, dependent: :delete_all, inverse_of: :stock_location
|
5
|
+
has_many :variants, through: :stock_items
|
5
6
|
has_many :stock_movements, through: :stock_items
|
6
7
|
|
7
8
|
belongs_to :state, class_name: 'Spree::State', optional: true
|
@@ -14,6 +15,7 @@ module Spree
|
|
14
15
|
|
15
16
|
after_create :create_stock_items, if: :propagate_all_variants?
|
16
17
|
after_save :ensure_one_default
|
18
|
+
after_update :conditional_touch_records
|
17
19
|
|
18
20
|
def state_text
|
19
21
|
state.try(:abbr) || state.try(:name) || state_name
|
@@ -134,5 +136,12 @@ module Spree
|
|
134
136
|
StockLocation.where(default: true).where.not(id: id).update_all(default: false)
|
135
137
|
end
|
136
138
|
end
|
139
|
+
|
140
|
+
def conditional_touch_records
|
141
|
+
return unless active_changed?
|
142
|
+
|
143
|
+
stock_items.update_all(updated_at: Time.current)
|
144
|
+
variants.update_all(updated_at: Time.current)
|
145
|
+
end
|
137
146
|
end
|
138
147
|
end
|
data/app/models/spree/taxon.rb
CHANGED
@@ -44,6 +44,7 @@ module Spree
|
|
44
44
|
scope :for_store, ->(store) { joins(:taxonomy).where(spree_taxonomies: { store_id: store.id }) }
|
45
45
|
|
46
46
|
self.whitelisted_ransackable_associations = %w[taxonomy]
|
47
|
+
self.whitelisted_ransackable_attributes = %w[name permalink]
|
47
48
|
|
48
49
|
scope :for_stores, ->(stores) { joins(:taxonomy).where(spree_taxonomies: { store_id: stores.ids }) }
|
49
50
|
|
data/app/models/spree/variant.rb
CHANGED
@@ -60,7 +60,7 @@ module Spree
|
|
60
60
|
|
61
61
|
after_touch :clear_in_stock_cache
|
62
62
|
|
63
|
-
scope :in_stock, -> { joins(:stock_items).where(
|
63
|
+
scope :in_stock, -> { joins(:stock_items).where("#{Spree::StockItem.table_name}.count_on_hand > ? OR #{Spree::Variant.table_name}.track_inventory = ?", 0, false) }
|
64
64
|
scope :backorderable, -> { joins(:stock_items).where(spree_stock_items: { backorderable: true }) }
|
65
65
|
scope :in_stock_or_backorderable, -> { in_stock.or(backorderable) }
|
66
66
|
|
@@ -256,7 +256,13 @@ module Spree
|
|
256
256
|
end
|
257
257
|
end
|
258
258
|
|
259
|
-
|
259
|
+
def backorderable?
|
260
|
+
@backorderable ||= Rails.cache.fetch(['variant-backorderable', cache_key_with_version]) do
|
261
|
+
quantifier.backorderable?
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
delegate :total_on_hand, :can_supply?, to: :quantifier
|
260
266
|
|
261
267
|
alias is_backorderable? backorderable?
|
262
268
|
|
@@ -291,7 +297,7 @@ module Spree
|
|
291
297
|
end
|
292
298
|
|
293
299
|
def backordered?
|
294
|
-
@backordered ||=
|
300
|
+
@backordered ||= !in_stock? && stock_items.exists?(backorderable: true)
|
295
301
|
end
|
296
302
|
|
297
303
|
private
|
@@ -3,6 +3,26 @@ module Spree
|
|
3
3
|
class OptionsPresenter
|
4
4
|
FilterableOptionType = Struct.new(:option_type, :option_values, keyword_init: true) do
|
5
5
|
delegate_missing_to :option_type
|
6
|
+
|
7
|
+
def to_h
|
8
|
+
{
|
9
|
+
id: option_type.id,
|
10
|
+
name: option_type.name,
|
11
|
+
presentation: option_type.presentation,
|
12
|
+
option_values: option_values.map { |e| option_value_hash(e) }
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def option_value_hash(option_value)
|
19
|
+
{
|
20
|
+
id: option_value.id,
|
21
|
+
name: option_value.name,
|
22
|
+
presentation: option_value.presentation,
|
23
|
+
position: option_value.position
|
24
|
+
}
|
25
|
+
end
|
6
26
|
end
|
7
27
|
|
8
28
|
def initialize(option_values_scope:)
|
@@ -14,9 +14,29 @@ module Spree
|
|
14
14
|
property.uniq_values(product_properties_scope: product_properties)
|
15
15
|
end
|
16
16
|
|
17
|
+
def to_h
|
18
|
+
{
|
19
|
+
id: property.id,
|
20
|
+
name: property.name,
|
21
|
+
presentation: property.presentation,
|
22
|
+
values: values_hash
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
17
26
|
private
|
18
27
|
|
19
28
|
attr_reader :property
|
29
|
+
|
30
|
+
def values_hash
|
31
|
+
value_hashes = uniq_values.map do |filter_param, value|
|
32
|
+
{
|
33
|
+
value: value,
|
34
|
+
filter_param: filter_param
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
value_hashes.sort_by { |e| e[:value] }
|
39
|
+
end
|
20
40
|
end
|
21
41
|
end
|
22
42
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Spree
|
2
|
+
module Cart
|
3
|
+
class Associate
|
4
|
+
prepend Spree::ServiceModule::Base
|
5
|
+
|
6
|
+
def call(guest_order:, user:)
|
7
|
+
if guest_order.user.nil?
|
8
|
+
guest_order.associate_user!(user)
|
9
|
+
success(guest_order)
|
10
|
+
else
|
11
|
+
failure(guest_order, 'Already assigned to a user')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Spree
|
2
|
+
module Cart
|
3
|
+
class ChangeCurrency
|
4
|
+
prepend Spree::ServiceModule::Base
|
5
|
+
|
6
|
+
def call(order:, new_currency:)
|
7
|
+
return failure('Currency not supported') unless supported_currency?(order, new_currency)
|
8
|
+
|
9
|
+
result = order.update!(currency: new_currency) rescue false
|
10
|
+
|
11
|
+
if result
|
12
|
+
success(order)
|
13
|
+
else
|
14
|
+
failure('Failed to update order')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def supported_currency?(order, currency)
|
21
|
+
store = order.store
|
22
|
+
supported_currencies = store.supported_currencies_list
|
23
|
+
supported_currencies.map(&:iso_code).include?(currency.upcase)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -31,8 +31,14 @@ module Spree
|
|
31
31
|
def by_sku(scope)
|
32
32
|
return scope unless (value = sort_by?('sku'))
|
33
33
|
|
34
|
+
select_product_attributes = if scope.to_sql.include?("#{Spree::Product.table_name}.*")
|
35
|
+
''
|
36
|
+
else
|
37
|
+
"#{Spree::Product.table_name}.*, "
|
38
|
+
end
|
39
|
+
|
34
40
|
scope.joins(:master).
|
35
|
-
select("#{
|
41
|
+
select("#{select_product_attributes}#{Spree::Variant.table_name}.sku").
|
36
42
|
where(Spree::Variant.table_name.to_s => { is_master: true }).
|
37
43
|
order("#{Spree::Variant.table_name}.sku #{value[1]}")
|
38
44
|
end
|
data/config/locales/en.yml
CHANGED
@@ -564,6 +564,7 @@ en:
|
|
564
564
|
draft_mode: Draft Mode
|
565
565
|
full_width: Full width
|
566
566
|
link_to_taxon: Link to Taxon
|
567
|
+
link_to_product: Link to Product
|
567
568
|
title: Title
|
568
569
|
fit: Fit To
|
569
570
|
info_hero_image_body: "<p>The Hero Image section adds a large image with a button and tagline text to your page.</p>
|
@@ -1349,6 +1350,7 @@ en:
|
|
1349
1350
|
backordered_confirm_info: Selected item is backordered so expect delays. Are you sure you want to order it?
|
1350
1351
|
overview: Overview
|
1351
1352
|
package_from: package from
|
1353
|
+
page: Page
|
1352
1354
|
page_not_found: Sorry! Page you are looking can’t be found.
|
1353
1355
|
pagination:
|
1354
1356
|
next_page: next page »
|
@@ -5,13 +5,13 @@ class CreateSpreeProductsStores < ActiveRecord::Migration[5.2]
|
|
5
5
|
add_index :spree_products_stores, [:product_id, :store_id], unique: true
|
6
6
|
end
|
7
7
|
unless column_exists?(:spree_products_stores, :created_at)
|
8
|
-
add_timestamps :spree_products_stores
|
8
|
+
add_timestamps :spree_products_stores, default: Time.current
|
9
9
|
end
|
10
10
|
else
|
11
11
|
create_table :spree_products_stores do |t|
|
12
12
|
t.references :product, index: true
|
13
13
|
t.references :store, index: true
|
14
|
-
t.timestamps
|
14
|
+
t.timestamps default: Time.current
|
15
15
|
|
16
16
|
t.index [:product_id, :store_id], unique: true
|
17
17
|
end
|
data/lib/spree/core/version.rb
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.3.
|
4
|
+
version: 4.3.2
|
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:
|
12
|
+
date: 2022-06-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -699,6 +699,8 @@ files:
|
|
699
699
|
- app/services/spree/account/update.rb
|
700
700
|
- app/services/spree/build_localized_redirect_url.rb
|
701
701
|
- app/services/spree/cart/add_item.rb
|
702
|
+
- app/services/spree/cart/associate.rb
|
703
|
+
- app/services/spree/cart/change_currency.rb
|
702
704
|
- app/services/spree/cart/create.rb
|
703
705
|
- app/services/spree/cart/destroy.rb
|
704
706
|
- app/services/spree/cart/empty.rb
|
@@ -724,7 +726,6 @@ files:
|
|
724
726
|
- app/sorters/spree/products/sort.rb
|
725
727
|
- app/validators/db_maximum_length_validator.rb
|
726
728
|
- app/validators/email_validator.rb
|
727
|
-
- app/views/spree/shared/_purchased_items_table.text.erb
|
728
729
|
- config/initializers/active_storage.rb
|
729
730
|
- config/initializers/friendly_id.rb
|
730
731
|
- config/initializers/inflections.rb
|
@@ -1194,9 +1195,9 @@ licenses:
|
|
1194
1195
|
- BSD-3-Clause
|
1195
1196
|
metadata:
|
1196
1197
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
1197
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.
|
1198
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.2
|
1198
1199
|
documentation_uri: https://dev-docs.spreecommerce.org/
|
1199
|
-
source_code_uri: https://github.com/spree/spree/tree/v4.3.
|
1200
|
+
source_code_uri: https://github.com/spree/spree/tree/v4.3.2
|
1200
1201
|
post_install_message:
|
1201
1202
|
rdoc_options: []
|
1202
1203
|
require_paths:
|
@@ -1212,7 +1213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1212
1213
|
- !ruby/object:Gem::Version
|
1213
1214
|
version: 1.8.23
|
1214
1215
|
requirements: []
|
1215
|
-
rubygems_version: 3.
|
1216
|
+
rubygems_version: 3.0.9
|
1216
1217
|
signing_key:
|
1217
1218
|
specification_version: 4
|
1218
1219
|
summary: The bare bones necessary for Spree
|
@@ -1,25 +0,0 @@
|
|
1
|
-
<% line_items.each do |item| %>
|
2
|
-
<%= item.variant.sku %> <%= raw(item.variant.product.name) %> <%= raw(item.variant.options_text) -%> (<%=item.quantity%>) <%= Spree.t('at_symbol') %> <%= item.single_money %> = <%= item.display_amount %>
|
3
|
-
<% end %>
|
4
|
-
============================================================
|
5
|
-
<%= Spree.t('order_mailer.subtotal') %> <%= order.display_item_total %>
|
6
|
-
<% if order.line_item_adjustments.exists? %>
|
7
|
-
<% if order.all_adjustments.promotion.eligible.exists? %>
|
8
|
-
<% order.all_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
|
9
|
-
<%= Spree.t(:promotion) %>: <%= label %> <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
|
10
|
-
<% end %>
|
11
|
-
<% end %>
|
12
|
-
<% end %>
|
13
|
-
|
14
|
-
<% order.shipments.group_by { |s| s.selected_shipping_rate.try(:name) }.each do |name, shipments| %>
|
15
|
-
<%= Spree.t(:shipping) %>: <%= name %> <%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: order.currency) %>
|
16
|
-
<% end %>
|
17
|
-
|
18
|
-
<% if order.additional_tax_total != 0 %>
|
19
|
-
<%= Spree.t(:tax) %>: <%= order.display_additional_tax_total.to_html %>
|
20
|
-
<% end %>
|
21
|
-
|
22
|
-
<% order.adjustments.eligible.each do |adjustment| %>
|
23
|
-
<% next if (adjustment.source_type == 'Spree::TaxRate') and (adjustment.amount == 0) %>
|
24
|
-
<%= adjustment.label %> <%= adjustment.display_amount %>
|
25
|
-
<% end %>
|