From ee1237cdc3bc16b775a2c13e2c8205c5b2f9a54b Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Wed, 22 Apr 2026 12:06:49 +0100 Subject: [PATCH] CLDC-3676: sales soft validations year edits --- .../validations/sales/soft_validations.rb | 44 +++++++------------ .../sales/soft_validations_spec.rb | 18 ++++---- 2 files changed, 26 insertions(+), 36 deletions(-) diff --git a/app/models/validations/sales/soft_validations.rb b/app/models/validations/sales/soft_validations.rb index ce7a812d2..5abca6586 100644 --- a/app/models/validations/sales/soft_validations.rb +++ b/app/models/validations/sales/soft_validations.rb @@ -2,25 +2,16 @@ module Validations::Sales::SoftValidations include Validations::Sales::SaleInformationValidations ALLOWED_INCOME_RANGES_SALES = { - 2024 => { - 1 => OpenStruct.new(soft_min: 5000), - 2 => OpenStruct.new(soft_min: 1500), - 3 => OpenStruct.new(soft_min: 1000), - 5 => OpenStruct.new(soft_min: 2000), - 0 => OpenStruct.new(soft_min: 2000), - }, - 2025 => { - 1 => OpenStruct.new(soft_min: 13_400, soft_max: 150_000), - 2 => OpenStruct.new(soft_min: 2_600, soft_max: 80_000), - 3 => OpenStruct.new(soft_min: 2_080, soft_max: 30_000), - 4 => OpenStruct.new(soft_min: 520, soft_max: 23_400), - 5 => OpenStruct.new(soft_min: 520, soft_max: 80_000), - 6 => OpenStruct.new(soft_min: 520, soft_max: 50_000), - 7 => OpenStruct.new(soft_min: 520, soft_max: 30_000), - 8 => OpenStruct.new(soft_min: 520, soft_max: 150_000), - 9 => OpenStruct.new(soft_min: 520, soft_max: 150_000), - 0 => OpenStruct.new(soft_min: 520, soft_max: 150_000), - }, + 1 => OpenStruct.new(soft_min: 13_400, soft_max: 150_000), + 2 => OpenStruct.new(soft_min: 2_600, soft_max: 80_000), + 3 => OpenStruct.new(soft_min: 2_080, soft_max: 30_000), + 4 => OpenStruct.new(soft_min: 520, soft_max: 23_400), + 5 => OpenStruct.new(soft_min: 520, soft_max: 80_000), + 6 => OpenStruct.new(soft_min: 520, soft_max: 50_000), + 7 => OpenStruct.new(soft_min: 520, soft_max: 30_000), + 8 => OpenStruct.new(soft_min: 520, soft_max: 150_000), + 9 => OpenStruct.new(soft_min: 520, soft_max: 150_000), + 0 => OpenStruct.new(soft_min: 520, soft_max: 150_000), }.freeze def income1_outside_soft_range_for_ecstat? @@ -76,7 +67,7 @@ module Validations::Sales::SoftValidations end def savings_over_soft_max? - soft_max = form.start_year_2025_or_later? && type == 24 ? 200_000 : 100_000 + soft_max = type == 24 ? 200_000 : 100_000 savings && savings > soft_max end @@ -145,7 +136,7 @@ module Validations::Sales::SoftValidations def grant_outside_common_range? return unless grant && type && saledate - return if form.start_year_2024_or_later? && [21, 8].include?(type) + return if [21, 8].include?(type) !grant.between?(9_000, 16_000) end @@ -222,10 +213,9 @@ private def income_under_soft_min?(income, ecstat) return unless income && ecstat - income_ranges = form.start_year_2025_or_later? ? ALLOWED_INCOME_RANGES_SALES[2025] : ALLOWED_INCOME_RANGES_SALES[2024] - return false unless income_ranges[ecstat] + return false unless ALLOWED_INCOME_RANGES_SALES[ecstat] - income < income_ranges[ecstat][:soft_min] + income < ALLOWED_INCOME_RANGES_SALES[ecstat][:soft_min] end def income1_over_soft_max_for_ecstat? @@ -237,11 +227,11 @@ private end def income_over_soft_max?(income, ecstat) - return unless income && ecstat && form.start_year_2025_or_later? + return unless income && ecstat - return false unless ALLOWED_INCOME_RANGES_SALES[2025][ecstat] + return false unless ALLOWED_INCOME_RANGES_SALES[ecstat] - income > ALLOWED_INCOME_RANGES_SALES[2025][ecstat][:soft_max] + income > ALLOWED_INCOME_RANGES_SALES[ecstat][:soft_max] end def income_over_discounted_sale_soft_max?(income) diff --git a/spec/models/validations/sales/soft_validations_spec.rb b/spec/models/validations/sales/soft_validations_spec.rb index e2cd26f47..ba8ade724 100644 --- a/spec/models/validations/sales/soft_validations_spec.rb +++ b/spec/models/validations/sales/soft_validations_spec.rb @@ -765,7 +765,7 @@ RSpec.describe Validations::Sales::SoftValidations do it "returns true if grant is below 9000" do record.grant = 1_000 record.type = 9 - record.saledate = Time.zone.local(2024, 1, 1) + record.saledate = current_collection_start_date expect(record).to be_grant_outside_common_range end @@ -773,7 +773,7 @@ RSpec.describe Validations::Sales::SoftValidations do it "returns true if grant is above 16000" do record.grant = 100_000 record.type = 9 - record.saledate = Time.zone.local(2024, 1, 1) + record.saledate = current_collection_start_date expect(record).to be_grant_outside_common_range end @@ -781,31 +781,31 @@ RSpec.describe Validations::Sales::SoftValidations do it "returns false if grant is within expected range" do record.grant = 10_000 record.type = 9 - record.saledate = Time.zone.local(2024, 1, 1) + record.saledate = current_collection_start_date expect(record).not_to be_grant_outside_common_range end - it "returns false for logs after 2024 with RTA" do + it "returns false for logs with RTA" do record.grant = 100_000 record.type = 8 - record.saledate = Time.zone.local(2025, 1, 1) + record.saledate = current_collection_start_date expect(record).not_to be_grant_outside_common_range end - it "returns false for logs after 2024 with socialBuy" do + it "returns false for logs with socialBuy" do record.grant = 100_000 record.type = 21 - record.saledate = Time.zone.local(2025, 1, 1) + record.saledate = current_collection_start_date expect(record).not_to be_grant_outside_common_range end - it "returns true for logs after 2024 with other type" do + it "returns true for logs with other type" do record.grant = 100_000 record.type = 9 - record.saledate = Time.zone.local(2025, 1, 1) + record.saledate = current_collection_start_date expect(record).to be_grant_outside_common_range end