solidus_core 2.9.5 → 2.10.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of solidus_core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/helpers/spree/base_helper.rb +4 -4
- data/app/helpers/spree/products_helper.rb +2 -1
- data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
- data/app/models/concerns/spree/user_address_book.rb +2 -2
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/spree/address.rb +13 -17
- data/app/models/spree/adjustment.rb +20 -9
- data/app/models/spree/asset.rb +1 -1
- data/app/models/spree/base.rb +0 -2
- data/app/models/spree/calculator.rb +1 -1
- data/app/models/spree/calculator/price_sack.rb +1 -1
- data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
- data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
- data/app/models/spree/calculator/tiered_percent.rb +6 -6
- data/app/models/spree/carton.rb +3 -3
- data/app/models/spree/classification.rb +2 -2
- data/app/models/spree/credit_card.rb +4 -4
- data/app/models/spree/customer_return.rb +1 -1
- data/app/models/spree/image/paperclip_attachment.rb +1 -1
- data/app/models/spree/inventory_unit.rb +5 -23
- data/app/models/spree/line_item.rb +4 -4
- data/app/models/spree/line_item_action.rb +2 -2
- data/app/models/spree/log_entry.rb +1 -1
- data/app/models/spree/option_value.rb +1 -1
- data/app/models/spree/option_values_variant.rb +2 -2
- data/app/models/spree/order.rb +11 -27
- data/app/models/spree/order/checkout.rb +1 -1
- data/app/models/spree/order/payments.rb +2 -2
- data/app/models/spree/order_cancellations.rb +1 -1
- data/app/models/spree/order_capturing.rb +2 -2
- data/app/models/spree/order_contents.rb +2 -2
- data/app/models/spree/order_mutex.rb +1 -1
- data/app/models/spree/order_promotion.rb +3 -3
- data/app/models/spree/order_shipping.rb +1 -1
- data/app/models/spree/order_taxation.rb +3 -3
- data/app/models/spree/payment.rb +8 -45
- data/app/models/spree/payment/processing.rb +3 -3
- data/app/models/spree/payment_capture_event.rb +1 -1
- data/app/models/spree/payment_method.rb +5 -2
- data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
- data/app/models/spree/payment_source.rb +1 -1
- data/app/models/spree/price.rb +2 -2
- data/app/models/spree/product.rb +5 -5
- data/app/models/spree/product/scopes.rb +218 -210
- data/app/models/spree/product_option_type.rb +2 -2
- data/app/models/spree/product_promotion_rule.rb +2 -2
- data/app/models/spree/product_property.rb +2 -2
- data/app/models/spree/promotion.rb +28 -13
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
- data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
- data/app/models/spree/promotion/rules/option_value.rb +2 -2
- data/app/models/spree/promotion/rules/product.rb +3 -3
- data/app/models/spree/promotion_action.rb +2 -2
- data/app/models/spree/promotion_chooser.rb +2 -2
- data/app/models/spree/promotion_code.rb +11 -10
- data/app/models/spree/promotion_code/batch_builder.rb +3 -3
- data/app/models/spree/promotion_code_batch.rb +1 -1
- data/app/models/spree/promotion_rule.rb +2 -2
- data/app/models/spree/promotion_rule_role.rb +2 -2
- data/app/models/spree/promotion_rule_store.rb +2 -2
- data/app/models/spree/promotion_rule_taxon.rb +2 -2
- data/app/models/spree/promotion_rule_user.rb +2 -2
- data/app/models/spree/refund.rb +5 -5
- data/app/models/spree/reimbursement.rb +5 -13
- data/app/models/spree/reimbursement/credit.rb +2 -2
- data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
- data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +2 -2
- data/app/models/spree/return_authorization.rb +4 -10
- data/app/models/spree/return_item.rb +13 -52
- data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
- data/app/models/spree/role_user.rb +2 -2
- data/app/models/spree/shipment.rb +7 -41
- data/app/models/spree/shipping_calculator.rb +0 -4
- data/app/models/spree/shipping_manifest.rb +3 -3
- data/app/models/spree/shipping_method.rb +2 -2
- data/app/models/spree/shipping_method_category.rb +2 -2
- data/app/models/spree/shipping_method_stock_location.rb +2 -2
- data/app/models/spree/shipping_method_zone.rb +2 -2
- data/app/models/spree/shipping_rate.rb +2 -2
- data/app/models/spree/shipping_rate_tax.rb +2 -2
- data/app/models/spree/state.rb +2 -2
- data/app/models/spree/state_change.rb +2 -2
- data/app/models/spree/stock/differentiator.rb +1 -1
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock_item.rb +3 -3
- data/app/models/spree/stock_location.rb +2 -2
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/stock_quantities.rb +13 -12
- data/app/models/spree/store_credit.rb +8 -8
- data/app/models/spree/store_credit_event.rb +3 -3
- data/app/models/spree/store_payment_method.rb +2 -2
- data/app/models/spree/store_shipping_method.rb +2 -2
- data/app/models/spree/tax_calculator/default.rb +0 -4
- data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
- data/app/models/spree/tax_rate.rb +5 -1
- data/app/models/spree/tax_rate_tax_category.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
- data/app/models/spree/unit_cancel.rb +5 -2
- data/app/models/spree/user_address.rb +2 -2
- data/app/models/spree/user_last_url_storer.rb +46 -0
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
- data/app/models/spree/user_stock_location.rb +2 -2
- data/app/models/spree/variant.rb +10 -10
- data/app/models/spree/variant/scopes.rb +37 -29
- data/app/models/spree/variant_property_rule.rb +1 -1
- data/app/models/spree/variant_property_rule_condition.rb +2 -2
- data/app/models/spree/variant_property_rule_value.rb +2 -2
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +1 -1
- data/app/models/spree/wallet_payment_source.rb +2 -2
- data/app/models/spree/zone.rb +1 -1
- data/app/models/spree/zone_member.rb +2 -2
- data/config/initializers/inflections.rb +5 -0
- data/config/initializers/money.rb +2 -0
- data/config/locales/en.yml +34 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
- data/lib/generators/spree/install/templates/config/initializers/spree.rb.tt +8 -0
- data/lib/spree/app_configuration.rb +18 -3
- data/lib/spree/core.rb +12 -0
- data/lib/spree/core/controller_helpers/auth.rb +1 -13
- data/lib/spree/core/controller_helpers/strong_parameters.rb +21 -7
- data/lib/spree/core/engine.rb +2 -2
- data/lib/spree/core/importer/order.rb +29 -28
- data/lib/spree/core/importer/product.rb +2 -2
- data/lib/spree/core/product_filters.rb +15 -15
- data/lib/spree/core/role_configuration.rb +2 -2
- data/lib/spree/core/search/variant.rb +1 -1
- data/lib/spree/core/state_machines.rb +78 -0
- data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
- data/lib/spree/core/state_machines/payment.rb +61 -0
- data/lib/spree/core/state_machines/reimbursement.rb +33 -0
- data/lib/spree/core/state_machines/return_authorization.rb +32 -0
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/lib/spree/core/state_machines/shipment.rb +58 -0
- data/lib/spree/core/stock_configuration.rb +1 -0
- data/lib/spree/core/validators/email.rb +1 -8
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/money.rb +2 -2
- data/lib/spree/permission_sets/default_customer.rb +1 -1
- data/lib/spree/permission_sets/user_management.rb +3 -0
- data/lib/spree/permitted_attributes.rb +78 -9
- data/lib/spree/preferences/static_model_preferences.rb +2 -2
- data/lib/spree/testing_support/dummy_app.rb +4 -1
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -2
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +7 -0
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +4 -1
- data/solidus_core.gemspec +6 -6
- data/spec/lib/search/base_spec.rb +5 -1
- data/spec/lib/search/variant_spec.rb +1 -1
- data/spec/lib/spree/core/controller_helpers/strong_parameters_spec.rb +8 -1
- data/spec/lib/spree/core/stock_configuration_spec.rb +36 -0
- data/spec/lib/spree/core/validators/email_spec.rb +18 -18
- data/spec/lib/spree/event_spec.rb +15 -3
- data/spec/lib/spree/permitted_attributes_spec.rb +41 -0
- data/spec/models/spree/ability_spec.rb +1 -1
- data/spec/models/spree/address_spec.rb +23 -0
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +2 -2
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +24 -15
- data/spec/models/spree/carton_spec.rb +10 -2
- data/spec/models/spree/classification_spec.rb +21 -9
- data/spec/models/spree/concerns/user_address_book_spec.rb +4 -4
- data/spec/models/spree/concerns/user_methods_spec.rb +5 -4
- data/spec/models/spree/credit_card_spec.rb +2 -2
- data/spec/models/spree/customer_return_spec.rb +1 -1
- data/spec/models/spree/order/checkout_spec.rb +1 -1
- data/spec/models/spree/order/outstanding_balance_integration_spec.rb +5 -5
- data/spec/models/spree/order/payment_spec.rb +1 -1
- data/spec/models/spree/order_contents_spec.rb +1 -1
- data/spec/models/spree/order_inventory_spec.rb +3 -3
- data/spec/models/spree/order_merger_spec.rb +3 -3
- data/spec/models/spree/order_shipping_spec.rb +1 -1
- data/spec/models/spree/order_spec.rb +14 -21
- data/spec/models/spree/order_updater_spec.rb +4 -3
- data/spec/models/spree/payment_create_spec.rb +6 -16
- data/spec/models/spree/payment_spec.rb +12 -12
- data/spec/models/spree/permission_sets/user_management_spec.rb +2 -0
- data/spec/models/spree/preference_spec.rb +4 -4
- data/spec/models/spree/preferences/preferable_spec.rb +3 -3
- data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -2
- data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +2 -2
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +2 -2
- data/spec/models/spree/promotion/rules/taxon_spec.rb +1 -0
- data/spec/models/spree/promotion_rule_spec.rb +6 -6
- data/spec/models/spree/promotion_spec.rb +71 -54
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +3 -3
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +1 -1
- data/spec/models/spree/return_item_spec.rb +11 -11
- data/spec/models/spree/returns_calculator_spec.rb +2 -2
- data/spec/models/spree/shipment_spec.rb +6 -6
- data/spec/models/spree/shipping_calculator_spec.rb +1 -13
- data/spec/models/spree/shipping_method_spec.rb +32 -0
- data/spec/models/spree/stock/availability_validator_spec.rb +2 -2
- data/spec/models/spree/stock/differentiator_spec.rb +2 -2
- data/spec/models/spree/stock/estimator_spec.rb +3 -3
- data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +4 -4
- data/spec/models/spree/stock/package_spec.rb +28 -28
- data/spec/models/spree/stock/quantifier_spec.rb +2 -2
- data/spec/models/spree/stock/simple_coordinator_spec.rb +11 -11
- data/spec/models/spree/stock/splitter/base_spec.rb +4 -4
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +7 -7
- data/spec/models/spree/stock_quantities_spec.rb +1 -1
- data/spec/models/spree/store_credit_spec.rb +8 -8
- data/spec/models/spree/tax_category_spec.rb +1 -1
- data/spec/models/spree/tax_rate_spec.rb +1 -0
- data/spec/models/spree/taxon_spec.rb +2 -2
- data/spec/models/spree/taxons/paperclip_attachment_spec.rb +29 -0
- data/spec/models/spree/unit_cancel_spec.rb +5 -0
- data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +31 -0
- data/spec/models/spree/user_last_url_storer_spec.rb +60 -0
- data/spec/models/spree/user_spec.rb +3 -3
- metadata +46 -39
- data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -148
- data/spec/models/spree/order/updating_spec.rb +0 -18
@@ -19,7 +19,7 @@ class Spree::Wallet::AddPaymentSourcesToWallet
|
|
19
19
|
sources = payments.map(&:source).
|
20
20
|
uniq.
|
21
21
|
compact.
|
22
|
-
select { |
|
22
|
+
select { |payment| payment.try(:reusable?) }
|
23
23
|
|
24
24
|
# add valid sources to wallet and optionally set a default
|
25
25
|
if sources.any?
|
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
module Spree
|
4
4
|
class WalletPaymentSource < Spree::Base
|
5
|
-
belongs_to :user, class_name: Spree::UserClassHandle.new, foreign_key: 'user_id', inverse_of: :wallet_payment_sources
|
6
|
-
belongs_to :payment_source, polymorphic: true, inverse_of: :wallet_payment_sources
|
5
|
+
belongs_to :user, class_name: Spree::UserClassHandle.new, foreign_key: 'user_id', inverse_of: :wallet_payment_sources, optional: true
|
6
|
+
belongs_to :payment_source, polymorphic: true, inverse_of: :wallet_payment_sources, optional: true
|
7
7
|
|
8
8
|
validates_presence_of :user
|
9
9
|
validates_presence_of :payment_source
|
data/app/models/spree/zone.rb
CHANGED
@@ -40,7 +40,7 @@ module Spree
|
|
40
40
|
end
|
41
41
|
|
42
42
|
alias :members :zone_members
|
43
|
-
accepts_nested_attributes_for :zone_members, allow_destroy: true, reject_if: proc { |
|
43
|
+
accepts_nested_attributes_for :zone_members, allow_destroy: true, reject_if: proc { |member| member['zoneable_id'].blank? }
|
44
44
|
|
45
45
|
self.whitelisted_ransackable_attributes = %w[name description]
|
46
46
|
|
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
module Spree
|
4
4
|
class ZoneMember < Spree::Base
|
5
|
-
belongs_to :zone, class_name: 'Spree::Zone', counter_cache: true, inverse_of: :zone_members
|
6
|
-
belongs_to :zoneable, polymorphic: true
|
5
|
+
belongs_to :zone, class_name: 'Spree::Zone', counter_cache: true, inverse_of: :zone_members, optional: true
|
6
|
+
belongs_to :zoneable, polymorphic: true, optional: true
|
7
7
|
|
8
8
|
delegate :name, to: :zoneable, allow_nil: true
|
9
9
|
end
|
data/config/locales/en.yml
CHANGED
@@ -163,8 +163,11 @@ en:
|
|
163
163
|
type: Type
|
164
164
|
spree/price:
|
165
165
|
amount: Price
|
166
|
+
country: Country
|
166
167
|
currency: Currency
|
167
168
|
is_default: Currently Valid
|
169
|
+
price: Price
|
170
|
+
variant: Variant
|
168
171
|
spree/product:
|
169
172
|
available_on: Available On
|
170
173
|
cost_currency: Cost Currency
|
@@ -200,6 +203,7 @@ en:
|
|
200
203
|
starts_at: Start
|
201
204
|
status: Status
|
202
205
|
usage_limit: Usage Limit
|
206
|
+
uses: Uses
|
203
207
|
spree/promotion/actions/create_adjustment:
|
204
208
|
description: Creates a promotion credit adjustment on the order
|
205
209
|
spree/promotion/actions/create_item_adjustments:
|
@@ -238,7 +242,17 @@ en:
|
|
238
242
|
spree/promotion/rules/user_role:
|
239
243
|
description: Order includes User with specified Role(s)
|
240
244
|
spree/promotion_category:
|
245
|
+
code: Code
|
241
246
|
name: Name
|
247
|
+
spree/promotion_code:
|
248
|
+
value: Value
|
249
|
+
spree/promotion_code_batch:
|
250
|
+
base_code: Base code
|
251
|
+
email: Email
|
252
|
+
join_characters: Join characters
|
253
|
+
number_of_codes: Number of codes
|
254
|
+
status: Status
|
255
|
+
total_codes: Total codes
|
242
256
|
spree/property:
|
243
257
|
name: Name
|
244
258
|
presentation: Presentation
|
@@ -250,6 +264,7 @@ en:
|
|
250
264
|
active: Active
|
251
265
|
code: Code
|
252
266
|
name: Name
|
267
|
+
state: State
|
253
268
|
spree/reimbursement:
|
254
269
|
created_at: Date/Time
|
255
270
|
number: Number
|
@@ -294,6 +309,7 @@ en:
|
|
294
309
|
name: Name
|
295
310
|
spree/shipping_method:
|
296
311
|
admin_name: Internal Name
|
312
|
+
available_to_users: Available to users
|
297
313
|
carrier: Carrier
|
298
314
|
code: Code
|
299
315
|
display_on: Display
|
@@ -326,6 +342,7 @@ en:
|
|
326
342
|
phone: Phone
|
327
343
|
propagate_all_variants: Propagate All Variants
|
328
344
|
restock_inventory: Restock Inventory
|
345
|
+
state: State
|
329
346
|
state_id: State
|
330
347
|
zipcode: Zip
|
331
348
|
spree/stock_movement:
|
@@ -358,6 +375,9 @@ en:
|
|
358
375
|
action: Action
|
359
376
|
amount_remaining: Total Unused
|
360
377
|
user_total_amount: Total Amount
|
378
|
+
spree/store_credit_reason:
|
379
|
+
name: Name
|
380
|
+
state: State
|
361
381
|
spree/store_credit_update_reason:
|
362
382
|
name: Name
|
363
383
|
spree/tax_category:
|
@@ -372,6 +392,7 @@ en:
|
|
372
392
|
name: Name
|
373
393
|
show_rate_in_label: Show Rate in Label
|
374
394
|
starts_at: Start Date
|
395
|
+
tax_categories: Tax Categories
|
375
396
|
spree/taxon:
|
376
397
|
description: Description
|
377
398
|
icon: Icon
|
@@ -1065,6 +1086,7 @@ en:
|
|
1065
1086
|
cannot_create_payment_without_payment_methods_html: You cannot create a payment
|
1066
1087
|
for an order without any payment methods defined. %{link}
|
1067
1088
|
cannot_create_returns: Cannot create returns as this order has no shipped units.
|
1089
|
+
cannot_edit_orders: You may only edit your current shopping cart.
|
1068
1090
|
cannot_perform_operation: Cannot perform requested operation
|
1069
1091
|
cannot_rebuild_shipments_order_completed: Cannot rebuild shipments for a completed
|
1070
1092
|
order.
|
@@ -1350,6 +1372,14 @@ en:
|
|
1350
1372
|
hidden: hidden
|
1351
1373
|
hide_out_of_stock: Hide out of stock
|
1352
1374
|
hints:
|
1375
|
+
spree/calculator:
|
1376
|
+
tax_rates: This is used to calculate both sales tax (United States-style taxes)
|
1377
|
+
and value-added tax (VAT). Typically this calculator should be the only tax
|
1378
|
+
calculator required by your store.
|
1379
|
+
shipping_methods: This is used to calculate the shipping rates on a per order or
|
1380
|
+
per package rate.
|
1381
|
+
promotions: This is used to determine the promotional discount to be applied to an
|
1382
|
+
order, an item, or shipping charges.
|
1353
1383
|
spree/price:
|
1354
1384
|
country: 'This determines in what country the price is valid.<br/>Default:
|
1355
1385
|
Any Country'
|
@@ -1498,6 +1528,7 @@ en:
|
|
1498
1528
|
log_entries: Log Entries
|
1499
1529
|
logged_in_as: Logged in as
|
1500
1530
|
logged_in_succesfully: Logged in successfully
|
1531
|
+
logged_in_successfully: Logged in successfully
|
1501
1532
|
logged_out: You have been logged out.
|
1502
1533
|
login: Login
|
1503
1534
|
login_as_existing: Login as Existing Customer
|
@@ -1527,6 +1558,7 @@ en:
|
|
1527
1558
|
meta_title: Meta Title
|
1528
1559
|
metadata: Metadata
|
1529
1560
|
minimal_amount: Minimal Amount
|
1561
|
+
minimize_menu: Minimize Menu
|
1530
1562
|
modify_stock_count: Modify (+/-)
|
1531
1563
|
month: Month
|
1532
1564
|
more: More
|
@@ -1923,7 +1955,6 @@ en:
|
|
1923
1955
|
select: Select
|
1924
1956
|
select_a_reason: Select a reason
|
1925
1957
|
select_a_stock_location: Select a stock location
|
1926
|
-
select_stock: Select stock
|
1927
1958
|
selected_quantity_not_available: selected of %{item} is not available.
|
1928
1959
|
send_copy_of_all_mails_to: Send Copy of All Mails To
|
1929
1960
|
send_mailer: Send Mailer
|
@@ -2083,6 +2114,7 @@ en:
|
|
2083
2114
|
(i.e. if the tax rate is 5% then enter 0.05)
|
2084
2115
|
tax_rates: Tax Rates
|
2085
2116
|
taxon: Taxon
|
2117
|
+
taxon_attachment_removal_error: There was an error removing the attachment
|
2086
2118
|
taxon_edit: Edit Taxon
|
2087
2119
|
taxon_placeholder: Add a Taxon
|
2088
2120
|
taxon_rule:
|
@@ -2202,8 +2234,7 @@ en:
|
|
2202
2234
|
you_cannot_undo_action: You will not be able to undo this action
|
2203
2235
|
you_have_no_orders_yet: You have no orders yet
|
2204
2236
|
your_cart_is_empty: Your cart is empty
|
2205
|
-
your_order_is_empty_add_product: Your order is empty
|
2206
|
-
a product above
|
2237
|
+
your_order_is_empty_add_product: Your order is empty. Please add products first.
|
2207
2238
|
zip: Zip
|
2208
2239
|
zipcode: Zip Code
|
2209
2240
|
zone: Zone
|
@@ -93,3 +93,11 @@ Spree.user_class = <%= (options[:user_class].blank? ? "Spree::LegacyUser" : opti
|
|
93
93
|
# just uncomment the following code and change it as you need.
|
94
94
|
#
|
95
95
|
# Spree::Model.whitelisted_ransackable_attributes << 'field'
|
96
|
+
|
97
|
+
# Rules for avoiding to store the current path into session for redirects
|
98
|
+
# When at least one rule is matched, the request path will not be stored
|
99
|
+
# in session.
|
100
|
+
# You can add your custom rules by uncommenting this line and changing
|
101
|
+
# the class name:
|
102
|
+
#
|
103
|
+
# Spree::UserLastUrlStorer.rules << 'Spree::UserLastUrlStorer::Rules::AuthenticationRule'
|
@@ -292,6 +292,14 @@ module Spree
|
|
292
292
|
|
293
293
|
class_name_attribute :variant_search_class, default: 'Spree::Core::Search::Variant'
|
294
294
|
|
295
|
+
# Allows implementing custom vat prices generation
|
296
|
+
# @!attribute [rw] variant_vat_prices_generator_class
|
297
|
+
# @see Spree::Variant::VatPriceGenerator
|
298
|
+
# @return [Class] an object that conforms to the API of
|
299
|
+
# the standard variant vat prices generator class
|
300
|
+
# Spree::Variant::VatPriceGenerator.
|
301
|
+
class_name_attribute :variant_vat_prices_generator_class, default: 'Spree::Variant::VatPriceGenerator'
|
302
|
+
|
295
303
|
# promotion_chooser_class allows extensions to provide their own PromotionChooser
|
296
304
|
class_name_attribute :promotion_chooser_class, default: 'Spree::PromotionChooser'
|
297
305
|
|
@@ -306,7 +314,6 @@ module Spree
|
|
306
314
|
# @!attribute [rw] shipping_rate_tax_calculator_class
|
307
315
|
# @return [Class] a class with the same public interfaces as
|
308
316
|
# Spree::TaxCalculator::ShippingRate
|
309
|
-
# @api experimental
|
310
317
|
class_name_attribute :shipping_rate_tax_calculator_class, default: 'Spree::TaxCalculator::ShippingRate'
|
311
318
|
|
312
319
|
# Allows providing your own Mailer for order mailer.
|
@@ -384,7 +391,6 @@ module Spree
|
|
384
391
|
# @!attribute [rw] tax_adjuster_class
|
385
392
|
# @return [Class] a class with the same public interfaces as
|
386
393
|
# Spree::Tax::OrderAdjuster
|
387
|
-
# @api experimental
|
388
394
|
class_name_attribute :tax_adjuster_class, default: 'Spree::Tax::OrderAdjuster'
|
389
395
|
|
390
396
|
# Allows providing your own class for calculating taxes on an order.
|
@@ -392,7 +398,6 @@ module Spree
|
|
392
398
|
# @!attribute [rw] tax_calculator_class
|
393
399
|
# @return [Class] a class with the same public interfaces as
|
394
400
|
# Spree::TaxCalculator::Default
|
395
|
-
# @api experimental
|
396
401
|
class_name_attribute :tax_calculator_class, default: 'Spree::TaxCalculator::Default'
|
397
402
|
|
398
403
|
# Allows providing your own class for choosing which store to use.
|
@@ -454,6 +459,10 @@ module Spree
|
|
454
459
|
@order_number_generator ||= Spree::Order::NumberGenerator.new
|
455
460
|
end
|
456
461
|
|
462
|
+
def state_machines
|
463
|
+
@state_machines ||= Spree::Core::StateMachines.new
|
464
|
+
end
|
465
|
+
|
457
466
|
def static_model_preferences
|
458
467
|
@static_model_preferences ||= Spree::Preferences::StaticModelPreferences.new
|
459
468
|
end
|
@@ -473,6 +482,12 @@ module Spree
|
|
473
482
|
@events_configuration ||= Spree::Event::Configuration.new
|
474
483
|
end
|
475
484
|
|
485
|
+
def user_last_url_storer_rules
|
486
|
+
@user_last_url_storer_rules ||= ::Spree::Core::ClassConstantizer::Set.new.tap do |set|
|
487
|
+
set << 'Spree::UserLastUrlStorer::Rules::AuthenticationRule'
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
476
491
|
def environment
|
477
492
|
@environment ||= Spree::Core::Environment.new(self).tap do |env|
|
478
493
|
env.calculators.promotion_actions_create_adjustments = %w[
|
data/lib/spree/core.rb
CHANGED
@@ -53,6 +53,17 @@ module Spree
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
if Gem::Version.new(Rails.version) < Gem::Version.new('5.2')
|
57
|
+
warn <<~HEREDOC
|
58
|
+
Rails 5.1 (EOL) is deprecated and will not be supported anymore from the next Solidus version.
|
59
|
+
Please, upgrade to a more recent Rails version.
|
60
|
+
|
61
|
+
Read more on upgrading from Rails 5.1 to Rails 5.2 here:
|
62
|
+
https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-5-1-to-rails-5-2
|
63
|
+
|
64
|
+
HEREDOC
|
65
|
+
end
|
66
|
+
|
56
67
|
require 'spree/core/version'
|
57
68
|
|
58
69
|
require 'spree/core/active_merchant_dependencies'
|
@@ -85,6 +96,7 @@ require 'spree/core/controller_helpers/search'
|
|
85
96
|
require 'spree/core/controller_helpers/store'
|
86
97
|
require 'spree/core/controller_helpers/strong_parameters'
|
87
98
|
require 'spree/core/role_configuration'
|
99
|
+
require 'spree/core/state_machines'
|
88
100
|
require 'spree/core/stock_configuration'
|
89
101
|
require 'spree/core/validators/email'
|
90
102
|
require 'spree/permission_sets'
|
@@ -50,19 +50,7 @@ module Spree
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def store_location
|
53
|
-
|
54
|
-
authentication_routes = [:spree_signup_path, :spree_login_path, :spree_logout_path]
|
55
|
-
disallowed_urls = []
|
56
|
-
authentication_routes.each do |route|
|
57
|
-
if respond_to?(route)
|
58
|
-
disallowed_urls << send(route)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
disallowed_urls.map!{ |url| url[/\/\w+$/] }
|
63
|
-
unless disallowed_urls.include?(request.fullpath)
|
64
|
-
session['spree_user_return_to'] = request.fullpath.gsub('//', '/')
|
65
|
-
end
|
53
|
+
Spree::UserLastUrlStorer.new(self).store_location
|
66
54
|
end
|
67
55
|
|
68
56
|
# proxy method to *possible* spree_current_user method
|
@@ -31,16 +31,30 @@ module Spree
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def permitted_checkout_attributes
|
34
|
-
permitted_attributes.checkout_attributes
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
permitted_attributes.checkout_attributes
|
35
|
+
end
|
36
|
+
|
37
|
+
def permitted_checkout_address_attributes
|
38
|
+
permitted_attributes.checkout_address_attributes
|
39
|
+
end
|
40
|
+
|
41
|
+
def permitted_checkout_delivery_attributes
|
42
|
+
permitted_attributes.checkout_delivery_attributes
|
43
|
+
end
|
44
|
+
|
45
|
+
def permitted_checkout_payment_attributes
|
46
|
+
permitted_attributes.checkout_payment_attributes
|
47
|
+
end
|
48
|
+
|
49
|
+
def permitted_checkout_confirm_attributes
|
50
|
+
permitted_attributes.checkout_confirm_attributes
|
40
51
|
end
|
41
52
|
|
42
53
|
def permitted_order_attributes
|
43
|
-
|
54
|
+
permitted_checkout_address_attributes +
|
55
|
+
permitted_checkout_delivery_attributes +
|
56
|
+
permitted_checkout_payment_attributes +
|
57
|
+
permitted_checkout_confirm_attributes + [
|
44
58
|
line_items_attributes: permitted_line_item_attributes
|
45
59
|
]
|
46
60
|
end
|
data/lib/spree/core/engine.rb
CHANGED
@@ -11,8 +11,8 @@ module Spree
|
|
11
11
|
isolate_namespace Spree
|
12
12
|
engine_name 'spree'
|
13
13
|
|
14
|
-
config.generators do |
|
15
|
-
|
14
|
+
config.generators do |generator|
|
15
|
+
generator.test_framework :rspec
|
16
16
|
end
|
17
17
|
|
18
18
|
initializer "spree.environment", before: :load_config_initializers do |app|
|
@@ -29,7 +29,7 @@ module Spree
|
|
29
29
|
|
30
30
|
completed_at = params.delete(:completed_at)
|
31
31
|
|
32
|
-
order.
|
32
|
+
order.update!(params)
|
33
33
|
|
34
34
|
order.create_proposed_shipments unless shipments_attrs.present?
|
35
35
|
|
@@ -53,17 +53,17 @@ module Spree
|
|
53
53
|
def self.create_shipments_from_params(shipments_hash, order)
|
54
54
|
return [] unless shipments_hash
|
55
55
|
|
56
|
-
shipments_hash.each do |
|
56
|
+
shipments_hash.each do |target|
|
57
57
|
shipment = Shipment.new
|
58
|
-
shipment.tracking =
|
59
|
-
shipment.stock_location = Spree::StockLocation.find_by(admin_name:
|
58
|
+
shipment.tracking = target[:tracking]
|
59
|
+
shipment.stock_location = Spree::StockLocation.find_by(admin_name: target[:stock_location]) || Spree::StockLocation.find_by!(name: target[:stock_location])
|
60
60
|
|
61
|
-
inventory_units =
|
62
|
-
inventory_units.each do |
|
63
|
-
ensure_variant_id_from_params(
|
61
|
+
inventory_units = target[:inventory_units] || []
|
62
|
+
inventory_units.each do |inventory_unit|
|
63
|
+
ensure_variant_id_from_params(inventory_unit)
|
64
64
|
|
65
|
-
unless line_item = order.line_items.find_by(variant_id:
|
66
|
-
line_item = order.contents.add(Spree::Variant.find(
|
65
|
+
unless line_item = order.line_items.find_by(variant_id: inventory_unit[:variant_id])
|
66
|
+
line_item = order.contents.add(Spree::Variant.find(inventory_unit[:variant_id]), 1)
|
67
67
|
end
|
68
68
|
|
69
69
|
# Spree expects a Inventory Unit to always reference a line
|
@@ -71,14 +71,14 @@ module Spree
|
|
71
71
|
# trying to view these units. Note the Importer might not be
|
72
72
|
# able to find the line item if line_item.variant_id |= iu.variant_id
|
73
73
|
shipment.inventory_units.new(
|
74
|
-
variant_id:
|
74
|
+
variant_id: inventory_unit[:variant_id],
|
75
75
|
line_item: line_item
|
76
76
|
)
|
77
77
|
end
|
78
78
|
|
79
79
|
# Mark shipped if it should be.
|
80
|
-
if
|
81
|
-
shipment.shipped_at =
|
80
|
+
if target[:shipped_at].present?
|
81
|
+
shipment.shipped_at = target[:shipped_at]
|
82
82
|
shipment.state = 'shipped'
|
83
83
|
shipment.inventory_units.each do |unit|
|
84
84
|
unit.state = 'shipped'
|
@@ -88,9 +88,9 @@ module Spree
|
|
88
88
|
order.shipments << shipment
|
89
89
|
shipment.save!
|
90
90
|
|
91
|
-
shipping_method = Spree::ShippingMethod.find_by(name:
|
91
|
+
shipping_method = Spree::ShippingMethod.find_by(name: target[:shipping_method]) || Spree::ShippingMethod.find_by!(admin_name: target[:shipping_method])
|
92
92
|
rate = shipment.shipping_rates.create!(shipping_method: shipping_method,
|
93
|
-
cost:
|
93
|
+
cost: target[:cost])
|
94
94
|
shipment.selected_shipping_rate_id = rate.id
|
95
95
|
shipment.update_amounts
|
96
96
|
end
|
@@ -98,13 +98,13 @@ module Spree
|
|
98
98
|
|
99
99
|
def self.create_line_items_from_params(line_items_hash, order)
|
100
100
|
return {} unless line_items_hash
|
101
|
-
line_items_hash.each_key do |
|
102
|
-
extra_params = line_items_hash[
|
103
|
-
line_item = ensure_variant_id_from_params(line_items_hash[
|
101
|
+
line_items_hash.each_key do |key|
|
102
|
+
extra_params = line_items_hash[key].except(:variant_id, :quantity, :sku)
|
103
|
+
line_item = ensure_variant_id_from_params(line_items_hash[key])
|
104
104
|
line_item = order.contents.add(Spree::Variant.find(line_item[:variant_id]), line_item[:quantity])
|
105
105
|
# Raise any errors with saving to prevent import succeeding with line items failing silently.
|
106
106
|
if extra_params.present?
|
107
|
-
line_item.
|
107
|
+
line_item.update!(extra_params)
|
108
108
|
else
|
109
109
|
line_item.save!
|
110
110
|
end
|
@@ -113,11 +113,11 @@ module Spree
|
|
113
113
|
|
114
114
|
def self.create_adjustments_from_params(adjustments, order)
|
115
115
|
return [] unless adjustments
|
116
|
-
adjustments.each do |
|
116
|
+
adjustments.each do |target|
|
117
117
|
adjustment = order.adjustments.build(
|
118
118
|
order: order,
|
119
|
-
amount:
|
120
|
-
label:
|
119
|
+
amount: target[:amount].to_d,
|
120
|
+
label: target[:label]
|
121
121
|
)
|
122
122
|
adjustment.save!
|
123
123
|
adjustment.finalize!
|
@@ -126,14 +126,15 @@ module Spree
|
|
126
126
|
|
127
127
|
def self.create_payments_from_params(payments_hash, order)
|
128
128
|
return [] unless payments_hash
|
129
|
-
payments_hash.each do |
|
129
|
+
payments_hash.each do |target|
|
130
130
|
payment = order.payments.build order: order
|
131
|
-
payment.amount =
|
131
|
+
payment.amount = target[:amount].to_f
|
132
132
|
# Order API should be using state as that's the normal payment field.
|
133
133
|
# spree_wombat serializes payment state as status so imported orders should fall back to status field.
|
134
|
-
payment.state =
|
135
|
-
payment.payment_method = Spree::PaymentMethod.find_by!(name:
|
136
|
-
|
134
|
+
payment.state = target[:state] || target[:status] || 'completed'
|
135
|
+
payment.payment_method = Spree::PaymentMethod.find_by!(name: target[:payment_method])
|
136
|
+
source_attributes = target[:source] || target[:source_attributes]
|
137
|
+
payment.source = create_source_payment_from_params(source_attributes, payment) if source_attributes
|
137
138
|
payment.save!
|
138
139
|
end
|
139
140
|
end
|
@@ -170,8 +171,8 @@ module Spree
|
|
170
171
|
search[:iso_name] = iso_name.upcase
|
171
172
|
elsif iso = address[:country]['iso']
|
172
173
|
search[:iso] = iso.upcase
|
173
|
-
elsif
|
174
|
-
search[:iso3] =
|
174
|
+
elsif iso_three = address[:country]['iso3']
|
175
|
+
search[:iso3] = iso_three.upcase
|
175
176
|
end
|
176
177
|
|
177
178
|
address.delete(:country)
|