spree_core 4.4.0 → 4.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/finders/spree/products/find.rb +1 -3
- data/app/finders/spree/taxons/find.rb +1 -1
- data/app/helpers/spree/base_helper.rb +12 -9
- data/app/helpers/spree/locale_helper.rb +6 -2
- data/app/helpers/spree/products_helper.rb +9 -4
- data/app/jobs/spree/variants/remove_from_incomplete_orders_job.rb +9 -0
- data/app/jobs/spree/variants/remove_line_item_job.rb +9 -0
- data/app/models/concerns/spree/calculated_adjustments.rb +1 -1
- data/app/models/concerns/spree/display_link.rb +17 -29
- data/app/models/concerns/spree/image_methods.rb +21 -9
- data/app/models/concerns/spree/metadata.rb +2 -2
- data/app/models/concerns/spree/product_scopes.rb +10 -8
- data/app/models/spree/address.rb +7 -1
- data/app/models/spree/asset/support/active_storage.rb +3 -2
- data/app/models/spree/asset.rb +3 -0
- data/app/models/spree/cms_page.rb +4 -0
- data/app/models/spree/cms_section.rb +12 -12
- data/app/models/spree/cms_section_image.rb +15 -0
- data/app/models/spree/cms_section_image_one.rb +4 -0
- data/app/models/spree/cms_section_image_three.rb +4 -0
- data/app/models/spree/cms_section_image_two.rb +4 -0
- data/app/models/spree/credit_card.rb +10 -4
- data/app/models/spree/customer_return.rb +3 -0
- data/app/models/spree/digital.rb +4 -0
- data/app/models/spree/digital_link.rb +7 -0
- data/app/models/spree/fulfilment_changer.rb +1 -1
- data/app/models/spree/gateway/bogus.rb +1 -1
- data/app/models/spree/icon.rb +5 -1
- data/app/models/spree/image/configuration/active_storage.rb +5 -1
- data/app/models/spree/image.rb +3 -3
- data/app/models/spree/inventory_unit.rb +5 -2
- data/app/models/spree/legacy_user.rb +1 -2
- data/app/models/spree/line_item.rb +4 -1
- data/app/models/spree/linkable/homepage.rb +3 -0
- data/app/models/spree/linkable/uri.rb +3 -0
- data/app/models/spree/log_entry.rb +4 -0
- data/app/models/spree/menu.rb +3 -0
- data/app/models/spree/menu_item.rb +7 -11
- data/app/models/spree/option_type.rb +4 -0
- data/app/models/spree/option_value.rb +5 -0
- data/app/models/spree/order/address_book.rb +1 -0
- data/app/models/spree/order.rb +11 -2
- data/app/models/spree/order_merger.rb +1 -1
- data/app/models/spree/payment/processing.rb +1 -1
- data/app/models/spree/payment.rb +7 -1
- data/app/models/spree/payment_capture_event.rb +4 -0
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +3 -0
- data/app/models/spree/payment_source.rb +10 -0
- data/app/models/spree/preference.rb +4 -0
- data/app/models/spree/price.rb +3 -0
- data/app/models/spree/product.rb +56 -14
- data/app/models/spree/product_property.rb +1 -0
- data/app/models/spree/promotion/rules/option_value.rb +2 -2
- data/app/models/spree/promotion.rb +6 -0
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/promotion_rule_user.rb +1 -1
- data/app/models/spree/property.rb +3 -0
- data/app/models/spree/prototype.rb +3 -0
- data/app/models/spree/refund.rb +8 -0
- data/app/models/spree/reimbursement.rb +3 -0
- data/app/models/spree/return_authorization.rb +3 -0
- data/app/models/spree/return_item.rb +4 -0
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment.rb +7 -0
- data/app/models/spree/shipping_category.rb +3 -0
- data/app/models/spree/shipping_method.rb +6 -0
- data/app/models/spree/state_change.rb +1 -1
- data/app/models/spree/stock/availability_validator.rb +9 -3
- data/app/models/spree/stock/content_item.rb +1 -1
- data/app/models/spree/stock/quantifier.rb +1 -1
- data/app/models/spree/stock_item.rb +5 -0
- data/app/models/spree/stock_location.rb +19 -5
- data/app/models/spree/stock_movement.rb +4 -0
- data/app/models/spree/stock_transfer.rb +3 -0
- data/app/models/spree/store.rb +19 -14
- data/app/models/spree/store_credit.rb +4 -1
- data/app/models/spree/store_favicon_image.rb +17 -0
- data/app/models/spree/store_logo.rb +9 -0
- data/app/models/spree/store_mailer_logo.rb +13 -0
- data/app/models/spree/tax_category.rb +6 -0
- data/app/models/spree/tax_rate.rb +6 -1
- data/app/models/spree/taxon.rb +4 -1
- data/app/models/spree/taxon_image/configuration/active_storage.rb +5 -1
- data/app/models/spree/taxon_image.rb +3 -2
- data/app/models/spree/taxonomy.rb +4 -1
- data/app/models/spree/variant.rb +43 -14
- data/app/models/spree/wished_item.rb +4 -0
- data/app/models/spree/wishlist.rb +4 -1
- data/app/models/spree/zone.rb +3 -0
- data/app/services/spree/addresses/create.rb +1 -1
- data/app/services/spree/addresses/update.rb +7 -2
- data/app/services/spree/cart/remove_line_item.rb +1 -0
- data/app/services/spree/variants/remove_line_items.rb +15 -0
- data/config/locales/en.yml +5 -2
- data/config/routes.rb +43 -0
- data/db/migrate/20211201202851_update_linkable_resource_types.rb +10 -0
- data/db/migrate/20211203082008_add_settings_to_payment_methods.rb +11 -0
- data/db/migrate/20211229162122_disable_propagate_all_variants_by_default.rb +5 -0
- data/db/migrate/20220103082046_add_status_and_make_active_at_to_spree_products.rb +7 -0
- data/db/migrate/20220106230929_add_internal_note_to_spree_orders.rb +5 -0
- data/db/migrate/20220113052823_create_payment_sources.rb +22 -0
- data/db/migrate/20220117100333_add_make_active_at_to_spree_products.rb +17 -0
- data/db/migrate/20220120092821_add_metadata_to_spree_tax_rates.rb +13 -0
- data/db/migrate/20220201103922_add_first_name_and_last_name_to_spree_users.rb +9 -0
- data/db/migrate/20220222083546_add_barcode_to_spree_variants.rb +6 -0
- data/db/migrate/20220329113557_fix_cms_pages_unique_indexes.rb +8 -0
- data/db/migrate/20220613133029_add_metadata_to_spree_stock_items.rb +13 -0
- data/lib/friendly_id/paranoia.rb +4 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +13 -2
- data/lib/generators/spree/dummy/templates/package.json +12 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
- data/lib/spree/core/configuration.rb +90 -0
- data/lib/spree/core/controller_helpers/auth.rb +3 -1
- data/lib/spree/core/controller_helpers/currency.rb +7 -5
- data/lib/spree/core/controller_helpers/locale.rb +8 -6
- data/lib/spree/core/controller_helpers/order.rb +4 -2
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +5 -3
- data/lib/spree/core/dependencies.rb +130 -0
- data/lib/spree/core/engine.rb +47 -37
- data/{app/models/spree → lib/spree/core}/preferences/configuration.rb +3 -0
- data/{app/models/spree → lib/spree/core}/preferences/preferable.rb +3 -0
- data/{app/models/spree → lib/spree/core}/preferences/preferable_class_methods.rb +0 -0
- data/{app/models/spree → lib/spree/core}/preferences/scoped_store.rb +0 -0
- data/{app/models/spree → lib/spree/core}/preferences/store.rb +0 -0
- data/lib/spree/core/search/base.rb +9 -5
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +25 -5
- data/lib/spree/permitted_attributes.rb +9 -7
- data/lib/spree/testing_support/common_rake.rb +1 -0
- data/lib/spree/testing_support/factories/favicon_image_factory.rb +9 -0
- data/lib/spree/testing_support/factories/icon_factory.rb +3 -1
- data/lib/spree/testing_support/factories/image_factory.rb +3 -1
- data/lib/spree/testing_support/factories/menu_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/order_factory.rb +2 -1
- data/lib/spree/testing_support/factories/product_factory.rb +6 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +1 -1
- data/lib/spree/testing_support/factories/role_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +3 -2
- data/lib/spree/testing_support/factories/store_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxon_image_factory.rb +3 -1
- data/lib/spree/testing_support/factories/user_factory.rb +4 -0
- data/lib/spree/testing_support/factories/variant_factory.rb +4 -0
- data/lib/spree_core.rb +2 -1
- data/lib/tasks/core.rake +12 -0
- data/spree_core.gemspec +2 -3
- metadata +63 -51
- data/app/models/friendly_id/slug_decorator.rb +0 -9
- data/app/models/spree/app_configuration.rb +0 -86
- data/lib/friendly_id/slug_rails5_patch.rb +0 -11
- data/lib/spree/core/app_dependencies.rb +0 -126
data/config/routes.rb
CHANGED
@@ -1 +1,44 @@
|
|
1
|
+
# direct method cannot be used inside engine routes
|
2
|
+
# see: https://github.com/rails/rails/issues/34872
|
3
|
+
Rails.application.routes.draw do
|
4
|
+
direct :cdn_image do |model, options|
|
5
|
+
if model.blob.service_name == 'cloudinary' && defined?(Cloudinary)
|
6
|
+
if model.class.method_defined?(:has_mvariation)
|
7
|
+
Cloudinary::Utils.cloudinary_url(model.blob.key,
|
8
|
+
width: model.variation.transformations[:resize_to_limit].first,
|
9
|
+
height: model.variation.transformations[:resize_to_limit].last,
|
10
|
+
crop: :fill
|
11
|
+
)
|
12
|
+
else
|
13
|
+
Cloudinary::Utils.cloudinary_url(model.blob.key)
|
14
|
+
end
|
15
|
+
elsif model.respond_to?(:signed_id)
|
16
|
+
route_for(
|
17
|
+
:rails_service_blob_proxy,
|
18
|
+
model.signed_id,
|
19
|
+
model.filename,
|
20
|
+
options.merge(
|
21
|
+
host: Spree.cdn_host || Rails.application.routes.default_url_options[:host],
|
22
|
+
port: Rails.application.routes.default_url_options[:port]
|
23
|
+
)
|
24
|
+
)
|
25
|
+
else
|
26
|
+
signed_blob_id = model.blob.signed_id
|
27
|
+
variation_key = model.variation.key
|
28
|
+
filename = model.blob.filename
|
29
|
+
|
30
|
+
route_for(
|
31
|
+
:rails_blob_representation_proxy,
|
32
|
+
signed_blob_id,
|
33
|
+
variation_key,
|
34
|
+
filename,
|
35
|
+
options.merge(
|
36
|
+
host: Spree.cdn_host || Rails.application.routes.default_url_options[:host],
|
37
|
+
port: Rails.application.routes.default_url_options[:port]
|
38
|
+
)
|
39
|
+
)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
1
44
|
Spree::Core::Engine.draw_routes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class UpdateLinkableResourceTypes < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
change_column_default :spree_menu_items, :linked_resource_type, 'Spree::Linkable::Uri'
|
4
|
+
|
5
|
+
Spree::MenuItem.where(linked_resource_type: 'URL').update_all(linked_resource_type: 'Spree::Linkable::Uri')
|
6
|
+
Spree::CmsSection.where(linked_resource_type: 'URL').update_all(linked_resource_type: 'Spree::Linkable::Uri')
|
7
|
+
Spree::MenuItem.where(linked_resource_type: 'Home Page').update_all(linked_resource_type: 'Spree::Linkable::Homepage')
|
8
|
+
Spree::CmsSection.where(linked_resource_type: 'Home Page').update_all(linked_resource_type: 'Spree::Linkable::Homepage')
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class AddSettingsToPaymentMethods < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
change_table :spree_payment_methods do |t|
|
4
|
+
if t.respond_to? :jsonb
|
5
|
+
add_column :spree_payment_methods, :settings, :jsonb
|
6
|
+
else
|
7
|
+
add_column :spree_payment_methods, :settings, :json
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class CreatePaymentSources < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
create_table :spree_payment_sources do |t|
|
4
|
+
t.string :gateway_payment_profile_id
|
5
|
+
t.string :type, index: true
|
6
|
+
|
7
|
+
t.references :payment_method, index: true, foreign_key: { to_table: :spree_payment_methods }
|
8
|
+
t.references :user, index: true, foreign_key: { to_table: :spree_users }
|
9
|
+
|
10
|
+
if t.respond_to? :jsonb
|
11
|
+
t.jsonb :public_metadata
|
12
|
+
t.jsonb :private_metadata
|
13
|
+
else
|
14
|
+
t.json :public_metadata
|
15
|
+
t.json :private_metadata
|
16
|
+
end
|
17
|
+
|
18
|
+
t.index [:type, :gateway_payment_profile_id], unique: true, name: 'index_payment_sources_on_type_and_gateway_payment_profile_id'
|
19
|
+
t.timestamps
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class AddMakeActiveAtToSpreeProducts < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
add_column :spree_products, :make_active_at, :datetime
|
4
|
+
add_index :spree_products, :make_active_at
|
5
|
+
|
6
|
+
Spree::Product.
|
7
|
+
where('discontinue_on IS NULL or discontinue_on > ?', Time.current).
|
8
|
+
where('available_on <= ?', Time.current).
|
9
|
+
where(status: 'draft').
|
10
|
+
update_all(status: 'active', updated_at: Time.current)
|
11
|
+
|
12
|
+
Spree::Product.
|
13
|
+
where('discontinue_on <= ?', Time.current).
|
14
|
+
where.not(status: 'archived').
|
15
|
+
update_all(status: 'archived', updated_at: Time.current)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddMetadataToSpreeTaxRates < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
change_table :spree_tax_rates do |t|
|
4
|
+
if t.respond_to? :jsonb
|
5
|
+
add_column :spree_tax_rates, :public_metadata, :jsonb
|
6
|
+
add_column :spree_tax_rates, :private_metadata, :jsonb
|
7
|
+
else
|
8
|
+
add_column :spree_tax_rates, :public_metadata, :json
|
9
|
+
add_column :spree_tax_rates, :private_metadata, :json
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class AddFirstNameAndLastNameToSpreeUsers < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
if Spree.user_class.present?
|
4
|
+
users_table_name = Spree.user_class.table_name
|
5
|
+
add_column users_table_name, :first_name, :string unless column_exists?(users_table_name, :first_name)
|
6
|
+
add_column users_table_name, :last_name, :string unless column_exists?(users_table_name, :last_name)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class FixCmsPagesUniqueIndexes < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
remove_index :spree_cms_pages, [:slug, :store_id, :deleted_at]
|
4
|
+
remove_index :spree_cms_pages, [:slug, :store_id], unique: true
|
5
|
+
|
6
|
+
add_index :spree_cms_pages, [:slug, :store_id, :deleted_at], unique: true
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddMetadataToSpreeStockItems < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
change_table :spree_stock_items do |t|
|
4
|
+
if t.respond_to? :jsonb
|
5
|
+
add_column :spree_stock_items, :public_metadata, :jsonb
|
6
|
+
add_column :spree_stock_items, :private_metadata, :jsonb
|
7
|
+
else
|
8
|
+
add_column :spree_stock_items, :public_metadata, :json
|
9
|
+
add_column :spree_stock_items, :private_metadata, :json
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -38,13 +38,12 @@ module Spree
|
|
38
38
|
opts[:skip_rc] = true
|
39
39
|
opts[:skip_spring] = true
|
40
40
|
opts[:skip_test] = true
|
41
|
-
opts[:skip_yarn] = true
|
42
|
-
opts[:skip_javascript] = true
|
43
41
|
opts[:skip_bootsnap] = true
|
44
42
|
|
45
43
|
puts 'Generating dummy Rails application...'
|
46
44
|
invoke Rails::Generators::AppGenerator,
|
47
45
|
[File.expand_path(dummy_path, destination_root)], opts
|
46
|
+
inject_yaml_permitted_classes
|
48
47
|
end
|
49
48
|
|
50
49
|
def test_dummy_config
|
@@ -58,6 +57,10 @@ module Spree
|
|
58
57
|
template 'rails/test.rb', "#{dummy_path}/config/environments/test.rb", force: true
|
59
58
|
template 'rails/script/rails', "#{dummy_path}/spec/dummy/script/rails", force: true
|
60
59
|
template 'initializers/devise.rb', "#{dummy_path}/config/initializers/devise.rb", force: true
|
60
|
+
|
61
|
+
if lib_name == 'spree/backend'
|
62
|
+
template 'package.json', "#{dummy_path}/package.json", force: true
|
63
|
+
end
|
61
64
|
end
|
62
65
|
|
63
66
|
def test_dummy_inject_extension_requirements
|
@@ -114,6 +117,14 @@ end
|
|
114
117
|
], before: /require '#{@lib_name}'/, verbose: true
|
115
118
|
end
|
116
119
|
|
120
|
+
def inject_yaml_permitted_classes
|
121
|
+
inside dummy_path do
|
122
|
+
inject_into_file 'config/application.rb', %Q[
|
123
|
+
config.active_record.yaml_column_permitted_classes = [Symbol, BigDecimal, ActiveSupport::HashWithIndifferentAccess]
|
124
|
+
], after: /config\.load_defaults.*$/, verbose: true
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
117
128
|
def dummy_path
|
118
129
|
ENV['DUMMY_PATH'] || 'spec/dummy'
|
119
130
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
{
|
2
|
+
"name": "app",
|
3
|
+
"private": "true",
|
4
|
+
"dependencies": {
|
5
|
+
"@hotwired/turbo-rails": "^7.2.0",
|
6
|
+
"@spree/dashboard": "^0.2.1",
|
7
|
+
"esbuild": "^0.15.10"
|
8
|
+
},
|
9
|
+
"scripts": {
|
10
|
+
"build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds"
|
11
|
+
}
|
12
|
+
}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# This is the primary location for defining spree preferences
|
2
|
+
#
|
3
|
+
# The expectation is that this is created once and stored in
|
4
|
+
# the spree environment
|
5
|
+
#
|
6
|
+
# setters:
|
7
|
+
# a.color = :blue
|
8
|
+
# a[:color] = :blue
|
9
|
+
# a.set :color = :blue
|
10
|
+
# a.preferred_color = :blue
|
11
|
+
#
|
12
|
+
# getters:
|
13
|
+
# a.color
|
14
|
+
# a[:color]
|
15
|
+
# a.get :color
|
16
|
+
# a.preferred_color
|
17
|
+
#
|
18
|
+
require 'spree/core/search/base'
|
19
|
+
require 'spree/core/preferences/configuration'
|
20
|
+
|
21
|
+
module Spree
|
22
|
+
module Core
|
23
|
+
class Configuration < Preferences::Configuration
|
24
|
+
# Alphabetized to more easily lookup particular preferences
|
25
|
+
preference :address_requires_state, :boolean, default: true # should state/state_name be required
|
26
|
+
preference :address_requires_phone, :boolean, default: true # Determines whether we require phone in address
|
27
|
+
preference :admin_path, :string, deprecated: true
|
28
|
+
preference :admin_products_per_page, :integer, deprecated: true
|
29
|
+
preference :admin_orders_per_page, :integer, deprecated: true
|
30
|
+
preference :admin_properties_per_page, :integer, deprecated: true
|
31
|
+
preference :admin_promotions_per_page, :integer, deprecated: true
|
32
|
+
preference :admin_customer_returns_per_page, :integer, deprecated: true
|
33
|
+
preference :admin_users_per_page, :integer, deprecated: true
|
34
|
+
preference :admin_show_version, :boolean, deprecated: true
|
35
|
+
preference :allow_checkout_on_gateway_error, :boolean, default: false
|
36
|
+
preference :allow_guest_checkout, :boolean, default: true
|
37
|
+
preference :alternative_shipping_phone, :boolean, default: false # Request extra phone for ship addr
|
38
|
+
preference :always_include_confirm_step, :boolean, default: false # Ensures confirmation step is always in checkout_progress bar, but does not force a confirm step if your payment methods do not support it.
|
39
|
+
preference :always_put_site_name_in_title, :boolean, deprecated: true
|
40
|
+
preference :title_site_name_separator, :string, deprecated: true
|
41
|
+
preference :auto_capture, :boolean, default: false # automatically capture the credit card (as opposed to just authorize and capture later)
|
42
|
+
preference :auto_capture_on_dispatch, :boolean, default: false # Captures payment for each shipment in Shipment#after_ship callback, and makes Shipment.ready when payment authorized.
|
43
|
+
preference :binary_inventory_cache, :boolean, default: false # only invalidate product cache when a stock item changes whether it is in_stock
|
44
|
+
preference :checkout_zone, :string, default: nil, deprecated: true # replace with the name of a zone if you would like to limit the countries
|
45
|
+
preference :company, :boolean, default: false # Request company field for billing and shipping addr
|
46
|
+
preference :currency, :string, default: 'USD', deprecated: true
|
47
|
+
preference :default_country_id, :integer, deprecated: true
|
48
|
+
preference :disable_sku_validation, :boolean, default: false # when turned off disables the built-in SKU uniqueness validation
|
49
|
+
preference :disable_store_presence_validation, :boolean, default: false # when turned off disables Store presence validation for Products and Payment Methods
|
50
|
+
preference :expedited_exchanges, :boolean, default: false # NOTE this requires payment profiles to be supported on your gateway of choice as well as a delayed job handler to be configured with activejob. kicks off an exchange shipment upon return authorization save. charge customer if they do not return items within timely manner.
|
51
|
+
preference :expedited_exchanges_days_window, :integer, default: 14 # the amount of days the customer has to return their item after the expedited exchange is shipped in order to avoid being charged
|
52
|
+
preference :layout, :string, deprecated: 'Please use Spree::Frontend::Config[:layout] instead'
|
53
|
+
preference :logo, :string, deprecated: true
|
54
|
+
preference :mailer_logo, :string, deprecated: true
|
55
|
+
preference :max_level_in_taxons_menu, :integer, deprecated: true
|
56
|
+
preference :products_per_page, :integer, default: 12
|
57
|
+
preference :require_master_price, :boolean, default: true
|
58
|
+
preference :restock_inventory, :boolean, default: true # Determines if a return item is restocked automatically once it has been received
|
59
|
+
preference :return_eligibility_number_of_days, :integer, default: 365
|
60
|
+
preference :send_core_emails, :boolean, default: true # Default mail headers settings
|
61
|
+
preference :shipping_instructions, :boolean, deprecated: true
|
62
|
+
preference :show_only_complete_orders_by_default, :boolean, deprecated: true
|
63
|
+
preference :show_variant_full_price, :boolean, default: false # Displays variant full price or difference with product price. Default false to be compatible with older behavior
|
64
|
+
preference :show_products_without_price, :boolean, default: false
|
65
|
+
preference :show_raw_product_description, :boolean, deprecated: true
|
66
|
+
preference :tax_using_ship_address, :boolean, default: true
|
67
|
+
preference :track_inventory_levels, :boolean, default: true # Determines whether to track on_hand values for variants / products.
|
68
|
+
|
69
|
+
# Store credits configurations
|
70
|
+
preference :non_expiring_credit_types, :array, default: []
|
71
|
+
preference :credit_to_new_allocation, :boolean, default: false
|
72
|
+
|
73
|
+
# Multi store configurations
|
74
|
+
preference :show_store_selector, :boolean, deprecated: true
|
75
|
+
|
76
|
+
# searcher_class allows spree extension writers to provide their own Search class
|
77
|
+
def searcher_class
|
78
|
+
ActiveSupport::Deprecation.warn('`Spree::Config.searcher_class` is deprecated and will be removed in Spree v5, please use `Spree.searcher_class` instead.')
|
79
|
+
@searcher_class ||= Spree.searcher_class
|
80
|
+
end
|
81
|
+
|
82
|
+
# Sets the path used for products, taxons and pages.
|
83
|
+
preference :storefront_products_path, :string, default: 'products'
|
84
|
+
preference :storefront_taxons_path, :string, default: 't'
|
85
|
+
preference :storefront_pages_path, :string, default: 'pages'
|
86
|
+
|
87
|
+
attr_writer :searcher_class
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -7,7 +7,9 @@ module Spree
|
|
7
7
|
|
8
8
|
included do
|
9
9
|
before_action :set_token
|
10
|
-
helper_method
|
10
|
+
if defined?(helper_method)
|
11
|
+
helper_method :try_spree_current_user
|
12
|
+
end
|
11
13
|
|
12
14
|
rescue_from CanCan::AccessDenied do |_exception|
|
13
15
|
redirect_unauthorized_access
|
@@ -5,11 +5,13 @@ module Spree
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
helper_method
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
if defined?(helper_method)
|
9
|
+
helper_method :supported_currencies
|
10
|
+
helper_method :supported_currencies_for_all_stores
|
11
|
+
helper_method :current_currency
|
12
|
+
helper_method :supported_currency?
|
13
|
+
helper_method :currency_param
|
14
|
+
end
|
13
15
|
end
|
14
16
|
|
15
17
|
def current_currency
|
@@ -7,12 +7,14 @@ module Spree
|
|
7
7
|
included do
|
8
8
|
before_action :set_locale
|
9
9
|
|
10
|
-
helper_method
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
if defined?(helper_method)
|
11
|
+
helper_method :supported_locales
|
12
|
+
helper_method :supported_locales_for_all_stores
|
13
|
+
helper_method :current_locale
|
14
|
+
helper_method :supported_locale?
|
15
|
+
helper_method :available_locales
|
16
|
+
helper_method :locale_param
|
17
|
+
end
|
16
18
|
end
|
17
19
|
|
18
20
|
def set_locale
|
@@ -5,8 +5,10 @@ module Spree
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
helper_method
|
9
|
-
|
8
|
+
if defined?(helper_method)
|
9
|
+
helper_method :current_order
|
10
|
+
helper_method :simple_current_order
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
# Used in the link_to_cart helper.
|
@@ -3,7 +3,7 @@ module Spree
|
|
3
3
|
module ControllerHelpers
|
4
4
|
module Search
|
5
5
|
def build_searcher(params)
|
6
|
-
Spree
|
6
|
+
Spree.searcher_class.new(params).tap do |searcher|
|
7
7
|
searcher.current_user = try_spree_current_user
|
8
8
|
searcher.current_currency = current_currency&.upcase
|
9
9
|
searcher.current_store = current_store
|
@@ -5,9 +5,11 @@ module Spree
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
helper_method
|
9
|
-
|
10
|
-
|
8
|
+
if defined?(helper_method)
|
9
|
+
helper_method :current_store
|
10
|
+
helper_method :current_price_options
|
11
|
+
helper_method :available_menus
|
12
|
+
end
|
11
13
|
end
|
12
14
|
|
13
15
|
def current_store
|
@@ -0,0 +1,130 @@
|
|
1
|
+
require_relative 'dependencies_helper'
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
class Dependencies
|
6
|
+
include Spree::DependenciesHelper
|
7
|
+
|
8
|
+
INJECTION_POINTS = [
|
9
|
+
:ability_class,
|
10
|
+
:cart_create_service, :cart_add_item_service, :cart_remove_item_service,
|
11
|
+
:cart_remove_line_item_service, :cart_set_item_quantity_service, :cart_recalculate_service,
|
12
|
+
:cms_page_finder, :cart_update_service, :checkout_next_service, :checkout_advance_service, :checkout_update_service,
|
13
|
+
:checkout_complete_service, :checkout_add_store_credit_service, :checkout_remove_store_credit_service, :checkout_get_shipping_rates_service,
|
14
|
+
:coupon_handler, :menu_finder, :country_finder, :current_order_finder, :credit_card_finder,
|
15
|
+
:completed_order_finder, :order_sorter, :cart_compare_line_items_service, :collection_paginator, :products_sorter,
|
16
|
+
:products_finder, :taxon_finder, :line_item_by_variant_finder, :cart_estimate_shipping_rates_service,
|
17
|
+
:account_create_address_service, :account_update_address_service, :account_create_service, :account_update_service,
|
18
|
+
:address_finder, :collection_sorter, :error_handler, :current_store_finder, :cart_empty_service, :cart_destroy_service,
|
19
|
+
:classification_reposition_service, :credit_cards_destroy_service, :cart_associate_service, :cart_change_currency_service,
|
20
|
+
:line_item_create_service, :line_item_update_service, :line_item_destroy_service,
|
21
|
+
:order_approve_service, :order_cancel_service, :shipment_change_state_service, :shipment_update_service,
|
22
|
+
:shipment_create_service, :shipment_add_item_service, :shipment_remove_item_service,
|
23
|
+
:payment_create_service, :address_create_service, :address_update_service,
|
24
|
+
:checkout_select_shipping_method_service
|
25
|
+
].freeze
|
26
|
+
|
27
|
+
attr_accessor *INJECTION_POINTS
|
28
|
+
|
29
|
+
def initialize
|
30
|
+
set_default_ability
|
31
|
+
set_default_services
|
32
|
+
set_default_finders
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def set_default_ability
|
38
|
+
@ability_class = 'Spree::Ability'
|
39
|
+
end
|
40
|
+
|
41
|
+
def set_default_services
|
42
|
+
# cart
|
43
|
+
@cart_compare_line_items_service = 'Spree::CompareLineItems'
|
44
|
+
@cart_create_service = 'Spree::Cart::Create'
|
45
|
+
@cart_add_item_service = 'Spree::Cart::AddItem'
|
46
|
+
@cart_update_service = 'Spree::Cart::Update'
|
47
|
+
@cart_recalculate_service = 'Spree::Cart::Recalculate'
|
48
|
+
@cart_remove_item_service = 'Spree::Cart::RemoveItem'
|
49
|
+
@cart_remove_line_item_service = 'Spree::Cart::RemoveLineItem'
|
50
|
+
@cart_set_item_quantity_service = 'Spree::Cart::SetQuantity'
|
51
|
+
@cart_estimate_shipping_rates_service = 'Spree::Cart::EstimateShippingRates'
|
52
|
+
@cart_empty_service = 'Spree::Cart::Empty'
|
53
|
+
@cart_destroy_service = 'Spree::Cart::Destroy'
|
54
|
+
@cart_associate_service = 'Spree::Cart::Associate'
|
55
|
+
@cart_change_currency_service = 'Spree::Cart::ChangeCurrency'
|
56
|
+
|
57
|
+
# checkout
|
58
|
+
@checkout_next_service = 'Spree::Checkout::Next'
|
59
|
+
@checkout_advance_service = 'Spree::Checkout::Advance'
|
60
|
+
@checkout_update_service = 'Spree::Checkout::Update'
|
61
|
+
@checkout_complete_service = 'Spree::Checkout::Complete'
|
62
|
+
@checkout_add_store_credit_service = 'Spree::Checkout::AddStoreCredit'
|
63
|
+
@checkout_remove_store_credit_service = 'Spree::Checkout::RemoveStoreCredit'
|
64
|
+
@checkout_get_shipping_rates_service = 'Spree::Checkout::GetShippingRates'
|
65
|
+
@checkout_select_shipping_method_service = 'Spree::Checkout::SelectShippingMethod'
|
66
|
+
|
67
|
+
# order
|
68
|
+
@order_approve_service = 'Spree::Orders::Approve'
|
69
|
+
@order_cancel_service = 'Spree::Orders::Cancel'
|
70
|
+
|
71
|
+
# shipment
|
72
|
+
@shipment_change_state_service = 'Spree::Shipments::ChangeState'
|
73
|
+
@shipment_create_service = 'Spree::Shipments::Create'
|
74
|
+
@shipment_update_service = 'Spree::Shipments::Update'
|
75
|
+
@shipment_add_item_service = 'Spree::Shipments::AddItem'
|
76
|
+
@shipment_remove_item_service = 'Spree::Shipments::RemoveItem'
|
77
|
+
|
78
|
+
# sorter
|
79
|
+
@collection_sorter = 'Spree::BaseSorter'
|
80
|
+
@order_sorter = 'Spree::BaseSorter'
|
81
|
+
@products_sorter = 'Spree::Products::Sort'
|
82
|
+
|
83
|
+
# paginator
|
84
|
+
@collection_paginator = 'Spree::Shared::Paginate'
|
85
|
+
|
86
|
+
# coupons
|
87
|
+
# TODO: we should split this service into 2 separate - Add and Remove
|
88
|
+
@coupon_handler = 'Spree::PromotionHandler::Coupon'
|
89
|
+
|
90
|
+
# account
|
91
|
+
@account_create_service = 'Spree::Account::Create'
|
92
|
+
@account_update_service = 'Spree::Account::Update'
|
93
|
+
|
94
|
+
# addresses
|
95
|
+
@address_create_service = 'Spree::Addresses::Create'
|
96
|
+
@address_update_service = 'Spree::Addresses::Update'
|
97
|
+
|
98
|
+
# credit cards
|
99
|
+
@credit_cards_destroy_service = 'Spree::CreditCards::Destroy'
|
100
|
+
|
101
|
+
# classifications
|
102
|
+
@classification_reposition_service = 'Spree::Classifications::Reposition'
|
103
|
+
|
104
|
+
# line items
|
105
|
+
@line_item_create_service = 'Spree::LineItems::Create'
|
106
|
+
@line_item_update_service = 'Spree::LineItems::Update'
|
107
|
+
@line_item_destroy_service = 'Spree::LineItems::Destroy'
|
108
|
+
|
109
|
+
@payment_create_service = 'Spree::Payments::Create'
|
110
|
+
|
111
|
+
# errors
|
112
|
+
@error_handler = 'Spree::ErrorReporter'
|
113
|
+
end
|
114
|
+
|
115
|
+
def set_default_finders
|
116
|
+
@address_finder = 'Spree::Addresses::Find'
|
117
|
+
@country_finder = 'Spree::Countries::Find'
|
118
|
+
@cms_page_finder = 'Spree::CmsPages::Find'
|
119
|
+
@menu_finder = 'Spree::Menus::Find'
|
120
|
+
@current_order_finder = 'Spree::Orders::FindCurrent'
|
121
|
+
@current_store_finder = 'Spree::Stores::FindCurrent'
|
122
|
+
@completed_order_finder = 'Spree::Orders::FindComplete'
|
123
|
+
@credit_card_finder = 'Spree::CreditCards::Find'
|
124
|
+
@products_finder = 'Spree::Products::Find'
|
125
|
+
@taxon_finder = 'Spree::Taxons::Find'
|
126
|
+
@line_item_by_variant_finder = 'Spree::LineItems::FindByVariant'
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|