spree_core 5.3.4 → 5.4.0.beta2
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/app/finders/spree/orders/find_complete.rb +33 -2
- data/app/finders/spree/products/find.rb +1 -28
- data/app/finders/spree/stores/find_default.rb +17 -0
- data/app/finders/spree/variants/visible_finder.rb +1 -0
- data/app/helpers/spree/addresses_helper.rb +1 -2
- data/app/helpers/spree/base_helper.rb +6 -58
- data/app/mailers/spree/base_mailer.rb +4 -3
- data/app/models/concerns/spree/adjustment_source.rb +0 -8
- data/app/models/concerns/spree/admin_user_methods.rb +32 -2
- data/app/models/concerns/spree/image_methods.rb +4 -0
- data/app/models/concerns/spree/metadata.rb +10 -0
- data/app/models/concerns/spree/number_as_param.rb +5 -3
- data/app/models/concerns/spree/prefixed_id.rb +82 -0
- data/app/models/concerns/spree/product_scopes.rb +35 -65
- data/app/models/concerns/spree/publishable.rb +47 -47
- data/app/models/concerns/spree/{multi_store_resource.rb → store_scoped_resource.rb} +1 -10
- data/app/models/concerns/spree/stores/markets.rb +124 -0
- data/app/models/concerns/spree/user_methods.rb +7 -7
- data/app/models/concerns/spree/user_payment_source.rb +2 -0
- data/app/models/concerns/spree/user_roles.rb +1 -0
- data/app/models/concerns/spree/vat_price_calculation.rb +2 -2
- data/app/models/spree/ability.rb +18 -5
- data/app/models/spree/address.rb +33 -2
- data/app/models/spree/adjustable/promotion_accumulator.rb +1 -1
- data/app/models/spree/adjustment.rb +3 -20
- data/app/models/spree/api_key.rb +102 -0
- data/app/models/spree/asset.rb +2 -0
- data/app/models/spree/authentication/strategies/base_strategy.rb +55 -0
- data/app/models/spree/authentication/strategies/email_password_strategy.rb +47 -0
- data/app/models/spree/base.rb +1 -0
- data/app/models/spree/calculator.rb +2 -0
- data/app/models/spree/country.rb +60 -0
- data/app/models/spree/coupon_code.rb +2 -0
- data/app/models/spree/credit_card.rb +2 -27
- data/app/models/spree/current.rb +45 -4
- data/app/models/spree/customer_group.rb +2 -0
- data/app/models/spree/customer_return.rb +2 -0
- data/app/models/spree/digital.rb +2 -0
- data/app/models/spree/digital_link.rb +2 -0
- data/app/models/spree/export.rb +3 -2
- data/app/models/spree/exports/products.rb +0 -6
- data/app/models/spree/fulfilment_changer.rb +8 -2
- data/app/models/spree/gateway/bogus.rb +69 -9
- data/app/models/spree/gateway.rb +0 -3
- data/app/models/spree/gateway_customer.rb +2 -0
- data/app/models/spree/gift_card.rb +2 -0
- data/app/models/spree/gift_card_batch.rb +6 -0
- data/app/models/spree/image/configuration/active_storage.rb +0 -2
- data/app/models/spree/image.rb +25 -31
- data/app/models/spree/import.rb +5 -3
- data/app/models/spree/import_mapping.rb +2 -0
- data/app/models/spree/import_row.rb +2 -0
- data/app/models/spree/import_schemas/customers.rb +21 -0
- data/app/models/spree/imports/customers.rb +9 -0
- data/app/models/spree/integration.rb +2 -0
- data/app/models/spree/inventory_unit.rb +2 -0
- data/app/models/spree/invitation.rb +6 -6
- data/app/models/spree/legacy_admin_user.rb +31 -0
- data/app/models/spree/legacy_user.rb +19 -1
- data/app/models/spree/line_item.rb +15 -4
- data/app/models/spree/log_entry.rb +10 -5
- data/app/models/spree/market.rb +83 -0
- data/app/models/spree/market_country.rb +25 -0
- data/app/models/spree/metafield.rb +2 -0
- data/app/models/spree/metafield_definition.rb +2 -0
- data/app/models/spree/newsletter_subscriber.rb +2 -0
- data/app/models/spree/option_type.rb +2 -0
- data/app/models/spree/option_value.rb +2 -0
- data/app/models/spree/order/address_book.rb +2 -1
- data/app/models/spree/order/checkout.rb +0 -18
- data/app/models/spree/order.rb +93 -56
- data/app/models/spree/payment/gateway_options.rb +2 -2
- data/app/models/spree/payment/processing.rb +5 -5
- data/app/models/spree/payment.rb +7 -2
- data/app/models/spree/payment_capture_event.rb +2 -0
- data/app/models/spree/payment_connection_error.rb +3 -0
- data/app/models/spree/payment_method/check.rb +1 -1
- data/app/models/spree/payment_method/store_credit.rb +5 -5
- data/app/models/spree/payment_method.rb +59 -1
- data/app/models/spree/payment_response.rb +70 -0
- data/app/models/spree/payment_session.rb +109 -0
- data/app/models/spree/payment_sessions/bogus.rb +4 -0
- data/app/models/spree/payment_setup_session.rb +79 -0
- data/app/models/spree/payment_source.rb +2 -0
- data/app/models/spree/permission_sets/default_customer.rb +19 -5
- data/app/models/spree/permission_sets/product_display.rb +0 -2
- data/app/models/spree/permission_sets/product_management.rb +0 -2
- data/app/models/spree/policy.rb +2 -0
- data/app/models/spree/price.rb +26 -2
- data/app/models/spree/price_list.rb +2 -0
- data/app/models/spree/price_rule.rb +2 -0
- data/app/models/spree/price_rules/market_rule.rb +19 -0
- data/app/models/spree/product.rb +45 -101
- data/app/models/spree/promotion/rules/country.rb +1 -1
- data/app/models/spree/promotion.rb +5 -15
- data/app/models/spree/promotion_action.rb +2 -0
- data/app/models/spree/promotion_category.rb +2 -0
- data/app/models/spree/promotion_handler/coupon.rb +3 -3
- data/app/models/spree/promotion_rule.rb +2 -0
- data/app/models/spree/prototype.rb +2 -3
- data/app/models/spree/refund.rb +8 -2
- data/app/models/spree/refund_reason.rb +2 -0
- data/app/models/spree/reimbursement/credit.rb +2 -0
- data/app/models/spree/reimbursement.rb +2 -0
- data/app/models/spree/reimbursement_type.rb +2 -0
- data/app/models/spree/report.rb +3 -1
- data/app/models/spree/return_authorization.rb +2 -0
- data/app/models/spree/return_authorization_reason.rb +2 -0
- data/app/models/spree/return_item.rb +2 -0
- data/app/models/spree/role.rb +2 -0
- data/app/models/spree/shipment/emails.rb +1 -0
- data/app/models/spree/shipment.rb +11 -1
- data/app/models/spree/shipping_category.rb +5 -3
- data/app/models/spree/shipping_method.rb +2 -0
- data/app/models/spree/shipping_method_category.rb +2 -0
- data/app/models/spree/shipping_rate.rb +2 -0
- data/app/models/spree/state_change.rb +2 -0
- data/app/models/spree/stock_item.rb +2 -0
- data/app/models/spree/stock_location.rb +2 -0
- data/app/models/spree/stock_movement.rb +2 -0
- data/app/models/spree/stock_transfer.rb +2 -1
- data/app/models/spree/store.rb +111 -219
- data/app/models/spree/store_credit.rb +6 -0
- data/app/models/spree/store_credit_category.rb +2 -0
- data/app/models/spree/store_credit_event.rb +2 -0
- data/app/models/spree/store_credit_type.rb +2 -0
- data/app/models/spree/store_product.rb +2 -0
- data/app/models/spree/tax_category.rb +3 -11
- data/app/models/spree/tax_rate.rb +2 -0
- data/app/models/spree/taxon.rb +2 -15
- data/app/models/spree/taxon_rule.rb +2 -0
- data/app/models/spree/taxonomy.rb +2 -0
- data/app/models/spree/user_identity.rb +81 -0
- data/app/models/spree/variant.rb +15 -43
- data/app/models/spree/webhook_delivery.rb +2 -0
- data/app/models/spree/webhook_endpoint.rb +2 -0
- data/app/models/spree/wished_item.rb +15 -0
- data/app/models/spree/wishlist.rb +2 -8
- data/app/models/spree/zone.rb +3 -10
- data/app/presenters/spree/filters/price_presenter.rb +1 -0
- data/app/presenters/spree/filters/price_range_presenter.rb +1 -0
- data/app/presenters/spree/filters/quantified_price_range_presenter.rb +1 -0
- data/app/presenters/spree/product_summary_presenter.rb +1 -0
- data/app/services/spree/addresses/helper.rb +22 -3
- data/app/services/spree/cart/add_item.rb +8 -4
- data/app/services/spree/cart/associate.rb +19 -6
- data/app/services/spree/cart/create.rb +13 -2
- data/app/services/spree/checkout/select_shipping_method.rb +13 -1
- data/app/services/spree/classifications/reposition.rb +5 -0
- data/app/services/spree/imports/row_processors/customer.rb +70 -0
- data/app/services/spree/orders/approve.rb +5 -3
- data/app/services/spree/orders/cancel.rb +9 -4
- data/app/services/spree/products/duplicator.rb +0 -12
- data/app/services/spree/products/prepare_nested_attributes.rb +1 -13
- data/app/services/spree/sample_data/import_runner.rb +54 -0
- data/app/services/spree/sample_data/loader.rb +78 -0
- data/app/services/spree/seeds/admin_user.rb +2 -3
- data/app/services/spree/seeds/all.rb +1 -0
- data/app/services/spree/seeds/api_keys.rb +16 -0
- data/app/services/spree/seeds/stores.rb +2 -4
- data/app/sorters/spree/orders/sort.rb +4 -0
- data/app/subscribers/spree/product_metrics_subscriber.rb +4 -4
- data/config/brakeman.ignore +120 -0
- data/config/locales/en.yml +23 -21
- data/db/migrate/20210914000000_spree_four_three.rb +0 -38
- data/db/migrate/20210915064329_add_metadata_to_spree_multiple_tables.rb +0 -1
- data/db/migrate/20250923141900_create_spree_user_identities.rb +17 -0
- data/db/migrate/20260123000000_create_spree_api_keys.rb +19 -0
- data/db/migrate/20260131000000_add_thumbnail_id_to_spree_variants_and_products.rb +9 -0
- data/db/migrate/20260213000000_create_spree_payment_sessions.rb +27 -0
- data/db/migrate/20260218000000_create_spree_payment_setup_sessions.rb +24 -0
- data/db/migrate/20260220000000_create_spree_markets.rb +29 -0
- data/db/migrate/20260226000000_add_locale_to_spree_orders.rb +5 -0
- data/db/migrate/20260226100000_add_token_digest_to_spree_api_keys.rb +21 -0
- data/db/sample_data/customers.csv +21 -0
- data/db/sample_data/metafield_definitions.rb +7 -0
- data/db/sample_data/orders.rb +131 -0
- data/db/sample_data/payment_methods.rb +17 -0
- data/db/sample_data/products.csv +1083 -0
- data/db/sample_data/promotions.rb +8 -0
- data/db/sample_data/shipping_methods.rb +39 -0
- data/lib/generators/spree/authentication/devise/devise_generator.rb +2 -2
- data/lib/generators/spree/authentication/dummy/dummy_generator.rb +54 -0
- data/lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt +52 -0
- data/lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt +33 -0
- data/lib/generators/spree/cursor_rules/templates/spree_rules.mdc +1 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
- data/lib/spree/core/configuration.rb +1 -3
- data/lib/spree/core/controller_helpers/common.rb +6 -0
- data/lib/spree/core/controller_helpers/currency.rb +5 -0
- data/lib/spree/core/controller_helpers/order.rb +5 -1
- data/lib/spree/core/controller_helpers/store.rb +1 -1
- data/lib/spree/core/controller_helpers/strong_parameters.rb +1 -2
- data/lib/spree/core/dependencies.rb +3 -11
- data/lib/spree/core/engine.rb +17 -17
- data/lib/spree/core/pricing/context.rb +6 -3
- data/lib/spree/core/pricing/resolver.rb +1 -9
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +14 -29
- data/lib/spree/database_type_utilities.rb +7 -0
- data/lib/spree/events.rb +17 -10
- data/lib/spree/money.rb +2 -9
- data/lib/spree/permitted_attributes.rb +20 -20
- data/lib/spree/testing_support/capybara_config.rb +2 -2
- data/lib/spree/testing_support/common_rake.rb +15 -4
- data/lib/spree/testing_support/factories/api_key_factory.rb +19 -0
- data/lib/spree/testing_support/factories/custom_domain_factory.rb +7 -5
- data/lib/spree/testing_support/factories/import_factory.rb +12 -0
- data/lib/spree/testing_support/factories/market_factory.rb +35 -0
- data/lib/spree/testing_support/factories/order_factory.rb +4 -1
- data/lib/spree/testing_support/factories/payment_method_factory.rb +3 -6
- data/lib/spree/testing_support/factories/payment_session_factory.rb +47 -0
- data/lib/spree/testing_support/factories/payment_setup_session_factory.rb +31 -0
- data/lib/spree/testing_support/factories/price_rule_factory.rb +10 -0
- data/lib/spree/testing_support/factories/product_factory.rb +0 -7
- data/lib/spree/testing_support/factories/prototype_factory.rb +0 -2
- data/lib/spree/testing_support/factories/user_identity_factory.rb +15 -0
- data/lib/spree/testing_support/store.rb +3 -2
- data/lib/spree/webhooks.rb +7 -7
- data/lib/tasks/core.rake +0 -265
- data/lib/tasks/images.rake +20 -0
- data/lib/tasks/markets.rake +40 -0
- data/lib/tasks/sample_data.rake +15 -0
- data/spec/fixtures/files/customers_import.csv +4 -0
- metadata +101 -154
- data/LICENSE.md +0 -57
- data/app/finders/spree/posts/find.rb +0 -137
- data/app/finders/spree/product_properties/find_available.rb +0 -20
- data/app/finders/spree/stores/find_current.rb +0 -28
- data/app/helpers/spree/mail_helper.rb +0 -27
- data/app/mailers/spree/test_mailer.rb +0 -8
- data/app/models/action_text/video_embed.rb +0 -13
- data/app/models/concerns/spree/has_one_link.rb +0 -42
- data/app/models/concerns/spree/linkable.rb +0 -9
- data/app/models/concerns/spree/previewable.rb +0 -17
- data/app/models/spree/custom_domain.rb +0 -59
- data/app/models/spree/data_feed/google.rb +0 -15
- data/app/models/spree/data_feed.rb +0 -40
- data/app/models/spree/gateway/bogus_simple.rb +0 -24
- data/app/models/spree/post.rb +0 -106
- data/app/models/spree/post_category.rb +0 -44
- data/app/models/spree/product_property.rb +0 -51
- data/app/models/spree/property.rb +0 -86
- data/app/models/spree/property_prototype.rb +0 -9
- data/app/models/spree/store_favicon_image.rb +0 -20
- data/app/models/spree/store_logo.rb +0 -4
- data/app/models/spree/store_mailer_logo.rb +0 -7
- data/app/models/spree/taxon_image/configuration/active_storage.rb +0 -26
- data/app/models/spree/taxon_image.rb +0 -20
- data/app/presenters/spree/filters/properties_presenter.rb +0 -23
- data/app/presenters/spree/filters/property_presenter.rb +0 -42
- data/app/serializers/spree/events/asset_serializer.rb +0 -22
- data/app/serializers/spree/events/base_serializer.rb +0 -61
- data/app/serializers/spree/events/customer_return_serializer.rb +0 -20
- data/app/serializers/spree/events/digital_link_serializer.rb +0 -20
- data/app/serializers/spree/events/digital_serializer.rb +0 -18
- data/app/serializers/spree/events/export_serializer.rb +0 -22
- data/app/serializers/spree/events/gift_card_batch_serializer.rb +0 -24
- data/app/serializers/spree/events/gift_card_serializer.rb +0 -29
- data/app/serializers/spree/events/image_serializer.rb +0 -9
- data/app/serializers/spree/events/import_row_serializer.rb +0 -23
- data/app/serializers/spree/events/import_serializer.rb +0 -24
- data/app/serializers/spree/events/invitation_serializer.rb +0 -28
- data/app/serializers/spree/events/line_item_serializer.rb +0 -31
- data/app/serializers/spree/events/newsletter_subscriber_serializer.rb +0 -21
- data/app/serializers/spree/events/order_serializer.rb +0 -39
- data/app/serializers/spree/events/payment_serializer.rb +0 -24
- data/app/serializers/spree/events/post_category_serializer.rb +0 -20
- data/app/serializers/spree/events/post_serializer.rb +0 -26
- data/app/serializers/spree/events/price_serializer.rb +0 -22
- data/app/serializers/spree/events/product_serializer.rb +0 -24
- data/app/serializers/spree/events/promotion_serializer.rb +0 -32
- data/app/serializers/spree/events/refund_serializer.rb +0 -23
- data/app/serializers/spree/events/reimbursement_serializer.rb +0 -22
- data/app/serializers/spree/events/report_serializer.rb +0 -23
- data/app/serializers/spree/events/return_authorization_serializer.rb +0 -22
- data/app/serializers/spree/events/return_item_serializer.rb +0 -27
- data/app/serializers/spree/events/shipment_serializer.rb +0 -24
- data/app/serializers/spree/events/stock_item_serializer.rb +0 -22
- data/app/serializers/spree/events/stock_movement_serializer.rb +0 -22
- data/app/serializers/spree/events/stock_transfer_serializer.rb +0 -22
- data/app/serializers/spree/events/store_credit_serializer.rb +0 -30
- data/app/serializers/spree/events/user_serializer.rb +0 -18
- data/app/serializers/spree/events/variant_serializer.rb +0 -34
- data/app/serializers/spree/events/wished_item_serializer.rb +0 -20
- data/app/serializers/spree/events/wishlist_serializer.rb +0 -22
- data/app/services/spree/data_feeds/google/optional_attributes.rb +0 -23
- data/app/services/spree/data_feeds/google/optional_sub_attributes.rb +0 -21
- data/app/services/spree/data_feeds/google/products_list.rb +0 -14
- data/app/services/spree/data_feeds/google/required_attributes.rb +0 -68
- data/app/services/spree/data_feeds/google/rss.rb +0 -109
- data/app/sorters/spree/posts/sort.rb +0 -40
- data/app/views/action_text/video_embeds/_thumbnail.html.erb +0 -1
- data/app/views/action_text/video_embeds/_video_embed.html.erb +0 -3
- data/app/views/layouts/action_text/contents/_content.html.erb +0 -3
- data/app/views/spree/test_mailer/test_email.html.erb +0 -40
- data/app/views/spree/test_mailer/test_email.text.erb +0 -4
- data/config/initializers/oembed.rb +0 -1
- data/db/migrate/20221229132350_create_spree_data_feed_settings.rb +0 -14
- data/db/migrate/20230109084253_create_product_property_translations.rb +0 -24
- data/db/migrate/20230109105943_create_property_translations.rb +0 -24
- data/db/migrate/20230415155958_rename_data_feed_settings_table.rb +0 -5
- data/db/migrate/20230415160828_rename_data_feed_table_columns.rb +0 -7
- data/db/migrate/20230415161226_add_indexes_to_data_feeds_table.rb +0 -5
- data/db/migrate/20230512094803_rename_data_feeds_column_provider_to_type.rb +0 -5
- data/db/migrate/20240914153106_add_display_on_to_spree_properties.rb +0 -5
- data/db/migrate/20240915144935_add_position_to_spree_properties.rb +0 -6
- data/db/migrate/20250121160028_create_spree_posts_and_spree_post_categories.rb +0 -33
- data/db/migrate/20250127083740_add_kind_to_spree_properties.rb +0 -5
- data/db/migrate/20250217171018_create_action_text_video_embeds.rb +0 -11
- data/db/migrate/20250305121657_remove_spree_posts_indices.rb +0 -7
- data/db/migrate/20250730154601_add_unique_index_on_spree_properties_name.rb +0 -24
- data/lib/spree/core/controller_helpers/search.rb +0 -17
- data/lib/spree/core/product_filters.rb +0 -204
- data/lib/spree/core/query_filters/comparable.rb +0 -46
- data/lib/spree/core/query_filters/date.rb +0 -8
- data/lib/spree/core/query_filters/number.rb +0 -8
- data/lib/spree/core/query_filters/text.rb +0 -32
- data/lib/spree/core/query_filters.rb +0 -11
- data/lib/spree/core/search/base.rb +0 -144
- data/lib/spree/testing_support/factories/favicon_image_factory.rb +0 -9
- data/lib/spree/testing_support/factories/google_data_feed_factory.rb +0 -7
- data/lib/spree/testing_support/factories/post_category_factory.rb +0 -7
- data/lib/spree/testing_support/factories/post_factory.rb +0 -22
- data/lib/spree/testing_support/factories/product_property_factory.rb +0 -7
- data/lib/spree/testing_support/factories/property_factory.rb +0 -28
- data/lib/spree/testing_support/factories/taxon_image_factory.rb +0 -9
- data/lib/spree/testing_support/flash.rb +0 -25
- data/lib/spree/testing_support/flatpickr_capybara.rb +0 -124
- data/lib/tasks/exchanges.rake +0 -66
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
begin
|
|
2
|
+
north_america = Spree::Zone.find_by!(name: 'North America')
|
|
3
|
+
rescue ActiveRecord::RecordNotFound
|
|
4
|
+
puts "Couldn't find 'North America' zone. Did you run `rake db:seed` first?"
|
|
5
|
+
exit
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
europe_vat = Spree::Zone.find_by!(name: 'EU_VAT')
|
|
9
|
+
shipping_category = Spree::ShippingCategory.find_or_create_by!(name: 'Default')
|
|
10
|
+
|
|
11
|
+
shipping_methods = [
|
|
12
|
+
{ name: 'UPS Ground (USD)', zones: [north_america], display_on: 'both', shipping_categories: [shipping_category] },
|
|
13
|
+
{ name: 'UPS Two Day (USD)', zones: [north_america], display_on: 'both', shipping_categories: [shipping_category] },
|
|
14
|
+
{ name: 'UPS One Day (USD)', zones: [north_america], display_on: 'both', shipping_categories: [shipping_category] },
|
|
15
|
+
{ name: 'UPS Ground (EU)', zones: [europe_vat], display_on: 'both', shipping_categories: [shipping_category] },
|
|
16
|
+
{ name: 'UPS Ground (EUR)', zones: [europe_vat], display_on: 'both', shipping_categories: [shipping_category] }
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
shipping_methods.each do |attributes|
|
|
20
|
+
Spree::ShippingMethod.where(name: attributes[:name]).first_or_create! do |shipping_method|
|
|
21
|
+
shipping_method.calculator = Spree::Calculator::Shipping::FlatRate.create!
|
|
22
|
+
shipping_method.zones = attributes[:zones]
|
|
23
|
+
shipping_method.display_on = attributes[:display_on]
|
|
24
|
+
shipping_method.shipping_categories = attributes[:shipping_categories]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
{
|
|
29
|
+
'UPS Ground (USD)' => [5, 'USD'],
|
|
30
|
+
'UPS Ground (EU)' => [5, 'USD'],
|
|
31
|
+
'UPS One Day (USD)' => [15, 'USD'],
|
|
32
|
+
'UPS Two Day (USD)' => [10, 'USD'],
|
|
33
|
+
'UPS Ground (EUR)' => [8, 'EUR']
|
|
34
|
+
}.each do |shipping_method_name, (price, currency)|
|
|
35
|
+
shipping_method = Spree::ShippingMethod.find_by!(name: shipping_method_name)
|
|
36
|
+
shipping_method.calculator.preferences = { amount: price, currency: currency }
|
|
37
|
+
shipping_method.calculator.save!
|
|
38
|
+
shipping_method.save!
|
|
39
|
+
end
|
|
@@ -55,7 +55,7 @@ module Spree
|
|
|
55
55
|
inject_into_file admin_user_class_file, after: "class #{Spree.admin_user_class.name} < ApplicationRecord\n" do
|
|
56
56
|
<<-RUBY
|
|
57
57
|
# Spree modules
|
|
58
|
-
include Spree::
|
|
58
|
+
include Spree::AdminUserMethods
|
|
59
59
|
RUBY
|
|
60
60
|
end
|
|
61
61
|
gsub_file admin_user_class_file, "< ApplicationRecord", "< Spree.base_class"
|
|
@@ -65,7 +65,7 @@ module Spree
|
|
|
65
65
|
say "Could not locate admin user model file at #{admin_user_class_file}. Please add these lines manually:", :red
|
|
66
66
|
say <<~RUBY
|
|
67
67
|
# Spree modules
|
|
68
|
-
include Spree::
|
|
68
|
+
include Spree::AdminUserMethods
|
|
69
69
|
RUBY
|
|
70
70
|
|
|
71
71
|
say "Please replace < ApplicationRecord with < Spree.base_class in #{admin_user_class_file}"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'rails/generators'
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Authentication
|
|
5
|
+
class DummyGenerator < Rails::Generators::Base
|
|
6
|
+
desc 'Set up a Spree installation with dummy authentication for testing. Creates a separate spree_admin_users table.'
|
|
7
|
+
|
|
8
|
+
def self.source_paths
|
|
9
|
+
paths = superclass.source_paths
|
|
10
|
+
paths << File.expand_path('templates', __dir__)
|
|
11
|
+
paths.flatten
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def create_authentication_helpers
|
|
15
|
+
template 'authentication_helpers.rb.tt', 'lib/spree/authentication_helpers.rb'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def configure_authentication_helpers
|
|
19
|
+
file_action = File.exist?('config/initializers/spree.rb') ? :append_file : :create_file
|
|
20
|
+
send(file_action, 'config/initializers/spree.rb') do
|
|
21
|
+
<<~RUBY
|
|
22
|
+
|
|
23
|
+
Rails.application.config.to_prepare do
|
|
24
|
+
require_dependency 'spree/authentication_helpers'
|
|
25
|
+
end
|
|
26
|
+
RUBY
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def create_admin_users_migration
|
|
31
|
+
# Use a fixed early timestamp (20210913) to ensure this migration runs BEFORE
|
|
32
|
+
# any Spree core migrations that reference spree_admin_users table.
|
|
33
|
+
# The earliest such migration is 20250122113708_add_first_and_last_name_to_spree_admin_class.rb
|
|
34
|
+
# We use a timestamp before the main Spree migration (20210914000000_spree_four_three.rb)
|
|
35
|
+
migration_file = File.join('db', 'migrate', '20210913000000_create_spree_admin_users.rb')
|
|
36
|
+
|
|
37
|
+
# Skip if migration already exists
|
|
38
|
+
return if File.exist?(migration_file) || migration_exists?('create_spree_admin_users')
|
|
39
|
+
|
|
40
|
+
template 'create_spree_admin_users.rb.tt', migration_file
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def migration_exists?(name)
|
|
46
|
+
Dir.glob(File.join('db', 'migrate', "*_#{name}.rb")).any?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def migration_version
|
|
50
|
+
"[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Dummy authentication helpers for testing purposes.
|
|
2
|
+
# These provide stub implementations that don't require actual routes.
|
|
3
|
+
module Spree
|
|
4
|
+
module AuthenticationHelpers
|
|
5
|
+
def self.included(receiver)
|
|
6
|
+
receiver.helper_method(
|
|
7
|
+
:spree_current_user,
|
|
8
|
+
:spree_login_path,
|
|
9
|
+
:spree_signup_path,
|
|
10
|
+
:spree_logout_path,
|
|
11
|
+
:spree_forgot_password_path,
|
|
12
|
+
:spree_edit_password_path,
|
|
13
|
+
:spree_admin_login_path,
|
|
14
|
+
:spree_admin_logout_path
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def spree_current_user
|
|
19
|
+
@spree_current_user
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def spree_login_path(_opts = {})
|
|
23
|
+
'/login'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def spree_signup_path(_opts = {})
|
|
27
|
+
'/signup'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def spree_logout_path(_opts = {})
|
|
31
|
+
'/logout'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def spree_forgot_password_path(_opts = {})
|
|
35
|
+
'/forgot_password'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def spree_edit_password_path(_opts = {})
|
|
39
|
+
'/edit_password'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def spree_admin_login_path(_opts = {})
|
|
43
|
+
'/admin/login'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def spree_admin_logout_path(_opts = {})
|
|
47
|
+
'/admin/logout'
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
ApplicationController.include Spree::AuthenticationHelpers if defined?(ApplicationController)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
class CreateSpreeAdminUsers < ActiveRecord::Migration<%= migration_version %>
|
|
2
|
+
def change
|
|
3
|
+
create_table :spree_admin_users do |t|
|
|
4
|
+
t.string :encrypted_password, limit: 128
|
|
5
|
+
t.string :password_salt, limit: 128
|
|
6
|
+
t.string :email
|
|
7
|
+
t.string :remember_token
|
|
8
|
+
t.string :persistence_token
|
|
9
|
+
t.string :reset_password_token
|
|
10
|
+
t.string :perishable_token
|
|
11
|
+
t.integer :sign_in_count, default: 0, null: false
|
|
12
|
+
t.integer :failed_attempts, default: 0, null: false
|
|
13
|
+
t.datetime :last_request_at
|
|
14
|
+
t.datetime :current_sign_in_at
|
|
15
|
+
t.datetime :last_sign_in_at
|
|
16
|
+
t.string :current_sign_in_ip
|
|
17
|
+
t.string :last_sign_in_ip
|
|
18
|
+
t.string :login
|
|
19
|
+
t.string :authentication_token
|
|
20
|
+
t.string :unlock_token
|
|
21
|
+
t.datetime :locked_at
|
|
22
|
+
t.datetime :remember_created_at
|
|
23
|
+
t.datetime :reset_password_sent_at
|
|
24
|
+
t.string :first_name
|
|
25
|
+
t.string :last_name
|
|
26
|
+
t.string :selected_locale
|
|
27
|
+
|
|
28
|
+
t.timestamps
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
add_index :spree_admin_users, :email, unique: true
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -77,9 +77,7 @@ class Spree::Product < Spree.base_class
|
|
|
77
77
|
include Spree::Metafields
|
|
78
78
|
|
|
79
79
|
has_many :variants, class_name: 'Spree::Variant', dependent: :destroy
|
|
80
|
-
|
|
81
|
-
has_many :properties, through: :product_properties, source: :property
|
|
82
|
-
|
|
80
|
+
|
|
83
81
|
scope :available, -> { where(available_on: ..Time.current) }
|
|
84
82
|
|
|
85
83
|
validates :name, presence: true
|
|
@@ -4,7 +4,7 @@ require 'spree/core/version'
|
|
|
4
4
|
|
|
5
5
|
module Spree
|
|
6
6
|
class DummyGenerator < Rails::Generators::Base
|
|
7
|
-
SPREE_GEMS = %w(spree_admin
|
|
7
|
+
SPREE_GEMS = %w(spree_admin spree_api spree_emails).freeze
|
|
8
8
|
|
|
9
9
|
desc 'Creates blank Rails application, installs Spree and all sample data'
|
|
10
10
|
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
# a.get :color
|
|
16
16
|
# a.preferred_color
|
|
17
17
|
#
|
|
18
|
-
require 'spree/core/search/base'
|
|
19
18
|
require 'spree/core/preferences/configuration' # for compatibility reasons
|
|
20
19
|
require 'spree/core/preferences/runtime_configuration'
|
|
21
20
|
require 'spree/core/preferences/preferable'
|
|
@@ -40,6 +39,7 @@ module Spree
|
|
|
40
39
|
preference :company, :boolean, default: false, deprecated: 'Use the company_field_enabled preference in the Spree::Store model' # Request company field for billing and shipping addr
|
|
41
40
|
preference :currency, :string, default: 'USD', deprecated: true
|
|
42
41
|
preference :credit_to_new_allocation, :boolean, default: false
|
|
42
|
+
preference :disable_migration_check, :boolean, default: false # when turned on disables the startup warning about missing engine migrations
|
|
43
43
|
preference :disable_sku_validation, :boolean, default: false # when turned off disables the built-in SKU uniqueness validation
|
|
44
44
|
preference :disable_store_presence_validation, :boolean, default: false # when turned off disables Store presence validation for Products and Payment Methods
|
|
45
45
|
preference :events_log_enabled, :boolean, default: true # Log all Spree events to Rails logger
|
|
@@ -82,7 +82,6 @@ module Spree
|
|
|
82
82
|
preference :mailer_logo, :string, deprecated: true
|
|
83
83
|
preference :max_level_in_taxons_menu, :integer, deprecated: true
|
|
84
84
|
preference :non_expiring_credit_types, :array, default: []
|
|
85
|
-
preference :product_properties_enabled, :boolean, default: false # enable legacy product properties
|
|
86
85
|
preference :products_per_page, :integer, default: 12
|
|
87
86
|
preference :require_master_price, :boolean, default: false
|
|
88
87
|
preference :restock_inventory, :boolean, default: true # Determines if a return item is restocked automatically once it has been received
|
|
@@ -111,7 +110,6 @@ module Spree
|
|
|
111
110
|
preference :gift_card_batch_web_limit, :integer, default: 500 # number of gift card codes to be generated in the web process, more than this will be generated in a background job
|
|
112
111
|
preference :gift_card_batch_limit, :integer, default: 50_000
|
|
113
112
|
|
|
114
|
-
attr_writer :searcher_class
|
|
115
113
|
end
|
|
116
114
|
end
|
|
117
115
|
end
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Core
|
|
3
3
|
module ControllerHelpers
|
|
4
|
+
# @deprecated This module is deprecated and will be removed in Spree 5.5.
|
|
4
5
|
module Common
|
|
6
|
+
def self.included(base)
|
|
7
|
+
Spree::Deprecation.warn(
|
|
8
|
+
'Spree::Core::ControllerHelpers::Common is deprecated and will be removed in Spree 5.5.'
|
|
9
|
+
)
|
|
10
|
+
end
|
|
5
11
|
end
|
|
6
12
|
end
|
|
7
13
|
end
|
|
@@ -39,8 +39,13 @@ module Spree
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
# Returns the list of supported currencies for all stores.
|
|
42
|
+
# @deprecated This method will be removed in Spree 5.5.
|
|
42
43
|
# @return [Array<String>] the list of supported currencies, eg. `["USD", "EUR"]`
|
|
43
44
|
def supported_currencies_for_all_stores
|
|
45
|
+
Spree::Deprecation.warn(
|
|
46
|
+
'supported_currencies_for_all_stores is deprecated and will be removed in Spree 5.5.'
|
|
47
|
+
)
|
|
48
|
+
|
|
44
49
|
@supported_currencies_for_all_stores ||= begin
|
|
45
50
|
(
|
|
46
51
|
Spree::Store.pluck(:supported_currencies).map { |c| c&.split(',') }.flatten + Spree::Store.pluck(:default_currency)
|
|
@@ -15,8 +15,12 @@ module Spree
|
|
|
15
15
|
@order_token ||= cookies.signed[:token] || params[:order_token]
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
# @deprecated Use `current_order` instead. This method will be removed in Spree 5.5.
|
|
19
19
|
def simple_current_order
|
|
20
|
+
Spree::Deprecation.warn(
|
|
21
|
+
'simple_current_order is deprecated and will be removed in Spree 5.5. Use current_order instead.'
|
|
22
|
+
)
|
|
23
|
+
|
|
20
24
|
return @simple_current_order if @simple_current_order
|
|
21
25
|
|
|
22
26
|
@simple_current_order = find_order_by_token_or_user
|
|
@@ -61,7 +61,7 @@ module Spree
|
|
|
61
61
|
|
|
62
62
|
def current_tax_zone
|
|
63
63
|
@current_tax_zone ||= begin
|
|
64
|
-
zone = @current_order&.tax_zone || Spree::Zone.default_tax
|
|
64
|
+
zone = @current_order&.tax_zone || Spree::Zone.default_tax
|
|
65
65
|
Spree::Current.zone = zone
|
|
66
66
|
zone
|
|
67
67
|
end
|
|
@@ -34,8 +34,7 @@ module Spree
|
|
|
34
34
|
def permitted_product_attributes
|
|
35
35
|
permitted_attributes.product_attributes + [
|
|
36
36
|
variants_attributes: permitted_variant_attributes + ['id', :_destroy],
|
|
37
|
-
master_attributes: permitted_variant_attributes + ['id']
|
|
38
|
-
product_properties_attributes: permitted_product_properties_attributes + ['id', :_destroy]
|
|
37
|
+
master_attributes: permitted_variant_attributes + ['id']
|
|
39
38
|
]
|
|
40
39
|
end
|
|
41
40
|
|
|
@@ -56,9 +56,8 @@ module Spree
|
|
|
56
56
|
# sorter
|
|
57
57
|
collection_sorter: 'Spree::BaseSorter',
|
|
58
58
|
order_sorter: 'Spree::BaseSorter',
|
|
59
|
+
posts_sorter: nil,
|
|
59
60
|
products_sorter: 'Spree::Products::Sort',
|
|
60
|
-
posts_sorter: 'Spree::Posts::Sort',
|
|
61
|
-
|
|
62
61
|
# paginator
|
|
63
62
|
collection_paginator: 'Spree::Shared::Paginate',
|
|
64
63
|
|
|
@@ -87,24 +86,17 @@ module Spree
|
|
|
87
86
|
|
|
88
87
|
payment_create_service: 'Spree::Payments::Create',
|
|
89
88
|
|
|
90
|
-
# data feeds
|
|
91
|
-
data_feeds_google_rss_service: 'Spree::DataFeeds::Google::Rss',
|
|
92
|
-
data_feeds_google_optional_attributes_service: 'Spree::DataFeeds::Google::OptionalAttributes',
|
|
93
|
-
data_feeds_google_required_attributes_service: 'Spree::DataFeeds::Google::RequiredAttributes',
|
|
94
|
-
data_feeds_google_optional_sub_attributes_service: 'Spree::DataFeeds::Google::OptionalSubAttributes',
|
|
95
|
-
data_feeds_google_products_list: 'Spree::DataFeeds::Google::ProductsList',
|
|
96
|
-
|
|
97
89
|
# finders
|
|
98
90
|
address_finder: 'Spree::Addresses::Find',
|
|
99
91
|
country_finder: 'Spree::Countries::Find',
|
|
100
92
|
cms_page_finder: nil, # LEGACY
|
|
101
93
|
menu_finder: nil, # LEGACY
|
|
102
94
|
current_order_finder: 'Spree::Orders::FindCurrent',
|
|
103
|
-
current_store_finder: 'Spree::Stores::
|
|
95
|
+
current_store_finder: 'Spree::Stores::FindDefault',
|
|
104
96
|
completed_order_finder: 'Spree::Orders::FindComplete',
|
|
105
97
|
credit_card_finder: 'Spree::CreditCards::Find',
|
|
98
|
+
posts_finder: nil,
|
|
106
99
|
products_finder: 'Spree::Products::Find',
|
|
107
|
-
posts_finder: 'Spree::Posts::Find',
|
|
108
100
|
taxon_finder: 'Spree::Taxons::Find',
|
|
109
101
|
line_item_by_variant_finder: 'Spree::LineItems::FindByVariant',
|
|
110
102
|
variant_finder: 'Spree::Variants::Find'
|
data/lib/spree/core/engine.rb
CHANGED
|
@@ -14,7 +14,6 @@ module Spree
|
|
|
14
14
|
:promotions,
|
|
15
15
|
:pricing,
|
|
16
16
|
:line_item_comparison_hooks,
|
|
17
|
-
:data_feed_types,
|
|
18
17
|
:export_types,
|
|
19
18
|
:import_types,
|
|
20
19
|
:taxon_rules,
|
|
@@ -29,7 +28,9 @@ module Spree
|
|
|
29
28
|
:analytics_events,
|
|
30
29
|
:analytics_event_handlers,
|
|
31
30
|
:integrations,
|
|
32
|
-
:subscribers
|
|
31
|
+
:subscribers,
|
|
32
|
+
:store_authentication_strategies,
|
|
33
|
+
:admin_authentication_strategies)
|
|
33
34
|
SpreeCalculators = Struct.new(:shipping_methods, :tax_rates, :promotion_actions_create_adjustments, :promotion_actions_create_item_adjustments)
|
|
34
35
|
PromoEnvironment = Struct.new(:rules, :actions)
|
|
35
36
|
PricingEnvironment = Struct.new(:rules)
|
|
@@ -41,10 +42,6 @@ module Spree
|
|
|
41
42
|
# Add app/subscribers to autoload paths
|
|
42
43
|
config.paths.add 'app/subscribers', eager_load: true
|
|
43
44
|
|
|
44
|
-
rake_tasks do
|
|
45
|
-
load File.join(root, 'lib', 'tasks', 'exchanges.rake')
|
|
46
|
-
end
|
|
47
|
-
|
|
48
45
|
initializer 'spree.environment', before: :load_config_initializers do |app|
|
|
49
46
|
app.config.spree = Environment.new(SpreeCalculators.new, SpreeValidators.new, Spree::Core::Configuration.new, Spree::Core::Dependencies.new)
|
|
50
47
|
|
|
@@ -125,7 +122,6 @@ module Spree
|
|
|
125
122
|
|
|
126
123
|
Rails.application.config.spree.payment_methods = [
|
|
127
124
|
Spree::Gateway::Bogus,
|
|
128
|
-
Spree::Gateway::BogusSimple,
|
|
129
125
|
Spree::Gateway::CustomPaymentSourceMethod,
|
|
130
126
|
Spree::PaymentMethod::Check,
|
|
131
127
|
Spree::PaymentMethod::StoreCredit
|
|
@@ -166,6 +162,7 @@ module Spree
|
|
|
166
162
|
|
|
167
163
|
Rails.application.config.spree.pricing.rules.concat [
|
|
168
164
|
Spree::PriceRules::ZoneRule,
|
|
165
|
+
Spree::PriceRules::MarketRule,
|
|
169
166
|
Spree::PriceRules::UserRule,
|
|
170
167
|
Spree::PriceRules::CustomerGroupRule,
|
|
171
168
|
Spree::PriceRules::VolumeRule
|
|
@@ -178,10 +175,6 @@ module Spree
|
|
|
178
175
|
Promotion::Actions::FreeShipping
|
|
179
176
|
]
|
|
180
177
|
|
|
181
|
-
Rails.application.config.spree.data_feed_types = [
|
|
182
|
-
Spree::DataFeed::Google
|
|
183
|
-
]
|
|
184
|
-
|
|
185
178
|
Rails.application.config.spree.export_types = [
|
|
186
179
|
Spree::Exports::Products,
|
|
187
180
|
Spree::Exports::Orders,
|
|
@@ -192,6 +185,7 @@ module Spree
|
|
|
192
185
|
|
|
193
186
|
Rails.application.config.spree.import_types = [
|
|
194
187
|
Spree::Imports::Products,
|
|
188
|
+
Spree::Imports::Customers,
|
|
195
189
|
]
|
|
196
190
|
|
|
197
191
|
Rails.application.config.spree.taxon_rules = [
|
|
@@ -208,7 +202,6 @@ module Spree
|
|
|
208
202
|
Rails.application.config.spree.translatable_resources = [
|
|
209
203
|
Spree::OptionType,
|
|
210
204
|
Spree::Product,
|
|
211
|
-
Spree::Property,
|
|
212
205
|
Spree::Taxon,
|
|
213
206
|
Spree::Taxonomy,
|
|
214
207
|
Spree::Store,
|
|
@@ -228,7 +221,6 @@ module Spree
|
|
|
228
221
|
Spree::Address,
|
|
229
222
|
Spree::Asset,
|
|
230
223
|
Spree::CreditCard,
|
|
231
|
-
Spree::CustomDomain,
|
|
232
224
|
Spree::CustomerReturn,
|
|
233
225
|
Spree::GiftCard,
|
|
234
226
|
Spree::Image,
|
|
@@ -240,8 +232,6 @@ module Spree
|
|
|
240
232
|
Spree::Payment,
|
|
241
233
|
Spree::PaymentMethod,
|
|
242
234
|
Spree::PaymentSource,
|
|
243
|
-
Spree::Post,
|
|
244
|
-
Spree::PostCategory,
|
|
245
235
|
Spree::Product,
|
|
246
236
|
Spree::Promotion,
|
|
247
237
|
Spree::Refund,
|
|
@@ -304,6 +294,14 @@ module Spree
|
|
|
304
294
|
Spree::InvitationEmailSubscriber,
|
|
305
295
|
Spree::ProductMetricsSubscriber
|
|
306
296
|
]
|
|
297
|
+
|
|
298
|
+
# Pre-load authentication strategy classes to avoid reflection at request time
|
|
299
|
+
Rails.application.config.spree.store_authentication_strategies = {
|
|
300
|
+
email: Spree::Authentication::Strategies::EmailPasswordStrategy
|
|
301
|
+
}
|
|
302
|
+
Rails.application.config.spree.admin_authentication_strategies = {
|
|
303
|
+
email: Spree::Authentication::Strategies::EmailPasswordStrategy
|
|
304
|
+
}
|
|
307
305
|
end
|
|
308
306
|
|
|
309
307
|
initializer 'spree.promo.register.promotions.actions' do |app|
|
|
@@ -322,8 +320,10 @@ module Spree
|
|
|
322
320
|
]
|
|
323
321
|
end
|
|
324
322
|
|
|
325
|
-
initializer 'spree.core.checking_migrations' do
|
|
326
|
-
|
|
323
|
+
initializer 'spree.core.checking_migrations' do |app|
|
|
324
|
+
app.config.after_initialize do
|
|
325
|
+
Migrations.new(config, engine_name).check unless Rails.env.test? || Spree::Config.disable_migration_check
|
|
326
|
+
end
|
|
327
327
|
end
|
|
328
328
|
|
|
329
329
|
initializer 'spree.core.assets' do |app|
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
module Spree
|
|
2
2
|
module Pricing
|
|
3
3
|
class Context
|
|
4
|
-
attr_reader :variant, :currency, :store, :zone, :user, :quantity, :date, :order
|
|
4
|
+
attr_reader :variant, :currency, :store, :zone, :market, :user, :quantity, :date, :order
|
|
5
5
|
|
|
6
6
|
# Initializes the context
|
|
7
7
|
# @param variant [Spree::Variant]
|
|
8
8
|
# @param currency [String]
|
|
9
9
|
# @param store [Spree::Store]
|
|
10
10
|
# @param zone [Spree::Zone]
|
|
11
|
+
# @param market [Spree::Market]
|
|
11
12
|
# @param user [Spree::User]
|
|
12
13
|
# @param quantity [Integer]
|
|
13
14
|
# @param date [Time]
|
|
14
15
|
# @param order [Spree::Order]
|
|
15
|
-
def initialize(variant: nil, currency:, store: nil, zone: nil, user: nil, quantity: nil, date: nil, order: nil)
|
|
16
|
+
def initialize(variant: nil, currency:, store: nil, zone: nil, market: nil, user: nil, quantity: nil, date: nil, order: nil)
|
|
16
17
|
@variant = variant
|
|
17
18
|
@currency = currency
|
|
18
19
|
@store = store || Spree::Current.store
|
|
19
20
|
@zone = zone || Spree::Current.zone
|
|
21
|
+
@market = market || Spree::Current.market
|
|
20
22
|
@user = user
|
|
21
23
|
@quantity = quantity
|
|
22
24
|
@date = date || Time.current
|
|
@@ -36,7 +38,7 @@ module Spree
|
|
|
36
38
|
variant: variant,
|
|
37
39
|
currency: order.currency,
|
|
38
40
|
store: order.store,
|
|
39
|
-
zone: order.tax_zone ||
|
|
41
|
+
zone: order.tax_zone || Spree::Zone.default_tax,
|
|
40
42
|
user: order.user,
|
|
41
43
|
quantity: quantity || order.line_items.find_by(variant: variant)&.quantity,
|
|
42
44
|
order: order
|
|
@@ -53,6 +55,7 @@ module Spree
|
|
|
53
55
|
currency,
|
|
54
56
|
store&.id,
|
|
55
57
|
zone&.id,
|
|
58
|
+
market&.id,
|
|
56
59
|
user&.id,
|
|
57
60
|
quantity,
|
|
58
61
|
date&.to_i
|
|
@@ -12,9 +12,7 @@ module Spree
|
|
|
12
12
|
# Returns the best price for the variant
|
|
13
13
|
# @return [Spree::Price]
|
|
14
14
|
def resolve
|
|
15
|
-
|
|
16
|
-
find_best_price
|
|
17
|
-
end
|
|
15
|
+
find_best_price
|
|
18
16
|
end
|
|
19
17
|
|
|
20
18
|
private
|
|
@@ -118,12 +116,6 @@ module Spree
|
|
|
118
116
|
price_list_id: nil
|
|
119
117
|
)
|
|
120
118
|
end
|
|
121
|
-
|
|
122
|
-
# Returns the cache key for the resolver
|
|
123
|
-
# @return [String]
|
|
124
|
-
def cache_key
|
|
125
|
-
"#{context.cache_key}/resolved_price"
|
|
126
|
-
end
|
|
127
119
|
end
|
|
128
120
|
end
|
|
129
121
|
end
|
data/lib/spree/core/version.rb
CHANGED