From d7483bcbe33c39859ebd8d3976807041d7d3ce19 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Thu, 29 Jan 2026 12:20:42 +0000 Subject: [PATCH] CLDC-4188: Infer referral_register for renewals needs a new dependencies array for 2026 this handles inferring as well as clearing inferred answers if the prior answer changes --- .../lettings_log_variables.rb | 53 +++++++++++++++++-- .../lettings/pages/referral_register_la.rb | 2 +- .../lettings/questions/referral_register.rb | 4 ++ 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/app/models/derived_variables/lettings_log_variables.rb b/app/models/derived_variables/lettings_log_variables.rb index 1c7f161c1..1abed45d8 100644 --- a/app/models/derived_variables/lettings_log_variables.rb +++ b/app/models/derived_variables/lettings_log_variables.rb @@ -33,7 +33,7 @@ module DerivedVariables::LettingsLogVariables def set_derived_fields! clear_inapplicable_derived_values! - set_encoded_derived_values!(DEPENDENCIES) + set_encoded_derived_values!(dependencies) if rsnvac.present? self.newprop = has_first_let_vacancy_reason? ? 1 : 2 @@ -182,7 +182,54 @@ module DerivedVariables::LettingsLogVariables private - DEPENDENCIES = [ + def dependencies + if form.start_year_2026_or_later? + DEPENDENCIES_2026 + else + DEPENDENCIES_PRE_2026 + end + end + + DEPENDENCIES_2026 = [ + { + conditions: { + renewal: 1, + }, + derived_values: { + referral_register: 1, # new in 2026 + waityear: 2, + offered: 0, + rsnvac: 14, + first_time_property_let_as_social_housing: 0, + }, + }, + { + conditions: { + net_income_known: 2, + }, + derived_values: { + incref: 1, + }, + }, + { + conditions: { + net_income_known: 0, + }, + derived_values: { + incref: 0, + }, + }, + { + conditions: { + net_income_known: 1, + }, + derived_values: { + incref: 2, + }, + }, + ].freeze + + DEPENDENCIES_PRE_2026 = [ { conditions: { renewal: 1, @@ -223,7 +270,7 @@ private ].freeze def clear_inapplicable_derived_values! - reset_invalidated_derived_values!(DEPENDENCIES) + reset_invalidated_derived_values!(dependencies) if (startdate_changed? || renewal_changed?) && (renewal_was == 1 && startdate_was&.between?(Time.zone.local(2021, 4, 1), Time.zone.local(2022, 3, 31))) self.underoccupation_benefitcap = nil end diff --git a/app/models/form/lettings/pages/referral_register_la.rb b/app/models/form/lettings/pages/referral_register_la.rb index ae1266b8e..ee570f1cb 100644 --- a/app/models/form/lettings/pages/referral_register_la.rb +++ b/app/models/form/lettings/pages/referral_register_la.rb @@ -10,6 +10,6 @@ class Form::Lettings::Pages::ReferralRegisterLa < ::Form::Page end def routed_to?(log, _current_user) - log.owning_organisation&.la? + log.owning_organisation&.la? && !log.is_renewal? end end diff --git a/app/models/form/lettings/questions/referral_register.rb b/app/models/form/lettings/questions/referral_register.rb index 214748323..d6e184758 100644 --- a/app/models/form/lettings/questions/referral_register.rb +++ b/app/models/form/lettings/questions/referral_register.rb @@ -38,5 +38,9 @@ class Form::Lettings::Questions::ReferralRegister < ::Form::Question end end + def derived?(log) + log.is_renewal? + end + QUESTION_NUMBER_FROM_YEAR = { 2026 => 84 }.freeze end