From ebab7f20ed7bab0b5ed56121c17c16a039795879 Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Wed, 22 Apr 2026 12:01:42 +0100 Subject: [PATCH] CLDC-3676: lettings sale validations --- .../sales/sale_information_validations.rb | 19 +++++------- .../sale_information_validations_spec.rb | 30 ++----------------- 2 files changed, 10 insertions(+), 39 deletions(-) diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb index 32bf2a716..c03f39b1d 100644 --- a/app/models/validations/sales/sale_information_validations.rb +++ b/app/models/validations/sales/sale_information_validations.rb @@ -12,12 +12,9 @@ module Validations::Sales::SaleInformationValidations record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_after_hodate") end - if (record.saledate - 5.years) >= record.hodate && record.form.start_year_2025_or_later? + if (record.saledate - 5.years) >= record.hodate record.errors.add :hodate, I18n.t("validations.sales.sale_information.hodate.must_be_less_than_5_years_from_saledate") record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_5_years_from_hodate") - elsif (record.saledate - 3.years) >= record.hodate && record.startdate.year <= 2024 - record.errors.add :hodate, I18n.t("validations.sales.sale_information.hodate.must_be_less_than_3_years_from_saledate") - record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_3_years_from_hodate") end end @@ -75,7 +72,7 @@ module Validations::Sales::SaleInformationValidations end def validate_discounted_ownership_value(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate return unless record.value && record.deposit && record.ownershipsch return unless record.mortgage || record.mortgageused == 2 return unless record.discount || record.grant || record.type == 29 @@ -103,7 +100,7 @@ module Validations::Sales::SaleInformationValidations end def validate_outright_sale_value_matches_mortgage_plus_deposit(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate return unless record.outright_sale? return unless record.mortgage_used? && record.mortgage return unless record.deposit && record.value @@ -134,7 +131,7 @@ module Validations::Sales::SaleInformationValidations end def validate_grant_amount(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate return unless record.grant && [8, 21].include?(record.type) unless record.grant.between?(9_000, 16_000) @@ -144,7 +141,7 @@ module Validations::Sales::SaleInformationValidations def validate_stairbought(record) return unless record.stairbought && record.type - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate max_stairbought = case record.type when 30, 16, 28, 31, 32 @@ -162,7 +159,7 @@ module Validations::Sales::SaleInformationValidations end def validate_discount_and_value(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate return unless record.discount && record.value && record.la if record.london_property? && record.discount_value > 137_400 @@ -177,7 +174,7 @@ module Validations::Sales::SaleInformationValidations end def validate_non_staircasing_mortgage(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate return unless record.value && record.deposit && record.equity return unless record.shared_ownership_scheme? && record.type && record.mortgageused && record.is_not_staircasing? @@ -189,7 +186,7 @@ module Validations::Sales::SaleInformationValidations end def validate_staircasing_mortgage(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate return unless record.value && record.deposit && record.stairbought return unless record.shared_ownership_scheme? && record.type && record.mortgageused && record.is_staircase? diff --git a/spec/models/validations/sales/sale_information_validations_spec.rb b/spec/models/validations/sales/sale_information_validations_spec.rb index f76674423..c475c424f 100644 --- a/spec/models/validations/sales/sale_information_validations_spec.rb +++ b/spec/models/validations/sales/sale_information_validations_spec.rb @@ -49,8 +49,8 @@ RSpec.describe Validations::Sales::SaleInformationValidations do end end - context "when hodate less than 3 years before saledate" do - let(:record) { build(:sales_log, hodate: current_collection_start_date - 3.years + 1.day, saledate: current_collection_start_date) } + context "when hodate less than 5 years before saledate" do + let(:record) { build(:sales_log, hodate: current_collection_start_date - 5.years + 1.day, saledate: current_collection_start_date) } it "does not add an error" do sale_information_validator.validate_practical_completion_date(record) @@ -59,32 +59,6 @@ RSpec.describe Validations::Sales::SaleInformationValidations do end end - context "when hodate 3 or more years before saledate" do - let(:record) { build(:sales_log, hodate: saledate - 3.years, saledate:) } - - context "and form year is 2024 or earlier" do - let(:saledate) { collection_start_date_for_year(2024) } - - it "does add an error" do - sale_information_validator.validate_practical_completion_date(record) - - expect(record.errors[:hodate]).to be_present - expect(record.errors[:saledate]).to be_present - end - end - - context "and form year is 2025 or later" do - let(:saledate) { collection_start_date_for_year_or_later(2025) } - - it "does not add an error" do - sale_information_validator.validate_practical_completion_date(record) - - expect(record.errors[:hodate]).to be_empty - expect(record.errors[:saledate]).to be_empty - end - end - end - context "when hodate 5 or more years before saledate" do let(:record) { build(:sales_log, hodate: current_collection_start_date - 5.years, saledate: current_collection_start_date) }