From 2c21db4859590f1f2f158c33ef43b585ab82f9fb Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Thu, 30 Apr 2026 09:44:46 +0100 Subject: [PATCH] CLDC-4300: Fix script in cases where all 3 dates are equal --- ...s_with_invalid_initialpurchase_lasttransaction.rake | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake b/lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake index 16d5571e5..11ff853a1 100644 --- a/lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake +++ b/lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake @@ -1,13 +1,15 @@ desc "We tightened the validation between initial purchase date in 2026, last transaction date and sale date so the two can no longer be equal. To avoid invalid logs we clear initialpurchase if it equals saledate and if initialpurchase = lasttransaction we clear both" task fix_sales_logs_with_invalid_initialpurchase_lasttransaction: :environment do - lasttransaction_equal_saledate_logs = SalesLog.filter_by_year_or_later(2026).where("lasttransaction = saledate") initial_purchase_equal_lasttransaction_logs = SalesLog.filter_by_year_or_later(2026).where("initialpurchase = lasttransaction") + lasttransaction_equal_saledate_logs = SalesLog.filter_by_year_or_later(2026).where("lasttransaction = saledate") - puts "Updating #{lasttransaction_equal_saledate_logs.count} logs where lasttransaction = saledate, #{lasttransaction_equal_saledate_logs.map(&:id)}" - lasttransaction_equal_saledate_logs.update!(lasttransaction: nil) - + # this one must happen first since this will always result in a log that passes date validations puts "Updating #{initial_purchase_equal_lasttransaction_logs.count} logs where initialpurchase = lasttransaction, #{initial_purchase_equal_lasttransaction_logs.map(&:id)}" initial_purchase_equal_lasttransaction_logs.update!(initialpurchase: nil, lasttransaction: nil) + # this one could fail if lasttransaction == saledate == initialpurchase, but the above case will have already reset these logs + puts "Updating #{lasttransaction_equal_saledate_logs.count} logs where lasttransaction = saledate, #{lasttransaction_equal_saledate_logs.map(&:id)}" + lasttransaction_equal_saledate_logs.update!(lasttransaction: nil) + puts "Done" end