From 99ea75f9e8e796e9596a99b26825fc25fb6a82d4 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Wed, 29 Apr 2026 15:51:29 +0100 Subject: [PATCH] Revert "CLDC-4300: Update sale date staircasing date validation (#3307)" (#3339) This reverts commit 1e1773605c29e681981d9a8609b058306f5e5ce6. --- .../sales/sale_information_validations.rb | 6 +- ...valid_initialpurchase_lasttransaction.rake | 13 ---- .../sale_information_validations_spec.rb | 69 ++++--------------- 3 files changed, 15 insertions(+), 73 deletions(-) delete mode 100644 lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb index 7cd24183c..32bf2a716 100644 --- a/app/models/validations/sales/sale_information_validations.rb +++ b/app/models/validations/sales/sale_information_validations.rb @@ -42,7 +42,7 @@ module Validations::Sales::SaleInformationValidations record.errors.add :initialpurchase, I18n.t("validations.sales.sale_information.initialpurchase.must_be_after_1980") end - if record.saledate.present? && ((record.initialpurchase > record.saledate) || (record.initialpurchase == record.saledate && record.form.start_year_2026_or_later?)) + if record.saledate.present? && record.initialpurchase > record.saledate record.errors.add :initialpurchase, I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_saledate") record.errors.add :saledate, :skip_bu_error, message: I18n.t("validations.sales.sale_information.saledate.must_be_after_initial_purchase_date") end @@ -55,11 +55,11 @@ module Validations::Sales::SaleInformationValidations record.errors.add :lasttransaction, I18n.t("validations.sales.sale_information.lasttransaction.must_be_after_1980") end - if record.saledate.present? && ((record.lasttransaction > record.saledate) || (record.lasttransaction == record.saledate && record.form.start_year_2026_or_later?)) + if record.saledate.present? && record.lasttransaction > record.saledate record.errors.add :lasttransaction, I18n.t("validations.sales.sale_information.lasttransaction.must_be_before_saledate") record.errors.add :saledate, :skip_bu_error, message: I18n.t("validations.sales.sale_information.saledate.must_be_after_last_transaction_date") end - if record.initialpurchase.present? && ((record.lasttransaction < record.initialpurchase) || (record.lasttransaction == record.initialpurchase && record.form.start_year_2026_or_later?)) + if record.initialpurchase.present? && record.lasttransaction < record.initialpurchase record.errors.add :initialpurchase, I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_last_transaction") record.errors.add :lasttransaction, I18n.t("validations.sales.sale_information.lasttransaction.must_be_after_initial_purchase") end diff --git a/lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake b/lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake deleted file mode 100644 index 44475a46f..000000000 --- a/lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake +++ /dev/null @@ -1,13 +0,0 @@ -desc "We tightened the validation in 2026 between initial purchase date, last transaction date and sale date so that no two can be equal and initial purchase date < last transaction date < sale date. To avoid invalid logs we clear lasttransaction 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") - - 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 "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) - - puts "Done" -end diff --git a/spec/models/validations/sales/sale_information_validations_spec.rb b/spec/models/validations/sales/sale_information_validations_spec.rb index 04f71b198..8d4eb4cea 100644 --- a/spec/models/validations/sales/sale_information_validations_spec.rb +++ b/spec/models/validations/sales/sale_information_validations_spec.rb @@ -252,27 +252,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do end context "when initial purchase date == saledate" do - let(:record) { build(:sales_log, initialpurchase: collection_start_date_for_year(start_year), saledate: collection_start_date_for_year(start_year)) } + let(:record) { build(:sales_log, initialpurchase: current_collection_start_date, saledate: current_collection_start_date) } - context "and 2025", metadata: { year: 25 } do - let(:start_year) { 2025 } - - it "does not add an error" do - sale_information_validator.validate_staircasing_initial_purchase_date(record) - - expect(record.errors[:lasttransaction]).not_to be_present - end - end - - context "and 2026", metadata: { year: 26 } do - let(:start_year) { 2026 } - - it "adds error" do - sale_information_validator.validate_staircasing_initial_purchase_date(record) + it "does not add an error" do + sale_information_validator.validate_staircasing_initial_purchase_date(record) - expect(record.errors[:initialpurchase]).to eq([I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_saledate")]) - expect(record.errors[:saledate]).to eq([I18n.t("validations.sales.sale_information.saledate.must_be_after_initial_purchase_date")]) - end + expect(record.errors[:initialpurchase]).not_to be_present end end end @@ -330,27 +315,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do end context "when last transaction date == saledate" do - let(:record) { build(:sales_log, lasttransaction: collection_start_date_for_year(start_year), saledate: collection_start_date_for_year(start_year)) } - - context "and 2025", metadata: { year: 25 } do - let(:start_year) { 2025 } - - it "does not add an error" do - sale_information_validator.validate_staircasing_last_transaction_date(record) - - expect(record.errors[:lasttransaction]).not_to be_present - end - end + let(:record) { build(:sales_log, lasttransaction: current_collection_start_date, saledate: current_collection_start_date) } - context "and 2026", metadata: { year: 26 } do - let(:start_year) { 2026 } - - it "adds error" do - sale_information_validator.validate_staircasing_last_transaction_date(record) + it "does not add an error" do + sale_information_validator.validate_staircasing_last_transaction_date(record) - expect(record.errors[:lasttransaction]).to eq([I18n.t("validations.sales.sale_information.lasttransaction.must_be_before_saledate")]) - expect(record.errors[:saledate]).to eq([I18n.t("validations.sales.sale_information.saledate.must_be_after_last_transaction_date")]) - end + expect(record.errors[:lasttransaction]).not_to be_present end end @@ -376,27 +346,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do end context "when last transaction date == initial purchase date" do - let(:record) { build(:sales_log, lasttransaction: collection_start_date_for_year(start_year), initialpurchase: collection_start_date_for_year(start_year), saledate: collection_start_date_for_year(start_year) + 1.day) } - - context "and 2025", metadata: { year: 25 } do - let(:start_year) { 2025 } - - it "does not add an error" do - sale_information_validator.validate_staircasing_last_transaction_date(record) + let(:record) { build(:sales_log, lasttransaction: current_collection_start_date, initialpurchase: current_collection_start_date) } - expect(record.errors[:lasttransaction]).not_to be_present - end - end - - context "and 2026", metadata: { year: 26 } do - let(:start_year) { 2026 } - - it "adds error" do - sale_information_validator.validate_staircasing_last_transaction_date(record) + it "does not add an error" do + sale_information_validator.validate_staircasing_last_transaction_date(record) - expect(record.errors[:lasttransaction]).to eq([I18n.t("validations.sales.sale_information.lasttransaction.must_be_after_initial_purchase")]) - expect(record.errors[:initialpurchase]).to eq([I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_last_transaction")]) - end + expect(record.errors[:lasttransaction]).not_to be_present end end end