solidus_core 2.10.3 → 2.11.4
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.
Potentially problematic release.
This version of solidus_core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree.js.erb +31 -2
- data/app/controllers/spree/base_controller.rb +1 -0
- data/app/mailers/spree/base_mailer.rb +4 -0
- data/app/mailers/spree/order_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +116 -0
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +69 -0
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +39 -0
- data/app/models/concerns/spree/default_price.rb +1 -1
- data/app/models/concerns/spree/soft_deletable.rb +18 -0
- data/app/models/concerns/spree/user_address_book.rb +86 -32
- data/app/models/concerns/spree/user_methods.rb +3 -2
- data/app/models/spree/ability.rb +34 -10
- data/app/models/spree/address.rb +94 -17
- data/app/models/spree/address/name.rb +49 -0
- data/app/models/spree/address/state_validator.rb +71 -0
- data/app/models/spree/adjustment.rb +1 -1
- data/app/models/spree/base.rb +2 -2
- data/app/models/spree/calculator.rb +4 -4
- data/app/models/spree/calculator/default_tax.rb +1 -1
- data/app/models/spree/calculator/free_shipping.rb +1 -0
- data/app/models/spree/calculator/percent_per_item.rb +6 -4
- data/app/models/spree/calculator/price_sack.rb +2 -1
- data/app/models/spree/credit_card.rb +2 -2
- data/app/models/spree/customer_return.rb +4 -2
- data/app/models/spree/exchange.rb +1 -1
- data/app/models/spree/image/active_storage_attachment.rb +21 -0
- data/app/models/spree/inventory_unit.rb +1 -1
- data/app/models/spree/line_item.rb +13 -4
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +2 -2
- data/app/models/spree/order.rb +91 -20
- data/app/models/spree/order/checkout.rb +1 -0
- data/app/models/spree/order/payments.rb +2 -2
- data/app/models/spree/order_inventory.rb +16 -4
- data/app/models/spree/order_merger.rb +6 -4
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_updater.rb +11 -10
- data/app/models/spree/payment.rb +3 -3
- data/app/models/spree/payment/cancellation.rb +3 -22
- data/app/models/spree/payment/processing.rb +54 -30
- data/app/models/spree/payment_method.rb +8 -9
- data/app/models/spree/payment_source.rb +2 -2
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +2 -8
- data/app/models/spree/product.rb +19 -14
- data/app/models/spree/product/scopes.rb +9 -5
- data/app/models/spree/promotion.rb +18 -7
- data/app/models/spree/promotion/actions/free_shipping.rb +6 -5
- data/app/models/spree/promotion_action.rb +1 -7
- data/app/models/spree/promotion_code.rb +6 -1
- data/app/models/spree/promotion_code_batch.rb +1 -1
- data/app/models/spree/promotion_handler/coupon.rb +2 -2
- data/app/models/spree/promotion_rule.rb +1 -1
- data/app/models/spree/promotion_rule_role.rb +1 -1
- data/app/models/spree/refund.rb +60 -12
- data/app/models/spree/reimbursement.rb +27 -0
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +10 -3
- data/app/models/spree/return_authorization.rb +1 -1
- data/app/models/spree/return_item.rb +21 -10
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +1 -1
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/shipment.rb +2 -2
- data/app/models/spree/shipping_calculator.rb +1 -1
- data/app/models/spree/shipping_manifest.rb +2 -2
- data/app/models/spree/shipping_method.rb +2 -9
- data/app/models/spree/shipping_rate.rb +1 -1
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +18 -7
- data/app/models/spree/stock/inventory_units_finalizer.rb +3 -5
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock/simple_coordinator.rb +1 -3
- data/app/models/spree/stock_item.rb +2 -8
- data/app/models/spree/stock_movement.rb +2 -0
- data/app/models/spree/store.rb +1 -1
- data/app/models/spree/store_credit.rb +1 -7
- data/app/models/spree/store_credit_category.rb +30 -3
- data/app/models/spree/store_credit_event.rb +1 -7
- data/app/models/spree/store_credit_reason.rb +0 -4
- data/app/models/spree/tax/tax_helpers.rb +1 -1
- data/app/models/spree/tax_category.rb +2 -8
- data/app/models/spree/tax_rate.rb +7 -7
- data/app/models/spree/taxon.rb +1 -1
- data/app/models/spree/taxon/active_storage_attachment.rb +19 -0
- data/app/models/spree/user_address.rb +8 -2
- data/app/models/spree/variant.rb +7 -13
- data/app/models/spree/variant_property_rule.rb +5 -1
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +8 -3
- data/app/models/spree/zone.rb +1 -1
- data/config/locales/en.yml +44 -5
- data/db/default/spree/countries.rb +1 -1
- data/db/default/spree/states.rb +12 -4
- data/db/default/spree/store_credit.rb +2 -2
- data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +12 -0
- data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +6 -0
- data/db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb +7 -0
- data/db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb +7 -0
- data/lib/generators/solidus/install/install_generator.rb +253 -0
- data/lib/generators/{spree → solidus}/install/templates/config/initializers/spree.rb.tt +36 -5
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/backend/all.css +0 -0
- data/lib/generators/{spree → solidus}/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +1 -1
- data/lib/generators/spree/install/install_generator.rb +7 -189
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +1 -1
- data/lib/spree/app_configuration.rb +117 -51
- data/lib/spree/awesome_nested_set_override.rb +44 -0
- data/lib/spree/core.rb +6 -11
- data/lib/spree/core/controller_helpers/auth.rb +17 -4
- data/lib/spree/core/controller_helpers/current_host.rb +17 -0
- data/lib/spree/core/controller_helpers/order.rb +8 -7
- data/lib/spree/core/engine.rb +39 -2
- data/lib/spree/core/importer/order.rb +24 -10
- data/lib/spree/core/permalinks.rb +1 -3
- data/lib/spree/core/product_filters.rb +6 -5
- data/lib/spree/core/state_machines.rb +20 -1
- data/lib/spree/core/state_machines/order.rb +249 -0
- data/lib/spree/core/state_machines/return_item/reception_status.rb +2 -2
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/encryptor.rb +25 -0
- data/lib/spree/event.rb +40 -7
- data/lib/spree/event/adapters/active_support_notifications.rb +32 -0
- data/lib/spree/event/configuration.rb +11 -6
- data/lib/spree/event/subscriber.rb +38 -18
- data/lib/spree/event/subscriber_registry.rb +92 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +2 -1
- data/lib/spree/paranoia_deprecations.rb +32 -12
- data/lib/spree/permission_sets/configuration_display.rb +14 -14
- data/lib/spree/permission_sets/default_customer.rb +16 -16
- data/lib/spree/permission_sets/order_display.rb +11 -11
- data/lib/spree/permission_sets/order_management.rb +1 -1
- data/lib/spree/permission_sets/product_display.rb +9 -9
- data/lib/spree/permission_sets/promotion_display.rb +5 -5
- data/lib/spree/permission_sets/restricted_stock_display.rb +2 -2
- data/lib/spree/permission_sets/restricted_stock_management.rb +1 -1
- data/lib/spree/permission_sets/stock_display.rb +2 -2
- data/lib/spree/permission_sets/stock_management.rb +1 -1
- data/lib/spree/permission_sets/user_display.rb +3 -3
- data/lib/spree/permission_sets/user_management.rb +4 -3
- data/lib/spree/permitted_attributes.rb +9 -8
- data/lib/spree/preferences/preferable.rb +4 -3
- data/lib/spree/preferences/preferable_class_methods.rb +22 -3
- data/lib/spree/testing_support.rb +40 -0
- data/lib/spree/testing_support/ability_helpers.rb +9 -9
- data/lib/spree/testing_support/authorization_helpers.rb +1 -0
- data/lib/spree/testing_support/blacklist_urls.rb +23 -0
- data/lib/spree/testing_support/capybara_ext.rb +3 -0
- data/lib/spree/testing_support/common_rake.rb +3 -3
- data/lib/spree/testing_support/dummy_app.rb +44 -23
- data/lib/spree/testing_support/dummy_app/migrations.rb +5 -6
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +1 -3
- data/lib/spree/testing_support/factories.rb +2 -4
- data/lib/spree/testing_support/factories/address_factory.rb +3 -4
- data/lib/spree/testing_support/factories/adjustment_factory.rb +2 -5
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +3 -0
- data/lib/spree/testing_support/factories/calculator_factory.rb +3 -0
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
- data/lib/spree/testing_support/factories/country_factory.rb +3 -0
- data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -0
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -3
- data/lib/spree/testing_support/factories/image_factory.rb +4 -1
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +2 -4
- data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_type_factory.rb +3 -0
- data/lib/spree/testing_support/factories/option_value_factory.rb +3 -0
- data/lib/spree/testing_support/factories/order_factory.rb +2 -6
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +2 -2
- data/lib/spree/testing_support/factories/payment_factory.rb +2 -4
- data/lib/spree/testing_support/factories/payment_method_factory.rb +3 -0
- data/lib/spree/testing_support/factories/price_factory.rb +2 -1
- data/lib/spree/testing_support/factories/product_factory.rb +2 -5
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_property_factory.rb +2 -2
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +3 -0
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +2 -2
- data/lib/spree/testing_support/factories/promotion_factory.rb +8 -2
- data/lib/spree/testing_support/factories/property_factory.rb +3 -0
- data/lib/spree/testing_support/factories/refund_factory.rb +3 -2
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +3 -0
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +3 -2
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +3 -0
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +2 -3
- data/lib/spree/testing_support/factories/return_item_factory.rb +2 -4
- data/lib/spree/testing_support/factories/return_reason_factory.rb +3 -0
- data/lib/spree/testing_support/factories/role_factory.rb +3 -0
- data/lib/spree/testing_support/factories/shipment_factory.rb +2 -3
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +3 -0
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +2 -3
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +2 -2
- data/lib/spree/testing_support/factories/state_factory.rb +2 -1
- data/lib/spree/testing_support/factories/stock_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -3
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +2 -1
- data/lib/spree/testing_support/factories/stock_package_factory.rb +2 -2
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +11 -0
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +3 -2
- data/lib/spree/testing_support/factories/store_credit_factory.rb +2 -3
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +6 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +3 -0
- data/lib/spree/testing_support/factories/store_factory.rb +4 -1
- data/lib/spree/testing_support/factories/tax_category_factory.rb +2 -1
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +2 -3
- data/lib/spree/testing_support/factories/taxon_factory.rb +6 -1
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -0
- data/lib/spree/testing_support/factories/user_factory.rb +2 -3
- data/lib/spree/testing_support/factories/variant_factory.rb +2 -4
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +2 -3
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +2 -2
- data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
- data/lib/spree/testing_support/fixtures/blank.jpg +0 -0
- data/lib/spree/testing_support/job_helpers.rb +24 -0
- data/lib/spree/testing_support/order_walkthrough.rb +1 -1
- data/lib/spree/testing_support/precompiled_assets.rb +15 -0
- data/lib/spree/testing_support/preferences.rb +3 -1
- data/lib/spree/testing_support/shared_examples/gallery.rb +1 -1
- data/lib/spree/testing_support/translations.rb +25 -0
- data/{app/models → lib}/spree/user_class_handle.rb +0 -0
- data/lib/tasks/email.rake +3 -2
- data/solidus_core.gemspec +8 -5
- metadata +97 -374
- data/script/rails +0 -10
- data/spec/fixtures/thinking-cat.jpg +0 -0
- data/spec/helpers/base_helper_spec.rb +0 -168
- data/spec/helpers/products_helper_spec.rb +0 -202
- data/spec/helpers/taxons_helper_spec.rb +0 -43
- data/spec/jobs/promotion_code_batch_job_spec.rb +0 -96
- data/spec/lib/calculated_adjustments_spec.rb +0 -133
- data/spec/lib/i18n_spec.rb +0 -97
- data/spec/lib/search/base_spec.rb +0 -91
- data/spec/lib/search/variant_spec.rb +0 -115
- data/spec/lib/spree/app_configuration_spec.rb +0 -140
- data/spec/lib/spree/core/class_constantizer_spec.rb +0 -91
- data/spec/lib/spree/core/controller_helpers/auth_spec.rb +0 -73
- data/spec/lib/spree/core/controller_helpers/order_spec.rb +0 -126
- data/spec/lib/spree/core/controller_helpers/payment_parameters_spec.rb +0 -195
- data/spec/lib/spree/core/controller_helpers/pricing_spec.rb +0 -94
- data/spec/lib/spree/core/controller_helpers/search_spec.rb +0 -21
- data/spec/lib/spree/core/controller_helpers/store_spec.rb +0 -18
- data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +0 -48
- data/spec/lib/spree/core/current_store_spec.rb +0 -33
- data/spec/lib/spree/core/environment_extension_spec.rb +0 -46
- data/spec/lib/spree/core/importer/order_spec.rb +0 -484
- data/spec/lib/spree/core/role_configuration_spec.rb +0 -155
- data/spec/lib/spree/core/stock_configuration_spec.rb +0 -95
- data/spec/lib/spree/core/testing_support/factories/address_factory_spec.rb +0 -61
- data/spec/lib/spree/core/testing_support/factories/adjustment_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/adjustment_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/calculator_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/carton_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/country_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/credit_card_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/customer_return_factory_spec.rb +0 -39
- data/spec/lib/spree/core/testing_support/factories/image_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/inventory_unit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/line_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/option_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/order_factory_spec.rb +0 -376
- data/spec/lib/spree/core/testing_support/factories/order_promotion_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/payment_factory_spec.rb +0 -40
- data/spec/lib/spree/core/testing_support/factories/payment_method_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/price_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/product_option_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/product_property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_code_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/promotion_factory_spec.rb +0 -32
- data/spec/lib/spree/core/testing_support/factories/property_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/refund_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/reimbursement_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/reimbursement_type_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_authorization_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/return_item_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/return_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/role_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/shipment_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/shipping_method_factory_spec.rb +0 -44
- data/spec/lib/spree/core/testing_support/factories/shipping_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/state_factory_spec.rb +0 -59
- data/spec/lib/spree/core/testing_support/factories/stock_item_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_location_factory_spec.rb +0 -35
- data/spec/lib/spree/core/testing_support/factories/stock_movement_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/stock_package_factory_spec.rb +0 -28
- data/spec/lib/spree/core/testing_support/factories/store_credit_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_event_factory_spec.rb +0 -43
- data/spec/lib/spree/core/testing_support/factories/store_credit_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_reason_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/store_credit_type_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/factories/store_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_category_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/tax_rate_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxon_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/taxonomy_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/user_factory_spec.rb +0 -24
- data/spec/lib/spree/core/testing_support/factories/variant_factory_spec.rb +0 -56
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_condition_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/variant_property_rule_value_factory_spec.rb +0 -14
- data/spec/lib/spree/core/testing_support/factories/zone_factory_spec.rb +0 -20
- data/spec/lib/spree/core/testing_support/preferences_spec.rb +0 -61
- data/spec/lib/spree/core/validators/email_spec.rb +0 -53
- data/spec/lib/spree/core/version_spec.rb +0 -19
- data/spec/lib/spree/event/subscriber_spec.rb +0 -85
- data/spec/lib/spree/event_spec.rb +0 -130
- data/spec/lib/spree/localized_number_spec.rb +0 -45
- data/spec/lib/spree/migrations_spec.rb +0 -32
- data/spec/lib/spree/money_spec.rb +0 -298
- data/spec/lib/spree/permission_sets/default_customer_spec.rb +0 -22
- data/spec/lib/spree/permitted_attributes_spec.rb +0 -41
- data/spec/lib/spree/promo/environment_spec.rb +0 -53
- data/spec/lib/tasks/dummy_task.rake +0 -12
- data/spec/lib/tasks/dummy_task_spec.rb +0 -30
- data/spec/lib/tasks/migrations/migrate_shipping_rate_taxes_spec.rb +0 -21
- data/spec/mailers/carton_mailer_spec.rb +0 -44
- data/spec/mailers/order_mailer_spec.rb +0 -117
- data/spec/mailers/promotion_code_batch_mailer_spec.rb +0 -47
- data/spec/mailers/reimbursement_mailer_spec.rb +0 -36
- data/spec/mailers/test_mailer_spec.rb +0 -13
- data/spec/models/spree/ability_spec.rb +0 -279
- data/spec/models/spree/address_spec.rb +0 -399
- data/spec/models/spree/adjustment_reason_spec.rb +0 -11
- data/spec/models/spree/adjustment_spec.rb +0 -339
- data/spec/models/spree/asset_spec.rb +0 -25
- data/spec/models/spree/calculator/default_tax_spec.rb +0 -260
- data/spec/models/spree/calculator/distributed_amount_spec.rb +0 -82
- data/spec/models/spree/calculator/flat_percent_item_total_spec.rb +0 -39
- data/spec/models/spree/calculator/flat_rate_spec.rb +0 -52
- data/spec/models/spree/calculator/flexi_rate_spec.rb +0 -158
- data/spec/models/spree/calculator/free_shipping_spec.rb +0 -8
- data/spec/models/spree/calculator/percent_on_line_item_spec.rb +0 -20
- data/spec/models/spree/calculator/percent_per_item_spec.rb +0 -12
- data/spec/models/spree/calculator/price_sack_spec.rb +0 -35
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +0 -70
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +0 -44
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +0 -18
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +0 -56
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +0 -25
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +0 -44
- data/spec/models/spree/calculator/tiered_flat_rate_spec.rb +0 -99
- data/spec/models/spree/calculator/tiered_percent_spec.rb +0 -197
- data/spec/models/spree/calculator_spec.rb +0 -43
- data/spec/models/spree/carton_spec.rb +0 -145
- data/spec/models/spree/classification_spec.rb +0 -126
- data/spec/models/spree/concerns/display_money_spec.rb +0 -44
- data/spec/models/spree/concerns/ordered_property_value_list_spec.rb +0 -52
- data/spec/models/spree/concerns/user_address_book_spec.rb +0 -358
- data/spec/models/spree/concerns/user_methods_spec.rb +0 -122
- data/spec/models/spree/country_spec.rb +0 -154
- data/spec/models/spree/credit_card_spec.rb +0 -373
- data/spec/models/spree/customer_return_spec.rb +0 -294
- data/spec/models/spree/distributed_amounts_handler_spec.rb +0 -83
- data/spec/models/spree/exchange_spec.rb +0 -76
- data/spec/models/spree/fulfilment_changer_spec.rb +0 -340
- data/spec/models/spree/gallery/product_gallery_spec.rb +0 -21
- data/spec/models/spree/gallery/variant_gallery_spec.rb +0 -21
- data/spec/models/spree/gateway/bogus_simple.rb +0 -14
- data/spec/models/spree/gateway/bogus_spec.rb +0 -14
- data/spec/models/spree/gateway_spec.rb +0 -14
- data/spec/models/spree/image_spec.rb +0 -25
- data/spec/models/spree/inventory_unit_spec.rb +0 -309
- data/spec/models/spree/line_item_spec.rb +0 -240
- data/spec/models/spree/option_type_spec.rb +0 -16
- data/spec/models/spree/option_value_spec.rb +0 -52
- data/spec/models/spree/order/address_spec.rb +0 -52
- data/spec/models/spree/order/adjustments_spec.rb +0 -29
- data/spec/models/spree/order/callbacks_spec.rb +0 -44
- data/spec/models/spree/order/checkout_spec.rb +0 -740
- data/spec/models/spree/order/finalizing_spec.rb +0 -92
- data/spec/models/spree/order/number_generator_spec.rb +0 -47
- data/spec/models/spree/order/outstanding_balance_integration_spec.rb +0 -138
- data/spec/models/spree/order/payment_spec.rb +0 -280
- data/spec/models/spree/order/risk_assessment_spec.rb +0 -70
- data/spec/models/spree/order/state_machine_spec.rb +0 -122
- data/spec/models/spree/order/totals_spec.rb +0 -26
- data/spec/models/spree/order/validations_spec.rb +0 -17
- data/spec/models/spree/order_cancellations_spec.rb +0 -233
- data/spec/models/spree/order_capturing_spec.rb +0 -16
- data/spec/models/spree/order_contents_spec.rb +0 -362
- data/spec/models/spree/order_inventory_spec.rb +0 -285
- data/spec/models/spree/order_merger_spec.rb +0 -162
- data/spec/models/spree/order_mutex_spec.rb +0 -89
- data/spec/models/spree/order_promotion_spec.rb +0 -33
- data/spec/models/spree/order_shipping_spec.rb +0 -247
- data/spec/models/spree/order_spec.rb +0 -1687
- data/spec/models/spree/order_taxation_spec.rb +0 -128
- data/spec/models/spree/order_update_attributes_spec.rb +0 -49
- data/spec/models/spree/order_updater_spec.rb +0 -556
- data/spec/models/spree/payment/cancellation_spec.rb +0 -84
- data/spec/models/spree/payment_create_spec.rb +0 -195
- data/spec/models/spree/payment_method/bogus_credit_card_spec.rb +0 -10
- data/spec/models/spree/payment_method/check_spec.rb +0 -80
- data/spec/models/spree/payment_method/credit_card_spec.rb +0 -68
- data/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb +0 -20
- data/spec/models/spree/payment_method/store_credit_spec.rb +0 -325
- data/spec/models/spree/payment_method_spec.rb +0 -408
- data/spec/models/spree/payment_spec.rb +0 -1270
- data/spec/models/spree/permission_sets/base_spec.rb +0 -14
- data/spec/models/spree/permission_sets/configuration_display.rb +0 -79
- data/spec/models/spree/permission_sets/configuration_management_spec.rb +0 -49
- data/spec/models/spree/permission_sets/dashboard_display_spec.rb +0 -23
- data/spec/models/spree/permission_sets/order_display_spec.rb +0 -56
- data/spec/models/spree/permission_sets/order_management_spec.rb +0 -43
- data/spec/models/spree/permission_sets/product_display_spec.rb +0 -57
- data/spec/models/spree/permission_sets/product_management_spec.rb +0 -39
- data/spec/models/spree/permission_sets/promotion_display_spec.rb +0 -41
- data/spec/models/spree/permission_sets/promotion_management_spec.rb +0 -29
- data/spec/models/spree/permission_sets/restricted_stock_display_spec.rb +0 -42
- data/spec/models/spree/permission_sets/restricted_stock_management_spec.rb +0 -42
- data/spec/models/spree/permission_sets/stock_display_spec.rb +0 -25
- data/spec/models/spree/permission_sets/stock_management_spec.rb +0 -23
- data/spec/models/spree/permission_sets/user_display_spec.rb +0 -39
- data/spec/models/spree/permission_sets/user_management_spec.rb +0 -58
- data/spec/models/spree/preference_spec.rb +0 -79
- data/spec/models/spree/preferences/configuration_spec.rb +0 -27
- data/spec/models/spree/preferences/preferable_spec.rb +0 -334
- data/spec/models/spree/preferences/scoped_store_spec.rb +0 -62
- data/spec/models/spree/preferences/static_model_preferences_spec.rb +0 -79
- data/spec/models/spree/preferences/statically_configurable_spec.rb +0 -67
- data/spec/models/spree/preferences/store_spec.rb +0 -40
- data/spec/models/spree/price_spec.rb +0 -150
- data/spec/models/spree/product/scopes_spec.rb +0 -164
- data/spec/models/spree/product_duplicator_spec.rb +0 -92
- data/spec/models/spree/product_filter_spec.rb +0 -28
- data/spec/models/spree/product_property_spec.rb +0 -20
- data/spec/models/spree/product_spec.rb +0 -584
- data/spec/models/spree/promotion/actions/create_adjustment_spec.rb +0 -126
- data/spec/models/spree/promotion/actions/create_item_adjustments_spec.rb +0 -198
- data/spec/models/spree/promotion/actions/create_quantity_adjustments_spec.rb +0 -298
- data/spec/models/spree/promotion/actions/free_shipping_spec.rb +0 -61
- data/spec/models/spree/promotion/rules/first_order_spec.rb +0 -87
- data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +0 -71
- data/spec/models/spree/promotion/rules/item_total_spec.rb +0 -128
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +0 -72
- data/spec/models/spree/promotion/rules/one_use_per_user_spec.rb +0 -54
- data/spec/models/spree/promotion/rules/option_value_spec.rb +0 -96
- data/spec/models/spree/promotion/rules/product_spec.rb +0 -193
- data/spec/models/spree/promotion/rules/store_spec.rb +0 -35
- data/spec/models/spree/promotion/rules/taxon_spec.rb +0 -227
- data/spec/models/spree/promotion/rules/user_logged_in_spec.rb +0 -33
- data/spec/models/spree/promotion/rules/user_role_spec.rb +0 -88
- data/spec/models/spree/promotion/rules/user_spec.rb +0 -39
- data/spec/models/spree/promotion_action_spec.rb +0 -44
- data/spec/models/spree/promotion_category_spec.rb +0 -19
- data/spec/models/spree/promotion_code/batch_builder_spec.rb +0 -107
- data/spec/models/spree/promotion_code_batch_spec.rb +0 -54
- data/spec/models/spree/promotion_code_spec.rb +0 -206
- data/spec/models/spree/promotion_handler/cart_spec.rb +0 -132
- data/spec/models/spree/promotion_handler/coupon_spec.rb +0 -419
- data/spec/models/spree/promotion_handler/page_spec.rb +0 -45
- data/spec/models/spree/promotion_handler/shipping_spec.rb +0 -96
- data/spec/models/spree/promotion_rule_spec.rb +0 -34
- data/spec/models/spree/promotion_spec.rb +0 -945
- data/spec/models/spree/refund_spec.rb +0 -200
- data/spec/models/spree/reimbursement/credit_spec.rb +0 -38
- data/spec/models/spree/reimbursement/reimbursement_type_engine_spec.rb +0 -144
- data/spec/models/spree/reimbursement/reimbursement_type_validator_spec.rb +0 -85
- data/spec/models/spree/reimbursement_performer_spec.rb +0 -33
- data/spec/models/spree/reimbursement_spec.rb +0 -278
- data/spec/models/spree/reimbursement_tax_calculator_spec.rb +0 -52
- data/spec/models/spree/reimbursement_type/credit_spec.rb +0 -56
- data/spec/models/spree/reimbursement_type/exchange_spec.rb +0 -48
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +0 -110
- data/spec/models/spree/reimbursement_type/store_credit_spec.rb +0 -111
- data/spec/models/spree/return_authorization_spec.rb +0 -226
- data/spec/models/spree/return_item/eligibility_validator/default_spec.rb +0 -79
- data/spec/models/spree/return_item/eligibility_validator/inventory_shipped_spec.rb +0 -59
- data/spec/models/spree/return_item/eligibility_validator/no_reimbursements_spec.rb +0 -86
- data/spec/models/spree/return_item/eligibility_validator/order_completed_spec.rb +0 -35
- data/spec/models/spree/return_item/eligibility_validator/rma_required_spec.rb +0 -31
- data/spec/models/spree/return_item/eligibility_validator/time_since_purchase_spec.rb +0 -42
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_option_value_spec.rb +0 -66
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +0 -43
- data/spec/models/spree/return_item_spec.rb +0 -785
- data/spec/models/spree/returns_calculator_spec.rb +0 -16
- data/spec/models/spree/shipment_spec.rb +0 -914
- data/spec/models/spree/shipping_calculator_spec.rb +0 -45
- data/spec/models/spree/shipping_manifest_spec.rb +0 -110
- data/spec/models/spree/shipping_method_spec.rb +0 -292
- data/spec/models/spree/shipping_rate_spec.rb +0 -154
- data/spec/models/spree/shipping_rate_tax_spec.rb +0 -79
- data/spec/models/spree/state_spec.rb +0 -43
- data/spec/models/spree/stock/allocator/on_hand_first_spec.rb +0 -146
- data/spec/models/spree/stock/availability_spec.rb +0 -143
- data/spec/models/spree/stock/availability_validator_spec.rb +0 -140
- data/spec/models/spree/stock/content_item_spec.rb +0 -70
- data/spec/models/spree/stock/differentiator_spec.rb +0 -41
- data/spec/models/spree/stock/estimator_spec.rb +0 -241
- data/spec/models/spree/stock/inventory_unit_builder_spec.rb +0 -34
- data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +0 -58
- data/spec/models/spree/stock/location_filter/active_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/default_first_spec.rb +0 -22
- data/spec/models/spree/stock/location_sorter/unsorted_spec.rb +0 -21
- data/spec/models/spree/stock/package_spec.rb +0 -182
- data/spec/models/spree/stock/quantifier_spec.rb +0 -113
- data/spec/models/spree/stock/shipping_rate_selector_spec.rb +0 -18
- data/spec/models/spree/stock/shipping_rate_sorter_spec.rb +0 -18
- data/spec/models/spree/stock/simple_coordinator_spec.rb +0 -264
- data/spec/models/spree/stock/splitter/backordered_spec.rb +0 -31
- data/spec/models/spree/stock/splitter/base_spec.rb +0 -22
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +0 -48
- data/spec/models/spree/stock/splitter/weight_spec.rb +0 -31
- data/spec/models/spree/stock/splitter_chain_spec.rb +0 -66
- data/spec/models/spree/stock_item_spec.rb +0 -348
- data/spec/models/spree/stock_location_spec.rb +0 -288
- data/spec/models/spree/stock_movement_spec.rb +0 -58
- data/spec/models/spree/stock_quantities_spec.rb +0 -249
- data/spec/models/spree/store_credit_category_spec.rb +0 -19
- data/spec/models/spree/store_credit_event_spec.rb +0 -328
- data/spec/models/spree/store_credit_spec.rb +0 -900
- data/spec/models/spree/store_selector/by_server_name_spec.rb +0 -28
- data/spec/models/spree/store_selector/legacy_spec.rb +0 -46
- data/spec/models/spree/store_spec.rb +0 -156
- data/spec/models/spree/tax/order_adjuster_spec.rb +0 -35
- data/spec/models/spree/tax/shipping_rate_taxer_spec.rb +0 -59
- data/spec/models/spree/tax/tax_location_spec.rb +0 -79
- data/spec/models/spree/tax/taxation_integration_spec.rb +0 -815
- data/spec/models/spree/tax_calculator/default_spec.rb +0 -56
- data/spec/models/spree/tax_category_spec.rb +0 -50
- data/spec/models/spree/tax_rate_spec.rb +0 -317
- data/spec/models/spree/taxon_spec.rb +0 -197
- data/spec/models/spree/taxonomy_spec.rb +0 -15
- data/spec/models/spree/taxons/paperclip_attachment_spec.rb +0 -29
- data/spec/models/spree/unit_cancel_spec.rb +0 -126
- data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +0 -31
- data/spec/models/spree/user_last_url_storer_spec.rb +0 -60
- data/spec/models/spree/user_spec.rb +0 -247
- data/spec/models/spree/validations/db_maximum_length_validator_spec.rb +0 -33
- data/spec/models/spree/variant/price_selector_spec.rb +0 -90
- data/spec/models/spree/variant/pricing_options_spec.rb +0 -204
- data/spec/models/spree/variant/scopes_spec.rb +0 -94
- data/spec/models/spree/variant/vat_price_generator_spec.rb +0 -77
- data/spec/models/spree/variant_property_rule_condition_spec.rb +0 -17
- data/spec/models/spree/variant_property_rule_spec.rb +0 -85
- data/spec/models/spree/variant_property_rule_value_spec.rb +0 -20
- data/spec/models/spree/variant_spec.rb +0 -862
- data/spec/models/spree/wallet_payment_source_spec.rb +0 -77
- data/spec/models/spree/wallet_spec.rb +0 -155
- data/spec/models/spree/zone_spec.rb +0 -248
- data/spec/rails_helper.rb +0 -46
- data/spec/shared_examples/calculator_shared_examples.rb +0 -10
- data/spec/spec_helper.rb +0 -36
- data/spec/support/big_decimal.rb +0 -7
- data/spec/support/concerns/default_price.rb +0 -44
- data/spec/support/concerns/payment_source.rb +0 -66
- data/spec/support/concerns/working_factories.rb +0 -15
- data/spec/support/dummy_ability.rb +0 -7
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AwesomeNestedSetOvveride
|
4
|
+
# Add :polimorphic key option only when used to make it work with Rails 6.1+,
|
5
|
+
# required since rails/rails@2c008d9
|
6
|
+
# This can be removed when upgrading to an awesome_nested_set version
|
7
|
+
# compliant with Rails 6.1+, already addressed in
|
8
|
+
# collectiveidea/awesome_nested_set#421
|
9
|
+
module RelateParent
|
10
|
+
def acts_as_nested_set_relate_parent!
|
11
|
+
# Disable Rubocop to keep original code for diffs
|
12
|
+
# rubocop:disable
|
13
|
+
options = {
|
14
|
+
:class_name => self.base_class.to_s,
|
15
|
+
:foreign_key => parent_column_name,
|
16
|
+
:primary_key => primary_column_name,
|
17
|
+
:counter_cache => acts_as_nested_set_options[:counter_cache],
|
18
|
+
:inverse_of => (:children unless acts_as_nested_set_options[:polymorphic]),
|
19
|
+
:touch => acts_as_nested_set_options[:touch]
|
20
|
+
}
|
21
|
+
options[:polymorphic] = true if acts_as_nested_set_options[:polymorphic]
|
22
|
+
options[:optional] = true if ActiveRecord::VERSION::MAJOR >= 5
|
23
|
+
belongs_to :parent, options
|
24
|
+
# rubocop:enable
|
25
|
+
end
|
26
|
+
|
27
|
+
CollectiveIdea::Acts::NestedSet.prepend self
|
28
|
+
end
|
29
|
+
|
30
|
+
# Skip breaking model reload before update depth. Already addressed in
|
31
|
+
# collectiveidea/awesome_nested_set#413
|
32
|
+
# This can be removed when a new version of awesome_nested_set is released.
|
33
|
+
module Model
|
34
|
+
def set_depth!
|
35
|
+
return unless has_depth_column?
|
36
|
+
|
37
|
+
in_tenacious_transaction do
|
38
|
+
update_depth(level)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
CollectiveIdea::Acts::NestedSet::Model.prepend self
|
43
|
+
end
|
44
|
+
end
|
data/lib/spree/core.rb
CHANGED
@@ -53,17 +53,6 @@ module Spree
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
if Gem::Version.new(Rails.version) < Gem::Version.new('5.2')
|
57
|
-
warn <<~HEREDOC
|
58
|
-
Rails 5.1 (EOL) is deprecated and will not be supported anymore from the next Solidus version.
|
59
|
-
Please, upgrade to a more recent Rails version.
|
60
|
-
|
61
|
-
Read more on upgrading from Rails 5.1 to Rails 5.2 here:
|
62
|
-
https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-5-1-to-rails-5-2
|
63
|
-
|
64
|
-
HEREDOC
|
65
|
-
end
|
66
|
-
|
67
56
|
require 'spree/core/version'
|
68
57
|
|
69
58
|
require 'spree/core/active_merchant_dependencies'
|
@@ -89,6 +78,7 @@ require 'spree/core/product_duplicator'
|
|
89
78
|
require 'spree/core/current_store'
|
90
79
|
require 'spree/core/controller_helpers/auth'
|
91
80
|
require 'spree/core/controller_helpers/common'
|
81
|
+
require 'spree/core/controller_helpers/current_host'
|
92
82
|
require 'spree/core/controller_helpers/order'
|
93
83
|
require 'spree/core/controller_helpers/payment_parameters'
|
94
84
|
require 'spree/core/controller_helpers/pricing'
|
@@ -100,7 +90,12 @@ require 'spree/core/state_machines'
|
|
100
90
|
require 'spree/core/stock_configuration'
|
101
91
|
require 'spree/core/validators/email'
|
102
92
|
require 'spree/permission_sets'
|
93
|
+
require 'spree/user_class_handle'
|
103
94
|
|
104
95
|
require 'spree/preferences/store'
|
105
96
|
require 'spree/preferences/static_model_preferences'
|
106
97
|
require 'spree/preferences/scoped_store'
|
98
|
+
|
99
|
+
if Rails.gem_version >= Gem::Version.new('6.1.0.alpha')
|
100
|
+
require 'spree/awesome_nested_set_override'
|
101
|
+
end
|
@@ -11,7 +11,7 @@ module Spree
|
|
11
11
|
# @!attribute [rw] unauthorized_redirect
|
12
12
|
# @!scope class
|
13
13
|
# Extension point for overriding behaviour of access denied errors.
|
14
|
-
# Default behaviour is to redirect to "/unauthorized" with a flash
|
14
|
+
# Default behaviour is to redirect back or to "/unauthorized" with a flash
|
15
15
|
# message.
|
16
16
|
# @return [Proc] action to take when access denied error is raised.
|
17
17
|
|
@@ -22,7 +22,20 @@ module Spree
|
|
22
22
|
class_attribute :unauthorized_redirect
|
23
23
|
self.unauthorized_redirect = -> do
|
24
24
|
flash[:error] = I18n.t('spree.authorization_failure')
|
25
|
-
|
25
|
+
if Spree::Config.redirect_back_on_unauthorized
|
26
|
+
redirect_back(fallback_location: "/unauthorized")
|
27
|
+
else
|
28
|
+
Spree::Deprecation.warn <<-WARN.strip_heredoc, caller
|
29
|
+
Having Spree::Config.redirect_back_on_unauthorized set
|
30
|
+
to `false` is deprecated and will not be supported in Solidus 3.0.
|
31
|
+
|
32
|
+
Please change this configuration to `true` and be sure that your
|
33
|
+
application does not break trying to redirect back when there is
|
34
|
+
an unauthorized access.
|
35
|
+
WARN
|
36
|
+
|
37
|
+
redirect_to "/unauthorized"
|
38
|
+
end
|
26
39
|
end
|
27
40
|
|
28
41
|
rescue_from CanCan::AccessDenied do
|
@@ -42,10 +55,10 @@ module Spree
|
|
42
55
|
|
43
56
|
def set_guest_token
|
44
57
|
unless cookies.signed[:guest_token].present?
|
45
|
-
cookies.permanent.signed[:guest_token] =
|
58
|
+
cookies.permanent.signed[:guest_token] = Spree::Config[:guest_token_cookie_options].merge(
|
46
59
|
value: SecureRandom.urlsafe_base64(nil, false),
|
47
60
|
httponly: true
|
48
|
-
|
61
|
+
)
|
49
62
|
end
|
50
63
|
end
|
51
64
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
module ControllerHelpers
|
6
|
+
module CurrentHost
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
before_action do
|
11
|
+
ActiveStorage::Current.host = request.base_url
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -30,18 +30,19 @@ module Spree
|
|
30
30
|
|
31
31
|
# The current incomplete order from the guest_token for use in cart and during checkout
|
32
32
|
def current_order(options = {})
|
33
|
-
options[:create_order_if_necessary]
|
33
|
+
should_create = options[:create_order_if_necessary] || false
|
34
|
+
should_build = options[:build_order_if_necessary] || should_create
|
34
35
|
|
35
36
|
return @current_order if @current_order
|
36
37
|
|
37
|
-
@current_order = find_order_by_token_or_user(options)
|
38
|
+
@current_order = find_order_by_token_or_user(lock: options[:lock])
|
38
39
|
|
39
|
-
if
|
40
|
+
if should_build && (@current_order.nil? || @current_order.completed?)
|
40
41
|
@current_order = Spree::Order.new(new_order_params)
|
41
42
|
@current_order.user ||= try_spree_current_user
|
42
43
|
# See issue https://github.com/spree/spree/issues/3346 for reasons why this line is here
|
43
44
|
@current_order.created_by ||= try_spree_current_user
|
44
|
-
@current_order.save!
|
45
|
+
@current_order.save! if should_create
|
45
46
|
end
|
46
47
|
|
47
48
|
if @current_order
|
@@ -84,14 +85,14 @@ module Spree
|
|
84
85
|
end
|
85
86
|
|
86
87
|
def find_order_by_token_or_user(options = {}, with_adjustments = false)
|
87
|
-
options[:lock]
|
88
|
+
should_lock = options[:lock] || false
|
88
89
|
|
89
90
|
# Find any incomplete orders for the guest_token
|
90
91
|
if with_adjustments
|
91
92
|
Spree::Deprecation.warn "The second argument to find_order_by_token_or_user is deprecated, and will be removed in a future version."
|
92
|
-
order = Spree::Order.incomplete.includes(:adjustments).lock(
|
93
|
+
order = Spree::Order.incomplete.includes(:adjustments).lock(should_lock).find_by(current_order_params)
|
93
94
|
else
|
94
|
-
order = Spree::Order.incomplete.lock(
|
95
|
+
order = Spree::Order.incomplete.lock(should_lock).find_by(current_order_params)
|
95
96
|
end
|
96
97
|
|
97
98
|
# Find any incomplete orders for the current user
|
data/lib/spree/core/engine.rb
CHANGED
@@ -47,11 +47,48 @@ module Spree
|
|
47
47
|
# Setup Event Subscribers
|
48
48
|
initializer 'spree.core.initialize_subscribers' do |app|
|
49
49
|
app.reloader.to_prepare do
|
50
|
-
Spree::Event.
|
50
|
+
Spree::Event.activate_autoloadable_subscribers
|
51
51
|
end
|
52
52
|
|
53
53
|
app.reloader.before_class_unload do
|
54
|
-
Spree::Event.
|
54
|
+
Spree::Event.deactivate_all_subscribers
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
config.after_initialize do
|
59
|
+
if Spree::Config.raise_with_invalid_currency == true
|
60
|
+
Spree::Deprecation.warn(
|
61
|
+
'Spree::Config.raise_with_invalid_currency set to true is ' \
|
62
|
+
'deprecated. Please note that by switching this value, ' \
|
63
|
+
'Spree::LineItem::CurrencyMismatch will not be raised anymore.',
|
64
|
+
caller
|
65
|
+
)
|
66
|
+
end
|
67
|
+
if Spree::Config.consider_actionless_promotion_active == true
|
68
|
+
Spree::Deprecation.warn(
|
69
|
+
'Spree::Config.consider_actionless_promotion_active set to true is ' \
|
70
|
+
'deprecated. Please note that by switching this value, ' \
|
71
|
+
'promotions with no actions will be considered active.',
|
72
|
+
caller
|
73
|
+
)
|
74
|
+
end
|
75
|
+
if Spree::Config.run_order_validations_on_order_updater != true
|
76
|
+
Spree::Deprecation.warn(
|
77
|
+
'Spree::Config.run_order_validations_on_order_updater set to false is ' \
|
78
|
+
'deprecated and will not be possibile in Solidus 3.0. Please switch this ' \
|
79
|
+
'value to true and check that everything works as expected.',
|
80
|
+
caller
|
81
|
+
)
|
82
|
+
end
|
83
|
+
|
84
|
+
if Spree::Config.use_legacy_address_state_validator != false
|
85
|
+
Spree::Deprecation.warn(<<~DEPRECATION.squish, caller)
|
86
|
+
Spree::Config.use_legacy_address_state_validator set to true has been
|
87
|
+
deprecated and will be removed in Solidus 3.0. The Spree::Address state
|
88
|
+
validation has been extracted into a configurable external class.
|
89
|
+
Switch Spree::Config.use_legacy_address_state_validator to false to start
|
90
|
+
using the external validation class.
|
91
|
+
DEPRECATION
|
55
92
|
end
|
56
93
|
end
|
57
94
|
|
@@ -56,7 +56,9 @@ module Spree
|
|
56
56
|
shipments_hash.each do |target|
|
57
57
|
shipment = Shipment.new
|
58
58
|
shipment.tracking = target[:tracking]
|
59
|
-
shipment.stock_location = Spree::StockLocation.find_by(
|
59
|
+
shipment.stock_location = Spree::StockLocation.find_by(id: target[:stock_location_id]) ||
|
60
|
+
Spree::StockLocation.find_by(admin_name: target[:stock_location]) ||
|
61
|
+
Spree::StockLocation.find_by!(name: target[:stock_location])
|
60
62
|
|
61
63
|
inventory_units = target[:inventory_units] || []
|
62
64
|
inventory_units.each do |inventory_unit|
|
@@ -98,19 +100,31 @@ module Spree
|
|
98
100
|
|
99
101
|
def self.create_line_items_from_params(line_items_hash, order)
|
100
102
|
return {} unless line_items_hash
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
103
|
+
|
104
|
+
case line_items_hash
|
105
|
+
when Hash
|
106
|
+
line_items_hash.each_key do |key|
|
107
|
+
create_line_item(line_items_hash[key], order)
|
108
|
+
end
|
109
|
+
when Array
|
110
|
+
line_items_hash.each do |line_item_hash|
|
111
|
+
create_line_item(line_item_hash, order)
|
110
112
|
end
|
111
113
|
end
|
112
114
|
end
|
113
115
|
|
116
|
+
def self.create_line_item(line_item_hash, order)
|
117
|
+
extra_params = line_item_hash.except(:variant_id, :quantity, :sku)
|
118
|
+
line_item = ensure_variant_id_from_params(line_item_hash)
|
119
|
+
line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
|
120
|
+
# Raise any errors with saving to prevent import succeeding with line items failing silently.
|
121
|
+
if extra_params.present?
|
122
|
+
line_item.update!(extra_params)
|
123
|
+
else
|
124
|
+
line_item.save!
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
114
128
|
def self.create_adjustments_from_params(adjustments, order)
|
115
129
|
return [] unless adjustments
|
116
130
|
adjustments.each do |target|
|
@@ -9,7 +9,7 @@ module Spree
|
|
9
9
|
class_attribute :permalink_options
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
class_methods do
|
13
13
|
def make_permalink(options = {})
|
14
14
|
options[:field] ||= :permalink
|
15
15
|
self.permalink_options = options
|
@@ -63,5 +63,3 @@ module Spree
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
66
|
-
|
67
|
-
ActiveRecord::Base.send :include, Spree::Core::Permalinks
|
@@ -60,6 +60,7 @@ module Spree
|
|
60
60
|
conds.each do |new_scope|
|
61
61
|
scope = scope.or(new_scope)
|
62
62
|
end
|
63
|
+
|
63
64
|
Spree::Product.joins(master: :default_price).where(scope)
|
64
65
|
end
|
65
66
|
|
@@ -70,9 +71,9 @@ module Spree
|
|
70
71
|
def self.price_filter
|
71
72
|
value = Spree::Price.arel_table
|
72
73
|
conds = [[I18n.t('spree.under_price', price: format_price(10)), value[:amount].lteq(10)],
|
73
|
-
["#{format_price(10)} - #{format_price(15)}", value[:amount].
|
74
|
-
["#{format_price(15)} - #{format_price(18)}", value[:amount].
|
75
|
-
["#{format_price(18)} - #{format_price(20)}", value[:amount].
|
74
|
+
["#{format_price(10)} - #{format_price(15)}", value[:amount].between(10..15)],
|
75
|
+
["#{format_price(15)} - #{format_price(18)}", value[:amount].between(15..18)],
|
76
|
+
["#{format_price(18)} - #{format_price(20)}", value[:amount].between(18..20)],
|
76
77
|
[I18n.t('spree.or_over_price', price: format_price(20)), value[:amount].gteq(20)]]
|
77
78
|
{
|
78
79
|
name: I18n.t('spree.price_range'),
|
@@ -107,7 +108,7 @@ module Spree
|
|
107
108
|
brand_property = Spree::Property.find_by(name: 'brand')
|
108
109
|
brands = brand_property ? Spree::ProductProperty.where(property_id: brand_property.id).pluck(:value).uniq.map(&:to_s) : []
|
109
110
|
pp = Spree::ProductProperty.arel_table
|
110
|
-
conds = Hash[*brands.
|
111
|
+
conds = Hash[*brands.flat_map { |brand| [brand, pp[:value].eq(brand)] }]
|
111
112
|
{
|
112
113
|
name: 'Brands',
|
113
114
|
scope: :brand_any,
|
@@ -184,7 +185,7 @@ module Spree
|
|
184
185
|
# idea: expand the format to allow nesting of labels?
|
185
186
|
def self.all_taxons
|
186
187
|
Spree::Deprecation.warn "all_taxons is deprecated in solidus_core. Please add it to your own application to continue using it."
|
187
|
-
taxons = Spree::Taxonomy.all.
|
188
|
+
taxons = Spree::Taxonomy.all.flat_map { |element| [element.root] + element.root.descendants }
|
188
189
|
{
|
189
190
|
name: 'All taxons',
|
190
191
|
scope: :taxons_id_equals_any,
|
@@ -9,7 +9,8 @@ module Spree
|
|
9
9
|
:return_item_reception,
|
10
10
|
:payment,
|
11
11
|
:inventory_unit,
|
12
|
-
:shipment
|
12
|
+
:shipment,
|
13
|
+
:order
|
13
14
|
|
14
15
|
def return_authorization
|
15
16
|
@return_authorization ||= begin
|
@@ -65,6 +66,24 @@ module Spree
|
|
65
66
|
@shipment.constantize
|
66
67
|
end
|
67
68
|
|
69
|
+
def order
|
70
|
+
@order ||= begin
|
71
|
+
if Spree::Config.use_legacy_order_state_machine
|
72
|
+
Spree::Deprecation.warn(
|
73
|
+
"Spree::Order state machine defined in Spree::Order::Checkout is deprecated. " \
|
74
|
+
"Future versions of Solidus will use Spree::Core::StateMachines::Order}",
|
75
|
+
caller
|
76
|
+
)
|
77
|
+
'Spree::Order::Checkout'
|
78
|
+
else
|
79
|
+
require 'spree/core/state_machines/order'
|
80
|
+
'Spree::Core::StateMachines::Order'
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
@order.constantize
|
85
|
+
end
|
86
|
+
|
68
87
|
def reimbursement
|
69
88
|
@reimbursement ||= begin
|
70
89
|
require 'spree/core/state_machines/reimbursement'
|
@@ -0,0 +1,249 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
class StateMachines
|
6
|
+
module Order
|
7
|
+
def self.included(klass)
|
8
|
+
klass.extend ClassMethods
|
9
|
+
end
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
attr_accessor :previous_states
|
13
|
+
attr_writer :next_event_transitions
|
14
|
+
attr_writer :checkout_steps
|
15
|
+
attr_writer :removed_transitions
|
16
|
+
|
17
|
+
def checkout_flow(&block)
|
18
|
+
if block_given?
|
19
|
+
@checkout_flow = block
|
20
|
+
define_state_machine!
|
21
|
+
else
|
22
|
+
@checkout_flow
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def define_state_machine!
|
27
|
+
self.checkout_steps = {}
|
28
|
+
self.next_event_transitions = []
|
29
|
+
self.previous_states = [:cart]
|
30
|
+
self.removed_transitions = []
|
31
|
+
|
32
|
+
# Build the checkout flow using the checkout_flow defined either
|
33
|
+
# within the Order class, or a decorator for that class.
|
34
|
+
#
|
35
|
+
# This method may be called multiple times depending on if the
|
36
|
+
# checkout_flow is re-defined in a decorator or not.
|
37
|
+
instance_eval(&checkout_flow)
|
38
|
+
|
39
|
+
klass = self
|
40
|
+
|
41
|
+
# To avoid multiple occurrences of the same transition being defined
|
42
|
+
# On first definition, state_machines will not be defined
|
43
|
+
state_machines.clear if respond_to?(:state_machines)
|
44
|
+
state_machine :state, initial: :cart, use_transactions: false do
|
45
|
+
klass.next_event_transitions.each { |state| transition(state.merge(on: :next)) }
|
46
|
+
|
47
|
+
# Persist the state on the order
|
48
|
+
after_transition do |order, transition|
|
49
|
+
order.state = order.state
|
50
|
+
order.state_changes.create(
|
51
|
+
previous_state: transition.from,
|
52
|
+
next_state: transition.to,
|
53
|
+
name: 'order',
|
54
|
+
user_id: order.user_id
|
55
|
+
)
|
56
|
+
order.save
|
57
|
+
end
|
58
|
+
|
59
|
+
event :cancel do
|
60
|
+
transition to: :canceled, if: :allow_cancel?, from: :complete
|
61
|
+
end
|
62
|
+
|
63
|
+
event :return do
|
64
|
+
transition to: :returned, from: [:complete, :awaiting_return], if: :all_inventory_units_returned?
|
65
|
+
end
|
66
|
+
|
67
|
+
event :resume do
|
68
|
+
transition to: :resumed, from: :canceled, if: :canceled?
|
69
|
+
end
|
70
|
+
|
71
|
+
event :authorize_return do
|
72
|
+
transition to: :awaiting_return, from: :complete
|
73
|
+
end
|
74
|
+
|
75
|
+
event :complete do
|
76
|
+
transition to: :complete, from: :confirm
|
77
|
+
end
|
78
|
+
|
79
|
+
if states[:payment]
|
80
|
+
event :payment_failed do
|
81
|
+
transition to: :payment, from: :confirm
|
82
|
+
end
|
83
|
+
|
84
|
+
after_transition to: :complete, do: :add_payment_sources_to_wallet
|
85
|
+
before_transition to: :payment, do: :add_default_payment_from_wallet
|
86
|
+
before_transition to: :payment, do: :ensure_billing_address
|
87
|
+
|
88
|
+
before_transition to: :confirm, do: :add_store_credit_payments
|
89
|
+
|
90
|
+
# see also process_payments_before_complete below which needs to
|
91
|
+
# be added in the correct sequence.
|
92
|
+
end
|
93
|
+
|
94
|
+
before_transition from: :cart, do: :ensure_line_items_present
|
95
|
+
|
96
|
+
if states[:address]
|
97
|
+
before_transition to: :address, do: :assign_default_user_addresses
|
98
|
+
before_transition from: :address, do: :persist_user_address!
|
99
|
+
end
|
100
|
+
|
101
|
+
if states[:delivery]
|
102
|
+
before_transition to: :delivery, do: :ensure_shipping_address
|
103
|
+
before_transition to: :delivery, do: :create_proposed_shipments
|
104
|
+
before_transition to: :delivery, do: :ensure_available_shipping_rates
|
105
|
+
before_transition from: :delivery, do: :apply_shipping_promotions
|
106
|
+
end
|
107
|
+
|
108
|
+
before_transition to: :resumed, do: :ensure_line_item_variants_are_not_deleted
|
109
|
+
before_transition to: :resumed, do: :validate_line_item_availability
|
110
|
+
|
111
|
+
# Sequence of before_transition to: :complete
|
112
|
+
# calls matter so that we do not process payments
|
113
|
+
# until validations have passed
|
114
|
+
before_transition to: :complete, do: :validate_line_item_availability
|
115
|
+
before_transition to: :complete, do: :ensure_promotions_eligible
|
116
|
+
before_transition to: :complete, do: :ensure_line_item_variants_are_not_deleted
|
117
|
+
before_transition to: :complete, do: :ensure_inventory_units
|
118
|
+
if states[:payment]
|
119
|
+
before_transition to: :complete, do: :process_payments_before_complete
|
120
|
+
end
|
121
|
+
|
122
|
+
after_transition to: :complete, do: :finalize!
|
123
|
+
after_transition to: :resumed, do: :after_resume
|
124
|
+
after_transition to: :canceled, do: :after_cancel
|
125
|
+
|
126
|
+
after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
|
127
|
+
order.recalculate
|
128
|
+
end
|
129
|
+
|
130
|
+
after_transition do |order, transition|
|
131
|
+
order.logger.debug "Order #{order.number} transitioned from #{transition.from} to #{transition.to} via #{transition.event}"
|
132
|
+
end
|
133
|
+
|
134
|
+
after_failure do |order, transition|
|
135
|
+
order.logger.debug "Order #{order.number} halted transition on event #{transition.event} state #{transition.from}: #{order.errors.full_messages.join}"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def go_to_state(name, options = {})
|
141
|
+
checkout_steps[name] = options
|
142
|
+
previous_states.each do |state|
|
143
|
+
add_transition({ from: state, to: name }.merge(options))
|
144
|
+
end
|
145
|
+
if options[:if]
|
146
|
+
previous_states << name
|
147
|
+
else
|
148
|
+
self.previous_states = [name]
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def insert_checkout_step(name, options = {})
|
153
|
+
before = options.delete(:before)
|
154
|
+
after = options.delete(:after) unless before
|
155
|
+
after = checkout_steps.keys.last unless before || after
|
156
|
+
|
157
|
+
cloned_steps = checkout_steps.clone
|
158
|
+
cloned_removed_transitions = removed_transitions.clone
|
159
|
+
checkout_flow do
|
160
|
+
cloned_steps.each_pair do |key, value|
|
161
|
+
go_to_state(name, options) if key == before
|
162
|
+
go_to_state(key, value)
|
163
|
+
go_to_state(name, options) if key == after
|
164
|
+
end
|
165
|
+
cloned_removed_transitions.each do |transition|
|
166
|
+
remove_transition(transition)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def remove_checkout_step(name)
|
172
|
+
cloned_steps = checkout_steps.clone
|
173
|
+
cloned_removed_transitions = removed_transitions.clone
|
174
|
+
checkout_flow do
|
175
|
+
cloned_steps.each_pair do |key, value|
|
176
|
+
go_to_state(key, value) unless key == name
|
177
|
+
end
|
178
|
+
cloned_removed_transitions.each do |transition|
|
179
|
+
remove_transition(transition)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def remove_transition(options = {})
|
185
|
+
removed_transitions << options
|
186
|
+
next_event_transitions.delete(find_transition(options))
|
187
|
+
end
|
188
|
+
|
189
|
+
def find_transition(options = {})
|
190
|
+
return nil if options.nil? || !options.include?(:from) || !options.include?(:to)
|
191
|
+
|
192
|
+
next_event_transitions.detect do |transition|
|
193
|
+
transition[options[:from].to_sym] == options[:to].to_sym
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def next_event_transitions
|
198
|
+
@next_event_transitions ||= []
|
199
|
+
end
|
200
|
+
|
201
|
+
def checkout_steps
|
202
|
+
@checkout_steps ||= {}
|
203
|
+
end
|
204
|
+
|
205
|
+
def checkout_step_names
|
206
|
+
checkout_steps.keys
|
207
|
+
end
|
208
|
+
|
209
|
+
def add_transition(options)
|
210
|
+
next_event_transitions << { options.delete(:from) => options.delete(:to) }.merge(options)
|
211
|
+
end
|
212
|
+
|
213
|
+
def removed_transitions
|
214
|
+
@removed_transitions ||= []
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def checkout_steps
|
219
|
+
steps = self.class.checkout_steps.each_with_object([]) { |(step, options), checkout_steps|
|
220
|
+
next if options.include?(:if) && !options[:if].call(self)
|
221
|
+
|
222
|
+
checkout_steps << step
|
223
|
+
}.map(&:to_s)
|
224
|
+
# Ensure there is always a complete step
|
225
|
+
steps << "complete" unless steps.include?("complete")
|
226
|
+
steps
|
227
|
+
end
|
228
|
+
|
229
|
+
def has_checkout_step?(step)
|
230
|
+
step.present? && checkout_steps.include?(step)
|
231
|
+
end
|
232
|
+
|
233
|
+
def passed_checkout_step?(step)
|
234
|
+
has_checkout_step?(step) && checkout_step_index(step) < checkout_step_index(state)
|
235
|
+
end
|
236
|
+
|
237
|
+
def checkout_step_index(step)
|
238
|
+
checkout_steps.index(step).to_i
|
239
|
+
end
|
240
|
+
|
241
|
+
def can_go_to_state?(state)
|
242
|
+
return false unless has_checkout_step?(self.state) && has_checkout_step?(state)
|
243
|
+
|
244
|
+
checkout_step_index(state) > checkout_step_index(self.state)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|