mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-27 06:05:19 +00:00
Merge pull request #3394 from mkllnk/3021-update-soft-delete
[Spree upgrade] 3021 update soft delete
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user