solidus_core 3.0.0 → 4.5.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/README.md +1 -2
- data/Rakefile +7 -2
- data/app/assets/images/logo/solidus.svg +18 -1
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/controllers/spree/base_controller.rb +1 -3
- data/app/helpers/spree/base_helper.rb +3 -3
- data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
- data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
- data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
- data/{lib/spree/core/controller_helpers/current_host.rb → app/helpers/spree/core/controller_helpers/pricing.rb} +6 -4
- data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
- data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
- data/app/helpers/spree/products_helper.rb +2 -2
- data/app/mailers/spree/base_mailer.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +1 -1
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +30 -11
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +1 -18
- data/app/models/concerns/spree/default_price.rb +30 -10
- data/app/models/concerns/spree/display_money.rb +1 -1
- data/app/models/concerns/spree/metadata.rb +64 -0
- data/app/models/concerns/spree/named_type.rb +2 -0
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/ransackable_attributes.rb +9 -5
- data/app/models/concerns/spree/user_address_book.rb +19 -10
- data/app/models/concerns/spree/user_methods.rb +40 -6
- data/app/models/spree/address.rb +11 -9
- data/app/models/spree/adjustment.rb +15 -76
- data/app/models/spree/adjustment_reason.rb +2 -0
- data/app/models/spree/calculator/flat_fee.rb +21 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
- data/app/models/spree/carton.rb +3 -3
- data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
- data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
- data/app/models/spree/core/state_machines/order.rb +42 -0
- data/app/models/spree/core/state_machines/payment.rb +61 -0
- data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
- data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/app/models/spree/core/state_machines/shipment.rb +58 -0
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +13 -10
- data/app/models/spree/customer_return.rb +6 -3
- data/app/models/spree/deprecated_configurable_class.rb +40 -0
- data/app/models/spree/fulfilment_changer.rb +56 -29
- data/app/models/spree/image/active_storage_attachment.rb +2 -7
- data/app/models/spree/image/paperclip_attachment.rb +2 -2
- data/app/models/spree/inventory_unit.rb +2 -2
- data/app/models/spree/item_total.rb +28 -0
- data/app/models/spree/legacy_user.rb +1 -0
- data/app/models/spree/line_item.rb +26 -8
- data/app/models/spree/log_entry.rb +98 -1
- data/app/models/spree/money.rb +120 -0
- data/app/models/spree/null_promotion_adjuster.rb +13 -0
- data/app/models/spree/null_promotion_advertiser.rb +9 -0
- data/app/models/spree/null_promotion_finder.rb +9 -0
- data/app/models/spree/null_promotion_handler.rb +44 -0
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +4 -3
- data/app/models/spree/order/number_generator.rb +7 -1
- data/app/models/spree/order.rb +143 -96
- data/app/models/spree/order_cancellations.rb +8 -8
- data/app/models/spree/order_inventory.rb +7 -5
- data/app/models/spree/order_merger.rb +5 -7
- data/app/models/spree/order_mutex.rb +2 -2
- data/app/models/spree/order_shipping.rb +15 -19
- data/app/models/spree/order_taxation.rb +7 -4
- data/app/models/spree/order_update_attributes.rb +3 -1
- data/app/models/spree/order_updater.rb +25 -63
- data/app/models/spree/payment/processing.rb +60 -57
- data/app/models/spree/payment.rb +14 -27
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -14
- data/app/models/spree/payment_method/credit_card.rb +0 -4
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +18 -4
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +29 -10
- data/app/models/spree/payment_source.rb +5 -1
- data/app/models/spree/permission_set.rb +11 -0
- data/app/models/spree/permission_sets/base.rb +45 -0
- data/app/models/spree/permission_sets/configuration_display.rb +53 -0
- data/app/models/spree/permission_sets/configuration_management.rb +52 -0
- data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
- data/app/models/spree/permission_sets/default_customer.rb +83 -0
- data/app/models/spree/permission_sets/order_display.rb +50 -0
- data/app/models/spree/permission_sets/order_management.rb +50 -0
- data/app/models/spree/permission_sets/product_display.rb +43 -0
- data/app/models/spree/permission_sets/product_management.rb +47 -0
- data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
- data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
- data/app/models/spree/permission_sets/stock_display.rb +26 -0
- data/app/models/spree/permission_sets/stock_management.rb +26 -0
- data/app/models/spree/permission_sets/super_user.rb +26 -0
- data/app/models/spree/permission_sets/user_display.rb +27 -0
- data/app/models/spree/permission_sets/user_management.rb +44 -0
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +3 -3
- data/app/models/spree/product/scopes.rb +23 -10
- data/app/models/spree/product.rb +30 -23
- data/app/models/spree/product_property.rb +1 -1
- data/app/models/spree/property.rb +1 -1
- data/app/models/spree/refund.rb +13 -3
- data/app/models/spree/refund_reason.rb +6 -1
- data/app/models/spree/reimbursement.rb +6 -6
- data/app/models/spree/reimbursement_performer.rb +3 -3
- data/app/models/spree/reimbursement_tax_calculator.rb +3 -3
- data/app/models/spree/reimbursement_type/credit.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +6 -1
- data/app/models/spree/return_authorization.rb +3 -1
- data/app/models/spree/return_item.rb +13 -15
- data/app/models/spree/return_reason.rb +6 -1
- data/app/models/spree/role.rb +3 -1
- data/app/models/spree/role_permission.rb +8 -0
- data/app/models/spree/shipment.rb +12 -10
- data/app/models/spree/shipping_category.rb +2 -0
- data/app/models/spree/shipping_rate.rb +2 -3
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +10 -13
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/allocator/on_hand_first.rb +2 -2
- data/app/models/spree/stock/availability.rb +11 -3
- data/app/models/spree/stock/estimator.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/package.rb +2 -2
- data/app/models/spree/stock/quantifier.rb +12 -8
- data/app/models/spree/stock/simple_coordinator.rb +38 -28
- data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
- data/app/models/spree/stock_item.rb +2 -1
- data/app/models/spree/stock_location.rb +7 -7
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/store.rb +3 -1
- data/app/models/spree/store_credit.rb +31 -16
- data/app/models/spree/store_credit_event.rb +4 -3
- data/app/models/spree/store_credit_prioritizer.rb +17 -0
- data/app/models/spree/store_credit_reason.rb +6 -1
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/tax/item_tax.rb +3 -2
- data/app/models/spree/tax/order_tax.rb +3 -1
- data/app/models/spree/tax/tax_helpers.rb +14 -3
- data/app/models/spree/tax/tax_location.rb +4 -7
- data/app/models/spree/tax_calculator/default.rb +32 -1
- data/app/models/spree/tax_calculator/shipping_rate.rb +2 -2
- data/app/models/spree/tax_category.rb +3 -1
- data/app/models/spree/tax_rate.rb +14 -1
- data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
- data/app/models/spree/taxon.rb +25 -3
- data/app/models/spree/taxon_brand_selector.rb +22 -0
- data/app/models/spree/taxonomy.rb +4 -3
- data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
- data/app/models/spree/unit_cancel.rb +1 -2
- data/app/models/spree/user_address.rb +9 -3
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +25 -8
- data/app/models/spree/variant/scopes.rb +4 -0
- data/app/models/spree/variant/vat_price_generator.rb +1 -1
- data/app/models/spree/variant.rb +64 -37
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet.rb +2 -2
- data/app/models/spree/zone.rb +1 -1
- data/app/subscribers/spree/order_mailer_subscriber.rb +35 -0
- data/app/views/layouts/spree/base_mailer.html.erb +2 -2
- data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
- data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
- data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
- data/config/i18n-tasks.yml +134 -0
- data/config/locales/en.yml +439 -338
- data/db/default/spree/permission_sets.rb +10 -0
- data/db/default/spree/return_reasons.rb +3 -1
- data/db/default/spree/states.rb +2 -2
- data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
- data/db/migrate/20180710170104_create_spree_store_credit_reasons_table.rb +2 -2
- data/db/migrate/20201127212108_add_type_before_removal_to_spree_payment_methods.rb +7 -0
- data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +16 -0
- data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
- data/db/migrate/20220805202442_add_level_to_spree_tax_rates.rb +5 -0
- data/db/migrate/20221123152807_add_shipping_category_to_spree_variants.rb +5 -0
- data/db/migrate/20230321161854_change_column_null_option_values_option_type_id.rb +5 -0
- data/db/migrate/20230425103509_remove_taxon_position.rb +5 -0
- data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +11 -0
- data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
- data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
- data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
- data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
- data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
- data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
- data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
- data/db/seeds.rb +5 -1
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +10 -0
- data/lib/generators/solidus/install/app_templates/authentication/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +5 -0
- data/lib/generators/solidus/install/install_generator.rb +210 -156
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +27 -33
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js +2 -2
- data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
- data/lib/generators/solidus/update/update_generator.rb +124 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -4
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +2 -6
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +12 -9
- data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -2
- data/lib/generators/spree/dummy/templates/rails/database.yml +48 -63
- data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +7 -2
- data/lib/spree/app_configuration.rb +220 -71
- data/lib/spree/bus.rb +11 -0
- data/lib/spree/core/class_constantizer.rb +2 -2
- data/lib/spree/core/controller_helpers/auth.rb +5 -69
- data/lib/spree/core/controller_helpers/common.rb +5 -80
- data/lib/spree/core/controller_helpers/order.rb +5 -86
- data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -165
- data/lib/spree/core/controller_helpers/pricing.rb +5 -17
- data/lib/spree/core/controller_helpers/search.rb +5 -14
- data/lib/spree/core/controller_helpers/store.rb +5 -17
- data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
- data/lib/spree/core/engine.rb +49 -16
- data/lib/spree/core/environment/calculators.rb +35 -3
- data/lib/spree/core/environment/promotions.rb +25 -4
- data/lib/spree/core/environment_extension.rb +16 -2
- data/lib/spree/core/importer/order.rb +6 -6
- data/lib/spree/core/importer/product.rb +3 -3
- data/lib/spree/core/nested_class_set.rb +28 -0
- data/lib/spree/core/null_promotion_configuration.rb +84 -0
- data/lib/spree/core/product_duplicator.rb +1 -1
- data/lib/spree/core/product_filters.rb +2 -2
- data/lib/spree/core/search/base.rb +18 -9
- data/lib/spree/core/search/variant.rb +2 -2
- data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
- data/lib/spree/core/state_machines/order.rb +5 -247
- data/lib/spree/core/state_machines/payment.rb +5 -59
- data/lib/spree/core/state_machines/reimbursement.rb +5 -31
- data/lib/spree/core/state_machines/return_authorization.rb +5 -30
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
- data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
- data/lib/spree/core/state_machines/shipment.rb +5 -56
- data/lib/spree/core/state_machines.rb +48 -81
- data/lib/spree/core/stock_configuration.rb +18 -0
- data/lib/spree/core/validators/email.rb +2 -4
- data/lib/spree/core/version.rb +5 -1
- data/lib/spree/core/versioned_value.rb +75 -0
- data/lib/spree/core.rb +40 -16
- data/lib/spree/deprecated_instance_variable_proxy.rb +57 -0
- data/lib/spree/deprecation.rb +3 -51
- data/lib/spree/deprecator.rb +9 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +1 -1
- data/lib/spree/migration_helpers.rb +3 -3
- data/lib/spree/migrations.rb +13 -11
- data/lib/spree/money.rb +5 -118
- data/lib/spree/permission_sets/base.rb +5 -30
- data/lib/spree/permission_sets/configuration_display.rb +5 -23
- data/lib/spree/permission_sets/configuration_management.rb +5 -23
- data/lib/spree/permission_sets/dashboard_display.rb +5 -9
- data/lib/spree/permission_sets/default_customer.rb +5 -35
- data/lib/spree/permission_sets/order_display.rb +5 -19
- data/lib/spree/permission_sets/order_management.rb +5 -20
- data/lib/spree/permission_sets/product_display.rb +5 -17
- data/lib/spree/permission_sets/product_management.rb +5 -19
- data/lib/spree/permission_sets/restricted_stock_display.rb +5 -16
- data/lib/spree/permission_sets/restricted_stock_management.rb +5 -16
- data/lib/spree/permission_sets/stock_display.rb +5 -10
- data/lib/spree/permission_sets/stock_management.rb +5 -10
- data/lib/spree/permission_sets/super_user.rb +5 -9
- data/lib/spree/permission_sets/user_display.rb +5 -11
- data/lib/spree/permission_sets/user_management.rb +5 -23
- data/lib/spree/permission_sets.rb +5 -18
- data/lib/spree/permitted_attributes.rb +35 -14
- data/lib/spree/preferences/configuration.rb +88 -0
- data/lib/spree/preferences/persistable.rb +7 -1
- data/lib/spree/preferences/preferable.rb +13 -0
- data/lib/spree/preferences/preferable_class_methods.rb +12 -4
- data/lib/spree/preferences/preference_differentiator.rb +29 -0
- data/lib/spree/preferences/static_model_preferences.rb +25 -10
- data/lib/spree/preferences/store.rb +2 -2
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +101 -0
- data/lib/spree/testing_support/capybara_ext.rb +11 -1
- data/lib/spree/testing_support/common_rake.rb +76 -23
- data/lib/spree/testing_support/dummy_ability.rb +7 -0
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +1 -1
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
- data/lib/spree/testing_support/dummy_app/database.yml +39 -28
- data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -10
- data/lib/spree/testing_support/dummy_app.rb +71 -42
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +9 -13
- data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -13
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/calculator_factory.rb +4 -10
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -10
- data/lib/spree/testing_support/factories/country_factory.rb +1 -7
- data/lib/spree/testing_support/factories/credit_card_factory.rb +0 -5
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -11
- data/lib/spree/testing_support/factories/image_factory.rb +0 -5
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -14
- data/lib/spree/testing_support/factories/line_item_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_value_factory.rb +0 -5
- data/lib/spree/testing_support/factories/order_factory.rb +19 -38
- data/lib/spree/testing_support/factories/payment_factory.rb +0 -10
- data/lib/spree/testing_support/factories/payment_method_factory.rb +0 -5
- data/lib/spree/testing_support/factories/price_factory.rb +0 -7
- data/lib/spree/testing_support/factories/product_factory.rb +5 -13
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/product_property_factory.rb +0 -8
- data/lib/spree/testing_support/factories/property_factory.rb +0 -5
- data/lib/spree/testing_support/factories/refund_factory.rb +0 -8
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_item_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/role_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -11
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +0 -9
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +0 -8
- data/lib/spree/testing_support/factories/state_factory.rb +8 -10
- data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +0 -9
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -9
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +0 -8
- data/lib/spree/testing_support/factories/store_credit_factory.rb +4 -13
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_factory.rb +0 -5
- data/lib/spree/testing_support/factories/tax_category_factory.rb +0 -8
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +0 -9
- data/lib/spree/testing_support/factories/taxon_factory.rb +5 -10
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -6
- data/lib/spree/testing_support/factories/user_factory.rb +6 -9
- data/lib/spree/testing_support/factories/variant_factory.rb +0 -10
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +0 -8
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +0 -9
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +0 -8
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -9
- data/lib/spree/testing_support/factory_bot.rb +6 -29
- data/lib/spree/testing_support/flaky.rb +22 -0
- data/lib/spree/testing_support/order_walkthrough.rb +7 -6
- data/lib/spree/testing_support/sequences.rb +0 -5
- data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
- data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
- data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
- data/lib/spree/testing_support/silence_deprecations.rb +9 -0
- data/lib/spree/user_class_handle.rb +2 -2
- data/lib/tasks/colorado_delivery_fee.rake +28 -0
- data/lib/tasks/payment_method.rake +29 -0
- data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
- data/solidus_core.gemspec +18 -8
- metadata +233 -117
- data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
- data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
- data/app/models/spree/calculator/distributed_amount.rb +0 -33
- data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
- data/app/models/spree/calculator/flexi_rate.rb +0 -22
- data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
- data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
- data/app/models/spree/calculator/tiered_percent.rb +0 -62
- data/app/models/spree/line_item_action.rb +0 -8
- data/app/models/spree/order_promotion.rb +0 -27
- data/app/models/spree/promotion/actions/create_adjustment.rb +0 -77
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -99
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
- data/app/models/spree/promotion/actions/free_shipping.rb +0 -58
- data/app/models/spree/promotion/rules/first_order.rb +0 -38
- data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
- data/app/models/spree/promotion/rules/item_total.rb +0 -53
- data/app/models/spree/promotion/rules/nth_order.rb +0 -45
- data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
- data/app/models/spree/promotion/rules/option_value.rb +0 -50
- data/app/models/spree/promotion/rules/product.rb +0 -74
- data/app/models/spree/promotion/rules/store.rb +0 -22
- data/app/models/spree/promotion/rules/taxon.rb +0 -87
- data/app/models/spree/promotion/rules/user.rb +0 -30
- data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
- data/app/models/spree/promotion/rules/user_role.rb +0 -45
- data/app/models/spree/promotion.rb +0 -284
- data/app/models/spree/promotion_action.rb +0 -43
- data/app/models/spree/promotion_category.rb +0 -8
- data/app/models/spree/promotion_chooser.rb +0 -34
- data/app/models/spree/promotion_code/batch_builder.rb +0 -64
- data/app/models/spree/promotion_code.rb +0 -50
- data/app/models/spree/promotion_code_batch.rb +0 -27
- data/app/models/spree/promotion_handler/cart.rb +0 -55
- data/app/models/spree/promotion_handler/coupon.rb +0 -123
- data/app/models/spree/promotion_handler/page.rb +0 -26
- data/app/models/spree/promotion_handler/shipping.rb +0 -61
- data/app/models/spree/promotion_rule.rb +0 -55
- data/app/models/spree/promotion_rule_role.rb +0 -8
- data/app/models/spree/promotion_rule_store.rb +0 -10
- data/app/models/spree/promotion_rule_taxon.rb +0 -8
- data/app/models/spree/promotion_rule_user.rb +0 -10
- data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
- data/app/subscribers/spree/mailer_subscriber.rb +0 -25
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
- data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
- data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
- data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
- data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
- data/lib/spree/event/adapters/active_support_notifications.rb +0 -67
- data/lib/spree/event/configuration.rb +0 -25
- data/lib/spree/event/subscriber.rb +0 -86
- data/lib/spree/event/subscriber_registry.rb +0 -94
- data/lib/spree/event.rb +0 -119
- data/lib/spree/permission_sets/promotion_display.rb +0 -15
- data/lib/spree/permission_sets/promotion_management.rb +0 -15
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +0 -1
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -12
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_factory.rb +0 -92
- data/lib/spree/testing_support/factories.rb +0 -11
- data/lib/spree/testing_support.rb +0 -31
- data/lib/tasks/upgrade.rake +0 -15
@@ -22,8 +22,11 @@ require "spree/core/search/variant"
|
|
22
22
|
require 'spree/preferences/configuration'
|
23
23
|
require 'spree/core/environment'
|
24
24
|
|
25
|
+
require 'uri'
|
26
|
+
|
25
27
|
module Spree
|
26
28
|
class AppConfiguration < Preferences::Configuration
|
29
|
+
include Spree::Core::EnvironmentExtension
|
27
30
|
# Preferences (alphabetized to more easily lookup particular preferences)
|
28
31
|
|
29
32
|
# @!attribute [rw] address_requires_phone
|
@@ -145,6 +148,10 @@ module Spree
|
|
145
148
|
# @return [String] Two-letter ISO code of a {Spree::Country} to assumed as the country of an unidentified customer (default: "US")
|
146
149
|
preference :default_country_iso, :string, default: 'US'
|
147
150
|
|
151
|
+
# @!attribute [rw] default_email_regexp
|
152
|
+
# @return [Regexp] Regex to be used in email validations, for example in Spree::EmailValidator
|
153
|
+
preference :default_email_regexp, :regexp, default: URI::MailTo::EMAIL_REGEXP
|
154
|
+
|
148
155
|
# @!attribute [rw] generate_api_key_for_all_roles
|
149
156
|
# @return [Boolean] Allow generating api key automatically for user
|
150
157
|
# at role_user creation for all roles. (default: +false+)
|
@@ -161,13 +168,32 @@ module Spree
|
|
161
168
|
# @return [String] template to use for layout on the frontend (default: +"spree/layouts/spree_application"+)
|
162
169
|
preference :layout, :string, default: 'spree/layouts/spree_application'
|
163
170
|
|
171
|
+
# !@attribute [rw] line_item_comparison_hooks
|
172
|
+
# @return [Array<Symbol>] An array of methods to call on {Spree::Order} to determine if a line item is equal to another
|
173
|
+
# (default: +[]+)
|
174
|
+
# @example
|
175
|
+
# config.line_item_comparison_hooks << :my_custom_method
|
176
|
+
preference :line_item_comparison_hooks, :array, default: []
|
177
|
+
|
164
178
|
# @!attribute [rw] logo
|
165
179
|
# @return [String] URL of logo used on frontend (default: +'logo/solidus.svg'+)
|
166
180
|
preference :logo, :string, default: 'logo/solidus.svg'
|
167
181
|
|
168
|
-
# @!attribute [rw]
|
169
|
-
# @return [String]
|
170
|
-
|
182
|
+
# @!attribute [rw] log_entry_permitted_classes
|
183
|
+
# @return [Array<String>] An array of extra classes that are allowed to be
|
184
|
+
# loaded from a serialized YAML as details in {Spree::LogEntry}
|
185
|
+
# (defaults to a non-frozen empty array, so that extensions can add
|
186
|
+
# their own classes).
|
187
|
+
# @example
|
188
|
+
# config.log_entry_permitted_classes = ['Date']
|
189
|
+
preference :log_entry_permitted_classes, :array, default: []
|
190
|
+
|
191
|
+
# @!attribute [rw] log_entry_allow_aliases
|
192
|
+
# @return [Boolean] Whether YAML aliases are allowed when loading
|
193
|
+
# serialized data in {Spree::LogEntry}. It defaults to true. Depending
|
194
|
+
# on the source of your data, you may consider disabling it to prevent
|
195
|
+
# entity expansion attacks.
|
196
|
+
preference :log_entry_allow_aliases, :boolean, default: true
|
171
197
|
|
172
198
|
# @!attribute [rw] max_level_in_taxons_menu
|
173
199
|
# @return [Integer] maximum nesting level in taxons menu (default: +1+)
|
@@ -190,6 +216,27 @@ module Spree
|
|
190
216
|
# @return [Integer] Orders to show per-page in the admin (default: +15+)
|
191
217
|
preference :orders_per_page, :integer, default: 15
|
192
218
|
|
219
|
+
# @!attribute [rw] meta_data_validation_enabled
|
220
|
+
# @return [Boolean] Indicates whether validation for customer and admin metadata columns is enabled.
|
221
|
+
# When this is set to true, the following preferences will be used to validate the metadata:
|
222
|
+
# - The maximum number of keys that can be added to the metadata columns (meta_data_max_keys).
|
223
|
+
# - The maximum length of each key in the metadata columns (meta_data_max_key_length).
|
224
|
+
# - The maximum length of each value in the metadata columns (meta_data_max_value_length).
|
225
|
+
# (default: +false+)
|
226
|
+
preference :meta_data_validation_enabled, :boolean, default: false
|
227
|
+
|
228
|
+
# @!attribute [rw] meta_data_max_keys
|
229
|
+
# @return [Integer] Maximum keys that can be allocated in customer and admin metadata column (default: +6+)
|
230
|
+
preference :meta_data_max_keys, :integer, default: 6
|
231
|
+
|
232
|
+
# @!attribute [rw] meta_data_max_key_length
|
233
|
+
# @return [Integer] Maximum length that key can have in customer and admin metadata column (default: +16+)
|
234
|
+
preference :meta_data_max_key_length, :integer, default: 16
|
235
|
+
|
236
|
+
# @!attribute [rw] meta_data_max_value_length
|
237
|
+
# @return [Integer] Maximum length that value can have in customer and admin metadata column (default: +256+)
|
238
|
+
preference :meta_data_max_value_length, :integer, default: 256
|
239
|
+
|
193
240
|
# @!attribute [rw] properties_per_page
|
194
241
|
# @return [Integer] Properties to show per-page in the admin (default: +15+)
|
195
242
|
preference :properties_per_page, :integer, default: 15
|
@@ -198,10 +245,6 @@ module Spree
|
|
198
245
|
# @return [Integer] Products to show per-page in the frontend (default: +12+)
|
199
246
|
preference :products_per_page, :integer, default: 12
|
200
247
|
|
201
|
-
# @!attribute [rw] promotions_per_page
|
202
|
-
# @return [Integer] Promotions to show per-page in the admin (default: +15+)
|
203
|
-
preference :promotions_per_page, :integer, default: 15
|
204
|
-
|
205
248
|
# @!attribute [rw] require_master_price
|
206
249
|
# @return [Boolean] Require a price on the master variant of a product (default: +true+)
|
207
250
|
preference :require_master_price, :boolean, default: true
|
@@ -263,7 +306,6 @@ module Spree
|
|
263
306
|
# @return [] Track on_hand values for variants / products. (default: true)
|
264
307
|
preference :track_inventory_levels, :boolean, default: true
|
265
308
|
|
266
|
-
|
267
309
|
# Other configurations
|
268
310
|
|
269
311
|
# Allows restricting what currencies will be available.
|
@@ -307,9 +349,6 @@ module Spree
|
|
307
349
|
# Spree::Variant::VatPriceGenerator.
|
308
350
|
class_name_attribute :variant_vat_prices_generator_class, default: 'Spree::Variant::VatPriceGenerator'
|
309
351
|
|
310
|
-
# promotion_chooser_class allows extensions to provide their own PromotionChooser
|
311
|
-
class_name_attribute :promotion_chooser_class, default: 'Spree::PromotionChooser'
|
312
|
-
|
313
352
|
class_name_attribute :allocator_class, default: 'Spree::Stock::Allocator::OnHandFirst'
|
314
353
|
|
315
354
|
class_name_attribute :shipping_rate_sorter_class, default: 'Spree::Stock::ShippingRateSorter'
|
@@ -332,14 +371,20 @@ module Spree
|
|
332
371
|
# signature as Spree::OrderMailer.confirm_email.
|
333
372
|
class_name_attribute :order_mailer_class, default: 'Spree::OrderMailer'
|
334
373
|
|
335
|
-
# Allows providing your own
|
374
|
+
# Allows providing your own order update attributes class for checkout.
|
336
375
|
#
|
337
|
-
# @!attribute [rw]
|
338
|
-
# @return [
|
339
|
-
#
|
340
|
-
|
341
|
-
|
342
|
-
|
376
|
+
# @!attribute [rw] order_update_attributes_class
|
377
|
+
# @return [Class] a class that responds to "call"
|
378
|
+
# with the same signature as Spree::OrderUpdateAttributes.
|
379
|
+
class_name_attribute :order_update_attributes_class, default: 'Spree::OrderUpdateAttributes'
|
380
|
+
|
381
|
+
# Allows providing a different order recalculator.
|
382
|
+
# @!attribute [rw] order_recalculator_class
|
383
|
+
# @see Spree::OrderUpdater
|
384
|
+
# @return [Class] an object that conforms to the API of
|
385
|
+
# the standard order recalculator class
|
386
|
+
# Spree::OrderUpdater.
|
387
|
+
class_name_attribute :order_recalculator_class, default: 'Spree::OrderUpdater'
|
343
388
|
|
344
389
|
# Allows providing your own Mailer for reimbursement mailer.
|
345
390
|
#
|
@@ -372,6 +417,28 @@ module Spree
|
|
372
417
|
# Spree::Wallet::DefaultPaymentBuilder.
|
373
418
|
class_name_attribute :default_payment_builder_class, default: 'Spree::Wallet::DefaultPaymentBuilder'
|
374
419
|
|
420
|
+
# Allows providing your own class for managing the contents of an order.
|
421
|
+
#
|
422
|
+
# @!attribute [rw] order_contents_class
|
423
|
+
# @return [Class] a class with the same public interfaces as
|
424
|
+
# Spree::OrderContents.
|
425
|
+
class_name_attribute :order_contents_class, default: 'Spree::SimpleOrderContents'
|
426
|
+
|
427
|
+
# Allows providing your own class for shipping an order.
|
428
|
+
#
|
429
|
+
# @!attribute [rw] order_shipping_class
|
430
|
+
# @return [Class] a class with the same public interfaces as
|
431
|
+
# Spree::OrderShipping.
|
432
|
+
class_name_attribute :order_shipping_class, default: 'Spree::OrderShipping'
|
433
|
+
|
434
|
+
# Allows providing your own class for managing the inventory units of a
|
435
|
+
# completed order.
|
436
|
+
#
|
437
|
+
# @!attribute [rw] order_cancellations_class
|
438
|
+
# @return [Class] a class with the same public interfaces as
|
439
|
+
# Spree::OrderCancellations.
|
440
|
+
class_name_attribute :order_cancellations_class, default: 'Spree::OrderCancellations'
|
441
|
+
|
375
442
|
# Allows providing your own class for canceling payments.
|
376
443
|
#
|
377
444
|
# @!attribute [rw] payment_canceller
|
@@ -391,6 +458,13 @@ module Spree
|
|
391
458
|
# as Spree::Wallet::AddPaymentSourcesToWallet.
|
392
459
|
class_name_attribute :add_payment_sources_to_wallet_class, default: 'Spree::Wallet::AddPaymentSourcesToWallet'
|
393
460
|
|
461
|
+
# Allows providing your own class for recalculating totals on an item.
|
462
|
+
#
|
463
|
+
# @!attribute [rw] item_total_class
|
464
|
+
# @return [Class] a class with the same public interfaces as
|
465
|
+
# Spree::ItemTotal
|
466
|
+
class_name_attribute :item_total_class, default: 'Spree::ItemTotal'
|
467
|
+
|
394
468
|
# Allows providing your own class for calculating taxes on an order.
|
395
469
|
#
|
396
470
|
# This extension point is under development and may change in a future minor release.
|
@@ -443,7 +517,7 @@ module Spree
|
|
443
517
|
# @!attribute [rw] image_attachment_module
|
444
518
|
# @return [Module] a module that can be included into Spree::Image to allow attachments
|
445
519
|
# Enumerable of images adhering to the present_image_class interface
|
446
|
-
class_name_attribute :image_attachment_module, default:
|
520
|
+
class_name_attribute :image_attachment_module, default: "Spree::Image::ActiveStorageAttachment"
|
447
521
|
|
448
522
|
# @!attribute [rw] allowed_image_mime_types
|
449
523
|
#
|
@@ -453,6 +527,62 @@ module Spree
|
|
453
527
|
# @return [Array]
|
454
528
|
class_name_attribute :allowed_image_mime_types, default: %w(image/jpeg image/jpg image/png image/gif).freeze
|
455
529
|
|
530
|
+
# @!attribute [rw] product_image_style_default
|
531
|
+
#
|
532
|
+
# Defines which style to default to when style is not provided
|
533
|
+
# :product is the default.
|
534
|
+
#
|
535
|
+
# @return [Symbol]
|
536
|
+
class_name_attribute :product_image_style_default, default: :product
|
537
|
+
|
538
|
+
# @!attribute [rw] product_image_styles
|
539
|
+
#
|
540
|
+
# Defines image styles/sizes hash for styles
|
541
|
+
# `{ mini: '48x48>',
|
542
|
+
# small: '400x400>',
|
543
|
+
# product: '680x680>',
|
544
|
+
# large: '1200x1200>' } is the default.
|
545
|
+
#
|
546
|
+
# @return [Hash]
|
547
|
+
class_name_attribute :product_image_styles, default: { mini: '48x48>',
|
548
|
+
small: '400x400>',
|
549
|
+
product: '680x680>',
|
550
|
+
large: '1200x1200>' }
|
551
|
+
|
552
|
+
# Allows providing your own class for prioritizing store credit application
|
553
|
+
# to an order.
|
554
|
+
#
|
555
|
+
# @!attribute [rw] store_credit_prioritizer_class
|
556
|
+
# @return [Class] a class with the same public interfaces as
|
557
|
+
# Spree::StoreCreditPrioritizer.
|
558
|
+
class_name_attribute :store_credit_prioritizer_class, default: 'Spree::StoreCreditPrioritizer'
|
559
|
+
|
560
|
+
# Allows finding brand for product.
|
561
|
+
#
|
562
|
+
# @!attribute [rw] brand_selector_class
|
563
|
+
# @return [Class] a class with the same public interfaces as
|
564
|
+
# Spree::TaxonBrandSelector.
|
565
|
+
class_name_attribute :brand_selector_class, default: 'Spree::TaxonBrandSelector'
|
566
|
+
|
567
|
+
# @!attribute [rw] taxon_image_style_default
|
568
|
+
#
|
569
|
+
# Defines which style to default to when style is not provided
|
570
|
+
# :mini is the default.
|
571
|
+
#
|
572
|
+
# @return [Symbol]
|
573
|
+
class_name_attribute :taxon_image_style_default, default: :mini
|
574
|
+
|
575
|
+
# @!attribute [rw] taxon_styles
|
576
|
+
#
|
577
|
+
# Defines taxon styles/sizes hash for styles
|
578
|
+
# `{ mini: '48x48>',
|
579
|
+
# small: '400x400>',
|
580
|
+
# product: '680x680>',
|
581
|
+
# large: '1200x1200>' } is the default.
|
582
|
+
#
|
583
|
+
# @return [Hash]
|
584
|
+
class_name_attribute :taxon_image_styles, default: { mini: '32x32>', normal: '128x128>' }
|
585
|
+
|
456
586
|
# Allows switching attachment library for Taxon
|
457
587
|
#
|
458
588
|
# `Spree::Taxon::ActiveStorageAttachment`
|
@@ -461,7 +591,28 @@ module Spree
|
|
461
591
|
# @!attribute [rw] taxon_attachment_module
|
462
592
|
# @return [Module] a module that can be included into Spree::Taxon to allow attachments
|
463
593
|
# Enumerable of taxons adhering to the present_taxon_class interface
|
464
|
-
class_name_attribute :taxon_attachment_module, default:
|
594
|
+
class_name_attribute :taxon_attachment_module, default: "Spree::Taxon::ActiveStorageAttachment"
|
595
|
+
|
596
|
+
# Allows changing the default behavior for redirects when a user is not authorized
|
597
|
+
#
|
598
|
+
# @!attribute [rw] unauthorized_redirect_handler_class
|
599
|
+
# @return [Class] a class with the same public interfaces as
|
600
|
+
# Spree::UnauthorizedRedirectHandler.
|
601
|
+
class_name_attribute :unauthorized_redirect_handler_class, default: "Spree::UnauthorizedRedirectHandler"
|
602
|
+
|
603
|
+
# Set of classes that can be promotion adjustment sources
|
604
|
+
add_class_set :adjustment_promotion_source_types, default: []
|
605
|
+
|
606
|
+
# Configures the absolute path that contains the Solidus engine
|
607
|
+
# migrations. This will be checked at app boot to confirm that all Solidus
|
608
|
+
# migrations are installed.
|
609
|
+
#
|
610
|
+
# @!attribute [rw] migration_path
|
611
|
+
# @return [Pathname] the configured path. (default: `Rails.root.join('db', 'migrate')`)
|
612
|
+
attr_writer :migration_path
|
613
|
+
def migration_path
|
614
|
+
@migration_path ||= ::Rails.root.join('db', 'migrate')
|
615
|
+
end
|
465
616
|
|
466
617
|
# Allows providing your own class instance for generating order numbers.
|
467
618
|
#
|
@@ -486,6 +637,54 @@ module Spree
|
|
486
637
|
@stock_configuration ||= Spree::Core::StockConfiguration.new
|
487
638
|
end
|
488
639
|
|
640
|
+
# Allows providing your own promotion configuration instance
|
641
|
+
# @!attribute [rw] promotions
|
642
|
+
# @return [Spree::Core::NullPromotionConfiguration] an object that conforms to the API of
|
643
|
+
# the example promotion configuration class Spree::Core::NullPromotionConfiguration.
|
644
|
+
attr_writer :promotions
|
645
|
+
def promotions
|
646
|
+
@promotions ||= Spree::Core::NullPromotionConfiguration.new
|
647
|
+
end
|
648
|
+
|
649
|
+
class << self
|
650
|
+
private
|
651
|
+
|
652
|
+
def promotions_deprecation_message(method, new_method_name = nil)
|
653
|
+
"The `Spree::Config.#{method}` preference is deprecated and will be removed in Solidus 5.0. " \
|
654
|
+
"Use `Spree::Config.promotions.#{new_method_name || method}` instead"
|
655
|
+
end
|
656
|
+
end
|
657
|
+
|
658
|
+
def promotion_adjuster_class
|
659
|
+
promotions.order_adjuster_class
|
660
|
+
end
|
661
|
+
|
662
|
+
def promotion_adjuster_class=(klass)
|
663
|
+
promotions.order_adjuster_class = klass
|
664
|
+
end
|
665
|
+
deprecate promotion_adjuster_class: promotions_deprecation_message("promotion_adjuster_class", "order_adjuster_class"), deprecator: Spree.deprecator
|
666
|
+
deprecate "promotion_adjuster_class=": promotions_deprecation_message("promotion_adjuster_class=", "order_adjuster_class="), deprecator: Spree.deprecator
|
667
|
+
|
668
|
+
delegate :promotion_chooser_class, :promotion_chooser_class=, to: :promotions
|
669
|
+
deprecate promotion_chooser_class: promotions_deprecation_message("promotion_chooser_class"), deprecator: Spree.deprecator
|
670
|
+
deprecate "promotion_chooser_class=": promotions_deprecation_message("promotion_chooser_class="), deprecator: Spree.deprecator
|
671
|
+
|
672
|
+
delegate :shipping_promotion_handler_class, :shipping_promotion_handler_class=, to: :promotions
|
673
|
+
deprecate shipping_promotion_handler_class: promotions_deprecation_message("shipping_promotion_handler_class"), deprecator: Spree.deprecator
|
674
|
+
deprecate "shipping_promotion_handler_class=": promotions_deprecation_message("shipping_promotion_handler_class="), deprecator: Spree.deprecator
|
675
|
+
|
676
|
+
delegate :coupon_code_handler_class, :coupon_code_handler_class=, to: :promotions
|
677
|
+
deprecate coupon_code_handler_class: promotions_deprecation_message("coupon_code_handler_class"), deprecator: Spree.deprecator
|
678
|
+
deprecate "coupon_code_handler_class=": promotions_deprecation_message("coupon_code_handler_class"), deprecator: Spree.deprecator
|
679
|
+
|
680
|
+
delegate :promotion_code_batch_mailer_class, :promotion_code_batch_mailer_class=, to: :promotions
|
681
|
+
deprecate promotion_code_batch_mailer_class: promotions_deprecation_message("promotion_code_batch_mailer_class"), deprecator: Spree.deprecator
|
682
|
+
deprecate "promotion_code_batch_mailer_class=": promotions_deprecation_message("promotion_code_batch_mailer_class="), deprecator: Spree.deprecator
|
683
|
+
|
684
|
+
delegate :preferred_promotions_per_page, :preferred_promotions_per_page=, to: :promotions
|
685
|
+
deprecate preferred_promotions_per_page: promotions_deprecation_message("preferred_promotions_per_page"), deprecator: Spree.deprecator
|
686
|
+
deprecate "preferred_promotions_per_page=": promotions_deprecation_message("preferred_promotions_per_page="), deprecator: Spree.deprecator
|
687
|
+
|
489
688
|
def roles
|
490
689
|
@roles ||= Spree::RoleConfiguration.new.tap do |roles|
|
491
690
|
roles.assign_permissions :default, ['Spree::PermissionSets::DefaultCustomer']
|
@@ -493,10 +692,6 @@ module Spree
|
|
493
692
|
end
|
494
693
|
end
|
495
694
|
|
496
|
-
def events
|
497
|
-
@events_configuration ||= Spree::Event::Configuration.new
|
498
|
-
end
|
499
|
-
|
500
695
|
def user_last_url_storer_rules
|
501
696
|
@user_last_url_storer_rules ||= ::Spree::Core::ClassConstantizer::Set.new.tap do |set|
|
502
697
|
set << 'Spree::UserLastUrlStorer::Rules::AuthenticationRule'
|
@@ -505,27 +700,6 @@ module Spree
|
|
505
700
|
|
506
701
|
def environment
|
507
702
|
@environment ||= Spree::Core::Environment.new(self).tap do |env|
|
508
|
-
env.calculators.promotion_actions_create_adjustments = %w[
|
509
|
-
Spree::Calculator::FlatPercentItemTotal
|
510
|
-
Spree::Calculator::FlatRate
|
511
|
-
Spree::Calculator::FlexiRate
|
512
|
-
Spree::Calculator::TieredPercent
|
513
|
-
Spree::Calculator::TieredFlatRate
|
514
|
-
]
|
515
|
-
|
516
|
-
env.calculators.promotion_actions_create_item_adjustments = %w[
|
517
|
-
Spree::Calculator::DistributedAmount
|
518
|
-
Spree::Calculator::FlatRate
|
519
|
-
Spree::Calculator::FlexiRate
|
520
|
-
Spree::Calculator::PercentOnLineItem
|
521
|
-
Spree::Calculator::TieredPercent
|
522
|
-
]
|
523
|
-
|
524
|
-
env.calculators.promotion_actions_create_quantity_adjustments = %w[
|
525
|
-
Spree::Calculator::PercentOnLineItem
|
526
|
-
Spree::Calculator::FlatRate
|
527
|
-
]
|
528
|
-
|
529
703
|
env.calculators.shipping_methods = %w[
|
530
704
|
Spree::Calculator::Shipping::FlatPercentItemTotal
|
531
705
|
Spree::Calculator::Shipping::FlatRate
|
@@ -536,6 +710,7 @@ module Spree
|
|
536
710
|
|
537
711
|
env.calculators.tax_rates = %w[
|
538
712
|
Spree::Calculator::DefaultTax
|
713
|
+
Spree::Calculator::FlatFee
|
539
714
|
]
|
540
715
|
|
541
716
|
env.payment_methods = %w[
|
@@ -545,32 +720,6 @@ module Spree
|
|
545
720
|
Spree::PaymentMethod::Check
|
546
721
|
]
|
547
722
|
|
548
|
-
env.promotions.rules = %w[
|
549
|
-
Spree::Promotion::Rules::ItemTotal
|
550
|
-
Spree::Promotion::Rules::Product
|
551
|
-
Spree::Promotion::Rules::User
|
552
|
-
Spree::Promotion::Rules::FirstOrder
|
553
|
-
Spree::Promotion::Rules::UserLoggedIn
|
554
|
-
Spree::Promotion::Rules::OneUsePerUser
|
555
|
-
Spree::Promotion::Rules::Taxon
|
556
|
-
Spree::Promotion::Rules::NthOrder
|
557
|
-
Spree::Promotion::Rules::OptionValue
|
558
|
-
Spree::Promotion::Rules::FirstRepeatPurchaseSince
|
559
|
-
Spree::Promotion::Rules::UserRole
|
560
|
-
Spree::Promotion::Rules::Store
|
561
|
-
]
|
562
|
-
|
563
|
-
env.promotions.actions = %w[
|
564
|
-
Spree::Promotion::Actions::CreateAdjustment
|
565
|
-
Spree::Promotion::Actions::CreateItemAdjustments
|
566
|
-
Spree::Promotion::Actions::CreateQuantityAdjustments
|
567
|
-
Spree::Promotion::Actions::FreeShipping
|
568
|
-
]
|
569
|
-
|
570
|
-
env.promotions.shipping_actions = %w[
|
571
|
-
Spree::Promotion::Actions::FreeShipping
|
572
|
-
]
|
573
|
-
|
574
723
|
env.stock_splitters = %w[
|
575
724
|
Spree::Stock::Splitter::ShippingCategory
|
576
725
|
Spree::Stock::Splitter::Backordered
|
data/lib/spree/bus.rb
ADDED
@@ -1,71 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
module Auth
|
9
|
-
extend ActiveSupport::Concern
|
10
|
-
|
11
|
-
# @!attribute [rw] unauthorized_redirect
|
12
|
-
# @!scope class
|
13
|
-
# Extension point for overriding behaviour of access denied errors.
|
14
|
-
# Default behaviour is to redirect back or to "/unauthorized" with a flash
|
15
|
-
# message.
|
16
|
-
# @return [Proc] action to take when access denied error is raised.
|
17
|
-
|
18
|
-
included do
|
19
|
-
before_action :set_guest_token
|
20
|
-
helper_method :try_spree_current_user
|
21
|
-
|
22
|
-
class_attribute :unauthorized_redirect
|
23
|
-
self.unauthorized_redirect = -> do
|
24
|
-
flash[:error] = I18n.t('spree.authorization_failure')
|
25
|
-
redirect_back(fallback_location: "/unauthorized")
|
26
|
-
end
|
27
|
-
|
28
|
-
rescue_from CanCan::AccessDenied do
|
29
|
-
instance_exec(&unauthorized_redirect)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# Needs to be overriden so that we use Spree's Ability rather than anyone else's.
|
34
|
-
def current_ability
|
35
|
-
@current_ability ||= Spree::Ability.new(try_spree_current_user)
|
36
|
-
end
|
37
|
-
|
38
|
-
def redirect_back_or_default(default)
|
39
|
-
redirect_to(session["spree_user_return_to"] || default)
|
40
|
-
session["spree_user_return_to"] = nil
|
41
|
-
end
|
42
|
-
|
43
|
-
def set_guest_token
|
44
|
-
unless cookies.signed[:guest_token].present?
|
45
|
-
cookies.permanent.signed[:guest_token] = Spree::Config[:guest_token_cookie_options].merge(
|
46
|
-
value: SecureRandom.urlsafe_base64(nil, false),
|
47
|
-
httponly: true
|
48
|
-
)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def store_location
|
53
|
-
Spree::UserLastUrlStorer.new(self).store_location
|
54
|
-
end
|
55
|
-
|
56
|
-
# proxy method to *possible* spree_current_user method
|
57
|
-
# Authentication extensions (such as spree_auth_devise) are meant to provide spree_current_user
|
58
|
-
def try_spree_current_user
|
59
|
-
# This one will be defined by apps looking to hook into Spree
|
60
|
-
# As per authentication_helpers.rb
|
61
|
-
if respond_to?(:spree_current_user, true)
|
62
|
-
spree_current_user
|
63
|
-
# This one will be defined by Devise
|
64
|
-
elsif respond_to?(:current_spree_user, true)
|
65
|
-
current_spree_user
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,82 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
module Common
|
9
|
-
extend ActiveSupport::Concern
|
10
|
-
included do
|
11
|
-
helper_method :title
|
12
|
-
helper_method :title=
|
13
|
-
helper_method :accurate_title
|
14
|
-
|
15
|
-
layout :get_layout
|
16
|
-
|
17
|
-
before_action :set_user_language
|
18
|
-
end
|
19
|
-
|
20
|
-
protected
|
21
|
-
|
22
|
-
# can be used in views as well as controllers.
|
23
|
-
# e.g. <% self.title = 'This is a custom title for this view' %>
|
24
|
-
attr_writer :title
|
25
|
-
|
26
|
-
def title
|
27
|
-
title_string = @title.present? ? @title : accurate_title
|
28
|
-
if title_string.present?
|
29
|
-
if Spree::Config[:always_put_site_name_in_title]
|
30
|
-
[title_string, default_title].join(' - ')
|
31
|
-
else
|
32
|
-
title_string
|
33
|
-
end
|
34
|
-
else
|
35
|
-
default_title
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def default_title
|
40
|
-
current_store.name
|
41
|
-
end
|
42
|
-
|
43
|
-
# this is a hook for subclasses to provide title
|
44
|
-
def accurate_title
|
45
|
-
current_store.seo_title
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def set_user_language_locale_key
|
51
|
-
:locale
|
52
|
-
end
|
53
|
-
|
54
|
-
def set_user_language
|
55
|
-
available_locales = Spree.i18n_available_locales
|
56
|
-
locale = [
|
57
|
-
params[:locale],
|
58
|
-
session[set_user_language_locale_key],
|
59
|
-
(config_locale if respond_to?(:config_locale, true)),
|
60
|
-
I18n.default_locale
|
61
|
-
].detect do |candidate|
|
62
|
-
candidate &&
|
63
|
-
available_locales.include?(candidate.to_sym)
|
64
|
-
end
|
65
|
-
session[set_user_language_locale_key] = locale
|
66
|
-
I18n.locale = locale
|
67
|
-
Carmen.i18n_backend.locale = locale
|
68
|
-
end
|
69
|
-
|
70
|
-
# Returns which layout to render.
|
71
|
-
#
|
72
|
-
# You can set the layout you want to render inside your Spree configuration with the +:layout+ option.
|
73
|
-
#
|
74
|
-
# Default layout is: +app/views/spree/layouts/spree_application+
|
75
|
-
#
|
76
|
-
def get_layout
|
77
|
-
Spree::Config[:layout]
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|