Merge pull request #3394 from mkllnk/3021-update-soft-delete

[Spree upgrade] 3021 update soft delete
This commit is contained in:
Pau Pérez Fabregat
2019-02-25 11:58:41 +01:00
committed by GitHub
18 changed files with 67 additions and 85 deletions

View File

@@ -146,7 +146,6 @@ class OrderCycle < ActiveRecord::Base
Spree::Variant.
joins(:exchanges).
merge(Exchange.in_order_cycle(self)).
not_deleted.
select('DISTINCT spree_variants.*').
to_a # http://stackoverflow.com/q/15110166
end
@@ -163,9 +162,8 @@ class OrderCycle < ActiveRecord::Base
def variants_distributed_by(distributor)
return Spree::Variant.where("1=0") unless distributor.present?
Spree::Variant.
not_deleted.
merge(distributor.inventory_variants).
joins(:exchanges).
merge(distributor.inventory_variants).
merge(Exchange.in_order_cycle(self)).
merge(Exchange.outgoing).
merge(Exchange.to_enterprise(distributor))

View File

@@ -49,7 +49,6 @@ module ProductImport
VariantOverride.for_hubs([enterprise_id]).count
else
Spree::Variant.
not_deleted.
not_master.
joins(:product).
where('spree_products.supplier_id IN (?)', enterprise_id).

View File

@@ -202,20 +202,18 @@ Spree::Product.class_eval do
end
end
def delete_with_delete_from_order_cycles
def destroy_with_delete_from_order_cycles
transaction do
OpenFoodNetwork::ProductsCache.product_deleted(self) do
# Touch supplier and distributors as we would on #destroy
self.supplier.touch
touch_distributors
ExchangeVariant.where('exchange_variants.variant_id IN (?)', self.variants_including_master.with_deleted).destroy_all
delete_without_delete_from_order_cycles
destroy_without_delete_from_order_cycles
end
end
end
alias_method_chain :delete, :delete_from_order_cycles
alias_method_chain :destroy, :delete_from_order_cycles
def refresh_products_cache

View File

@@ -35,7 +35,6 @@ Spree::Variant.class_eval do
scope :with_order_cycles_inner, joins(exchanges: :order_cycle)
scope :not_deleted, where(deleted_at: nil)
scope :not_master, where(is_master: false)
scope :in_order_cycle, lambda { |order_cycle|
with_order_cycles_inner.
@@ -105,19 +104,6 @@ Spree::Variant.class_eval do
OpenFoodNetwork::EnterpriseFeeCalculator.new(distributor, order_cycle).fees_by_type_for self
end
def delete
if product.variants == [self] # Only variant left on product
errors.add :product, I18n.t(:spree_variant_product_error)
false
else
transaction do
self.update_column(:deleted_at, Time.zone.now)
ExchangeVariant.where(variant_id: self).destroy_all
self
end
end
end
def refresh_products_cache
if is_master?
product.refresh_products_cache