From 85c489d3034f0ce2469d8de8953448eba127cbb8 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 27 Jan 2021 16:44:17 +0000 Subject: [PATCH] Ignore carts with failed payments in cleanup --- lib/tasks/data/remove_transient_data.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/tasks/data/remove_transient_data.rb b/lib/tasks/data/remove_transient_data.rb index d1ed670d39..e4fe755f23 100644 --- a/lib/tasks/data/remove_transient_data.rb +++ b/lib/tasks/data/remove_transient_data.rb @@ -24,7 +24,10 @@ class RemoveTransientData private def clear_old_cart_data! - old_carts = Spree::Order.where("state = 'cart' AND updated_at < ?", SHORT_RETENTION) + old_carts = Spree::Order. + where("spree_orders.state = 'cart' AND spree_orders.updated_at < ?", SHORT_RETENTION). + merge(orders_without_payments) + old_cart_line_items = Spree::LineItem.where(order_id: old_carts) old_cart_adjustments = Spree::Adjustment.where(order_id: old_carts) @@ -44,4 +47,11 @@ class RemoveTransientData ); SQL end + + def orders_without_payments + # Carts with failed payments are ignored, as they contain potentially useful data + Spree::Order. + joins("LEFT OUTER JOIN spree_payments ON spree_orders.id = spree_payments.order_id"). + where("spree_payments.id IS NULL") + end end