solidus_core 2.6.6 → 2.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.
Potentially problematic release.
This version of solidus_core might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/app/helpers/spree/taxons_helper.rb +2 -2
- data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
- data/app/models/spree/order.rb +2 -3
- data/app/models/spree/order_cancellations.rb +1 -1
- data/app/models/spree/price.rb +1 -1
- data/app/models/spree/product/scopes.rb +3 -4
- data/app/models/spree/reimbursement.rb +1 -1
- data/app/models/spree/store.rb +1 -1
- data/app/models/spree/user_class_handle.rb +1 -1
- data/config/locales/en.yml +2 -3
- data/lib/spree/app_configuration.rb +26 -0
- data/lib/spree/core/importer/order.rb +1 -1
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/mailer_previews/order_preview.rb +3 -3
- data/lib/spree/mailer_previews/reimbursement_preview.rb +1 -1
- data/lib/spree/permission_sets/default_customer.rb +3 -0
- data/spec/lib/spree/core/importer/order_spec.rb +25 -0
- data/spec/models/spree/store_credit_event_spec.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: eb1818adf868e3d8d1e880f8f6b50c544b9d6a8d
|
4
|
+
data.tar.gz: ef14156407da2c1e067a74e718cfe96ca9843380
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa66bde468ab5d0a0225f3de3e85ec8753abbded64ec884bf2fc49262dc08c122b700c60bcd19cd311506db616bd08cd2aeaee693a6e333462de7d7e6869aa82
|
7
|
+
data.tar.gz: 79750dd5214ba7c407f03d736bd5e1f537a69efaee2ba00465758a949f80f4e021fedeec4963cddf65883e65623a71bfcb426104191a906aa74a0da4cedd7251
|
@@ -7,12 +7,12 @@ module Spree
|
|
7
7
|
# to show the most popular products for a particular taxon (that is an exercise left to the developer.)
|
8
8
|
def taxon_preview(taxon, max = 4)
|
9
9
|
price_scope = Spree::Price.where(current_pricing_options.search_arguments)
|
10
|
-
products = taxon.active_products.joins(:prices).merge(price_scope).select("DISTINCT spree_products.*, spree_products_taxons.position").limit(max)
|
10
|
+
products = taxon.active_products.joins(:prices).merge(price_scope).select("DISTINCT (spree_products.id), spree_products.*, spree_products_taxons.position").limit(max)
|
11
11
|
if products.size < max
|
12
12
|
products_arel = Spree::Product.arel_table
|
13
13
|
taxon.descendants.each do |descendent_taxon|
|
14
14
|
to_get = max - products.length
|
15
|
-
products += descendent_taxon.active_products.joins(:prices).merge(price_scope).select("DISTINCT spree_products.*, spree_products_taxons.position").where(products_arel[:id].not_in(products.map(&:id))).limit(to_get)
|
15
|
+
products += descendent_taxon.active_products.joins(:prices).merge(price_scope).select("DISTINCT (spree_products.id), spree_products.*, spree_products_taxons.position").where(products_arel[:id].not_in(products.map(&:id))).limit(to_get)
|
16
16
|
break if products.size >= max
|
17
17
|
end
|
18
18
|
end
|
@@ -10,13 +10,13 @@ module Spree
|
|
10
10
|
).build_promotion_codes
|
11
11
|
|
12
12
|
if promotion_code_batch.email?
|
13
|
-
Spree::
|
13
|
+
Spree::Config.promotion_code_batch_mailer_class
|
14
14
|
.promotion_code_batch_finished(promotion_code_batch)
|
15
15
|
.deliver_now
|
16
16
|
end
|
17
17
|
rescue StandardError => e
|
18
18
|
if promotion_code_batch.email?
|
19
|
-
Spree::
|
19
|
+
Spree::Config.promotion_code_batch_mailer_class
|
20
20
|
.promotion_code_batch_errored(promotion_code_batch)
|
21
21
|
.deliver_now
|
22
22
|
end
|
data/app/models/spree/order.rb
CHANGED
@@ -448,7 +448,7 @@ module Spree
|
|
448
448
|
end
|
449
449
|
|
450
450
|
def deliver_order_confirmation_email
|
451
|
-
Spree::
|
451
|
+
Spree::Config.order_mailer_class.confirm_email(self).deliver_later
|
452
452
|
update_column(:confirmation_delivered, true)
|
453
453
|
end
|
454
454
|
|
@@ -552,7 +552,6 @@ module Spree
|
|
552
552
|
Spree::PromotionHandler::Shipping.new(self).activate
|
553
553
|
recalculate
|
554
554
|
end
|
555
|
-
alias_method :apply_free_shipping_promotions, :apply_shipping_promotions
|
556
555
|
deprecate apply_free_shipping_promotions: :apply_shipping_promotions, deprecator: Spree::Deprecation
|
557
556
|
|
558
557
|
# Clean shipments and make order back to address state
|
@@ -890,7 +889,7 @@ module Spree
|
|
890
889
|
end
|
891
890
|
|
892
891
|
def send_cancel_email
|
893
|
-
Spree::
|
892
|
+
Spree::Config.order_mailer_class.cancel_email(self).deliver_later
|
894
893
|
end
|
895
894
|
|
896
895
|
def after_resume
|
@@ -40,7 +40,7 @@ class Spree::OrderCancellations
|
|
40
40
|
end
|
41
41
|
|
42
42
|
update_shipped_shipments(inventory_units)
|
43
|
-
Spree::
|
43
|
+
Spree::Config.order_mailer_class.inventory_cancellation_email(@order, inventory_units.to_a).deliver_later if Spree::OrderCancellations.send_cancellation_mailer
|
44
44
|
end
|
45
45
|
|
46
46
|
@order.recalculate
|
data/app/models/spree/price.rb
CHANGED
@@ -26,7 +26,7 @@ module Spree
|
|
26
26
|
validates :currency, inclusion: { in: ::Money::Currency.all.map(&:iso_code), message: :invalid_code }
|
27
27
|
validates :country, presence: true, unless: -> { for_any_country? }
|
28
28
|
|
29
|
-
scope :currently_valid, -> { order(Arel.sql("country_iso IS NULL
|
29
|
+
scope :currently_valid, -> { order(Arel.sql("country_iso IS NULL")).order(updated_at: :DESC, id: :DESC) }
|
30
30
|
scope :for_master, -> { joins(:variant).where(spree_variants: { is_master: true }) }
|
31
31
|
scope :for_variant, -> { joins(:variant).where(spree_variants: { is_master: false }) }
|
32
32
|
scope :for_any_country, -> { where(country: nil) }
|
@@ -63,10 +63,9 @@ module Spree
|
|
63
63
|
#
|
64
64
|
# SELECT COUNT(*) ...
|
65
65
|
add_search_scope :in_taxon do |taxon|
|
66
|
-
includes(:classifications)
|
67
|
-
|
68
|
-
|
69
|
-
.order(Spree::Classification.arel_table[:position].asc)
|
66
|
+
includes(:classifications).
|
67
|
+
where("spree_products_taxons.taxon_id" => taxon.self_and_descendants.pluck(:id)).
|
68
|
+
order(Spree::Classification.arel_table[:position].asc)
|
70
69
|
end
|
71
70
|
|
72
71
|
# This scope selects products in all taxons AND all its descendants
|
@@ -162,7 +162,7 @@ module Spree
|
|
162
162
|
end
|
163
163
|
|
164
164
|
def send_reimbursement_email
|
165
|
-
Spree::
|
165
|
+
Spree::Config.reimbursement_mailer_class.reimbursement_email(id).deliver_later
|
166
166
|
end
|
167
167
|
|
168
168
|
# If there are multiple different reimbursement types for a single
|
data/app/models/spree/store.rb
CHANGED
@@ -28,7 +28,7 @@ module Spree
|
|
28
28
|
scope :by_url, lambda { |url| where("url like ?", "%#{url}%") }
|
29
29
|
|
30
30
|
class << self
|
31
|
-
deprecate by_url
|
31
|
+
deprecate :by_url, "Spree::Store.by_url is DEPRECATED", deprecator: Spree::Deprecation
|
32
32
|
end
|
33
33
|
|
34
34
|
def available_locales
|
@@ -4,7 +4,7 @@ module Spree
|
|
4
4
|
# Configuration point for User model implementation.
|
5
5
|
#
|
6
6
|
# `Spree::UserClassHandle` allows you to configure your own implementation of a
|
7
|
-
# User class or use an
|
7
|
+
# User class or use an extension like `solidus_auth_devise`.
|
8
8
|
#
|
9
9
|
# @note Placeholder for name of Spree.user_class to ensure later evaluation at
|
10
10
|
# runtime.
|
data/config/locales/en.yml
CHANGED
@@ -177,7 +177,6 @@ en:
|
|
177
177
|
spree/product_property:
|
178
178
|
value: Value
|
179
179
|
spree/promotion:
|
180
|
-
advertise: Advertise
|
181
180
|
apply_automatically: Apply Automatically
|
182
181
|
code: Code
|
183
182
|
description: Description
|
@@ -185,7 +184,7 @@ en:
|
|
185
184
|
expires_at: End
|
186
185
|
name: Name
|
187
186
|
path: Path
|
188
|
-
per_code_usage_limit: Per
|
187
|
+
per_code_usage_limit: Per code usage limit
|
189
188
|
promotion_uses: Promotion Uses
|
190
189
|
starts_at: Start
|
191
190
|
status: Status
|
@@ -859,7 +858,6 @@ en:
|
|
859
858
|
activations_new:
|
860
859
|
auto: Apply to all orders
|
861
860
|
multiple_codes: Multiple promotion codes
|
862
|
-
path: URL Path
|
863
861
|
single_code: Single promotion code
|
864
862
|
activations_edit:
|
865
863
|
auto: All orders will attempt to use this promotion
|
@@ -1791,6 +1789,7 @@ en:
|
|
1791
1789
|
authorized: Authorized
|
1792
1790
|
canceled: Canceled
|
1793
1791
|
return_authorizations: Return Merchandise Authorizations
|
1792
|
+
return_authorization_fire_error: Cannot perform this action on return merchandise authorization
|
1794
1793
|
return_authorization_updated: Return merchandise authorization updated
|
1795
1794
|
return_item_inventory_unit_ineligible: Return item's inventory unit must be shipped
|
1796
1795
|
return_item_inventory_unit_reimbursed: Return item's inventory unit is already reimbursed
|
@@ -307,6 +307,32 @@ module Spree
|
|
307
307
|
# @api experimental
|
308
308
|
class_name_attribute :shipping_rate_tax_calculator_class, default: 'Spree::TaxCalculator::ShippingRate'
|
309
309
|
|
310
|
+
# Allows providing your own Mailer for order mailer.
|
311
|
+
#
|
312
|
+
# @!attribute [rw] order_mailer_class
|
313
|
+
# @return [ActionMailer::Base] an object that responds to "confirm_email",
|
314
|
+
# "cancel_email" and "inventory_cancellation_email"
|
315
|
+
# (e.g. an ActionMailer with a "confirm_email" method) with the same
|
316
|
+
# signature as Spree::OrderMailer.confirm_email.
|
317
|
+
class_name_attribute :order_mailer_class, default: 'Spree::OrderMailer'
|
318
|
+
|
319
|
+
# Allows providing your own Mailer for promotion code batch mailer.
|
320
|
+
#
|
321
|
+
# @!attribute [rw] promotion_code_batch_mailer_class
|
322
|
+
# @return [ActionMailer::Base] an object that responds to "promotion_code_batch_finished",
|
323
|
+
# and "promotion_code_batch_errored"
|
324
|
+
# (e.g. an ActionMailer with a "promotion_code_batch_finished" method) with the same
|
325
|
+
# signature as Spree::PromotionCodeBatchMailer.promotion_code_batch_finished.
|
326
|
+
class_name_attribute :promotion_code_batch_mailer_class, default: 'Spree::PromotionCodeBatchMailer'
|
327
|
+
|
328
|
+
# Allows providing your own Mailer for reimbursement mailer.
|
329
|
+
#
|
330
|
+
# @!attribute [rw] reimbursement_mailer_class
|
331
|
+
# @return [ActionMailer::Base] an object that responds to "reimbursement_email"
|
332
|
+
# (e.g. an ActionMailer with a "reimbursement_email" method) with the same
|
333
|
+
# signature as Spree::ReimbursementMailer.reimbursement_email.
|
334
|
+
class_name_attribute :reimbursement_mailer_class, default: 'Spree::ReimbursementMailer'
|
335
|
+
|
310
336
|
# Allows providing your own Mailer for shipped cartons.
|
311
337
|
#
|
312
338
|
# @!attribute [rw] carton_shipped_email_class
|
@@ -20,8 +20,8 @@ module Spree
|
|
20
20
|
|
21
21
|
shipments_attrs = params.delete(:shipments_attributes)
|
22
22
|
|
23
|
-
create_shipments_from_params(shipments_attrs, order)
|
24
23
|
create_line_items_from_params(params.delete(:line_items_attributes), order)
|
24
|
+
create_shipments_from_params(shipments_attrs, order)
|
25
25
|
create_adjustments_from_params(params.delete(:adjustments_attributes), order)
|
26
26
|
create_payments_from_params(params.delete(:payments_attributes), order)
|
27
27
|
|
data/lib/spree/core/version.rb
CHANGED
@@ -6,19 +6,19 @@ module Spree
|
|
6
6
|
def confirm
|
7
7
|
order = Order.complete.last
|
8
8
|
raise "Your database needs at least one completed order to render this preview" unless order
|
9
|
-
|
9
|
+
Spree::Config.order_mailer_class.confirm_email(order)
|
10
10
|
end
|
11
11
|
|
12
12
|
def cancel
|
13
13
|
order = Order.with_state(:canceled).last
|
14
14
|
raise "Your database needs at least one cancelled order to render this preview" unless order
|
15
|
-
|
15
|
+
Spree::Config.order_mailer_class.cancel_email(order)
|
16
16
|
end
|
17
17
|
|
18
18
|
def inventory_cancellation
|
19
19
|
order = Spree::Order.joins(:inventory_units).merge(Spree::InventoryUnit.canceled).last
|
20
20
|
raise "Your database needs at least one order with a canceled inventory unit to render this preview" unless order
|
21
|
-
|
21
|
+
Spree::Config.order_mailer_class.inventory_cancellation_email(order, [order.inventory_units.first])
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -6,7 +6,7 @@ module Spree
|
|
6
6
|
def reimbursement
|
7
7
|
reimbursement = Reimbursement.last
|
8
8
|
raise "Your database needs at least one Reimbursement to render this preview" unless reimbursement
|
9
|
-
|
9
|
+
Spree::Config.reimbursement_mailer_class.reimbursement_email(reimbursement)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -11,6 +11,9 @@ module Spree
|
|
11
11
|
can [:read, :update], Order do |order, token|
|
12
12
|
order.user == user || (order.guest_token.present? && token == order.guest_token)
|
13
13
|
end
|
14
|
+
cannot :update, Order do |order|
|
15
|
+
order.completed?
|
16
|
+
end
|
14
17
|
can :create, ReturnAuthorization do |return_authorization|
|
15
18
|
return_authorization.order.user == user
|
16
19
|
end
|
@@ -360,6 +360,31 @@ module Spree
|
|
360
360
|
expect(order.shipment_total.to_f).to eq 4.99
|
361
361
|
end
|
362
362
|
end
|
363
|
+
|
364
|
+
context "when line items and shipments are present" do
|
365
|
+
let(:params) do
|
366
|
+
{
|
367
|
+
completed_at: 2.days.ago,
|
368
|
+
line_items_attributes: line_items,
|
369
|
+
shipments_attributes: [
|
370
|
+
{
|
371
|
+
tracking: '123456789',
|
372
|
+
cost: '4.99',
|
373
|
+
shipped_at: 1.day.ago,
|
374
|
+
shipping_method: shipping_method.name,
|
375
|
+
stock_location: stock_location.name,
|
376
|
+
inventory_units: [{ sku: sku }]
|
377
|
+
}
|
378
|
+
]
|
379
|
+
}
|
380
|
+
end
|
381
|
+
|
382
|
+
it 'builds quantities properly' do
|
383
|
+
order = Importer::Order.import(user, params)
|
384
|
+
line_item = order.line_items.first
|
385
|
+
expect(line_item.quantity).to eq(5)
|
386
|
+
end
|
387
|
+
end
|
363
388
|
end
|
364
389
|
|
365
390
|
it 'adds adjustments' do
|
@@ -235,7 +235,7 @@ RSpec.describe Spree::StoreCreditEvent do
|
|
235
235
|
end
|
236
236
|
|
237
237
|
describe "#display_event_date" do
|
238
|
-
let(:date) { Time.parse("2014-06-01") }
|
238
|
+
let(:date) { Time.zone.parse("2014-06-01") }
|
239
239
|
|
240
240
|
subject { create(:store_credit_auth_event, created_at: date) }
|
241
241
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Solidus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -1194,7 +1194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1194
1194
|
- !ruby/object:Gem::Version
|
1195
1195
|
version: 1.8.23
|
1196
1196
|
requirements: []
|
1197
|
-
|
1197
|
+
rubyforge_project:
|
1198
|
+
rubygems_version: 2.6.10
|
1198
1199
|
signing_key:
|
1199
1200
|
specification_version: 4
|
1200
1201
|
summary: Essential models, mailers, and classes for the Solidus e-commerce project.
|