Class: Spree::AppConfiguration

Inherits:
Preferences::Configuration show all
Defined in:
lib/spree/app_configuration.rb

Instance Attribute Summary collapse

Attributes inherited from Preferences::Configuration

#load_defaults_called, #loaded_defaults, #preference_store

Instance Method Summary collapse

Methods inherited from Preferences::Configuration

by_version, #check_load_defaults_called, class_name_attribute, #configure, #initialize, #load_defaults, preference, #reset, #set, #use_legacy_db_preferences!, #use_static_preferences!

Methods included from Preferences::Preferable

#admin_form_preference_names, #default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference

Constructor Details

This class inherits a constructor from Spree::Preferences::Configuration

Instance Attribute Details

#add_payment_sources_to_wallet_classClass

Allows providing your own class for adding payment sources to a user’s “wallet” after an order moves to the complete state.



414
# File 'lib/spree/app_configuration.rb', line 414

class_name_attribute :add_payment_sources_to_wallet_class, default: 'Spree::Wallet::AddPaymentSourcesToWallet'

#address_requires_phoneBoolean



31
# File 'lib/spree/app_configuration.rb', line 31

preference :address_requires_phone, :boolean, default: true

#address_requires_stateBoolean



35
# File 'lib/spree/app_configuration.rb', line 35

preference :address_requires_state, :boolean, default: true

#admin_interface_logoString



39
# File 'lib/spree/app_configuration.rb', line 39

preference :admin_interface_logo, :string, default: 'logo/solidus.svg'

#admin_products_per_pageInteger



43
# File 'lib/spree/app_configuration.rb', line 43

preference :admin_products_per_page, :integer, default: 10

#admin_variants_per_pageInteger



47
# File 'lib/spree/app_configuration.rb', line 47

preference :admin_variants_per_page, :integer, default: 20

#admin_vat_country_isoString?

Set this if you want to enter prices in the backend including value added tax.



53
# File 'lib/spree/app_configuration.rb', line 53

preference :admin_vat_country_iso, :string, default: nil

#allow_checkout_on_gateway_errorBoolean



57
# File 'lib/spree/app_configuration.rb', line 57

preference :allow_checkout_on_gateway_error, :boolean, default: false

#allow_guest_checkoutBoolean



61
# File 'lib/spree/app_configuration.rb', line 61

preference :allow_guest_checkout, :boolean, default: true

#allow_return_item_amount_editingBoolean



69
# File 'lib/spree/app_configuration.rb', line 69

preference :allow_return_item_amount_editing, :boolean, default: false

#allowed_image_mime_typesArray

Defines which MIME types are allowed for images ‘%w(image/jpeg image/jpg image/png image/gif).freeze` is the default.



476
# File 'lib/spree/app_configuration.rb', line 476

class_name_attribute :allowed_image_mime_types, default: %w(image/jpeg image/jpg image/png image/gif).freeze

#alternative_billing_phoneBoolean



73
# File 'lib/spree/app_configuration.rb', line 73

preference :alternative_billing_phone, :boolean, default: false

#alternative_shipping_phoneBoolean



77
# File 'lib/spree/app_configuration.rb', line 77

preference :alternative_shipping_phone, :boolean, default: false

#always_put_site_name_in_titleBoolean



81
# File 'lib/spree/app_configuration.rb', line 81

preference :always_put_site_name_in_title, :boolean, default: true

#auto_captureBoolean

Note:

Setting this to true is not recommended. Performing an authorize and later capture has far superior error handing. VISA and MasterCard also require that shipments are sent within a certain time of the card being charged.

Returns Automatically capture the credit card (as opposed to just authorize and capture later) (default: false).



89
# File 'lib/spree/app_configuration.rb', line 89

preference :auto_capture, :boolean, default: false

#auto_capture_exchangesBoolean



93
# File 'lib/spree/app_configuration.rb', line 93

preference :auto_capture_exchanges, :boolean, default: false

#automatic_default_addressBoolean

The default value of true preserves existing backwards compatible feature of treating the most recently used address in checkout as the user’s default address. Setting to false means that the user should manage their own default via some custom UI that uses AddressBookController.



101
# File 'lib/spree/app_configuration.rb', line 101

preference :automatic_default_address, :boolean, default: true

#available_currenciesArray



273
# File 'lib/spree/app_configuration.rb', line 273

attr_writer :available_currencies

#billing_address_requiredBoolean

Controls whether billing address is required or not in the checkout process by default, can be overridden at order level. (default: false)



108
# File 'lib/spree/app_configuration.rb', line 108

preference :billing_address_required, :boolean, default: false

#can_restrict_stock_managementBoolean



112
# File 'lib/spree/app_configuration.rb', line 112

preference :can_restrict_stock_management, :boolean, default: false

#carton_shipped_email_classActionMailer::Base

Allows providing your own Mailer for shipped cartons.



358
# File 'lib/spree/app_configuration.rb', line 358

class_name_attribute :carton_shipped_email_class, default: 'Spree::CartonMailer'

#checkout_zoneString



116
# File 'lib/spree/app_configuration.rb', line 116

preference :checkout_zone, :string, default: nil

#companyBoolean



120
# File 'lib/spree/app_configuration.rb', line 120

preference :company, :boolean, default: false

#completable_order_created_cutoffInteger



124
# File 'lib/spree/app_configuration.rb', line 124

preference :completable_order_created_cutoff_days, :integer, default: nil

#countries_that_use_nested_subregionsArray

of the default subregions that come with Carmen. Will be used on store creation to ensure the correct states are generated, and when running the states regenerate rake task. (default: [‘IT’])



229
# File 'lib/spree/app_configuration.rb', line 229

preference :countries_that_use_nested_subregions, :array, default: ['IT']

#credit_to_new_allocationBoolean



132
# File 'lib/spree/app_configuration.rb', line 132

preference :credit_to_new_allocation, :boolean, default: false

#currencyString

Currency to use by default when not defined on the site (default: “USD”)



137
# File 'lib/spree/app_configuration.rb', line 137

preference :currency, :string, default: "USD"

#current_store_selector_classClass

Allows providing your own class for choosing which store to use.



437
# File 'lib/spree/app_configuration.rb', line 437

class_name_attribute :current_store_selector_class, default: 'Spree::StoreSelector::ByServerName'

#customer_returns_per_pageInteger



141
# File 'lib/spree/app_configuration.rb', line 141

preference :customer_returns_per_page, :integer, default: 15

#default_country_isoString

Default customer country ISO code



146
# File 'lib/spree/app_configuration.rb', line 146

preference :default_country_iso, :string, default: 'US'

#default_payment_builder_classClass

Allows providing your own class for adding default payments to a user’s order from their “wallet”.



373
# File 'lib/spree/app_configuration.rb', line 373

class_name_attribute :default_payment_builder_class, default: 'Spree::Wallet::DefaultPaymentBuilder'

#generate_api_key_for_all_rolesBoolean

at role_user creation for all roles. (default: false)



151
# File 'lib/spree/app_configuration.rb', line 151

preference :generate_api_key_for_all_roles, :boolean, default: false


65
# File 'lib/spree/app_configuration.rb', line 65

preference :guest_token_cookie_options, :hash, default: {}

#image_attachment_moduleModule

Allows switching attachment library for Image

‘Spree::Image::ActiveStorageAttachment` is the default and provides the Active Storage implementation.

Enumerable of images adhering to the present_image_class interface



468
# File 'lib/spree/app_configuration.rb', line 468

class_name_attribute :image_attachment_module, default: 'Spree::Image::ActiveStorageAttachment'

#inventory_cache_thresholdInteger

Only invalidate product caches when the count on hand for a stock item falls below or rises about the inventory_cache_threshold. When undefined, the product caches will be invalidated anytime the count on hand is changed.



158
# File 'lib/spree/app_configuration.rb', line 158

preference :inventory_cache_threshold, :integer

#layoutString



162
# File 'lib/spree/app_configuration.rb', line 162

preference :layout, :string, default: 'spree/layouts/spree_application'

#logoString



166
# File 'lib/spree/app_configuration.rb', line 166

preference :logo, :string, default: 'logo/solidus.svg'

#mails_fromString



170
# File 'lib/spree/app_configuration.rb', line 170

preference :mails_from, :string, default: '[email protected]'

#max_level_in_taxons_menuInteger



174
# File 'lib/spree/app_configuration.rb', line 174

preference :max_level_in_taxons_menu, :integer, default: 1

#order_bill_address_usedBoolean

bill addresses on payment sources. (default: true)



179
# File 'lib/spree/app_configuration.rb', line 179

preference :order_bill_address_used, :boolean, default: true

#order_cancellations_classClass

Allows providing your own class for managing the inventory units of a completed order.



395
# File 'lib/spree/app_configuration.rb', line 395

class_name_attribute :order_cancellations_class, default: 'Spree::OrderCancellations'

#order_capturing_time_windowInteger



183
# File 'lib/spree/app_configuration.rb', line 183

preference :order_capturing_time_window, :integer, default: 14

#order_contents_classClass

Allows providing your own class for managing the contents of an order.



380
# File 'lib/spree/app_configuration.rb', line 380

class_name_attribute :order_contents_class, default: 'Spree::OrderContents'

#order_mailer_classActionMailer::Base

Allows providing your own Mailer for order mailer.



333
# File 'lib/spree/app_configuration.rb', line 333

class_name_attribute :order_mailer_class, default: 'Spree::OrderMailer'

#order_merger_classClass

Allows providing your own class for merging two orders.



365
# File 'lib/spree/app_configuration.rb', line 365

class_name_attribute :order_merger_class, default: 'Spree::OrderMerger'

#order_mutex_max_ageInteger



187
# File 'lib/spree/app_configuration.rb', line 187

preference :order_mutex_max_age, :integer, default: 120

#order_number_generatorClass

Allows providing your own class instance for generating order numbers.



534
# File 'lib/spree/app_configuration.rb', line 534

attr_writer :order_number_generator

#order_shipping_classClass

Allows providing your own class for shipping an order.



387
# File 'lib/spree/app_configuration.rb', line 387

class_name_attribute :order_shipping_class, default: 'Spree::OrderShipping'

#orders_per_pageInteger



191
# File 'lib/spree/app_configuration.rb', line 191

preference :orders_per_page, :integer, default: 15

#payment_cancellerClass

Allows providing your own class for canceling payments.



401
# File 'lib/spree/app_configuration.rb', line 401

attr_writer :payment_canceller

Allows providing your own class for image galleries on Products

Enumerable of images adhering to the present_image_class interface



458
# File 'lib/spree/app_configuration.rb', line 458

class_name_attribute :product_gallery_class, default: 'Spree::Gallery::ProductGallery'

#product_image_style_defaultSymbol

Defines which style to default to when style is not provided :product is the default.



484
# File 'lib/spree/app_configuration.rb', line 484

class_name_attribute :product_image_style_default, default: :product

#product_image_stylesHash

Defines image styles/sizes hash for styles ‘{ mini: ’48x48>‘,

small: '400x400>',
product: '680x680>',
large: '1200x1200>' } is the default.


495
496
497
498
# File 'lib/spree/app_configuration.rb', line 495

class_name_attribute :product_image_styles, default: { mini: '48x48>',
small: '400x400>',
product: '680x680>',
large: '1200x1200>' }

#products_per_pageInteger



199
# File 'lib/spree/app_configuration.rb', line 199

preference :products_per_page, :integer, default: 12

#promotion_code_batch_mailer_classActionMailer::Base

Allows providing your own Mailer for promotion code batch mailer.



342
# File 'lib/spree/app_configuration.rb', line 342

class_name_attribute :promotion_code_batch_mailer_class, default: 'Spree::PromotionCodeBatchMailer'

#promotions_per_pageInteger



203
# File 'lib/spree/app_configuration.rb', line 203

preference :promotions_per_page, :integer, default: 15

#properties_per_pageInteger



195
# File 'lib/spree/app_configuration.rb', line 195

preference :properties_per_page, :integer, default: 15

#reimbursement_mailer_classActionMailer::Base

Allows providing your own Mailer for reimbursement mailer.



350
# File 'lib/spree/app_configuration.rb', line 350

class_name_attribute :reimbursement_mailer_class, default: 'Spree::ReimbursementMailer'

#require_master_priceBoolean



207
# File 'lib/spree/app_configuration.rb', line 207

preference :require_master_price, :boolean, default: true

#require_payment_to_shipBoolean



211
# File 'lib/spree/app_configuration.rb', line 211

preference :require_payment_to_ship, :boolean, default: true

#return_eligibility_number_of_daysInteger



215
# File 'lib/spree/app_configuration.rb', line 215

preference :return_eligibility_number_of_days, :integer, default: 365

#roles_for_auto_api_keyArray

at role_user creation is desired when user has one of these roles. (default: [‘admin’])



221
# File 'lib/spree/app_configuration.rb', line 221

preference :roles_for_auto_api_key, :array, default: ['admin']

#send_core_emailsBoolean



233
# File 'lib/spree/app_configuration.rb', line 233

preference :send_core_emails, :boolean, default: true

#shipping_instructionsBoolean



237
# File 'lib/spree/app_configuration.rb', line 237

preference :shipping_instructions, :boolean, default: false

#shipping_rate_tax_calculator_classClass

Allows providing your own class for calculating taxes on a shipping rate.



324
# File 'lib/spree/app_configuration.rb', line 324

class_name_attribute :shipping_rate_tax_calculator_class, default: 'Spree::TaxCalculator::ShippingRate'

#show_only_complete_orders_by_defaultBoolean



241
# File 'lib/spree/app_configuration.rb', line 241

preference :show_only_complete_orders_by_default, :boolean, default: true

#show_products_without_priceBoolean



249
# File 'lib/spree/app_configuration.rb', line 249

preference :show_products_without_price, :boolean, default: false

#show_raw_product_descriptionBoolean



253
# File 'lib/spree/app_configuration.rb', line 253

preference :show_raw_product_description, :boolean, default: false

#show_variant_full_priceBoolean



245
# File 'lib/spree/app_configuration.rb', line 245

preference :show_variant_full_price, :boolean, default: false

#tax_adjuster_classClass

Allows providing your own class for calculating taxes on an order.

This extension point is under development and may change in a future minor release.



423
# File 'lib/spree/app_configuration.rb', line 423

class_name_attribute :tax_adjuster_class, default: 'Spree::Tax::OrderAdjuster'

#tax_calculator_classClass

Allows providing your own class for calculating taxes on an order.



430
# File 'lib/spree/app_configuration.rb', line 430

class_name_attribute :tax_calculator_class, default: 'Spree::TaxCalculator::Default'

#tax_using_ship_addressBoolean



257
# File 'lib/spree/app_configuration.rb', line 257

preference :tax_using_ship_address, :boolean, default: true

#taxon_attachment_moduleModule

Allows switching attachment library for Taxon

‘Spree::Taxon::ActiveStorageAttachment` is the default and provides the Active Storage implementation.

Enumerable of taxons adhering to the present_taxon_class interface



526
# File 'lib/spree/app_configuration.rb', line 526

class_name_attribute :taxon_attachment_module, default: 'Spree::Taxon::ActiveStorageAttachment'

#taxon_image_style_defaultSymbol

Defines which style to default to when style is not provided :mini is the default.



505
# File 'lib/spree/app_configuration.rb', line 505

class_name_attribute :taxon_image_style_default, default: :mini

#taxon_stylesHash

Defines taxon styles/sizes hash for styles ‘{ mini: ’48x48>‘,

small: '400x400>',
product: '680x680>',
large: '1200x1200>' } is the default.


516
# File 'lib/spree/app_configuration.rb', line 516

class_name_attribute :taxon_image_styles, default: { mini: '32x32>', normal: '128x128>' }

#taxon_url_parametizer_classClass

Allows providing your own class for creating urls on taxons

returns a String



444
# File 'lib/spree/app_configuration.rb', line 444

class_name_attribute :taxon_url_parametizer_class, default: 'ActiveSupport::Inflector'

#track_inventory_levelsObject

Determines whether to track on_hand values for variants / products. If you do not track inventory, or have effectively unlimited inventory for all products you can turn this on.



264
# File 'lib/spree/app_configuration.rb', line 264

preference :track_inventory_levels, :boolean, default: true

Allows providing your own class for image galleries on Variants

Enumerable of images adhering to the present_image_class interface



451
# File 'lib/spree/app_configuration.rb', line 451

class_name_attribute :variant_gallery_class, default: 'Spree::Gallery::VariantGallery'

#variant_price_selector_classClass

Allows implementing custom pricing for variants



286
# File 'lib/spree/app_configuration.rb', line 286

class_name_attribute :variant_price_selector_class, default: 'Spree::Variant::PriceSelector'

#variant_vat_prices_generator_classClass

Allows implementing custom vat prices generation



308
# File 'lib/spree/app_configuration.rb', line 308

class_name_attribute :variant_vat_prices_generator_class, default: 'Spree::Variant::VatPriceGenerator'

Instance Method Details

#admin_vat_locationSpree::Tax::TaxLocation

Default admin VAT location

An object that responds to :state_id and :country_id so it can double as a Spree::Address in Spree::Zone.for_address. Takes the ‘admin_vat_country_iso` as input.



650
651
652
653
654
# File 'lib/spree/app_configuration.rb', line 650

def admin_vat_location
  @default_tax_location ||= Spree::Tax::TaxLocation.new(
    country: Spree::Country.find_by(iso: admin_vat_country_iso)
  )
end

#default_pricing_optionsvariant_price_selector_class

Shortcut for the default pricing options



296
297
298
# File 'lib/spree/app_configuration.rb', line 296

def default_pricing_options
  pricing_options_class.new
end

#environmentObject



568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
# File 'lib/spree/app_configuration.rb', line 568

def environment
  @environment ||= Spree::Core::Environment.new(self).tap do |env|
    env.calculators.promotion_actions_create_adjustments = %w[
      Spree::Calculator::FlatPercentItemTotal
      Spree::Calculator::FlatRate
      Spree::Calculator::FlexiRate
      Spree::Calculator::TieredPercent
      Spree::Calculator::TieredFlatRate
    ]

    env.calculators.promotion_actions_create_item_adjustments = %w[
      Spree::Calculator::DistributedAmount
      Spree::Calculator::FlatRate
      Spree::Calculator::FlexiRate
      Spree::Calculator::PercentOnLineItem
      Spree::Calculator::TieredPercent
    ]

    env.calculators.promotion_actions_create_quantity_adjustments = %w[
      Spree::Calculator::PercentOnLineItem
      Spree::Calculator::FlatRate
    ]

    env.calculators.shipping_methods = %w[
      Spree::Calculator::Shipping::FlatPercentItemTotal
      Spree::Calculator::Shipping::FlatRate
      Spree::Calculator::Shipping::FlexiRate
      Spree::Calculator::Shipping::PerItem
      Spree::Calculator::Shipping::PriceSack
    ]

    env.calculators.tax_rates = %w[
      Spree::Calculator::DefaultTax
    ]

    env.payment_methods = %w[
      Spree::PaymentMethod::BogusCreditCard
      Spree::PaymentMethod::SimpleBogusCreditCard
      Spree::PaymentMethod::StoreCredit
      Spree::PaymentMethod::Check
    ]

    env.promotions.rules = %w[
      Spree::Promotion::Rules::ItemTotal
      Spree::Promotion::Rules::Product
      Spree::Promotion::Rules::User
      Spree::Promotion::Rules::FirstOrder
      Spree::Promotion::Rules::UserLoggedIn
      Spree::Promotion::Rules::OneUsePerUser
      Spree::Promotion::Rules::Taxon
      Spree::Promotion::Rules::NthOrder
      Spree::Promotion::Rules::OptionValue
      Spree::Promotion::Rules::FirstRepeatPurchaseSince
      Spree::Promotion::Rules::UserRole
      Spree::Promotion::Rules::Store
    ]

    env.promotions.actions = %w[
      Spree::Promotion::Actions::CreateAdjustment
      Spree::Promotion::Actions::CreateItemAdjustments
      Spree::Promotion::Actions::CreateQuantityAdjustments
      Spree::Promotion::Actions::FreeShipping
    ]

    env.promotions.shipping_actions = %w[
      Spree::Promotion::Actions::FreeShipping
    ]

    env.stock_splitters = %w[
      Spree::Stock::Splitter::ShippingCategory
      Spree::Stock::Splitter::Backordered
    ]
  end
end

#eventsObject



558
559
560
# File 'lib/spree/app_configuration.rb', line 558

def events
  @events_configuration ||= Spree::Event::Configuration.new
end

#pricing_options_classClass

Shortcut for getting the variant price selector’s pricing options class



291
# File 'lib/spree/app_configuration.rb', line 291

delegate :pricing_options_class, to: :variant_price_selector_class

#rolesObject



551
552
553
554
555
556
# File 'lib/spree/app_configuration.rb', line 551

def roles
  @roles ||= Spree::RoleConfiguration.new.tap do |roles|
    roles.assign_permissions :default, ['Spree::PermissionSets::DefaultCustomer']
    roles.assign_permissions :admin, ['Spree::PermissionSets::SuperUser']
  end
end

#state_machinesObject



539
540
541
# File 'lib/spree/app_configuration.rb', line 539

def state_machines
  @state_machines ||= Spree::Core::StateMachines.new
end

#static_model_preferencesObject



543
544
545
# File 'lib/spree/app_configuration.rb', line 543

def static_model_preferences
  @static_model_preferences ||= Spree::Preferences::StaticModelPreferences.new
end

#stockObject



547
548
549
# File 'lib/spree/app_configuration.rb', line 547

def stock
  @stock_configuration ||= Spree::Core::StockConfiguration.new
end

#user_last_url_storer_rulesObject



562
563
564
565
566
# File 'lib/spree/app_configuration.rb', line 562

def user_last_url_storer_rules
  @user_last_url_storer_rules ||= ::Spree::Core::ClassConstantizer::Set.new.tap do |set|
    set << 'Spree::UserLastUrlStorer::Rules::AuthenticationRule'
  end
end