Module: Spree

Defined in:
lib/spree/core/current_store.rb,
lib/spree/core.rb,
lib/spree/i18n.rb,
lib/spree/money.rb,
lib/spree/responder.rb,
lib/spree/migrations.rb,
app/models/spree/role.rb,
app/models/spree/zone.rb,
lib/spree/core/engine.rb,
lib/spree/core/routes.rb,
lib/spree/deprecation.rb,
app/models/spree/asset.rb,
app/models/spree/image.rb,
app/models/spree/order.rb,
app/models/spree/price.rb,
app/models/spree/state.rb,
app/models/spree/store.rb,
app/models/spree/taxon.rb,
lib/spree/core/version.rb,
app/models/spree/refund.rb,
lib/spree/core/importer.rb,
app/models/spree/ability.rb,
app/models/spree/address.rb,
app/models/spree/country.rb,
app/models/spree/gateway.rb,
app/models/spree/payment.rb,
app/models/spree/product.rb,
app/models/spree/tracker.rb,
app/models/spree/variant.rb,
app/models/spree/exchange.rb,
app/models/spree/property.rb,
app/models/spree/shipment.rb,
app/models/spree/tax_rate.rb,
app/models/spree/tax_rate.rb,
app/models/spree/taxonomy.rb,
lib/spree/core/permalinks.rb,
app/models/spree/line_item.rb,
app/models/spree/log_entry.rb,
app/models/spree/promotion.rb,
app/models/spree/prototype.rb,
app/models/spree/role_user.rb,
lib/spree/core/environment.rb,
lib/spree/core/search/base.rb,
lib/spree/localized_number.rb,
app/models/spree/adjustment.rb,
app/models/spree/calculator.rb,
app/models/spree/stock_item.rb,
lib/spree/promo/environment.rb,
app/models/spree/credit_card.rb,
app/models/spree/legacy_user.rb,
app/models/spree/option_type.rb,
app/models/spree/order_mutex.rb,
app/models/spree/return_item.rb,
app/models/spree/zone_member.rb,
app/helpers/spree/base_helper.rb,
app/mailers/spree/base_mailer.rb,
app/mailers/spree/test_mailer.rb,
app/models/spree/option_value.rb,
app/models/spree/state_change.rb,
app/models/spree/stock/packer.rb,
app/models/spree/tax_category.rb,
app/models/spree/user_address.rb,
lib/spree/core/importer/order.rb,
lib/spree/core/search/variant.rb,
app/helpers/spree/store_helper.rb,
app/mailers/spree/order_mailer.rb,
app/models/spree/gateway/bogus.rb,
app/models/spree/order_updater.rb,
app/models/spree/refund_reason.rb,
app/models/spree/reimbursement.rb,
app/models/spree/return_reason.rb,
app/models/spree/shipping_rate.rb,
app/models/spree/stock/package.rb,
app/models/spree/transfer_item.rb,
lib/spree/core/product_filters.rb,
lib/spree/permission_sets/base.rb,
lib/spree/permitted_attributes.rb,
lib/spree/testing_support/i18n.rb,
app/helpers/spree/orders_helper.rb,
app/helpers/spree/taxons_helper.rb,
app/mailers/spree/carton_mailer.rb,
app/models/spree/classification.rb,
app/models/spree/inventory_unit.rb,
app/models/spree/order/checkout.rb,
app/models/spree/order/payments.rb,
app/models/spree/order_contents.rb,
app/models/spree/payment_method.rb,
app/models/spree/product/scopes.rb,
app/models/spree/promotion_rule.rb,
app/models/spree/stock/adjuster.rb,
app/models/spree/stock_location.rb,
app/models/spree/stock_movement.rb,
app/models/spree/stock_transfer.rb,
app/models/spree/variant/scopes.rb,
lib/spree/core/importer/product.rb,
lib/spree/testing_support/flash.rb,
app/models/spree/customer_return.rb,
app/models/spree/order_inventory.rb,
app/models/spree/order_promotion.rb,
app/models/spree/prototype_taxon.rb,
app/models/spree/shipping_method.rb,
app/models/spree/stock/estimator.rb,
app/helpers/spree/checkout_helper.rb,
app/helpers/spree/products_helper.rb,
app/models/spree/item_adjustments.rb,
app/models/spree/line_item_action.rb,
app/models/spree/product_property.rb,
app/models/spree/promotion_action.rb,
app/models/spree/stock/quantifier.rb,
lib/spree/core/product_duplicator.rb,
lib/spree/core/role_configuration.rb,
lib/spree/testing_support/caching.rb,
app/models/spree/adjustment_reason.rb,
app/models/spree/app_configuration.rb,
app/models/spree/promotion_chooser.rb,
app/models/spree/shipping_category.rb,
app/models/spree/stock/coordinator.rb,
app/models/spree/stock/prioritizer.rb,
app/models/spree/store_credit_type.rb,
app/models/spree/user_class_handle.rb,
app/models/spree/payment/processing.rb,
app/models/spree/promotion_category.rb,
app/models/spree/reimbursement_type.rb,
app/models/spree/returns_calculator.rb,
app/models/spree/stock/content_item.rb,
app/models/spree/store_credit_event.rb,
app/models/concerns/spree/named_type.rb,
app/models/spree/billing_integration.rb,
app/models/spree/product_option_type.rb,
app/models/spree/promotion_rule_user.rb,
app/models/spree/shipping_calculator.rb,
app/models/spree/stock/splitter/base.rb,
app/models/spree/user_stock_location.rb,
lib/spree/core/environment_extension.rb,
lib/spree/permission_sets/super_user.rb,
app/models/spree/calculator/flat_rate.rb,
app/models/spree/gateway/bogus_simple.rb,
app/models/spree/order_stock_location.rb,
app/models/spree/payment_method/check.rb,
app/models/spree/product_scope/scopes.rb,
app/models/spree/promotion/rules/user.rb,
app/models/spree/reimbursement/credit.rb,
app/models/spree/return_authorization.rb,
app/models/spree/shipping_method_zone.rb,
app/models/spree/stock/differentiator.rb,
app/models/spree/store_payment_method.rb,
lib/spree/testing_support/preferences.rb,
lib/spree/testing_support/url_helpers.rb,
app/mailers/spree/reimbursement_mailer.rb,
app/models/concerns/spree/user_methods.rb,
app/models/spree/calculator/flexi_rate.rb,
app/models/spree/calculator/price_sack.rb,
app/models/spree/option_values_variant.rb,
app/models/spree/payment_capture_event.rb,
app/models/spree/promotion/rules/taxon.rb,
app/models/spree/stock/splitter/weight.rb,
app/models/spree/variant_property_rule.rb,
lib/spree/core/controller_helpers/auth.rb,
lib/spree/core/environment/calculators.rb,
lib/spree/core/unreturned_item_charger.rb,
lib/spree/permission_sets/user_display.rb,
app/models/concerns/spree/default_price.rb,
app/models/concerns/spree/display_money.rb,
app/models/spree/calculator/default_tax.rb,
app/models/spree/order/currency_updater.rb,
app/models/spree/product_promotion_rule.rb,
app/models/spree/promotion_handler/cart.rb,
app/models/spree/promotion_handler/page.rb,
lib/spree/core/controller_helpers/order.rb,
lib/spree/core/controller_helpers/store.rb,
lib/spree/mailer_previews/order_preview.rb,
lib/spree/permission_sets/order_display.rb,
lib/spree/permission_sets/stock_display.rb,
app/models/concerns/spree/user_reporting.rb,
app/models/spree/promotion/rules/product.rb,
app/models/spree/reimbursement_performer.rb,
lib/spree/core/controller_helpers/common.rb,
lib/spree/core/controller_helpers/search.rb,
lib/spree/mailer_previews/carton_preview.rb,
lib/spree/permission_sets/report_display.rb,
app/models/spree/calculator/free_shipping.rb,
app/models/spree/promotion_handler/coupon.rb,
app/models/spree/shipping_method_category.rb,
lib/spree/permission_sets/product_display.rb,
lib/spree/permission_sets/user_management.rb,
app/models/spree/calculator/tiered_percent.rb,
app/models/spree/promotion/rules/nth_order.rb,
app/models/spree/reimbursement_type/credit.rb,
app/models/spree/stock/inventory_validator.rb,
lib/generators/spree/dummy/dummy_generator.rb,
lib/spree/permission_sets/default_customer.rb,
lib/spree/permission_sets/order_management.rb,
lib/spree/permission_sets/stock_management.rb,
app/models/concerns/spree/adjustment_source.rb,
app/models/concerns/spree/user_address_book.rb,
app/models/spree/promotion/rules/item_total.rb,
app/models/spree/stock/splitter/backordered.rb,
lib/spree/permission_sets/dashboard_display.rb,
lib/spree/permission_sets/promotion_display.rb,
app/models/spree/calculator/percent_per_item.rb,
app/models/spree/calculator/tiered_flat_rate.rb,
app/models/spree/payment_method/store_credit.rb,
app/models/spree/promotion/rules/first_order.rb,
app/models/spree/variant_property_rule_value.rb,
lib/spree/permission_sets/product_management.rb,
app/models/concerns/spree/user_payment_source.rb,
app/models/spree/calculator/shipping/per_item.rb,
app/models/spree/promotion/rules/option_value.rb,
app/models/spree/reimbursement_tax_calculator.rb,
app/models/spree/stock/availability_validator.rb,
app/models/spree/stock/inventory_unit_builder.rb,
lib/spree/testing_support/controller_requests.rb,
app/models/spree/calculator/shipping/flat_rate.rb,
lib/generators/spree/install/install_generator.rb,
lib/spree/core/controller_helpers/respond_with.rb,
lib/spree/permission_sets/promotion_management.rb,
app/models/spree/calculator/shipping/flexi_rate.rb,
app/models/spree/calculator/shipping/price_sack.rb,
app/models/spree/promotion/rules/user_logged_in.rb,
lib/spree/permission_sets/configuration_display.rb,
lib/spree/testing_support/authorization_helpers.rb,
app/models/concerns/spree/calculated_adjustments.rb,
app/models/spree/calculator/percent_on_line_item.rb,
app/models/spree/promotion/actions/free_shipping.rb,
app/models/spree/promotion_handler/free_shipping.rb,
app/models/spree/variant_property_rule_condition.rb,
lib/spree/permission_sets/stock_transfer_display.rb,
app/models/concerns/spree/user_api_authentication.rb,
app/models/spree/promotion/rules/one_use_per_user.rb,
app/models/spree/stock/splitter/shipping_category.rb,
lib/spree/permission_sets/configuration_management.rb,
lib/spree/permission_sets/restricted_stock_display.rb,
app/models/spree/calculator/flat_percent_item_total.rb,
lib/spree/core/controller_helpers/strong_parameters.rb,
lib/spree/permission_sets/stock_transfer_management.rb,
app/models/spree/preferences/statically_configurable.rb,
app/models/spree/promotion/actions/create_adjustment.rb,
lib/spree/core/controller_helpers/payment_parameters.rb,
app/models/concerns/spree/ordered_property_value_list.rb,
app/models/spree/preferences/static_model_preferences.rb,
lib/spree/permission_sets/restricted_stock_management.rb,
lib/generators/spree/custom_user/custom_user_generator.rb,
app/models/spree/reimbursement/reimbursement_type_engine.rb,
app/models/spree/validations/db_maximum_length_validator.rb,
app/models/spree/calculator/returns/default_refund_amount.rb,
app/models/spree/reimbursement_type/reimbursement_helpers.rb,
app/models/spree/promotion/actions/create_item_adjustments.rb,
app/models/spree/return_item/eligibility_validator/default.rb,
app/models/spree/reimbursement/reimbursement_type_validator.rb,
lib/spree/permission_sets/restricted_stock_transfer_display.rb,
app/models/spree/calculator/shipping/flat_percent_item_total.rb,
app/models/spree/promotion/rules/first_repeat_purchase_since.rb,
lib/spree/permission_sets/restricted_stock_transfer_management.rb,
app/models/spree/return_item/eligibility_validator/rma_required.rb,
app/models/spree/return_item/eligibility_validator/base_validator.rb,
app/models/spree/return_item/eligibility_validator/order_completed.rb,
app/models/spree/return_item/eligibility_validator/inventory_shipped.rb,
app/models/spree/return_item/eligibility_validator/no_reimbursements.rb,
app/models/spree/return_item/eligibility_validator/time_since_purchase.rb,
app/models/spree/return_item/exchange_variant_eligibility/same_product.rb,
app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb

Overview

The reason for variant properties not being associated with variants (either directly or through an association table) is performance.

Variant properties are intended to be applied to a group of variants based on their option values. If there were thousands of variants that shared the same option value, attempting to associate a variant property with that group of variants would be problematic in terms of performance.

An added benefit to this approach is not having to associate existing variant properties with newly created variants. If the variant has the option values targeted by the rule, the properties will automatically apply to the variant.

Defined Under Namespace

Modules: AdjustmentSource, BaseHelper, CalculatedAdjustments, CheckoutHelper, Core, DefaultPrice, DisplayMoney, DummyGeneratorHelper, NamedType, OrderedPropertyValueList, OrdersHelper, PermissionSets, PermittedAttributes, Preferences, ProductsHelper, Promo, PromotionHandler, RansackableAttributes, Stock, StoreHelper, TaxonsHelper, TestingSupport, UserAddressBook, UserApiAuthentication, UserMethods, UserPaymentSource, UserReporting, Validations Classes: Ability, Address, Adjustment, AdjustmentReason, AppConfiguration, Asset, Base, BaseController, BaseMailer, BillingIntegration, Calculator, Carton, CartonMailer, Classification, Country, CreditCard, CustomUserGenerator, CustomerReturn, DefaultTaxZoneValidator, DummyGenerator, Exchange, Gateway, Image, InstallGenerator, InventoryUnit, ItemAdjustments, LegacyUser, LineItem, LineItemAction, LocalizedNumber, LogEntry, MailerPreviews, Migrations, Money, OptionType, OptionValue, OptionValuesVariant, Order, OrderCancellations, OrderCapturing, OrderCapturingFailures, OrderContents, OrderInventory, OrderMailer, OrderMutex, OrderPromotion, OrderShipping, OrderStockLocation, OrderUpdater, Payment, PaymentCaptureEvent, PaymentMethod, Preference, Price, Product, ProductDuplicator, ProductOptionType, ProductPromotionRule, ProductProperty, ProductScope, Promotion, PromotionAction, PromotionBuilder, PromotionCategory, PromotionChooser, PromotionCode, PromotionRule, PromotionRuleUser, Property, Prototype, PrototypeTaxon, Refund, RefundReason, Reimbursement, ReimbursementMailer, ReimbursementPerformer, ReimbursementTaxCalculator, ReimbursementType, Responder, ReturnAuthorization, ReturnItem, ReturnReason, ReturnsCalculator, Role, RoleConfiguration, RoleUser, Shipment, ShippingCalculator, ShippingCategory, ShippingManifest, ShippingMethod, ShippingMethodCategory, ShippingMethodZone, ShippingRate, State, StateChange, StockItem, StockLocation, StockMovement, StockTransfer, Store, StoreCredit, StoreCreditCategory, StoreCreditEvent, StoreCreditType, StoreCreditUpdateReason, StorePaymentMethod, TaxCategory, TaxRate, Taxon, Taxonomy, TestMailer, Tracker, TransferItem, TranslationHelperWrapper, UnitCancel, UnreturnedItemCharger, UserAddress, UserClassHandle, UserStockLocation, Variant, VariantPropertyRule, VariantPropertyRuleCondition, VariantPropertyRuleValue, Zone, ZoneMember

Constant Summary collapse

Deprecation =
ActiveSupport::Deprecation.new('2.0', 'Solidus')

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.missing_translation_messagesObject

Returns the value of attribute missing_translation_messages.



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def missing_translation_messages
  @missing_translation_messages
end

.unused_translation_messagesObject

Returns the value of attribute unused_translation_messages.



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def unused_translation_messages
  @unused_translation_messages
end

.unused_translationsObject

Returns the value of attribute unused_translations.



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def unused_translations
  @unused_translations
end

.used_translationsObject

Returns the value of attribute used_translations.



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def used_translations
  @used_translations
end

Class Method Details

.check_missing_translationsObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/spree/testing_support/i18n.rb', line 29

def self.check_missing_translations
  self.missing_translation_messages = []
  self.used_translations ||= []
  used_translations.map { |a| a.split('.') }.each do |translation_keys|
    root = translations
    processed_keys = []
    translation_keys.each do |key|
      begin
        root = root.fetch(key.to_sym)
        processed_keys << key.to_sym
      rescue KeyError
        error = "#{(processed_keys << key).join('.')} (#{I18n.locale})"
        unless Spree.missing_translation_messages.include?(error)
          Spree.missing_translation_messages << error
        end
      end
    end
  end
end

.check_unused_translationsObject



49
50
51
52
53
54
55
56
57
58
# File 'lib/spree/testing_support/i18n.rb', line 49

def self.check_unused_translations
  self.used_translations ||= []
  self.unused_translation_messages = []
  self.unused_translations = []
  self.load_translations(translations)
  translation_diff = unused_translations - used_translations
  translation_diff.each do |translation|
    Spree.unused_translation_messages << "#{translation} (#{I18n.locale})"
  end
end

.config {|Spree::Config| ... } ⇒ Object

Used to configure Spree.

Example:

Spree.config do |config|
  config.track_inventory_levels = false
end

This method is defined within the core gem on purpose. Some people may only wish to use the Core part of Spree.

Yields:

  • (Spree::Config)


44
45
46
# File 'lib/spree/core.rb', line 44

def self.config(&block)
  yield(Spree::Config)
end

.normal_tObject

Add spree namespace and delegate to Rails TranslationHelper for some nice extra functionality. e.g return reasonable strings for missing translations



15
16
17
18
# File 'lib/spree/testing_support/i18n.rb', line 15

def translate(key, options={})
  options[:scope] = [:spree, *options[:scope]]
  TranslationHelperWrapper.new.translate(key, options)
end

.translate(key, options = {}) ⇒ Object Also known as: t

Add spree namespace and delegate to Rails TranslationHelper for some nice extra functionality. e.g return reasonable strings for missing translations



12
13
14
15
# File 'lib/spree/i18n.rb', line 12

def translate(key, options={})
  options[:scope] = [:spree, *options[:scope]]
  TranslationHelperWrapper.new.translate(key, options)
end

.user_classObject



26
27
28
29
30
31
32
# File 'lib/spree/core.rb', line 26

def self.user_class
  if @@user_class.is_a?(Class)
    raise "Spree.user_class MUST be a String or Symbol object, not a Class object."
  elsif @@user_class.is_a?(String) || @@user_class.is_a?(Symbol)
    @@user_class.to_s.constantize
  end
end

.versionObject



2
3
4
5
# File 'lib/spree/core/version.rb', line 2

def self.version
  ActiveSupport::Deprecation.warn("Spree.version does not work and will be removed from solidus")
  "2.4.6.beta"
end