Browse Source

CLDC-4300: Apply these changes from 2026 only

pull/3341/head
samyou-softwire 2 weeks ago
parent
commit
650c455dd5
  1. 6
      app/models/validations/sales/sale_information_validations.rb
  2. 6
      lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake
  3. 48
      spec/models/validations/sales/sale_information_validations_spec.rb

6
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") record.errors.add :initialpurchase, I18n.t("validations.sales.sale_information.initialpurchase.must_be_after_1980")
end end
if record.saledate.present? && record.initialpurchase >= record.saledate if record.saledate.present? && ((record.initialpurchase > record.saledate) || (record.initialpurchase == record.saledate && record.form.start_year_2026_or_later?))
record.errors.add :initialpurchase, I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_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") record.errors.add :saledate, :skip_bu_error, message: I18n.t("validations.sales.sale_information.saledate.must_be_after_initial_purchase_date")
end end
@ -55,11 +55,11 @@ module Validations::Sales::SaleInformationValidations
record.errors.add :lasttransaction, I18n.t("validations.sales.sale_information.lasttransaction.must_be_after_1980") record.errors.add :lasttransaction, I18n.t("validations.sales.sale_information.lasttransaction.must_be_after_1980")
end end
if record.saledate.present? && record.lasttransaction >= record.saledate if record.saledate.present? && ((record.lasttransaction > record.saledate) || (record.lasttransaction == record.saledate && record.form.start_year_2026_or_later?))
record.errors.add :lasttransaction, I18n.t("validations.sales.sale_information.lasttransaction.must_be_before_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") record.errors.add :saledate, :skip_bu_error, message: I18n.t("validations.sales.sale_information.saledate.must_be_after_last_transaction_date")
end end
if record.initialpurchase.present? && record.lasttransaction <= record.initialpurchase if record.initialpurchase.present? && ((record.lasttransaction < record.initialpurchase) || (record.lasttransaction == record.initialpurchase && record.form.start_year_2026_or_later?))
record.errors.add :initialpurchase, I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_last_transaction") 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") record.errors.add :lasttransaction, I18n.t("validations.sales.sale_information.lasttransaction.must_be_after_initial_purchase")
end end

6
lib/tasks/fix_sales_logs_with_invalid_initialpurchase_lasttransaction.rake

@ -1,7 +1,7 @@
desc "We tightened the validation between initial purchase date and sale date so the two can no longer be equal. To avoid invalid logs we clear initialpurchase if it equals saledate" 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 task fix_sales_logs_with_invalid_initialpurchase_lasttransaction: :environment do
initial_purchase_equal_saledate_logs = SalesLog.filter_by_year_or_later(2025).where("initialpurchase = saledate") initial_purchase_equal_saledate_logs = SalesLog.filter_by_year_or_later(2026).where("initialpurchase = saledate")
initial_purchase_equal_lasttransaction_logs = SalesLog.filter_by_year_or_later(2025).where("initialpurchase = lasttransaction") initial_purchase_equal_lasttransaction_logs = SalesLog.filter_by_year_or_later(2026).where("initialpurchase = lasttransaction")
puts "Updating #{initial_purchase_equal_saledate_logs.count} logs where initialpurchase = saledate, #{initial_purchase_equal_saledate_logs.map(&:id)}" puts "Updating #{initial_purchase_equal_saledate_logs.count} logs where initialpurchase = saledate, #{initial_purchase_equal_saledate_logs.map(&:id)}"

48
spec/models/validations/sales/sale_information_validations_spec.rb

@ -252,7 +252,20 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
context "when initial purchase date == saledate" do context "when initial purchase date == saledate" do
let(:record) { build(:sales_log, initialpurchase: current_collection_start_date, saledate: current_collection_start_date) } let(:record) { build(:sales_log, initialpurchase: 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_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 it "adds error" do
sale_information_validator.validate_staircasing_initial_purchase_date(record) sale_information_validator.validate_staircasing_initial_purchase_date(record)
@ -262,6 +275,7 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
end end
end end
end
describe "#validate_staircasing_last_transaction_date" do describe "#validate_staircasing_last_transaction_date" do
context "when last transaction date blank" do context "when last transaction date blank" do
@ -316,7 +330,20 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
context "when last transaction date == saledate" do context "when last transaction date == saledate" do
let(:record) { build(:sales_log, lasttransaction: current_collection_start_date, saledate: current_collection_start_date) } 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
context "and 2026", metadata: { year: 26 } do
let(:start_year) { 2026 }
it "adds error" do it "adds error" do
sale_information_validator.validate_staircasing_last_transaction_date(record) sale_information_validator.validate_staircasing_last_transaction_date(record)
@ -325,6 +352,7 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
expect(record.errors[:saledate]).to eq([I18n.t("validations.sales.sale_information.saledate.must_be_after_last_transaction_date")]) expect(record.errors[:saledate]).to eq([I18n.t("validations.sales.sale_information.saledate.must_be_after_last_transaction_date")])
end end
end end
end
context "when last transaction date after initial purchase date" do context "when last transaction date after initial purchase date" do
let(:record) { build(:sales_log, initialpurchase: 2.months.ago, lasttransaction: 1.month.ago) } let(:record) { build(:sales_log, initialpurchase: 2.months.ago, lasttransaction: 1.month.ago) }
@ -348,7 +376,20 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
context "when last transaction date == initial purchase date" do context "when last transaction date == initial purchase date" do
let(:record) { build(:sales_log, lasttransaction: current_collection_start_date, initialpurchase: current_collection_start_date) } 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)
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 it "adds error" do
sale_information_validator.validate_staircasing_last_transaction_date(record) sale_information_validator.validate_staircasing_last_transaction_date(record)
@ -358,6 +399,7 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
end end
end end
end
describe "#validate_previous_property_unit_type" do describe "#validate_previous_property_unit_type" do
context "when number of bedrooms is <= 1" do context "when number of bedrooms is <= 1" do

Loading…
Cancel
Save