solidus_core 4.6.4 → 4.7.0
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/Rakefile +13 -13
- data/app/controllers/spree/base_controller.rb +2 -2
- data/app/helpers/spree/base_helper.rb +24 -24
- data/app/helpers/spree/checkout_helper.rb +7 -7
- data/app/helpers/spree/core/controller_helpers/auth.rb +1 -1
- data/app/helpers/spree/core/controller_helpers/common.rb +3 -2
- data/app/helpers/spree/core/controller_helpers/order.rb +3 -5
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +1 -2
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +10 -12
- data/app/helpers/spree/products_helper.rb +6 -6
- data/app/helpers/spree/store_helper.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +3 -3
- data/app/mailers/spree/order_mailer.rb +4 -4
- data/app/mailers/spree/reimbursement_mailer.rb +2 -2
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +5 -5
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +5 -5
- data/app/models/concerns/spree/active_storage_adapter.rb +2 -2
- data/app/models/concerns/spree/adjustment_source.rb +4 -4
- data/app/models/concerns/spree/display_money.rb +2 -2
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/preferences/persistable.rb +1 -1
- data/app/models/concerns/spree/ransackable_attributes.rb +1 -0
- data/app/models/concerns/spree/soft_deletable.rb +2 -1
- data/app/models/concerns/spree/state_change_tracking.rb +1 -1
- data/app/models/concerns/spree/user_address_book.rb +12 -12
- data/app/models/concerns/spree/user_methods.rb +13 -13
- data/app/models/concerns/spree/user_reporting.rb +1 -0
- data/app/models/spree/ability.rb +1 -1
- data/app/models/spree/address/name.rb +1 -1
- data/app/models/spree/address.rb +7 -7
- data/app/models/spree/adjustment.rb +11 -10
- data/app/models/spree/adjustment_reason.rb +2 -2
- data/app/models/spree/billing_integration.rb +2 -2
- data/app/models/spree/calculator/default_tax.rb +2 -2
- data/app/models/spree/calculator/flat_fee.rb +1 -1
- data/app/models/spree/calculator/flat_rate.rb +2 -2
- data/app/models/spree/calculator/returns/default_refund_amount.rb +3 -3
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +2 -2
- data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
- data/app/models/spree/calculator/shipping/flexi_rate.rb +8 -8
- data/app/models/spree/calculator/shipping/per_item.rb +3 -3
- data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
- data/app/models/spree/calculator.rb +31 -6
- data/app/models/spree/carton.rb +4 -4
- data/app/models/spree/classification.rb +2 -2
- data/app/models/spree/core/state_machines/order/class_methods.rb +3 -3
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +1 -1
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +27 -27
- data/app/models/spree/customer_return.rb +5 -4
- data/app/models/spree/distributed_amounts_handler.rb +1 -1
- data/app/models/spree/fulfilment_changer.rb +22 -22
- data/app/models/spree/image/active_storage_attachment.rb +2 -2
- data/app/models/spree/image/paperclip_attachment.rb +8 -8
- data/app/models/spree/in_memory_order_updater.rb +262 -0
- data/app/models/spree/inventory_unit.rb +11 -11
- data/app/models/spree/item_total.rb +1 -1
- data/app/models/spree/legacy_user.rb +2 -2
- data/app/models/spree/line_item.rb +21 -11
- data/app/models/spree/log_entry.rb +3 -3
- data/app/models/spree/mergeable_orders_finder.rb +44 -0
- data/app/models/spree/money.rb +2 -1
- data/app/models/spree/null_promotion_adjuster.rb +1 -1
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +2 -2
- data/app/models/spree/order/number_generator.rb +1 -1
- data/app/models/spree/order.rb +66 -64
- data/app/models/spree/order_cancellations.rb +1 -3
- data/app/models/spree/order_inventory.rb +5 -8
- data/app/models/spree/order_mutex.rb +1 -1
- data/app/models/spree/order_shipping.rb +1 -1
- data/app/models/spree/order_updater.rb +59 -37
- data/app/models/spree/payment/cancellation.rb +2 -2
- data/app/models/spree/payment/processing.rb +22 -22
- data/app/models/spree/payment.rb +25 -25
- data/app/models/spree/payment_capture_event.rb +2 -2
- data/app/models/spree/payment_create.rb +1 -24
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -18
- data/app/models/spree/payment_method/check.rb +3 -3
- data/app/models/spree/payment_method/credit_card.rb +1 -1
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +3 -3
- data/app/models/spree/payment_method/store_credit.rb +13 -13
- data/app/models/spree/payment_method.rb +12 -11
- data/app/models/spree/payment_source.rb +2 -2
- data/app/models/spree/permission_sets/dashboard_display.rb +3 -3
- data/app/models/spree/permission_sets/default_customer.rb +4 -4
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +7 -6
- data/app/models/spree/product/scopes.rb +23 -23
- data/app/models/spree/product.rb +38 -50
- data/app/models/spree/product_option_type.rb +2 -2
- data/app/models/spree/product_property.rb +3 -3
- data/app/models/spree/refund.rb +10 -10
- data/app/models/spree/refund_reason.rb +2 -2
- data/app/models/spree/reimbursement/credit.rb +1 -1
- data/app/models/spree/reimbursement.rb +8 -8
- data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +2 -2
- data/app/models/spree/return_authorization.rb +7 -6
- data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +6 -6
- data/app/models/spree/return_item.rb +26 -34
- data/app/models/spree/return_reason.rb +1 -1
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment.rb +37 -29
- data/app/models/spree/shipping_method.rb +9 -9
- data/app/models/spree/shipping_method_category.rb +2 -2
- data/app/models/spree/shipping_rate.rb +12 -10
- data/app/models/spree/shipping_rate_tax.rb +5 -4
- data/app/models/spree/simple_order_contents.rb +2 -2
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/availability.rb +9 -9
- data/app/models/spree/stock/availability_validator.rb +3 -3
- data/app/models/spree/stock/differentiator.rb +2 -2
- data/app/models/spree/stock/estimator.rb +4 -4
- data/app/models/spree/stock/inventory_validator.rb +1 -1
- data/app/models/spree/stock/package.rb +3 -3
- data/app/models/spree/stock_item.rb +5 -5
- data/app/models/spree/stock_location.rb +6 -6
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/stock_quantities.rb +2 -2
- data/app/models/spree/store.rb +3 -3
- data/app/models/spree/store_credit.rb +30 -29
- data/app/models/spree/store_credit_category.rb +2 -2
- data/app/models/spree/store_credit_event.rb +6 -6
- data/app/models/spree/store_credit_reason.rb +1 -1
- data/app/models/spree/store_credit_type.rb +3 -3
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/store_selector/legacy.rb +1 -1
- data/app/models/spree/tax/item_tax.rb +1 -0
- data/app/models/spree/tax/order_tax.rb +1 -0
- data/app/models/spree/tax_category.rb +3 -3
- data/app/models/spree/tax_rate.rb +5 -5
- data/app/models/spree/tax_rate_tax_category.rb +2 -2
- 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 +18 -22
- data/app/models/spree/taxon_brand_selector.rb +3 -3
- data/app/models/spree/unauthorized_redirect_handler.rb +1 -1
- data/app/models/spree/unit_cancel.rb +4 -4
- data/app/models/spree/user_address.rb +3 -3
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +6 -8
- data/app/models/spree/user_last_url_storer.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +1 -1
- data/app/models/spree/variant/scopes.rb +9 -9
- data/app/models/spree/variant/vat_price_generator.rb +0 -1
- data/app/models/spree/variant.rb +25 -25
- data/app/models/spree/variant_property_rule.rb +2 -2
- data/app/models/spree/variant_property_rule_condition.rb +1 -1
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet/default_payment_builder.rb +1 -1
- data/app/models/spree/wallet_payment_source.rb +2 -2
- data/app/models/spree/zone.rb +18 -18
- data/app/models/spree/zone_member.rb +1 -1
- data/app/subscribers/spree/carton_shipped_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_cancel_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_confirmation_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/reimbursement_mailer_subscriber.rb +2 -2
- data/app/views/layouts/spree/base_mailer.html.erb +0 -1
- data/config/initializers/assets.rb +1 -1
- data/config/initializers/db_query_matchers.rb +9 -0
- data/config/initializers/friendly_id.rb +2 -2
- data/config/initializers/inflections.rb +1 -1
- data/config/initializers/money.rb +1 -1
- data/config/locales/en.yml +1 -0
- data/db/default/spree/countries.rb +7 -7
- data/db/default/spree/return_reasons.rb +11 -11
- data/db/default/spree/stock_locations.rb +1 -1
- data/db/default/spree/store_credit.rb +3 -4
- data/db/default/spree/stores.rb +1 -1
- data/db/default/spree/zones.rb +5 -5
- data/db/migrate/20160101010000_solidus_one_four.rb +16 -16
- data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +3 -3
- data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +7 -6
- data/db/migrate/20161014221052_add_available_to_columns_and_remove_display_on_from_payment_methods.rb +10 -10
- data/db/migrate/20161123154034_add_available_to_users_and_remove_display_on_from_shipping_methods.rb +6 -6
- data/db/migrate/20161129035810_add_index_to_spree_payments_number.rb +1 -1
- data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +4 -4
- data/db/migrate/20180322142651_add_amount_remaining_to_store_credit_events.rb +9 -15
- data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +1 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +3 -3
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +1 -1
- data/db/migrate/20250214094207_add_reverse_charge_status_to_store.rb +1 -1
- data/db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb +1 -1
- data/db/seeds.rb +3 -3
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +2 -2
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +3 -3
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +1 -1
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +2 -2
- data/lib/generators/solidus/install/install_generator.rb +51 -51
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -0
- data/lib/generators/solidus/update/update_generator.rb +29 -29
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -6
- data/lib/generators/spree/dummy/dummy_generator.rb +22 -24
- data/lib/generators/spree/dummy/templates/rails/boot.rb +3 -3
- data/lib/generators/spree/dummy/templates/rails/test.rb +4 -4
- data/lib/solidus_core.rb +1 -1
- data/lib/spree/app_configuration.rb +59 -47
- data/lib/spree/bus.rb +1 -1
- data/lib/spree/config.rb +1 -1
- data/lib/spree/core/active_merchant_dependencies.rb +8 -8
- data/lib/spree/core/class_constantizer.rb +1 -1
- data/lib/spree/core/engine.rb +15 -15
- data/lib/spree/core/environment.rb +1 -1
- data/lib/spree/core/environment_extension.rb +2 -2
- data/lib/spree/core/importer/order.rb +15 -15
- data/lib/spree/core/importer/product.rb +4 -4
- data/lib/spree/core/importer.rb +2 -2
- data/lib/spree/core/null_promotion_configuration.rb +7 -7
- data/lib/spree/core/permalinks.rb +1 -1
- data/lib/spree/core/product_filters.rb +94 -93
- data/lib/spree/core/role_configuration.rb +3 -3
- data/lib/spree/core/search/base.rb +5 -6
- data/lib/spree/core/search/variant.rb +3 -3
- data/lib/spree/core/stock_configuration.rb +10 -49
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +3 -3
- data/lib/spree/core/versioned_value.rb +4 -6
- data/lib/spree/core.rb +49 -49
- data/lib/spree/deprecated_instance_variable_proxy.rb +1 -1
- data/lib/spree/deprecation.rb +1 -1
- data/lib/spree/deprecator.rb +2 -2
- data/lib/spree/i18n.rb +2 -2
- data/lib/spree/localized_number.rb +3 -3
- data/lib/spree/manipulative_query_monitor.rb +19 -0
- data/lib/spree/migrations.rb +2 -2
- data/lib/spree/permitted_attributes.rb +11 -12
- data/lib/spree/preferences/configuration.rb +5 -5
- data/lib/spree/preferences/preferable.rb +8 -10
- data/lib/spree/preferences/preferable_class_methods.rb +16 -16
- data/lib/spree/preferences/preference_differentiator.rb +1 -1
- data/lib/spree/preferences/scoped_store.rb +2 -2
- data/lib/spree/preferences/static_model_preferences.rb +2 -2
- data/lib/spree/preferences/store.rb +6 -6
- data/lib/spree/testing_support/ability_helpers.rb +30 -30
- data/lib/spree/testing_support/authorization_helpers.rb +6 -5
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +1 -1
- data/lib/spree/testing_support/capybara_driver.rb +1 -1
- data/lib/spree/testing_support/capybara_ext.rb +12 -12
- data/lib/spree/testing_support/common_rake.rb +17 -16
- data/lib/spree/testing_support/dummy_ability.rb +1 -1
- data/lib/spree/testing_support/dummy_app/migrations.rb +1 -1
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +5 -5
- data/lib/spree/testing_support/dummy_app/routes.rb +1 -1
- data/lib/spree/testing_support/dummy_app.rb +34 -34
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +12 -12
- data/lib/spree/testing_support/factories/adjustment_factory.rb +7 -7
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/calculator_factory.rb +6 -6
- data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
- data/lib/spree/testing_support/factories/country_factory.rb +3 -3
- data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -3
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
- data/lib/spree/testing_support/factories/image_factory.rb +2 -2
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -4
- data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_type_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_value_factory.rb +2 -2
- data/lib/spree/testing_support/factories/order_factory.rb +16 -16
- data/lib/spree/testing_support/factories/payment_factory.rb +9 -9
- data/lib/spree/testing_support/factories/payment_method_factory.rb +10 -10
- data/lib/spree/testing_support/factories/price_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/property_factory.rb +3 -3
- data/lib/spree/testing_support/factories/refund_factory.rb +2 -2
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
- data/lib/spree/testing_support/factories/return_item_factory.rb +2 -10
- data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/role_factory.rb +2 -2
- data/lib/spree/testing_support/factories/shipment_factory.rb +3 -3
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +7 -7
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/state_factory.rb +4 -4
- data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +7 -7
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +3 -3
- data/lib/spree/testing_support/factories/stock_package_factory.rb +3 -3
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +6 -6
- data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +6 -6
- data/lib/spree/testing_support/factories/store_factory.rb +2 -2
- data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxon_factory.rb +3 -3
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
- data/lib/spree/testing_support/factory_bot.rb +1 -1
- data/lib/spree/testing_support/flaky.rb +3 -2
- data/lib/spree/testing_support/flash.rb +2 -2
- data/lib/spree/testing_support/order_walkthrough.rb +6 -6
- data/lib/spree/testing_support/preferences.rb +1 -1
- data/lib/spree/testing_support/rake.rb +1 -1
- data/lib/spree/testing_support/shared_examples/calculator.rb +1 -1
- data/lib/spree/testing_support/shared_examples/gallery.rb +7 -7
- data/lib/spree/testing_support/shared_examples/order_factory.rb +9 -9
- data/lib/spree/testing_support/shared_examples/working_factory.rb +1 -1
- data/lib/spree/testing_support/translations.rb +1 -1
- data/lib/spree_core.rb +1 -1
- data/lib/tasks/payment_method.rake +2 -2
- data/solidus_core.gemspec +49 -49
- metadata +60 -57
- data/app/views/layouts/spree/ink.license.txt +0 -28
- data/vendor/assets/javascripts/jquery.payment.license.txt +0 -25
- data/vendor/assets/javascripts/jsuri.license.txt +0 -12
|
@@ -11,7 +11,7 @@ module Spree
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def mark_default(user_address, address_type: :shipping)
|
|
14
|
-
column_for_default = address_type == :shipping ? :default : :default_billing
|
|
14
|
+
column_for_default = (address_type == :shipping) ? :default : :default_billing
|
|
15
15
|
ActiveRecord::Base.transaction do
|
|
16
16
|
(self - [user_address]).each do |address| # update_all would be nice, but it bypasses ActiveRecord callbacks
|
|
17
17
|
if address.persisted?
|
|
@@ -33,9 +33,9 @@ module Spree
|
|
|
33
33
|
has_many :addresses, through: :user_addresses
|
|
34
34
|
|
|
35
35
|
has_one :default_user_bill_address,
|
|
36
|
-
->{ default_billing },
|
|
37
|
-
class_name:
|
|
38
|
-
foreign_key:
|
|
36
|
+
-> { default_billing },
|
|
37
|
+
class_name: "Spree::UserAddress",
|
|
38
|
+
foreign_key: "user_id",
|
|
39
39
|
inverse_of: false,
|
|
40
40
|
dependent: false
|
|
41
41
|
has_one :bill_address,
|
|
@@ -45,9 +45,9 @@ module Spree
|
|
|
45
45
|
dependent: false
|
|
46
46
|
|
|
47
47
|
has_one :default_user_ship_address,
|
|
48
|
-
->{ default_shipping },
|
|
49
|
-
class_name:
|
|
50
|
-
foreign_key:
|
|
48
|
+
-> { default_shipping },
|
|
49
|
+
class_name: "Spree::UserAddress",
|
|
50
|
+
foreign_key: "user_id",
|
|
51
51
|
inverse_of: false,
|
|
52
52
|
dependent: false
|
|
53
53
|
has_one :ship_address,
|
|
@@ -66,7 +66,7 @@ module Spree
|
|
|
66
66
|
def ship_address=(address)
|
|
67
67
|
if address
|
|
68
68
|
save_in_address_book(address.attributes,
|
|
69
|
-
|
|
69
|
+
Spree::Config.automatic_default_address)
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
|
|
@@ -77,8 +77,8 @@ module Spree
|
|
|
77
77
|
def bill_address=(address)
|
|
78
78
|
if address
|
|
79
79
|
save_in_address_book(address.attributes,
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
Spree::Config.automatic_default_address,
|
|
81
|
+
:billing)
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
@@ -185,8 +185,8 @@ module Spree
|
|
|
185
185
|
end
|
|
186
186
|
|
|
187
187
|
def remove_user_address_reference(address_id)
|
|
188
|
-
self.bill_address_id = bill_address_id == address_id.to_i ? nil : bill_address_id
|
|
189
|
-
self.ship_address_id = ship_address_id == address_id.to_i ? nil : ship_address_id
|
|
188
|
+
self.bill_address_id = (bill_address_id == address_id.to_i) ? nil : bill_address_id
|
|
189
|
+
self.ship_address_id = (ship_address_id == address_id.to_i) ? nil : ship_address_id
|
|
190
190
|
save if changed?
|
|
191
191
|
end
|
|
192
192
|
end
|
|
@@ -59,15 +59,15 @@ module Spree
|
|
|
59
59
|
inverse_of: :user
|
|
60
60
|
|
|
61
61
|
has_many :wallet_payment_sources,
|
|
62
|
-
foreign_key:
|
|
63
|
-
class_name:
|
|
62
|
+
foreign_key: "user_id",
|
|
63
|
+
class_name: "Spree::WalletPaymentSource",
|
|
64
64
|
inverse_of: :user,
|
|
65
65
|
dependent: :destroy
|
|
66
66
|
|
|
67
67
|
after_create :auto_generate_spree_api_key
|
|
68
68
|
before_destroy :check_for_deletion
|
|
69
69
|
|
|
70
|
-
include Spree::RansackableAttributes unless
|
|
70
|
+
include Spree::RansackableAttributes unless include?(Spree::RansackableAttributes)
|
|
71
71
|
|
|
72
72
|
ransack_alias :name, :addresses_name
|
|
73
73
|
self.allowed_ransackable_associations = %w[addresses spree_roles]
|
|
@@ -97,22 +97,22 @@ module Spree
|
|
|
97
97
|
self_orders = orders
|
|
98
98
|
self_orders = self_orders.where(frontend_viewable: true) if only_frontend_viewable
|
|
99
99
|
self_orders = self_orders.where(store:) if store
|
|
100
|
-
self_orders = self_orders.where(
|
|
101
|
-
self_orders = self_orders.where(
|
|
100
|
+
self_orders = self_orders.where("updated_at > ?", Spree::Config.completable_order_updated_cutoff_days.days.ago) if Spree::Config.completable_order_updated_cutoff_days
|
|
101
|
+
self_orders = self_orders.where("created_at > ?", Spree::Config.completable_order_created_cutoff_days.days.ago) if Spree::Config.completable_order_created_cutoff_days
|
|
102
102
|
last_order = self_orders.order(:created_at).last
|
|
103
103
|
last_order unless last_order.try!(:completed?)
|
|
104
104
|
end
|
|
105
105
|
|
|
106
106
|
def available_store_credit_total(currency:)
|
|
107
|
-
store_credits.to_a
|
|
108
|
-
select { |credit| credit.currency == currency }
|
|
109
|
-
sum(&:amount_remaining)
|
|
107
|
+
store_credits.to_a
|
|
108
|
+
.select { |credit| credit.currency == currency }
|
|
109
|
+
.sum(&:amount_remaining)
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
def display_available_store_credit_total(currency:)
|
|
113
113
|
Spree::Money.new(
|
|
114
114
|
available_store_credit_total(currency:),
|
|
115
|
-
currency
|
|
115
|
+
currency:
|
|
116
116
|
)
|
|
117
117
|
end
|
|
118
118
|
|
|
@@ -130,14 +130,14 @@ module Spree
|
|
|
130
130
|
|
|
131
131
|
# Updates the roles in keeping with the given ability's permissions
|
|
132
132
|
#
|
|
133
|
-
# Roles that the given ability
|
|
134
|
-
# ensure not to remove non
|
|
135
|
-
# ones.
|
|
133
|
+
# Roles that are not accessible to the given ability will be ignored. It
|
|
134
|
+
# also ensure not to remove non accessible roles when assigning new
|
|
135
|
+
# accessible ones.
|
|
136
136
|
#
|
|
137
137
|
# @param given_roles [Spree::Role]
|
|
138
138
|
# @param ability [Spree::Ability]
|
|
139
139
|
def update_spree_roles(given_roles, ability:)
|
|
140
|
-
accessible_roles = Spree::Role.accessible_by(ability
|
|
140
|
+
accessible_roles = Spree::Role.accessible_by(ability)
|
|
141
141
|
non_accessible_roles = Spree::Role.all - accessible_roles
|
|
142
142
|
new_accessible_roles = given_roles - non_accessible_roles
|
|
143
143
|
self.spree_roles = spree_roles - accessible_roles + new_accessible_roles
|
data/app/models/spree/ability.rb
CHANGED
data/app/models/spree/address.rb
CHANGED
|
@@ -22,9 +22,9 @@ module Spree
|
|
|
22
22
|
self.class.state_validator_class.new(self).perform
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
self.ignored_columns = %w
|
|
26
|
-
DB_ONLY_ATTRS = %w
|
|
27
|
-
TAXATION_ATTRS = %w
|
|
25
|
+
self.ignored_columns = %w[firstname lastname]
|
|
26
|
+
DB_ONLY_ATTRS = %w[id updated_at created_at].freeze
|
|
27
|
+
TAXATION_ATTRS = %w[state_id country_id zipcode].freeze
|
|
28
28
|
|
|
29
29
|
self.allowed_ransackable_attributes = %w[name]
|
|
30
30
|
|
|
@@ -95,9 +95,9 @@ module Spree
|
|
|
95
95
|
# @note This compares the addresses based on only the fields that make up
|
|
96
96
|
# the logical "address" and excludes the database specific fields (id, created_at, updated_at).
|
|
97
97
|
# @return [Boolean] true if the two addresses have the same address fields
|
|
98
|
-
def ==(
|
|
99
|
-
return false unless
|
|
100
|
-
value_attributes ==
|
|
98
|
+
def ==(other)
|
|
99
|
+
return false unless other&.respond_to?(:value_attributes)
|
|
100
|
+
value_attributes == other.value_attributes
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
# @return [Hash] an ActiveMerchant compatible address hash
|
|
@@ -142,7 +142,7 @@ module Spree
|
|
|
142
142
|
end
|
|
143
143
|
|
|
144
144
|
def country_iso
|
|
145
|
-
country
|
|
145
|
+
country&.iso
|
|
146
146
|
end
|
|
147
147
|
end
|
|
148
148
|
end
|
|
@@ -9,8 +9,8 @@ module Spree
|
|
|
9
9
|
class Adjustment < Spree::Base
|
|
10
10
|
belongs_to :adjustable, polymorphic: true, touch: true, optional: true
|
|
11
11
|
belongs_to :source, polymorphic: true, optional: true
|
|
12
|
-
belongs_to :order, class_name:
|
|
13
|
-
belongs_to :adjustment_reason, class_name:
|
|
12
|
+
belongs_to :order, class_name: "Spree::Order", inverse_of: false, optional: true
|
|
13
|
+
belongs_to :adjustment_reason, class_name: "Spree::AdjustmentReason", inverse_of: :adjustments, optional: true
|
|
14
14
|
|
|
15
15
|
validates :adjustable, presence: true
|
|
16
16
|
validates :order, presence: true
|
|
@@ -19,14 +19,14 @@ module Spree
|
|
|
19
19
|
|
|
20
20
|
scope :not_finalized, -> { where(finalized: false) }
|
|
21
21
|
scope :finalized, -> { where(finalized: true) }
|
|
22
|
-
scope :cancellation, -> { where(source_type:
|
|
23
|
-
scope :tax, -> { where(source_type:
|
|
22
|
+
scope :cancellation, -> { where(source_type: "Spree::UnitCancel") }
|
|
23
|
+
scope :tax, -> { where(source_type: "Spree::TaxRate") }
|
|
24
24
|
scope :non_tax, -> do
|
|
25
25
|
source_type = arel_table[:source_type]
|
|
26
|
-
where(source_type.not_eq(
|
|
26
|
+
where(source_type.not_eq("Spree::TaxRate").or(source_type.eq(nil)))
|
|
27
27
|
end
|
|
28
|
-
scope :price, -> { where(adjustable_type:
|
|
29
|
-
scope :shipping, -> { where(adjustable_type:
|
|
28
|
+
scope :price, -> { where(adjustable_type: "Spree::LineItem") }
|
|
29
|
+
scope :shipping, -> { where(adjustable_type: "Spree::Shipment") }
|
|
30
30
|
scope :eligible, -> { all }
|
|
31
31
|
class << self
|
|
32
32
|
deprecate :eligible, deprecator: Spree.deprecator
|
|
@@ -42,9 +42,10 @@ module Spree
|
|
|
42
42
|
|
|
43
43
|
singleton_class.deprecate :return_authorization, deprecator: Spree.deprecator
|
|
44
44
|
|
|
45
|
-
allowed_ransackable_attributes <<
|
|
45
|
+
allowed_ransackable_attributes << "label"
|
|
46
46
|
|
|
47
47
|
extend DisplayMoney
|
|
48
|
+
|
|
48
49
|
money_methods :amount
|
|
49
50
|
|
|
50
51
|
def finalize!
|
|
@@ -74,12 +75,12 @@ module Spree
|
|
|
74
75
|
|
|
75
76
|
# @return [Boolean] true when this is a tax adjustment (Tax adjustments have a {TaxRate} source)
|
|
76
77
|
def tax?
|
|
77
|
-
source_type ==
|
|
78
|
+
source_type == "Spree::TaxRate"
|
|
78
79
|
end
|
|
79
80
|
|
|
80
81
|
# @return [Boolean] true when this is a cancellation adjustment (Cancellation adjustments have a {UnitCancel} source)
|
|
81
82
|
def cancellation?
|
|
82
|
-
source_type ==
|
|
83
|
+
source_type == "Spree::UnitCancel"
|
|
83
84
|
end
|
|
84
85
|
|
|
85
86
|
def eligible?
|
|
@@ -4,8 +4,8 @@ module Spree
|
|
|
4
4
|
class AdjustmentReason < Spree::Base
|
|
5
5
|
has_many :adjustments, inverse_of: :adjustment_reason, dependent: :restrict_with_error
|
|
6
6
|
|
|
7
|
-
validates :name, presence: true, uniqueness: {
|
|
8
|
-
validates :code, presence: true, uniqueness: {
|
|
7
|
+
validates :name, presence: true, uniqueness: {case_sensitive: false, allow_blank: true}
|
|
8
|
+
validates :code, presence: true, uniqueness: {case_sensitive: false, allow_blank: true}
|
|
9
9
|
|
|
10
10
|
scope :active, -> { where(active: true) }
|
|
11
11
|
|
|
@@ -4,14 +4,14 @@ module Spree
|
|
|
4
4
|
class BillingIntegration < PaymentMethod
|
|
5
5
|
validates :name, presence: true
|
|
6
6
|
|
|
7
|
-
preference :server, :string, default:
|
|
7
|
+
preference :server, :string, default: "test"
|
|
8
8
|
preference :test_mode, :boolean, default: true
|
|
9
9
|
|
|
10
10
|
def gateway
|
|
11
11
|
integration_options = options
|
|
12
12
|
|
|
13
13
|
# All environments except production considered to be test
|
|
14
|
-
test_server = integration_options[:server] !=
|
|
14
|
+
test_server = integration_options[:server] != "production"
|
|
15
15
|
test_mode = integration_options[:test_mode]
|
|
16
16
|
|
|
17
17
|
integration_options[:test] = (test_server || test_mode)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_dependency
|
|
3
|
+
require_dependency "spree/calculator"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
class Calculator::DefaultTax < Calculator
|
|
@@ -17,7 +17,7 @@ module Spree
|
|
|
17
17
|
|
|
18
18
|
line_items_total = matched_line_items.sum(&:total_before_tax)
|
|
19
19
|
if rate.included_in_price
|
|
20
|
-
round_to_two_places(line_items_total - (
|
|
20
|
+
round_to_two_places(line_items_total - (line_items_total / (1 + rate.amount)))
|
|
21
21
|
else
|
|
22
22
|
round_to_two_places(line_items_total * rate.amount)
|
|
23
23
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_dependency
|
|
3
|
+
require_dependency "spree/calculator"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
class Calculator::FlatRate < Calculator
|
|
7
7
|
preference :amount, :decimal, default: 0
|
|
8
|
-
preference :currency, :string, default: ->{ Spree::Config[:currency] }
|
|
8
|
+
preference :currency, :string, default: -> { Spree::Config[:currency] }
|
|
9
9
|
|
|
10
10
|
def compute(object = nil)
|
|
11
11
|
if object && preferred_currency.casecmp(object.currency).zero?
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_dependency
|
|
4
|
-
require_dependency
|
|
3
|
+
require_dependency "spree/calculator"
|
|
4
|
+
require_dependency "spree/returns_calculator"
|
|
5
5
|
|
|
6
6
|
module Spree
|
|
7
7
|
module Calculator::Returns
|
|
8
8
|
class DefaultRefundAmount < ReturnsCalculator
|
|
9
9
|
def compute(return_item)
|
|
10
|
-
return 0.0
|
|
10
|
+
return BigDecimal("0.0") if return_item.part_of_exchange?
|
|
11
11
|
weighted_order_adjustment_amount(return_item.inventory_unit) + weighted_line_item_amount(return_item.inventory_unit)
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_dependency
|
|
4
|
-
require_dependency
|
|
3
|
+
require_dependency "spree/calculator"
|
|
4
|
+
require_dependency "spree/shipping_calculator"
|
|
5
5
|
|
|
6
6
|
module Spree
|
|
7
7
|
module Calculator::Shipping
|
|
8
8
|
class FlatRate < ShippingCalculator
|
|
9
9
|
preference :amount, :decimal, default: 0
|
|
10
|
-
preference :currency, :string, default: ->{ Spree::Config[:currency] }
|
|
10
|
+
preference :currency, :string, default: -> { Spree::Config[:currency] }
|
|
11
11
|
|
|
12
12
|
def compute_package(_package)
|
|
13
13
|
preferred_amount
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_dependency
|
|
4
|
-
require_dependency
|
|
3
|
+
require_dependency "spree/calculator"
|
|
4
|
+
require_dependency "spree/shipping_calculator"
|
|
5
5
|
|
|
6
6
|
module Spree
|
|
7
7
|
module Calculator::Shipping
|
|
8
8
|
class FlexiRate < ShippingCalculator
|
|
9
|
-
preference :first_item,
|
|
9
|
+
preference :first_item, :decimal, default: 0.0
|
|
10
10
|
preference :additional_item, :decimal, default: 0.0
|
|
11
|
-
preference :max_items,
|
|
12
|
-
preference :currency,
|
|
11
|
+
preference :max_items, :integer, default: 0
|
|
12
|
+
preference :currency, :string, default: -> { Spree::Config[:currency] }
|
|
13
13
|
|
|
14
14
|
def compute_package(package)
|
|
15
15
|
compute_from_quantity(package.contents.sum(&:quantity))
|
|
@@ -20,10 +20,10 @@ module Spree
|
|
|
20
20
|
max = preferred_max_items.to_i
|
|
21
21
|
quantity.times do |index|
|
|
22
22
|
# check max value to avoid divide by 0 errors
|
|
23
|
-
if (max == 0 && index == 0) || (max > 0) && (index % max == 0)
|
|
24
|
-
|
|
23
|
+
sum += if (max == 0 && index == 0) || (max > 0) && (index % max == 0)
|
|
24
|
+
preferred_first_item.to_f
|
|
25
25
|
else
|
|
26
|
-
|
|
26
|
+
preferred_additional_item.to_f
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_dependency
|
|
4
|
-
require_dependency
|
|
3
|
+
require_dependency "spree/calculator"
|
|
4
|
+
require_dependency "spree/shipping_calculator"
|
|
5
5
|
|
|
6
6
|
module Spree
|
|
7
7
|
module Calculator::Shipping
|
|
8
8
|
class PerItem < ShippingCalculator
|
|
9
9
|
preference :amount, :decimal, default: 0
|
|
10
|
-
preference :currency, :string, default: ->{ Spree::Config[:currency] }
|
|
10
|
+
preference :currency, :string, default: -> { Spree::Config[:currency] }
|
|
11
11
|
|
|
12
12
|
def compute_package(package)
|
|
13
13
|
compute_from_quantity(package.contents.sum(&:quantity))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_dependency
|
|
4
|
-
require_dependency
|
|
3
|
+
require_dependency "spree/calculator"
|
|
4
|
+
require_dependency "spree/shipping_calculator"
|
|
5
5
|
|
|
6
6
|
module Spree
|
|
7
7
|
module Calculator::Shipping
|
|
@@ -9,7 +9,7 @@ module Spree
|
|
|
9
9
|
preference :minimal_amount, :decimal, default: 0
|
|
10
10
|
preference :normal_amount, :decimal, default: 0
|
|
11
11
|
preference :discount_amount, :decimal, default: 0
|
|
12
|
-
preference :currency, :string, default: ->{ Spree::Config[:currency] }
|
|
12
|
+
preference :currency, :string, default: -> { Spree::Config[:currency] }
|
|
13
13
|
|
|
14
14
|
def compute_package(package)
|
|
15
15
|
compute_from_price(total(package.contents))
|
|
@@ -6,16 +6,41 @@ module Spree
|
|
|
6
6
|
|
|
7
7
|
belongs_to :calculable, polymorphic: true, optional: true
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# Computes an amount based on the calculable and the computable parameter.
|
|
10
10
|
#
|
|
11
|
-
#
|
|
12
|
-
|
|
11
|
+
# This method dynamically calls a compute_<computable> method based on the class
|
|
12
|
+
# of the computable parameter. Concrete calculator classes must implement the
|
|
13
|
+
# appropriate compute method for each computable type they support.
|
|
14
|
+
#
|
|
15
|
+
# For example, if the computable is a Spree::LineItem, this will call
|
|
16
|
+
# compute_line_item(computable, ...). If the computable is a Spree::Order,
|
|
17
|
+
# it will call compute_order(computable, ...).
|
|
18
|
+
#
|
|
19
|
+
# @param computable [Object] The object to compute the amount for (e.g.,
|
|
20
|
+
# Spree::LineItem, Spree::Order, Spree::Shipment,
|
|
21
|
+
# Spree::ShippingRate)
|
|
22
|
+
# @param ... [args, kwargs] Additional arguments passed to the specific compute method
|
|
23
|
+
#
|
|
24
|
+
# @return [BigDecimal, Numeric] The computed amount
|
|
25
|
+
#
|
|
26
|
+
# @raise [NotImplementedError] If the calculator doesn't implement the required compute method
|
|
27
|
+
#
|
|
28
|
+
# @example Implementing a calculator for line items
|
|
29
|
+
# class MyCalculator < Spree::Calculator
|
|
30
|
+
# def compute_line_item(line_item)
|
|
31
|
+
# line_item.amount * 0.1 # 10% of line item amount
|
|
32
|
+
# end
|
|
33
|
+
# end
|
|
34
|
+
#
|
|
35
|
+
# @see Spree::CalculatedAdjustments for how calculators connect to calculables, such as
|
|
36
|
+
# Spree::TaxRate, Spree::ShippingRate, SolidusPromotions::Benefit, or Spree::PromotionAction
|
|
37
|
+
def compute(computable, ...)
|
|
13
38
|
# Spree::LineItem -> :compute_line_item
|
|
14
39
|
computable_name = computable.class.name.demodulize.underscore
|
|
15
|
-
method_name = "compute_#{computable_name}"
|
|
40
|
+
method_name = :"compute_#{computable_name}"
|
|
16
41
|
calculator_class = self.class
|
|
17
42
|
if respond_to?(method_name)
|
|
18
|
-
send(method_name, computable)
|
|
43
|
+
send(method_name, computable, ...)
|
|
19
44
|
else
|
|
20
45
|
raise NotImplementedError, "Please implement '#{method_name}(#{computable_name})' in your calculator: #{calculator_class.name}"
|
|
21
46
|
end
|
|
@@ -30,7 +55,7 @@ module Spree
|
|
|
30
55
|
###################################################################
|
|
31
56
|
|
|
32
57
|
def to_s
|
|
33
|
-
self.class.name.titleize.gsub("Calculator
|
|
58
|
+
self.class.name.titleize.gsub("Calculator/", "")
|
|
34
59
|
end
|
|
35
60
|
|
|
36
61
|
def description
|
data/app/models/spree/carton.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
class Spree::Carton < Spree::Base
|
|
4
|
-
belongs_to :address, class_name:
|
|
5
|
-
belongs_to :stock_location, class_name:
|
|
6
|
-
belongs_to :shipping_method, -> { with_discarded }, class_name:
|
|
4
|
+
belongs_to :address, class_name: "Spree::Address", optional: true
|
|
5
|
+
belongs_to :stock_location, class_name: "Spree::StockLocation", inverse_of: :cartons, optional: true
|
|
6
|
+
belongs_to :shipping_method, -> { with_discarded }, class_name: "Spree::ShippingMethod", inverse_of: :cartons, optional: true
|
|
7
7
|
|
|
8
8
|
has_many :inventory_units, class_name: "Spree::InventoryUnit", inverse_of: :carton, dependent: :nullify
|
|
9
9
|
has_many :orders, -> { distinct }, through: :inventory_units
|
|
@@ -22,7 +22,7 @@ class Spree::Carton < Spree::Base
|
|
|
22
22
|
# @return [boolean, NilClass] Whether the email should be suppressed.
|
|
23
23
|
attr_accessor :suppress_email
|
|
24
24
|
|
|
25
|
-
make_permalink field: :number, length: 11, prefix:
|
|
25
|
+
make_permalink field: :number, length: 11, prefix: "C"
|
|
26
26
|
|
|
27
27
|
scope :trackable, -> { where("tracking IS NOT NULL AND tracking != ''") }
|
|
28
28
|
# sort by most recent shipped_at, falling back to created_at. add "id desc" to make specs that involve this scope more deterministic.
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
module Spree
|
|
4
4
|
class Classification < Spree::Base
|
|
5
|
-
self.table_name =
|
|
5
|
+
self.table_name = "spree_products_taxons"
|
|
6
6
|
acts_as_list scope: :taxon
|
|
7
7
|
belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications, touch: true
|
|
8
8
|
belongs_to :taxon, class_name: "Spree::Taxon", inverse_of: :classifications, touch: true
|
|
9
9
|
|
|
10
10
|
# For https://github.com/spree/spree/issues/3494
|
|
11
|
-
validates :taxon_id, uniqueness: {
|
|
11
|
+
validates :taxon_id, uniqueness: {scope: :product_id, message: :already_linked}
|
|
12
12
|
end
|
|
13
13
|
end
|
|
@@ -101,7 +101,7 @@ module Spree
|
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
after_transition to: :complete, do: :finalize
|
|
104
|
-
after_transition to: :resumed,
|
|
104
|
+
after_transition to: :resumed, do: :after_resume
|
|
105
105
|
after_transition to: :canceled, do: :after_cancel
|
|
106
106
|
|
|
107
107
|
after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
|
|
@@ -121,7 +121,7 @@ module Spree
|
|
|
121
121
|
def go_to_state(name, options = {})
|
|
122
122
|
checkout_steps[name] = options
|
|
123
123
|
previous_states.each do |state|
|
|
124
|
-
add_transition({
|
|
124
|
+
add_transition({from: state, to: name}.merge(options))
|
|
125
125
|
end
|
|
126
126
|
if options[:if]
|
|
127
127
|
previous_states << name
|
|
@@ -188,7 +188,7 @@ module Spree
|
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
def add_transition(options)
|
|
191
|
-
next_event_transitions << {
|
|
191
|
+
next_event_transitions << {options.delete(:from) => options.delete(:to)}.merge(options)
|
|
192
192
|
end
|
|
193
193
|
|
|
194
194
|
def removed_transitions
|
|
@@ -41,7 +41,7 @@ module Spree
|
|
|
41
41
|
transition to: :manual_intervention_required, from: [:accepted, :pending, :manual_intervention_required]
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
after_transition any => any, do
|
|
44
|
+
after_transition any => any, :do => :persist_acceptance_status_errors
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
data/app/models/spree/country.rb
CHANGED
|
@@ -28,7 +28,7 @@ module Spree
|
|
|
28
28
|
def self.available(restrict_to_zone: Spree::Config[:checkout_zone])
|
|
29
29
|
checkout_zone = Zone.find_by(name: restrict_to_zone)
|
|
30
30
|
|
|
31
|
-
return checkout_zone.country_list if checkout_zone.try(:kind) ==
|
|
31
|
+
return checkout_zone.country_list if checkout_zone.try(:kind) == "country"
|
|
32
32
|
|
|
33
33
|
all
|
|
34
34
|
end
|