solidus_core 4.6.2 → 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 -10
- data/app/helpers/spree/products_helper.rb +5 -5
- 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 +9 -9
- 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 -1
- 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 +1 -1
- 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 +37 -41
- 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 +31 -30
- 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 +16 -17
- 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.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/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 -16
- 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 +10 -10
- 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 +1 -1
- 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 +8 -8
- 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 +7 -7
- 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 -54
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 83a084afb161c2cb55167e455d6b84e305c50fe62403210a689e0aedd84e24dd
|
|
4
|
+
data.tar.gz: a19d4dc02d4f0aa3d55fe61dc04fe9676c95bc41c60080ba0976165aca6351c2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a46112878fad1da1501aa4f6a802cacf8b532df996057050c35749ba7cf9b299f80f0fc5094a5859c730602fbeddbeb98ec0463e6adcc3f1a0ed88272cde788d
|
|
7
|
+
data.tar.gz: 41f5daa52188b4c1bfcfa186bc6ebeb0ae55b05bbdb9d267b8cc09d4e5a741e62198879fd68000314a5054bf2fc4ed9105a0d515cf86260d0141d8c37a21aad6
|
data/Rakefile
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
3
|
+
require "rubygems"
|
|
4
|
+
require "rake"
|
|
5
|
+
require "rake/testtask"
|
|
6
|
+
require "rspec/core/rake_task"
|
|
7
|
+
require "spree/testing_support/dummy_app/rake_tasks"
|
|
8
|
+
require "bundler/gem_tasks"
|
|
9
9
|
|
|
10
10
|
RSpec::Core::RakeTask.new
|
|
11
11
|
task default: :spec
|
|
12
12
|
|
|
13
13
|
DummyApp::RakeTasks.new(
|
|
14
14
|
gem_root: File.dirname(__FILE__),
|
|
15
|
-
lib_name:
|
|
15
|
+
lib_name: "solidus_core"
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
require
|
|
18
|
+
require "yard/rake/yardoc_task"
|
|
19
19
|
YARD::Rake::YardocTask.new(:yard)
|
|
20
20
|
# The following workaround can be removed
|
|
21
21
|
# once https://github.com/lsegal/yard/pull/1457 is merged.
|
|
22
|
-
task(
|
|
23
|
-
task yard:
|
|
22
|
+
task("yard:require") { require "yard" }
|
|
23
|
+
task yard: "yard:require"
|
|
24
24
|
|
|
25
25
|
namespace :spec do
|
|
26
26
|
task :isolated do
|
|
27
|
-
spec_files = Dir[
|
|
27
|
+
spec_files = Dir["spec/**/*_spec.rb"]
|
|
28
28
|
failed_specs =
|
|
29
29
|
spec_files.reject do |file|
|
|
30
30
|
puts "rspec #{file}"
|
|
31
|
-
system(
|
|
31
|
+
system("rspec", file)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
if !failed_specs.empty?
|
|
@@ -39,4 +39,4 @@ namespace :spec do
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
task test_app:
|
|
42
|
+
task test_app: "db:reset"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require_dependency
|
|
3
|
+
require "cancan"
|
|
4
|
+
require_dependency "spree/core/controller_helpers/strong_parameters"
|
|
5
5
|
|
|
6
6
|
class Spree::BaseController < ApplicationController
|
|
7
7
|
include ActiveStorage::SetCurrent
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "carmen"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
module BaseHelper
|
|
7
7
|
def link_to_cart(text = nil)
|
|
8
|
-
text = text ? h(text) : t(
|
|
8
|
+
text = text ? h(text) : t("spree.cart")
|
|
9
9
|
css_class = nil
|
|
10
10
|
|
|
11
11
|
if current_order.nil? || current_order.item_count.zero?
|
|
12
|
-
text = "#{text}: (#{t(
|
|
13
|
-
css_class =
|
|
12
|
+
text = "#{text}: (#{t("spree.empty")})"
|
|
13
|
+
css_class = "empty"
|
|
14
14
|
else
|
|
15
15
|
text = "#{text}: (#{current_order.item_count}) <span class='amount'>#{current_order.display_total.to_html}</span>"
|
|
16
|
-
css_class =
|
|
16
|
+
css_class = "full"
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
link_to text.html_safe, spree.cart_path, class: "cart-info #{css_class}"
|
|
@@ -25,7 +25,7 @@ module Spree
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def meta_data
|
|
28
|
-
object = instance_variable_get(
|
|
28
|
+
object = instance_variable_get("@" + controller_name.singularize)
|
|
29
29
|
meta = {}
|
|
30
30
|
|
|
31
31
|
if object.is_a? ActiveRecord::Base
|
|
@@ -34,7 +34,7 @@ module Spree
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
if meta[:description].blank? && object.is_a?(Spree::Product)
|
|
37
|
-
meta[:description] = truncate(strip_tags(object.description), length: 160, separator:
|
|
37
|
+
meta[:description] = truncate(strip_tags(object.description), length: 160, separator: " ")
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
if meta[:keywords].blank? || meta[:description].blank?
|
|
@@ -48,12 +48,12 @@ module Spree
|
|
|
48
48
|
|
|
49
49
|
def meta_data_tags
|
|
50
50
|
meta_data.map do |name, content|
|
|
51
|
-
tag(
|
|
51
|
+
tag("meta", name:, content:)
|
|
52
52
|
end.join("\n")
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def body_class
|
|
56
|
-
@body_class ||= content_for?(:sidebar) ?
|
|
56
|
+
@body_class ||= content_for?(:sidebar) ? "two-col" : "one-col"
|
|
57
57
|
@body_class
|
|
58
58
|
end
|
|
59
59
|
|
|
@@ -72,12 +72,12 @@ module Spree
|
|
|
72
72
|
nil
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
def taxon_breadcrumbs(taxon, separator =
|
|
76
|
-
return
|
|
75
|
+
def taxon_breadcrumbs(taxon, separator = " » ", breadcrumb_class = "inline")
|
|
76
|
+
return "" if current_page?("/") || taxon.nil?
|
|
77
77
|
|
|
78
|
-
crumbs = [[t(
|
|
78
|
+
crumbs = [[t("spree.home"), spree.root_path]]
|
|
79
79
|
|
|
80
|
-
crumbs << [t(
|
|
80
|
+
crumbs << [t("spree.products"), products_path]
|
|
81
81
|
if taxon
|
|
82
82
|
crumbs += taxon.ancestors.collect { |ancestor| [ancestor.name, spree.nested_taxons_path(ancestor.permalink)] } unless taxon.ancestors.empty?
|
|
83
83
|
crumbs << [taxon.name, spree.nested_taxons_path(taxon.permalink)]
|
|
@@ -86,24 +86,24 @@ module Spree
|
|
|
86
86
|
separator = raw(separator)
|
|
87
87
|
|
|
88
88
|
items = crumbs.each_with_index.collect do |crumb, index|
|
|
89
|
-
content_tag(:li, itemprop:
|
|
90
|
-
link_to(crumb.last, itemprop:
|
|
91
|
-
content_tag(:span, crumb.first, itemprop:
|
|
92
|
-
end + (crumb == crumbs.last ?
|
|
89
|
+
content_tag(:li, itemprop: "itemListElement", itemscope: "", itemtype: "https://schema.org/ListItem") do
|
|
90
|
+
link_to(crumb.last, itemprop: "item") do
|
|
91
|
+
content_tag(:span, crumb.first, itemprop: "name") + tag("meta", {itemprop: "position", content: (index + 1).to_s}, false, false)
|
|
92
|
+
end + ((crumb == crumbs.last) ? "" : separator)
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
content_tag(:nav, content_tag(:ol, raw(items.map(&:mb_chars).join), class: breadcrumb_class, itemscope:
|
|
96
|
+
content_tag(:nav, content_tag(:ol, raw(items.map(&:mb_chars).join), class: breadcrumb_class, itemscope: "", itemtype: "https://schema.org/BreadcrumbList"), id: "breadcrumbs", class: "sixteen columns")
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def taxons_tree(root_taxon, current_taxon, max_level = 1)
|
|
100
|
-
return
|
|
101
|
-
content_tag :ul, class:
|
|
100
|
+
return "" if max_level < 1 || root_taxon.children.empty?
|
|
101
|
+
content_tag :ul, class: "taxons-list" do
|
|
102
102
|
taxons = root_taxon.children.map do |taxon|
|
|
103
|
-
css_class =
|
|
103
|
+
css_class = current_taxon&.self_and_ancestors&.include?(taxon) ? "current" : nil
|
|
104
104
|
content_tag :li, class: css_class do
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
link_to(taxon.name, seo_url(taxon)) +
|
|
106
|
+
taxons_tree(taxon, current_taxon, max_level - 1)
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
safe_join(taxons, "\n")
|
|
@@ -117,7 +117,7 @@ module Spree
|
|
|
117
117
|
[country.code, country.name]
|
|
118
118
|
end.to_h
|
|
119
119
|
|
|
120
|
-
country_names.update I18n.t(
|
|
120
|
+
country_names.update I18n.t("spree.country_names", default: {}).stringify_keys
|
|
121
121
|
|
|
122
122
|
countries.collect do |country|
|
|
123
123
|
country.name = country_names.fetch(country.iso, country.name)
|
|
@@ -16,18 +16,18 @@ module Spree
|
|
|
16
16
|
state_index = states.index(state)
|
|
17
17
|
|
|
18
18
|
if state_index < current_index
|
|
19
|
-
css_classes <<
|
|
19
|
+
css_classes << "completed"
|
|
20
20
|
text = link_to text, checkout_state_path(state)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
css_classes <<
|
|
24
|
-
css_classes <<
|
|
25
|
-
css_classes <<
|
|
26
|
-
css_classes <<
|
|
23
|
+
css_classes << "next" if state_index == current_index + 1
|
|
24
|
+
css_classes << "current" if state == @order.state
|
|
25
|
+
css_classes << "first" if state_index == 0
|
|
26
|
+
css_classes << "last" if state_index == states.length - 1
|
|
27
27
|
# It'd be nice to have separate classes but combining them with a dash helps out for IE6 which only sees the last class
|
|
28
|
-
content_tag(
|
|
28
|
+
content_tag("li", content_tag("span", text), class: css_classes.join("-"))
|
|
29
29
|
end
|
|
30
|
-
content_tag(
|
|
30
|
+
content_tag("ol", raw(items.join("\n")), class: "progress-steps", id: "checkout-step-#{@order.state}")
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
end
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "carmen"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
module Core
|
|
7
7
|
module ControllerHelpers
|
|
8
8
|
module Common
|
|
9
9
|
extend ActiveSupport::Concern
|
|
10
|
+
|
|
10
11
|
included do
|
|
11
12
|
helper_method :title
|
|
12
13
|
helper_method :title=
|
|
@@ -27,7 +28,7 @@ module Spree
|
|
|
27
28
|
title_string = @title.presence || accurate_title
|
|
28
29
|
if title_string.present?
|
|
29
30
|
if Spree::Config[:always_put_site_name_in_title]
|
|
30
|
-
[title_string, default_title].join(
|
|
31
|
+
[title_string, default_title].join(" - ")
|
|
31
32
|
else
|
|
32
33
|
title_string
|
|
33
34
|
end
|
|
@@ -42,10 +42,8 @@ module Spree
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def set_current_order
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
current_order.merge!(order, spree_current_user)
|
|
48
|
-
end
|
|
45
|
+
Spree::Config.mergeable_orders_finder_class.new(context: self).call.find_each do |order|
|
|
46
|
+
current_order.merge!(order, spree_current_user)
|
|
49
47
|
end
|
|
50
48
|
end
|
|
51
49
|
|
|
@@ -60,7 +58,7 @@ module Spree
|
|
|
60
58
|
end
|
|
61
59
|
|
|
62
60
|
def current_order_params
|
|
63
|
-
{
|
|
61
|
+
{currency: current_pricing_options.currency, guest_token: cookies.signed[:guest_token], store_id: current_store.id, user_id: spree_current_user.try(:id)}
|
|
64
62
|
end
|
|
65
63
|
|
|
66
64
|
def new_order_params
|
|
@@ -46,8 +46,7 @@ module Spree
|
|
|
46
46
|
return params if params[:payment_source].blank?
|
|
47
47
|
|
|
48
48
|
payment_params = params[:order] &&
|
|
49
|
-
|
|
50
|
-
params[:order][:payments_attributes].first
|
|
49
|
+
params[:order][:payments_attributes]&.first
|
|
51
50
|
return params if payment_params.blank?
|
|
52
51
|
|
|
53
52
|
payment_method_id = payment_params[:payment_method_id]
|
|
@@ -9,24 +9,24 @@ module Spree
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
delegate(*Spree::PermittedAttributes::ATTRIBUTES,
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
to: :permitted_attributes,
|
|
13
|
+
prefix: :permitted)
|
|
14
14
|
|
|
15
15
|
def permitted_credit_card_update_attributes
|
|
16
16
|
permitted_attributes.credit_card_update_attributes + [
|
|
17
|
-
address_attributes: permitted_address_attributes
|
|
17
|
+
{address_attributes: permitted_address_attributes}
|
|
18
18
|
]
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def permitted_payment_attributes
|
|
22
22
|
permitted_attributes.payment_attributes + [
|
|
23
|
-
source_attributes: permitted_source_attributes
|
|
23
|
+
{source_attributes: permitted_source_attributes}
|
|
24
24
|
]
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def permitted_source_attributes
|
|
28
28
|
permitted_attributes.source_attributes + [
|
|
29
|
-
address_attributes: permitted_address_attributes
|
|
29
|
+
{address_attributes: permitted_address_attributes}
|
|
30
30
|
]
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -52,20 +52,20 @@ module Spree
|
|
|
52
52
|
permitted_checkout_payment_attributes +
|
|
53
53
|
permitted_attributes.customer_metadata_attributes +
|
|
54
54
|
permitted_checkout_confirm_attributes + [
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
{line_items_attributes: permitted_line_item_attributes}
|
|
56
|
+
]
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
def permitted_product_attributes
|
|
60
60
|
permitted_attributes.product_attributes + [
|
|
61
|
-
product_properties_attributes: permitted_product_properties_attributes
|
|
61
|
+
{product_properties_attributes: permitted_product_properties_attributes}
|
|
62
62
|
]
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
def permitted_user_attributes
|
|
66
66
|
permitted_attributes.user_attributes + [
|
|
67
|
-
bill_address_attributes: permitted_address_attributes,
|
|
68
|
-
|
|
67
|
+
{bill_address_attributes: permitted_address_attributes,
|
|
68
|
+
ship_address_attributes: permitted_address_attributes}
|
|
69
69
|
]
|
|
70
70
|
end
|
|
71
71
|
end
|
|
@@ -24,7 +24,7 @@ module Spree
|
|
|
24
24
|
return if variant.price_same_as_master?(current_pricing_options)
|
|
25
25
|
difference = variant.price_difference_from_master(current_pricing_options)
|
|
26
26
|
absolute_amount = Spree::Money.new(difference.to_d.abs, currency: difference.currency.iso_code)
|
|
27
|
-
i18n_key = difference.to_d > 0 ? :price_diff_add_html : :price_diff_subtract_html
|
|
27
|
+
i18n_key = (difference.to_d > 0) ? :price_diff_add_html : :price_diff_subtract_html
|
|
28
28
|
t(i18n_key, scope: [:spree, :helpers, :products], amount_html: absolute_amount.to_html)
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -35,8 +35,8 @@ module Spree
|
|
|
35
35
|
# @return [Spree::Money] the full price
|
|
36
36
|
def variant_full_price(variant)
|
|
37
37
|
return if variant.product.variants
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
.with_prices(current_pricing_options)
|
|
39
|
+
.all? { |variant_with_prices| variant_with_prices.price_same_as_master?(current_pricing_options) }
|
|
40
40
|
|
|
41
41
|
variant.price_for_options(current_pricing_options)&.money&.to_html
|
|
42
42
|
end
|
|
@@ -59,9 +59,9 @@ module Spree
|
|
|
59
59
|
# @return [String] the filtered text
|
|
60
60
|
def line_item_description_text(description_text)
|
|
61
61
|
if description_text.present?
|
|
62
|
-
truncate(strip_tags(description_text.gsub(
|
|
62
|
+
truncate(strip_tags(description_text.gsub(" ", " ")), length: 100)
|
|
63
63
|
else
|
|
64
|
-
t(
|
|
64
|
+
t("spree.product_has_no_description")
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
|
|
@@ -15,10 +15,10 @@ module Spree
|
|
|
15
15
|
@order = options.fetch(:order)
|
|
16
16
|
@carton = options.fetch(:carton)
|
|
17
17
|
@manifest = @carton.manifest_for_order(@order)
|
|
18
|
-
options = {
|
|
18
|
+
options = {resend: false}.merge(options)
|
|
19
19
|
@store = @order.store
|
|
20
|
-
subject = (options[:resend] ? "[#{t(
|
|
21
|
-
subject += "#{@store.name} #{t(
|
|
20
|
+
subject = (options[:resend] ? "[#{t("spree.resend").upcase}] " : "")
|
|
21
|
+
subject += "#{@store.name} #{t("spree.shipment_mailer.shipped_email.subject")} ##{@order.number}"
|
|
22
22
|
mail(to: @order.email, from: from_address(@store), subject:)
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -5,7 +5,7 @@ module Spree
|
|
|
5
5
|
def confirm_email(order, resend = false)
|
|
6
6
|
@order = order
|
|
7
7
|
@store = @order.store
|
|
8
|
-
subject = build_subject(t(
|
|
8
|
+
subject = build_subject(t(".subject"), resend)
|
|
9
9
|
|
|
10
10
|
mail(to: @order.email, bcc: bcc_address(@store), from: from_address(@store), subject:)
|
|
11
11
|
end
|
|
@@ -13,7 +13,7 @@ module Spree
|
|
|
13
13
|
def cancel_email(order, resend = false)
|
|
14
14
|
@order = order
|
|
15
15
|
@store = @order.store
|
|
16
|
-
subject = build_subject(t(
|
|
16
|
+
subject = build_subject(t(".subject"), resend)
|
|
17
17
|
|
|
18
18
|
mail(to: @order.email, from: from_address(@store), subject:)
|
|
19
19
|
end
|
|
@@ -21,7 +21,7 @@ module Spree
|
|
|
21
21
|
def inventory_cancellation_email(order, inventory_units, resend = false)
|
|
22
22
|
@order, @inventory_units = order, inventory_units
|
|
23
23
|
@store = @order.store
|
|
24
|
-
subject = build_subject(t(
|
|
24
|
+
subject = build_subject(t("spree.order_mailer.inventory_cancellation.subject"), resend)
|
|
25
25
|
|
|
26
26
|
mail(to: @order.email, from: from_address(@store), subject:)
|
|
27
27
|
end
|
|
@@ -29,7 +29,7 @@ module Spree
|
|
|
29
29
|
private
|
|
30
30
|
|
|
31
31
|
def build_subject(subject_text, resend)
|
|
32
|
-
resend_text = (resend ? "[#{t(
|
|
32
|
+
resend_text = (resend ? "[#{t("spree.resend").upcase}] " : "")
|
|
33
33
|
"#{resend_text}#{@order.store.name} #{subject_text} ##{@order.number}"
|
|
34
34
|
end
|
|
35
35
|
end
|
|
@@ -5,8 +5,8 @@ module Spree
|
|
|
5
5
|
def reimbursement_email(reimbursement, resend = false)
|
|
6
6
|
@reimbursement = reimbursement.respond_to?(:id) ? reimbursement : Spree::Reimbursement.find(reimbursement)
|
|
7
7
|
store = @reimbursement.order.store
|
|
8
|
-
subject = (resend ? "[#{t(
|
|
9
|
-
subject += "#{store.name} #{t(
|
|
8
|
+
subject = (resend ? "[#{t("spree.resend").upcase}] " : "")
|
|
9
|
+
subject += "#{store.name} #{t(".subject")} ##{@reimbursement.order.number}"
|
|
10
10
|
mail(to: @reimbursement.order.email, from: from_address(store), subject:)
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "mini_magick"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
module ActiveStorageAdapter
|
|
@@ -62,7 +62,7 @@ module Spree
|
|
|
62
62
|
rescue ActiveStorage::FileNotFoundError => error
|
|
63
63
|
logger.error("#{error} - Image id: #{attachment.record.id} is corrupted or cannot be found")
|
|
64
64
|
|
|
65
|
-
{
|
|
65
|
+
{identified: nil, width: nil, height: nil, analyzed: true}
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def styles_to_transformations(styles)
|
|
@@ -70,18 +70,18 @@ module Spree
|
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
def imagemagick_to_image_processing_definition(definition)
|
|
73
|
-
width_height = definition.split(
|
|
73
|
+
width_height = definition.split("x").map(&:to_i)
|
|
74
74
|
|
|
75
75
|
case definition[-1].to_sym
|
|
76
76
|
when :^
|
|
77
|
-
{
|
|
77
|
+
{resize_to_fill: width_height}
|
|
78
78
|
else
|
|
79
79
|
default_transformation(*width_height)
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
def default_transformation(width, height)
|
|
84
|
-
{
|
|
84
|
+
{resize_to_limit: [width, height]}
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
end
|
|
@@ -26,13 +26,13 @@ module Spree
|
|
|
26
26
|
|
|
27
27
|
def attachable_io(attachable)
|
|
28
28
|
filename = if attachable.respond_to?(:to_path)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
attachable.to_path
|
|
30
|
+
else
|
|
31
|
+
SecureRandom.uuid
|
|
32
|
+
end
|
|
33
33
|
attachable.rewind
|
|
34
34
|
|
|
35
|
-
{
|
|
35
|
+
{io: attachable, filename:}
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
end
|
|
@@ -25,7 +25,7 @@ module Spree
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def attachment_definitions
|
|
28
|
-
{
|
|
28
|
+
{attachment_name => attachment_definition}
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
private
|
|
@@ -65,7 +65,7 @@ module Spree
|
|
|
65
65
|
return unless attachment.attached?
|
|
66
66
|
return if attachment.image?
|
|
67
67
|
|
|
68
|
-
errors.add(self.class.attachment_name,
|
|
68
|
+
errors.add(self.class.attachment_name, "is not an image")
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
module Spree
|
|
4
4
|
module AdjustmentSource
|
|
5
5
|
def remove_adjustments_from_incomplete_orders
|
|
6
|
-
adjustments
|
|
7
|
-
joins(:order)
|
|
8
|
-
merge(Spree::Order.incomplete)
|
|
9
|
-
destroy_all
|
|
6
|
+
adjustments
|
|
7
|
+
.joins(:order)
|
|
8
|
+
.merge(Spree::Order.incomplete)
|
|
9
|
+
.destroy_all
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -21,10 +21,10 @@ module Spree
|
|
|
21
21
|
# money_methods tax_amount: { currency: "CAD", no_cents: true }, :price
|
|
22
22
|
def money_methods(*args)
|
|
23
23
|
args.each do |money_method|
|
|
24
|
-
money_method = {
|
|
24
|
+
money_method = {money_method => {}} unless money_method.is_a? Hash
|
|
25
25
|
money_method.each do |method_name, opts|
|
|
26
26
|
define_method("display_#{method_name}") do
|
|
27
|
-
default_opts = respond_to?(:currency) ? {
|
|
27
|
+
default_opts = respond_to?(:currency) ? {currency:} : {}
|
|
28
28
|
Spree::Money.new(send(method_name), default_opts.merge(opts))
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -10,7 +10,7 @@ module Spree
|
|
|
10
10
|
scope :active, -> { where(active: true) }
|
|
11
11
|
default_scope -> { order(arel_table[:name].lower) }
|
|
12
12
|
|
|
13
|
-
validates :name, presence: true, uniqueness: {
|
|
13
|
+
validates :name, presence: true, uniqueness: {case_sensitive: false, allow_blank: true}
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -13,12 +13,12 @@ module Spree
|
|
|
13
13
|
|
|
14
14
|
# virtual attributes for use with AJAX autocompletion
|
|
15
15
|
def property_name
|
|
16
|
-
property
|
|
16
|
+
property&.name
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def property_name=(name)
|
|
20
20
|
unless name.blank?
|
|
21
|
-
unless property = Spree::Property.find_by(name:)
|
|
21
|
+
unless (property = Spree::Property.find_by(name:))
|
|
22
22
|
property = Spree::Property.create(name:, presentation: name)
|
|
23
23
|
end
|
|
24
24
|
self.property = property
|
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
included do
|
|
9
9
|
include Spree::Preferences::Preferable
|
|
10
10
|
|
|
11
|
-
if Rails.gem_version >= Gem::Version.new(
|
|
11
|
+
if Rails.gem_version >= Gem::Version.new("7.1")
|
|
12
12
|
serialize :preferences, type: Hash, coder: YAML
|
|
13
13
|
else
|
|
14
14
|
serialize :preferences, Hash, coder: YAML
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "discard"
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
module SoftDeletable
|
|
@@ -8,6 +8,7 @@ module Spree
|
|
|
8
8
|
|
|
9
9
|
included do
|
|
10
10
|
include Discard::Model
|
|
11
|
+
|
|
11
12
|
self.discard_column = :deleted_at
|
|
12
13
|
|
|
13
14
|
default_scope { kept }
|
|
@@ -16,7 +16,7 @@ module Spree
|
|
|
16
16
|
|
|
17
17
|
# Enqueue background job to track state changes asynchronously
|
|
18
18
|
def enqueue_state_change_tracking
|
|
19
|
-
previous_state, current_state = saved_changes[
|
|
19
|
+
previous_state, current_state = saved_changes["state"]
|
|
20
20
|
|
|
21
21
|
# Enqueue the job to track this state change
|
|
22
22
|
Spree::Config.state_change_tracking_class.call(
|