spree_core 4.2.0.rc2 → 4.2.1
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/assets/javascripts/spree.js +20 -0
- data/app/controllers/spree/base_controller.rb +2 -3
- data/app/controllers/spree/errors_controller.rb +11 -0
- data/app/finders/spree/addresses/find.rb +1 -12
- data/app/finders/spree/base_finder.rb +14 -0
- data/app/finders/spree/countries/find.rb +11 -3
- data/app/finders/spree/credit_cards/find.rb +2 -2
- data/app/finders/spree/orders/find_current.rb +2 -2
- data/app/finders/spree/products/find.rb +14 -3
- data/app/helpers/spree/base_helper.rb +3 -8
- data/app/helpers/spree/currency_helper.rb +34 -0
- data/app/helpers/spree/locale_helper.rb +31 -0
- data/app/helpers/spree/products_helper.rb +37 -12
- data/app/mailers/spree/base_mailer.rb +4 -4
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/mailers/spree/shipment_mailer.rb +1 -1
- data/app/models/concerns/spree/default_price.rb +1 -5
- data/app/models/concerns/spree/product_scopes.rb +1 -1
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/concerns/spree/user_payment_source.rb +1 -1
- data/app/models/spree/ability.rb +45 -34
- data/app/models/spree/address.rb +4 -0
- data/app/models/spree/app_configuration.rb +2 -2
- data/app/models/spree/app_dependencies.rb +6 -2
- data/app/models/spree/base.rb +5 -0
- data/app/models/spree/credit_card.rb +4 -0
- data/app/models/spree/fulfilment_changer.rb +58 -16
- data/app/models/spree/image.rb +14 -14
- data/app/models/spree/inventory_unit.rb +2 -7
- data/app/models/spree/line_item.rb +7 -15
- data/app/models/spree/order.rb +1 -0
- data/app/models/spree/payment.rb +18 -4
- data/app/models/spree/payment/processing.rb +2 -2
- data/app/models/spree/payment_method.rb +3 -3
- data/app/models/spree/price.rb +2 -7
- data/app/models/spree/product.rb +41 -17
- data/app/models/spree/promotion/rules/option_value.rb +1 -1
- data/app/models/spree/promotion/rules/product.rb +2 -1
- data/app/models/spree/promotion/rules/user.rb +2 -1
- data/app/models/spree/refund.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
- data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
- data/app/models/spree/shipment.rb +1 -1
- data/app/models/spree/shipping_method.rb +1 -5
- data/app/models/spree/shipping_rate.rb +2 -11
- data/app/models/spree/stock/availability_validator.rb +3 -4
- data/app/models/spree/stock_item.rb +1 -5
- data/app/models/spree/store.rb +55 -2
- data/app/models/spree/store_credit.rb +1 -1
- data/app/models/spree/variant.rb +9 -16
- data/app/models/spree/zone.rb +13 -4
- data/app/paginators/spree/shared/paginate.rb +8 -1
- data/app/presenters/spree/variant_presenter.rb +2 -5
- data/app/services/spree/account/addresses/create.rb +6 -1
- data/app/services/spree/account/addresses/{base.rb → helper.rb} +1 -3
- data/app/services/spree/account/addresses/update.rb +6 -1
- data/app/services/spree/build_localized_redirect_url.rb +101 -0
- data/app/services/spree/cart/estimate_shipping_rates.rb +1 -1
- data/app/services/spree/compare_line_items.rb +4 -2
- data/app/sorters/spree/base_sorter.rb +35 -0
- data/app/sorters/spree/orders/sort.rb +1 -37
- data/app/sorters/spree/products/sort.rb +9 -32
- data/app/validators/email_validator.rb +1 -1
- data/app/views/spree/errors/forbidden.html.erb +0 -0
- data/app/views/spree/errors/unauthorized.html.erb +0 -0
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +13 -2
- data/app/views/spree/shared/_purchased_items_table.html.erb +15 -6
- data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +2 -2
- data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +2 -2
- data/config/initializers/inflections.rb +3 -0
- data/config/initializers/rails61_fixes.rb +3 -0
- data/config/locales/en.yml +31 -60
- data/config/routes.rb +2 -1
- data/db/default/spree/stores.rb +1 -0
- data/db/default/spree/zones.rb +4 -1
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
- data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +1 -0
- data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -2
- data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
- data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
- data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
- data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
- data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
- data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +5 -0
- data/db/migrate/20210205211040_add_supported_locales_to_spree_stores.rb +11 -0
- data/db/migrate/20210215202602_migrate_spree_i18n_globalize_config.rb +22 -0
- data/lib/generators/spree/install/install_generator.rb +9 -6
- data/lib/spree/core.rb +2 -1
- data/lib/spree/core/controller_helpers/auth.rb +3 -1
- data/lib/spree/core/controller_helpers/common.rb +6 -8
- data/lib/spree/core/controller_helpers/currency.rb +54 -0
- data/lib/spree/core/controller_helpers/locale.rb +58 -0
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +4 -16
- data/lib/spree/core/product_filters.rb +3 -3
- data/lib/spree/core/version.rb +3 -1
- data/lib/spree/i18n.rb +17 -19
- data/lib/spree/permitted_attributes.rb +2 -2
- data/lib/spree/service_module.rb +8 -4
- data/lib/spree/testing_support/capybara_config.rb +1 -1
- data/lib/spree/testing_support/common_rake.rb +1 -1
- data/lib/spree/testing_support/controller_requests.rb +10 -10
- data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_factory.rb +1 -0
- data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
- data/lib/spree/testing_support/flatpickr_capybara.rb +101 -0
- data/lib/spree/testing_support/locale_helpers.rb +78 -0
- data/lib/spree/testing_support/next_instance_of.rb +38 -0
- data/lib/spree/testing_support/order_walkthrough.rb +8 -3
- data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
- data/spree_core.gemspec +5 -4
- metadata +71 -26
- data/lib/generators/spree/install/templates/config/initializers/spree_storefront.rb +0 -1
- data/lib/generators/spree/install/templates/config/spree_storefront.yml +0 -67
- data/lib/spree/core/controller_helpers/currency_helpers.rb +0 -15
- data/lib/spree/i18n/base.rb +0 -17
- data/lib/spree/i18n/initializer.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f9630450c68b8797b744c4f046769f568ebf50366a956fcbad41ede886c8419
|
4
|
+
data.tar.gz: 76d0ef19926855683298402e5ff729982be202b4c03fd021e4440ec7dc6d5185
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 604ae3a3334b1a70869577cbafa21eafb5c4953f280e6c9ef6b76b51e5b50b7dbe010b66681076019f55745e40448906e0668c9ee0dc4d8912759ae4fd7289b7
|
7
|
+
data.tar.gz: 6fb2f4a1d3b55e5974326ff473fa554757a8d5464c41cb2963af4ffef11e8f26250000c020075fa6dc70127a8267d908687490c9f62919d11ec6b18f56a512ed
|
@@ -17,9 +17,29 @@ Spree.adminPath = function () {
|
|
17
17
|
|
18
18
|
Spree.pathFor = function (path) {
|
19
19
|
var locationOrigin = (window.location.protocol + '//' + window.location.hostname) + (window.location.port ? ':' + window.location.port : '')
|
20
|
+
|
20
21
|
return this.url('' + locationOrigin + (this.mountedAt()) + path, this.url_params).toString()
|
21
22
|
}
|
22
23
|
|
24
|
+
Spree.localizedPathFor = function(path) {
|
25
|
+
if (typeof (SPREE_LOCALE) !== 'undefined' && typeof (SPREE_CURRENCY) !== 'undefined') {
|
26
|
+
var fullUrl = new URL(Spree.pathFor(path))
|
27
|
+
var params = fullUrl.searchParams
|
28
|
+
var pathName = fullUrl.pathname
|
29
|
+
|
30
|
+
params.set('currency', SPREE_CURRENCY)
|
31
|
+
|
32
|
+
if (pathName.match(/api\/v/)) {
|
33
|
+
params.set('locale', SPREE_LOCALE)
|
34
|
+
} else {
|
35
|
+
pathName = SPREE_LOCALE + '/' + pathName
|
36
|
+
}
|
37
|
+
|
38
|
+
path = pathName + '?' + params.toString()
|
39
|
+
}
|
40
|
+
return Spree.pathFor(path)
|
41
|
+
}
|
42
|
+
|
23
43
|
Spree.adminPathFor = function (path) {
|
24
44
|
return this.pathFor('' + (this.adminPath()) + path)
|
25
45
|
}
|
@@ -7,9 +7,8 @@ class Spree::BaseController < ApplicationController
|
|
7
7
|
include Spree::Core::ControllerHelpers::Search
|
8
8
|
include Spree::Core::ControllerHelpers::Store
|
9
9
|
include Spree::Core::ControllerHelpers::StrongParameters
|
10
|
-
include Spree::Core::ControllerHelpers::
|
10
|
+
include Spree::Core::ControllerHelpers::Locale
|
11
|
+
include Spree::Core::ControllerHelpers::Currency
|
11
12
|
|
12
13
|
respond_to :html
|
13
14
|
end
|
14
|
-
|
15
|
-
require 'spree/i18n/initializer'
|
@@ -1,13 +1,21 @@
|
|
1
1
|
module Spree
|
2
2
|
module Countries
|
3
|
-
class Find
|
4
|
-
def initialize(scope
|
3
|
+
class Find < ::Spree::BaseFinder
|
4
|
+
def initialize(scope:, params:)
|
5
5
|
@scope = scope
|
6
6
|
|
7
7
|
@shippable = String(params[:filter][:shippable]) unless params[:filter].nil?
|
8
8
|
end
|
9
9
|
|
10
10
|
def call
|
11
|
+
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
12
|
+
Spree::Countries::Find.new.call is deprecated and will be removed in Spree 5.0.
|
13
|
+
Please use Spree::Countries::Find.new.execute instead
|
14
|
+
DEPRECATION
|
15
|
+
execute
|
16
|
+
end
|
17
|
+
|
18
|
+
def execute
|
11
19
|
countries = by_shippability(scope)
|
12
20
|
|
13
21
|
countries
|
@@ -15,7 +23,7 @@ module Spree
|
|
15
23
|
|
16
24
|
private
|
17
25
|
|
18
|
-
attr_reader :shippable
|
26
|
+
attr_reader :shippable
|
19
27
|
|
20
28
|
def shippable?
|
21
29
|
shippable.present?
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spree
|
2
2
|
module CreditCards
|
3
|
-
class Find
|
4
|
-
def execute
|
3
|
+
class Find < ::Spree::BaseFinder
|
4
|
+
def execute
|
5
5
|
return scope.default.take if params[:id].eql?('default')
|
6
6
|
return scope.where(payment_method_id: params[:filter]['payment_method_id']) if params[:filter].present?
|
7
7
|
|
@@ -9,13 +9,13 @@ module Spree
|
|
9
9
|
return order unless order.nil?
|
10
10
|
return if user.nil?
|
11
11
|
|
12
|
-
incomplete_orders.order(created_at: :desc).find_by(store: store, user: user)
|
12
|
+
incomplete_orders.order(created_at: :desc).find_by(store: store, user: user, currency: params[:currency])
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def incomplete_orders
|
18
|
-
Spree::Order.incomplete.includes(scope_includes)
|
18
|
+
Spree::Order.incomplete.not_canceled.includes(scope_includes)
|
19
19
|
end
|
20
20
|
|
21
21
|
def scope_includes
|
@@ -7,7 +7,7 @@ module Spree
|
|
7
7
|
@ids = String(params.dig(:filter, :ids)).split(',')
|
8
8
|
@skus = String(params.dig(:filter, :skus)).split(',')
|
9
9
|
@price = String(params.dig(:filter, :price)).split(',').map(&:to_f)
|
10
|
-
@currency =
|
10
|
+
@currency = current_currency
|
11
11
|
@taxons = taxon_ids(params.dig(:filter, :taxons))
|
12
12
|
@concat_taxons = taxon_ids(params.dig(:filter, :concat_taxons))
|
13
13
|
@name = params.dig(:filter, :name)
|
@@ -22,6 +22,7 @@ module Spree
|
|
22
22
|
products = by_ids(scope)
|
23
23
|
products = by_skus(products)
|
24
24
|
products = by_price(products)
|
25
|
+
products = by_currency(products)
|
25
26
|
products = by_taxons(products)
|
26
27
|
products = by_concat_taxons(products)
|
27
28
|
products = by_name(products)
|
@@ -51,6 +52,10 @@ module Spree
|
|
51
52
|
price.present?
|
52
53
|
end
|
53
54
|
|
55
|
+
def currency?
|
56
|
+
currency.present?
|
57
|
+
end
|
58
|
+
|
54
59
|
def taxons?
|
55
60
|
taxons.present?
|
56
61
|
end
|
@@ -94,15 +99,21 @@ module Spree
|
|
94
99
|
def by_price(products)
|
95
100
|
return products unless price?
|
96
101
|
|
97
|
-
products.joins(master: :
|
102
|
+
products.joins(master: :prices).
|
98
103
|
where(
|
99
104
|
spree_prices: {
|
100
105
|
amount: price.min..price.max,
|
101
|
-
currency: currency
|
106
|
+
currency: currency&.upcase
|
102
107
|
}
|
103
108
|
)
|
104
109
|
end
|
105
110
|
|
111
|
+
def by_currency(products)
|
112
|
+
return products unless currency?
|
113
|
+
|
114
|
+
products.joins(master: :prices).where(spree_prices: { currency: currency.upcase })
|
115
|
+
end
|
116
|
+
|
106
117
|
def by_taxons(products)
|
107
118
|
return products unless taxons?
|
108
119
|
|
@@ -1,13 +1,7 @@
|
|
1
1
|
module Spree
|
2
2
|
module BaseHelper
|
3
3
|
def available_countries
|
4
|
-
|
5
|
-
|
6
|
-
countries = if checkout_zone && checkout_zone.kind == 'country'
|
7
|
-
checkout_zone.country_list
|
8
|
-
else
|
9
|
-
Spree::Country.all
|
10
|
-
end
|
4
|
+
countries = current_store.countries_available_for_checkout
|
11
5
|
|
12
6
|
countries.collect do |country|
|
13
7
|
country.name = Spree.t(country.iso, scope: 'country_names', default: country.name)
|
@@ -140,7 +134,8 @@ module Spree
|
|
140
134
|
[I18n.l(date.to_date, format: :long)].join(' ')
|
141
135
|
end
|
142
136
|
|
143
|
-
def seo_url(taxon, options =
|
137
|
+
def seo_url(taxon, options = {})
|
138
|
+
options.merge(locale: locale_param)
|
144
139
|
spree.nested_taxons_path(taxon.permalink, options)
|
145
140
|
end
|
146
141
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Spree
|
2
|
+
module CurrencyHelper
|
3
|
+
def currency_options(selected_value = nil)
|
4
|
+
selected_value ||= Spree::Config[:currency]
|
5
|
+
currencies = ::Money::Currency.table.map do |_code, details|
|
6
|
+
iso = details[:iso_code]
|
7
|
+
[iso, "#{details[:name]} (#{iso})"]
|
8
|
+
end
|
9
|
+
options_from_collection_for_select(currencies, :first, :last, selected_value)
|
10
|
+
end
|
11
|
+
|
12
|
+
def supported_currency_options
|
13
|
+
return if current_store.nil?
|
14
|
+
|
15
|
+
current_store.supported_currencies_list.map(&:iso_code).map { |currency| currency_presentation(currency) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def should_render_currency_dropdown?
|
19
|
+
return false if current_store.nil?
|
20
|
+
|
21
|
+
current_store.supported_currencies_list.size > 1
|
22
|
+
end
|
23
|
+
|
24
|
+
def currency_symbol(currency)
|
25
|
+
::Money::Currency.find(currency).symbol
|
26
|
+
end
|
27
|
+
|
28
|
+
def currency_presentation(currency)
|
29
|
+
label = [currency_symbol(currency), currency].compact.join(' ')
|
30
|
+
|
31
|
+
[label, currency]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Spree
|
2
|
+
module LocaleHelper
|
3
|
+
def all_locales_options
|
4
|
+
supported_locales_for_all_stores.map { |locale| locale_presentation(locale) }
|
5
|
+
end
|
6
|
+
|
7
|
+
def available_locales_options
|
8
|
+
available_locales.map { |locale| locale_presentation(locale) }
|
9
|
+
end
|
10
|
+
|
11
|
+
def supported_locales_options
|
12
|
+
return if current_store.nil?
|
13
|
+
|
14
|
+
current_store.supported_locales_list.map { |locale| locale_presentation(locale) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def locale_presentation(locale)
|
18
|
+
if I18n.exists?('spree.i18n.this_file_language', locale: locale)
|
19
|
+
[Spree.t('i18n.this_file_language', locale: locale), locale.to_s]
|
20
|
+
else
|
21
|
+
locale.to_s == 'en' ? ['English (US)', 'en'] : [locale, locale.to_s]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def should_render_locale_dropdown?
|
26
|
+
return false if current_store.nil?
|
27
|
+
|
28
|
+
current_store.supported_locales_list.size > 1
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -35,6 +35,11 @@ module Spree
|
|
35
35
|
variants_option_types_presenter(variants, product).default_variant || product.default_variant
|
36
36
|
end
|
37
37
|
|
38
|
+
def should_display_compare_at_price?(default_variant)
|
39
|
+
default_variant_price = default_variant.price_in(current_currency)
|
40
|
+
default_variant_price.compare_at_amount.present? && (default_variant_price.compare_at_amount > default_variant_price.amount)
|
41
|
+
end
|
42
|
+
|
38
43
|
def used_variants_options(variants, product)
|
39
44
|
variants_option_types_presenter(variants, product).options
|
40
45
|
end
|
@@ -115,19 +120,39 @@ module Spree
|
|
115
120
|
).call.to_json
|
116
121
|
end
|
117
122
|
|
123
|
+
def product_relation_types
|
124
|
+
@product_relation_types ||= @product.respond_to?(:relation_types) ? @product.relation_types : []
|
125
|
+
end
|
126
|
+
|
127
|
+
def product_relations_by_type(relation_type)
|
128
|
+
return [] if product_relation_types.none? || !@product.respond_to?(:relations)
|
129
|
+
|
130
|
+
product_ids = @product.relations.where(relation_type: relation_type).pluck(:related_to_id).uniq
|
131
|
+
|
132
|
+
return [] if product_ids.empty?
|
133
|
+
|
134
|
+
Spree::Product.
|
135
|
+
available.not_discontinued.distinct.
|
136
|
+
where(id: product_ids).
|
137
|
+
includes(
|
138
|
+
:tax_category,
|
139
|
+
master: [
|
140
|
+
:prices,
|
141
|
+
{ images: { attachment_attachment: :blob } },
|
142
|
+
]
|
143
|
+
).
|
144
|
+
limit(Spree::Config[:products_per_page])
|
145
|
+
end
|
146
|
+
|
118
147
|
def related_products
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
images: { attachment_attachment: :blob },
|
128
|
-
]
|
129
|
-
).
|
130
|
-
limit(Spree::Config[:products_per_page])
|
148
|
+
ActiveSupport::Deprecation.warn(<<-DEPRECATION, caller)
|
149
|
+
ProductsHelper#related_products is deprecated and will be removed in Spree 5.0.
|
150
|
+
Please use ProductsHelper#relations from now on.
|
151
|
+
DEPRECATION
|
152
|
+
|
153
|
+
return [] unless @product.respond_to?(:has_related_products?)
|
154
|
+
|
155
|
+
@related_products ||= relations_by_type('related_products')
|
131
156
|
end
|
132
157
|
|
133
158
|
def product_available_in_currency?
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Spree
|
2
2
|
class BaseMailer < ActionMailer::Base
|
3
|
-
|
3
|
+
helper Spree::MailHelper
|
4
4
|
|
5
5
|
def current_store
|
6
6
|
@current_store ||= Spree::Store.current
|
@@ -23,7 +23,7 @@ module Spree
|
|
23
23
|
helper_method :frontend_available?
|
24
24
|
|
25
25
|
def mail(headers = {}, &block)
|
26
|
-
ensure_default_action_mailer_url_host
|
26
|
+
ensure_default_action_mailer_url_host(headers[:store_url])
|
27
27
|
set_email_locale
|
28
28
|
super if Spree::Config[:send_core_emails]
|
29
29
|
end
|
@@ -33,9 +33,9 @@ module Spree
|
|
33
33
|
# this ensures that ActionMailer::Base.default_url_options[:host] is always set
|
34
34
|
# this is only a fail-safe solution if developer didn't set this in environment files
|
35
35
|
# http://guides.rubyonrails.org/action_mailer_basics.html#generating-urls-in-action-mailer-views
|
36
|
-
def ensure_default_action_mailer_url_host
|
36
|
+
def ensure_default_action_mailer_url_host(store_url = nil)
|
37
37
|
ActionMailer::Base.default_url_options ||= {}
|
38
|
-
ActionMailer::Base.default_url_options[:host] ||= current_store.url
|
38
|
+
ActionMailer::Base.default_url_options[:host] ||= store_url || current_store.url
|
39
39
|
end
|
40
40
|
|
41
41
|
def set_email_locale
|
@@ -5,14 +5,14 @@ module Spree
|
|
5
5
|
current_store = @order.store
|
6
6
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
7
7
|
subject += "#{current_store.name} #{Spree.t('order_mailer.confirm_email.subject')} ##{@order.number}"
|
8
|
-
mail(to: @order.email, from: from_address, subject: subject)
|
8
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.url)
|
9
9
|
end
|
10
10
|
|
11
11
|
def store_owner_notification_email(order)
|
12
12
|
@order = order.respond_to?(:id) ? order : Spree::Order.find(order)
|
13
13
|
current_store = @order.store
|
14
14
|
subject = Spree.t('order_mailer.store_owner_notification_email.subject', store_name: current_store.name)
|
15
|
-
mail(to: current_store.new_order_notifications_email, from: from_address, subject: subject)
|
15
|
+
mail(to: current_store.new_order_notifications_email, from: from_address, subject: subject, store_url: current_store.url)
|
16
16
|
end
|
17
17
|
|
18
18
|
def cancel_email(order, resend = false)
|
@@ -20,7 +20,7 @@ module Spree
|
|
20
20
|
current_store = @order.store
|
21
21
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
22
22
|
subject += "#{current_store.name} #{Spree.t('order_mailer.cancel_email.subject')} ##{@order.number}"
|
23
|
-
mail(to: @order.email, from: from_address, subject: subject)
|
23
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.url)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -6,7 +6,7 @@ module Spree
|
|
6
6
|
current_store = @reimbursement.store || Spree::Store.current
|
7
7
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
8
8
|
subject += "#{current_store.name} #{Spree.t('reimbursement_mailer.reimbursement_email.subject')} ##{@order.number}"
|
9
|
-
mail(to: @order.email, from: current_store.mail_from_address, subject: subject)
|
9
|
+
mail(to: @order.email, from: current_store.mail_from_address, subject: subject, store_url: current_store.url)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -6,7 +6,7 @@ module Spree
|
|
6
6
|
current_store = @shipment.store
|
7
7
|
subject = (resend ? "[#{Spree.t(:resend).upcase}] " : '')
|
8
8
|
subject += "#{current_store.name} #{Spree.t('shipment_mailer.shipped_email.subject')} ##{@order.number}"
|
9
|
-
mail(to: @order.email, from: from_address, subject: subject)
|
9
|
+
mail(to: @order.email, from: from_address, subject: subject, store_url: current_store.url)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|