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
@@ -1,88 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
module Order
|
9
|
-
extend ActiveSupport::Concern
|
10
|
-
include ControllerHelpers::Pricing
|
11
|
-
|
12
|
-
included do
|
13
|
-
helper_method :current_order
|
14
|
-
end
|
15
|
-
|
16
|
-
# The current incomplete order from the guest_token for use in cart and during checkout
|
17
|
-
def current_order(options = {})
|
18
|
-
should_create = options[:create_order_if_necessary] || false
|
19
|
-
should_build = options[:build_order_if_necessary] || should_create
|
20
|
-
|
21
|
-
return @current_order if @current_order
|
22
|
-
|
23
|
-
@current_order = find_order_by_token_or_user(lock: options[:lock])
|
24
|
-
|
25
|
-
if should_build && (@current_order.nil? || @current_order.completed?)
|
26
|
-
@current_order = Spree::Order.new(new_order_params)
|
27
|
-
@current_order.user ||= try_spree_current_user
|
28
|
-
# See issue https://github.com/spree/spree/issues/3346 for reasons why this line is here
|
29
|
-
@current_order.created_by ||= try_spree_current_user
|
30
|
-
@current_order.save! if should_create
|
31
|
-
end
|
32
|
-
|
33
|
-
if @current_order
|
34
|
-
@current_order.record_ip_address(ip_address)
|
35
|
-
return @current_order
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def associate_user
|
40
|
-
@order ||= current_order
|
41
|
-
if try_spree_current_user && @order
|
42
|
-
@order.associate_user!(try_spree_current_user) if @order.user.blank? || @order.email.blank?
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def set_current_order
|
47
|
-
if try_spree_current_user && current_order
|
48
|
-
try_spree_current_user.orders.by_store(current_store).incomplete.where('id != ?', current_order.id).each do |order|
|
49
|
-
current_order.merge!(order, try_spree_current_user)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def ip_address
|
55
|
-
request.remote_ip
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def last_incomplete_order
|
61
|
-
@last_incomplete_order ||= try_spree_current_user.last_incomplete_spree_order(store: current_store)
|
62
|
-
end
|
63
|
-
|
64
|
-
def current_order_params
|
65
|
-
{ currency: current_pricing_options.currency, guest_token: cookies.signed[:guest_token], store_id: current_store.id, user_id: try_spree_current_user.try(:id) }
|
66
|
-
end
|
67
|
-
|
68
|
-
def new_order_params
|
69
|
-
current_order_params.merge(last_ip_address: ip_address)
|
70
|
-
end
|
71
|
-
|
72
|
-
def find_order_by_token_or_user(options = {})
|
73
|
-
should_lock = options[:lock] || false
|
74
|
-
|
75
|
-
# Find any incomplete orders for the guest_token
|
76
|
-
order = Spree::Order.incomplete.lock(should_lock).find_by(current_order_params)
|
77
|
-
|
78
|
-
# Find any incomplete orders for the current user
|
79
|
-
if order.nil? && try_spree_current_user
|
80
|
-
order = last_incomplete_order
|
81
|
-
end
|
82
|
-
|
83
|
-
order
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
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,167 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
# This method expects a params hash in the format of:
|
9
|
-
#
|
10
|
-
# {
|
11
|
-
# payment_source: {
|
12
|
-
# # The keys here are spree_payment_method.id's
|
13
|
-
# '1' => {...source attributes for payment method 1...},
|
14
|
-
# '2' => {...source attributes for payment method 2...},
|
15
|
-
# },
|
16
|
-
# order: {
|
17
|
-
# # Note that only a single entry is expected/handled in this array
|
18
|
-
# payments_attributes: [
|
19
|
-
# {
|
20
|
-
# payment_method_id: '1',
|
21
|
-
# },
|
22
|
-
# ],
|
23
|
-
# ...other params...
|
24
|
-
# },
|
25
|
-
# ...other params...
|
26
|
-
# }
|
27
|
-
#
|
28
|
-
# And this method modifies the params into the format of:
|
29
|
-
#
|
30
|
-
# {
|
31
|
-
# order: {
|
32
|
-
# payments_attributes: [
|
33
|
-
# {
|
34
|
-
# payment_method_id: '1',
|
35
|
-
# source_attributes: {...source attributes for payment method 1...}
|
36
|
-
# },
|
37
|
-
# ],
|
38
|
-
# ...other params...
|
39
|
-
# },
|
40
|
-
# ...other params...
|
41
|
-
# }
|
42
|
-
#
|
43
|
-
def move_payment_source_into_payments_attributes(params)
|
44
|
-
# Step 1: Gather all the information and ensure all the pieces are there.
|
45
|
-
|
46
|
-
return params if params[:payment_source].blank?
|
47
|
-
|
48
|
-
payment_params = params[:order] &&
|
49
|
-
params[:order][:payments_attributes] &&
|
50
|
-
params[:order][:payments_attributes].first
|
51
|
-
return params if payment_params.blank?
|
52
|
-
|
53
|
-
payment_method_id = payment_params[:payment_method_id]
|
54
|
-
return params if payment_method_id.blank?
|
55
|
-
|
56
|
-
source_params = params[:payment_source][payment_method_id]
|
57
|
-
return params if source_params.blank?
|
58
|
-
|
59
|
-
# Step 2: Perform the modifications.
|
60
|
-
|
61
|
-
payment_params[:source_attributes] = source_params
|
62
|
-
params.delete(:payment_source)
|
63
|
-
|
64
|
-
params
|
65
|
-
end
|
66
|
-
|
67
|
-
# This method handles the awkwardness of how the html forms are currently
|
68
|
-
# set up for frontend.
|
69
|
-
#
|
70
|
-
# This method expects a params hash in the format of:
|
71
|
-
#
|
72
|
-
# {
|
73
|
-
# order: {
|
74
|
-
# wallet_payment_source_id: '123',
|
75
|
-
# ...other params...
|
76
|
-
# },
|
77
|
-
# cvc_confirm: '456', # optional
|
78
|
-
# ...other params...
|
79
|
-
# }
|
80
|
-
#
|
81
|
-
# And this method modifies the params into the format of:
|
82
|
-
#
|
83
|
-
# {
|
84
|
-
# order: {
|
85
|
-
# payments_attributes: [
|
86
|
-
# {
|
87
|
-
# source_attributes: {
|
88
|
-
# wallet_payment_source_id: '123',
|
89
|
-
# verification_value: '456',
|
90
|
-
# },
|
91
|
-
# },
|
92
|
-
# ]
|
93
|
-
# ...other params...
|
94
|
-
# },
|
95
|
-
# ...other params...
|
96
|
-
# }
|
97
|
-
#
|
98
|
-
def move_wallet_payment_source_id_into_payments_attributes(params)
|
99
|
-
return params if params[:order].blank?
|
100
|
-
|
101
|
-
wallet_payment_source_id = params[:order][:wallet_payment_source_id].presence
|
102
|
-
cvc_confirm = params[:cvc_confirm].presence
|
103
|
-
|
104
|
-
return params if wallet_payment_source_id.nil?
|
105
|
-
|
106
|
-
params[:order][:payments_attributes] = [
|
107
|
-
{
|
108
|
-
source_attributes: {
|
109
|
-
wallet_payment_source_id: wallet_payment_source_id,
|
110
|
-
verification_value: cvc_confirm
|
111
|
-
}
|
112
|
-
}
|
113
|
-
]
|
114
|
-
|
115
|
-
params[:order].delete(:wallet_payment_source_id)
|
116
|
-
params.delete(:cvc_confirm)
|
117
|
-
|
118
|
-
params
|
119
|
-
end
|
120
|
-
|
121
|
-
# This is a strange thing to do since an order can have multiple payments
|
122
|
-
# but we always assume that it only has a single payment and that its
|
123
|
-
# amount should be the current order total. Also, this is pretty much
|
124
|
-
# overridden when the order transitions to confirm by the logic inside of
|
125
|
-
# Order#add_store_credit_payments.
|
126
|
-
# We should reconsider this method and its usage at some point.
|
127
|
-
#
|
128
|
-
# This method expects a params hash in the format of:
|
129
|
-
#
|
130
|
-
# {
|
131
|
-
# order: {
|
132
|
-
# # Note that only a single entry is expected/handled in this array
|
133
|
-
# payments_attributes: [
|
134
|
-
# {
|
135
|
-
# ...params...
|
136
|
-
# },
|
137
|
-
# ],
|
138
|
-
# ...other params...
|
139
|
-
# },
|
140
|
-
# ...other params...
|
141
|
-
# }
|
142
|
-
#
|
143
|
-
# And this method modifies the params into the format of:
|
144
|
-
#
|
145
|
-
# {
|
146
|
-
# order: {
|
147
|
-
# payments_attributes: [
|
148
|
-
# {
|
149
|
-
# ...params...
|
150
|
-
# amount: <the order total>,
|
151
|
-
# },
|
152
|
-
# ],
|
153
|
-
# ...other params...
|
154
|
-
# },
|
155
|
-
# ...other params...
|
156
|
-
# }
|
157
|
-
#
|
158
|
-
def set_payment_parameters_amount(params, order)
|
159
|
-
return params if params[:order].blank?
|
160
|
-
return params if params[:order][:payments_attributes].blank?
|
161
|
-
|
162
|
-
params[:order][:payments_attributes].first[:amount] = order.total
|
163
|
-
|
164
|
-
params
|
165
|
-
end
|
166
|
-
end
|
167
|
-
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,19 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
included do
|
10
|
-
helper_method :current_pricing_options
|
11
|
-
end
|
12
|
-
|
13
|
-
def current_pricing_options
|
14
|
-
Spree::Config.pricing_options_class.from_context(self)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
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,16 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
Spree::Config.searcher_class.new(params).tap do |searcher|
|
9
|
-
searcher.current_user = try_spree_current_user
|
10
|
-
searcher.pricing_options = current_pricing_options
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
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,19 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
included do
|
10
|
-
helper_method :current_store
|
11
|
-
end
|
12
|
-
|
13
|
-
def current_store
|
14
|
-
@current_store ||= Spree::Config.current_store_selector_class.new(request).store
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
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,73 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
Spree::PermittedAttributes
|
9
|
-
end
|
10
|
-
|
11
|
-
delegate(*Spree::PermittedAttributes::ATTRIBUTES,
|
12
|
-
to: :permitted_attributes,
|
13
|
-
prefix: :permitted)
|
14
|
-
|
15
|
-
def permitted_credit_card_update_attributes
|
16
|
-
permitted_attributes.credit_card_update_attributes + [
|
17
|
-
address_attributes: permitted_address_attributes
|
18
|
-
]
|
19
|
-
end
|
20
|
-
|
21
|
-
def permitted_payment_attributes
|
22
|
-
permitted_attributes.payment_attributes + [
|
23
|
-
source_attributes: permitted_source_attributes
|
24
|
-
]
|
25
|
-
end
|
26
|
-
|
27
|
-
def permitted_source_attributes
|
28
|
-
permitted_attributes.source_attributes + [
|
29
|
-
address_attributes: permitted_address_attributes
|
30
|
-
]
|
31
|
-
end
|
32
|
-
|
33
|
-
def permitted_checkout_address_attributes
|
34
|
-
permitted_attributes.checkout_address_attributes
|
35
|
-
end
|
36
|
-
|
37
|
-
def permitted_checkout_delivery_attributes
|
38
|
-
permitted_attributes.checkout_delivery_attributes
|
39
|
-
end
|
40
|
-
|
41
|
-
def permitted_checkout_payment_attributes
|
42
|
-
permitted_attributes.checkout_payment_attributes
|
43
|
-
end
|
44
|
-
|
45
|
-
def permitted_checkout_confirm_attributes
|
46
|
-
permitted_attributes.checkout_confirm_attributes
|
47
|
-
end
|
48
|
-
|
49
|
-
def permitted_order_attributes
|
50
|
-
permitted_checkout_address_attributes +
|
51
|
-
permitted_checkout_delivery_attributes +
|
52
|
-
permitted_checkout_payment_attributes +
|
53
|
-
permitted_checkout_confirm_attributes + [
|
54
|
-
line_items_attributes: permitted_line_item_attributes
|
55
|
-
]
|
56
|
-
end
|
57
|
-
|
58
|
-
def permitted_product_attributes
|
59
|
-
permitted_attributes.product_attributes + [
|
60
|
-
product_properties_attributes: permitted_product_properties_attributes
|
61
|
-
]
|
62
|
-
end
|
63
|
-
|
64
|
-
def permitted_user_attributes
|
65
|
-
permitted_attributes.user_attributes + [
|
66
|
-
bill_address_attributes: permitted_address_attributes,
|
67
|
-
ship_address_attributes: permitted_address_attributes
|
68
|
-
]
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
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
|
+
)
|
data/lib/spree/core/engine.rb
CHANGED
@@ -15,6 +15,17 @@ module Spree
|
|
15
15
|
generator.test_framework :rspec
|
16
16
|
end
|
17
17
|
|
18
|
+
if ActiveRecord.respond_to?(:yaml_column_permitted_classes) || ActiveRecord::Base.respond_to?(:yaml_column_permitted_classes)
|
19
|
+
config.active_record.yaml_column_permitted_classes ||= []
|
20
|
+
config.active_record.yaml_column_permitted_classes |=
|
21
|
+
[Symbol, BigDecimal, ActiveSupport::HashWithIndifferentAccess]
|
22
|
+
end
|
23
|
+
|
24
|
+
initializer "spree.zeitwerk_ignores" do
|
25
|
+
old_helpers = Engine.root.join("lib", "spree", "core", "controller_helpers", "*", "*.rb")
|
26
|
+
Rails.application.autoloaders.main.ignore(old_helpers)
|
27
|
+
end
|
28
|
+
|
18
29
|
initializer "spree.environment", before: :load_config_initializers do |app|
|
19
30
|
app.config.spree = Spree::Config.environment
|
20
31
|
end
|
@@ -40,32 +51,54 @@ module Spree
|
|
40
51
|
]
|
41
52
|
end
|
42
53
|
|
43
|
-
initializer "spree.core.checking_migrations",
|
54
|
+
initializer "spree.core.checking_migrations", after: :load_config_initializers do |_app|
|
44
55
|
Migrations.new(config, engine_name).check
|
45
56
|
end
|
46
57
|
|
47
|
-
# Setup
|
48
|
-
initializer 'spree.core.
|
58
|
+
# Setup pub/sub
|
59
|
+
initializer 'spree.core.pub_sub' do |app|
|
49
60
|
app.reloader.to_prepare do
|
50
|
-
Spree::
|
61
|
+
Spree::Bus.clear
|
62
|
+
|
63
|
+
%i[
|
64
|
+
order_emptied
|
65
|
+
order_finalized
|
66
|
+
order_recalculated
|
67
|
+
reimbursement_reimbursed
|
68
|
+
reimbursement_errored
|
69
|
+
].each { |event_name| Spree::Bus.register(event_name) }
|
70
|
+
|
71
|
+
Spree::OrderMailerSubscriber.new.subscribe_to(Spree::Bus)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Load in mailer previews for apps to use in development.
|
76
|
+
initializer "spree.core.action_mailer.set_preview_path", after: "action_mailer.set_autoload_paths" do
|
77
|
+
solidus_preview_path = Spree::Core::Engine.root.join("lib/spree/mailer_previews")
|
78
|
+
|
79
|
+
if ActionMailer::Base.respond_to? :preview_paths # Rails 7.1+
|
80
|
+
ActionMailer::Base.preview_paths << solidus_preview_path.to_s
|
81
|
+
else
|
82
|
+
ActionMailer::Base.preview_path = "{#{ActionMailer::Base.preview_path},#{solidus_preview_path}}"
|
51
83
|
end
|
84
|
+
end
|
52
85
|
|
53
|
-
|
54
|
-
|
86
|
+
initializer "spree.deprecator" do |app|
|
87
|
+
if app.respond_to?(:deprecators)
|
88
|
+
app.deprecators[:spree] = Spree.deprecator
|
55
89
|
end
|
56
90
|
end
|
57
91
|
|
58
92
|
config.after_initialize do
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
93
|
+
Spree::Config.check_load_defaults_called('Spree::Config')
|
94
|
+
Spree::Config.static_model_preferences.validate!
|
95
|
+
end
|
96
|
+
|
97
|
+
config.after_initialize do
|
98
|
+
if defined?(Spree::Auth::Engine) &&
|
99
|
+
Gem::Version.new(Spree::Auth::VERSION) < Gem::Version.new('2.5.4') &&
|
100
|
+
defined?(Spree::UsersController)
|
101
|
+
Spree::UsersController.protect_from_forgery with: :exception
|
69
102
|
end
|
70
103
|
end
|
71
104
|
end
|
@@ -9,9 +9,41 @@ module Spree
|
|
9
9
|
add_class_set :shipping_methods
|
10
10
|
add_class_set :tax_rates
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
def promotion_actions_create_adjustments
|
13
|
+
promotion_config.calculators["Spree::Promotion::Actions::CreateAdjustment"]
|
14
|
+
end
|
15
|
+
deprecate :promotion_actions_create_adjustments, deprecator: Spree.deprecator
|
16
|
+
|
17
|
+
def promotion_actions_create_adjustments=(value)
|
18
|
+
promotion_config.calculators["Spree::Promotion::Actions::CreateAdjustment"] = value
|
19
|
+
end
|
20
|
+
deprecate :promotion_actions_create_adjustments=, deprecator: Spree.deprecator
|
21
|
+
|
22
|
+
def promotion_actions_create_item_adjustments
|
23
|
+
promotion_config.calculators["Spree::Promotion::Actions::CreateItemAdjustments"]
|
24
|
+
end
|
25
|
+
deprecate :promotion_actions_create_item_adjustments, deprecator: Spree.deprecator
|
26
|
+
|
27
|
+
def promotion_actions_create_item_adjustments=(value)
|
28
|
+
promotion_config.calculators["Spree::Promotion::Actions::CreateItemAdjustments"] = value
|
29
|
+
end
|
30
|
+
deprecate :promotion_actions_create_item_adjustments=, deprecator: Spree.deprecator
|
31
|
+
|
32
|
+
def promotion_actions_create_quantity_adjustments
|
33
|
+
promotion_config.calculators["Spree::Promotion::Actions::CreateQuantityAdjustments"]
|
34
|
+
end
|
35
|
+
deprecate :promotion_actions_create_quantity_adjustments, deprecator: Spree.deprecator
|
36
|
+
|
37
|
+
def promotion_actions_create_quantity_adjustments=(value)
|
38
|
+
promotion_config.calculators["Spree::Promotion::Actions::CreateQuantityAdjustments"] = value
|
39
|
+
end
|
40
|
+
deprecate :promotion_actions_create_quantity_adjustments=, deprecator: Spree.deprecator
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def promotion_config
|
45
|
+
Spree::Config.promotions
|
46
|
+
end
|
15
47
|
end
|
16
48
|
end
|
17
49
|
end
|
@@ -4,11 +4,32 @@ module Spree
|
|
4
4
|
module Core
|
5
5
|
class Environment
|
6
6
|
class Promotions
|
7
|
-
|
7
|
+
class << self
|
8
|
+
private
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
def promotions_deprecation_message(method)
|
11
|
+
"The `Rails.application.config.spree.promotions.#{method}` preference is deprecated and will be removed in Solidus 5.0. " \
|
12
|
+
"Use `Spree::Config.promotions.#{method}` instead."
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
delegate :rules, :rules=, to: :promotion_config
|
17
|
+
deprecate rules: promotions_deprecation_message("rules"), deprecator: Spree.deprecator
|
18
|
+
deprecate "rules=": promotions_deprecation_message("rules="), deprecator: Spree.deprecator
|
19
|
+
|
20
|
+
delegate :actions, :actions=, to: :promotion_config
|
21
|
+
deprecate actions: promotions_deprecation_message("actions"), deprecator: Spree.deprecator
|
22
|
+
deprecate "actions=": promotions_deprecation_message("actions="), deprecator: Spree.deprecator
|
23
|
+
|
24
|
+
delegate :shipping_actions, :shipping_actions=, to: :promotion_config
|
25
|
+
deprecate shipping_actions: promotions_deprecation_message("shipping_actions"), deprecator: Spree.deprecator
|
26
|
+
deprecate "shipping_actions=": promotions_deprecation_message("shipping_actions="), deprecator: Spree.deprecator
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def promotion_config
|
31
|
+
Spree::Config.promotions
|
32
|
+
end
|
12
33
|
end
|
13
34
|
end
|
14
35
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'spree/core/class_constantizer'
|
4
|
+
require 'spree/core/nested_class_set'
|
4
5
|
|
5
6
|
module Spree
|
6
7
|
module Core
|
@@ -8,10 +9,10 @@ module Spree
|
|
8
9
|
extend ActiveSupport::Concern
|
9
10
|
|
10
11
|
class_methods do
|
11
|
-
def add_class_set(name)
|
12
|
+
def add_class_set(name, default: [])
|
12
13
|
define_method(name) do
|
13
14
|
set = instance_variable_get("@#{name}")
|
14
|
-
set ||= send("#{name}=",
|
15
|
+
set ||= send("#{name}=", default)
|
15
16
|
set
|
16
17
|
end
|
17
18
|
|
@@ -21,6 +22,19 @@ module Spree
|
|
21
22
|
instance_variable_set("@#{name}", set)
|
22
23
|
end
|
23
24
|
end
|
25
|
+
|
26
|
+
def add_nested_class_set(name, default: {})
|
27
|
+
define_method(name) do
|
28
|
+
set = instance_variable_get(:"@#{name}")
|
29
|
+
set ||= send(:"#{name}=", default)
|
30
|
+
set
|
31
|
+
end
|
32
|
+
|
33
|
+
define_method(:"#{name}=") do |hash|
|
34
|
+
set = Spree::Core::NestedClassSet.new(hash)
|
35
|
+
instance_variable_set(:"@#{name}", set)
|
36
|
+
end
|
37
|
+
end
|
24
38
|
end
|
25
39
|
end
|
26
40
|
end
|
@@ -40,7 +40,7 @@ module Spree
|
|
40
40
|
end
|
41
41
|
|
42
42
|
# Really ensure that the order totals & states are correct
|
43
|
-
order.
|
43
|
+
order.recalculate
|
44
44
|
if shipments_attrs.present?
|
45
45
|
order.shipments.each_with_index do |shipment, index|
|
46
46
|
shipment.update_columns(cost: shipments_attrs[index][:cost].to_f) if shipments_attrs[index][:cost].present?
|
@@ -74,7 +74,7 @@ module Spree
|
|
74
74
|
# able to find the line item if line_item.variant_id |= iu.variant_id
|
75
75
|
shipment.inventory_units.new(
|
76
76
|
variant_id: inventory_unit[:variant_id],
|
77
|
-
line_item:
|
77
|
+
line_item:
|
78
78
|
)
|
79
79
|
end
|
80
80
|
|
@@ -91,7 +91,7 @@ module Spree
|
|
91
91
|
shipment.save!
|
92
92
|
|
93
93
|
shipping_method = Spree::ShippingMethod.find_by(name: target[:shipping_method]) || Spree::ShippingMethod.find_by!(admin_name: target[:shipping_method])
|
94
|
-
rate = shipment.shipping_rates.create!(shipping_method
|
94
|
+
rate = shipment.shipping_rates.create!(shipping_method:,
|
95
95
|
cost: target[:cost])
|
96
96
|
shipment.selected_shipping_rate_id = rate.id
|
97
97
|
shipment.update_amounts
|
@@ -129,7 +129,7 @@ module Spree
|
|
129
129
|
return [] unless adjustments
|
130
130
|
adjustments.each do |target|
|
131
131
|
adjustment = order.adjustments.build(
|
132
|
-
order
|
132
|
+
order:,
|
133
133
|
amount: target[:amount].to_d,
|
134
134
|
label: target[:label]
|
135
135
|
)
|
@@ -141,7 +141,7 @@ module Spree
|
|
141
141
|
def self.create_payments_from_params(payments_hash, order)
|
142
142
|
return [] unless payments_hash
|
143
143
|
payments_hash.each do |target|
|
144
|
-
payment = order.payments.build
|
144
|
+
payment = order.payments.build(order:)
|
145
145
|
payment.amount = target[:amount].to_f
|
146
146
|
# Order API should be using state as that's the normal payment field.
|
147
147
|
# spree_wombat serializes payment state as status so imported orders should fall back to status field.
|
@@ -170,7 +170,7 @@ module Spree
|
|
170
170
|
def self.ensure_variant_id_from_params(hash)
|
171
171
|
sku = hash.delete(:sku)
|
172
172
|
unless hash[:variant_id].present?
|
173
|
-
hash[:variant_id] = Spree::Variant.with_prices.find_by!(sku:
|
173
|
+
hash[:variant_id] = Spree::Variant.with_prices.find_by!(sku:).id
|
174
174
|
end
|
175
175
|
hash
|
176
176
|
end
|