Browse Source

Match updated requirements

CLDC-4146-infer-no-other-partners
oscar-richardson-softwire 4 days ago
parent
commit
5e6bed2004
  1. 21
      app/models/derived_variables/lettings_log_variables.rb
  2. 3
      app/models/form.rb
  3. 10
      app/models/form/lettings/pages/person_lead_partner.rb
  4. 10
      app/models/form/lettings/questions/person_partner.rb
  5. 4
      app/models/form/page.rb
  6. 8
      app/models/lettings_log.rb

21
app/models/derived_variables/lettings_log_variables.rb

@ -277,9 +277,6 @@ private
if form.start_year_2024_or_later? && unittype_gn_changed? && unittype_gn_was == 2
self.beds = nil
end
if form.start_year_2026_or_later?
reset_partner_fields!
end
end
def get_totelder
@ -333,7 +330,10 @@ private
end
def infer_at_most_one_relationship!
if partner_numbers.any?
new_partner_numbers = partner_numbers.select { |i| public_send("relat#{i}_changed?") }
if new_partner_numbers.any?
infer_only_partner!(new_partner_numbers.first)
elsif partner_numbers.any?
infer_only_partner!(partner_numbers.first)
end
end
@ -350,19 +350,6 @@ private
end
end
def reset_partner_fields!
person_count = hhmemb || 8
(2..person_count).each do |i|
next unless send("relat#{i}_changed?") && send("relat#{i}_was") == "P"
((i + 1)..person_count).each do |j|
if self["relat#{j}"] == "X"
self["relat#{j}"] = nil
end
end
end
end
def household_type
return unless totelder && totadult && totchild

3
app/models/form.rb

@ -108,7 +108,8 @@ class Form
return :check_answers if next_page.nil?
return next_page.id if next_page.routed_to?(log, current_user) &&
(!ignore_answered || next_page.has_unanswered_questions?(log))
(!ignore_answered || next_page.has_unanswered_questions?(log)) &&
!next_page.skip_page_in_form_flow?(log)
next_page_id(next_page, log, current_user, ignore_answered:)
end

10
app/models/form/lettings/pages/person_lead_partner.rb

@ -18,14 +18,18 @@ class Form::Lettings::Pages::PersonLeadPartner < ::Form::Page
"operator" => ">=",
"operand" => 16,
},
**(2...@person_index).map { |i| ["relat#{i}", { "operator" => "!=", "operand" => "P" }] }.to_h,
},
{ "details_known_#{@person_index}" => 0,
{
"details_known_#{@person_index}" => 0,
"age#{@person_index}" => nil,
**(2...@person_index).map { |i| ["relat#{i}", { "operator" => "!=", "operand" => "P" }] }.to_h },
},
]
else
[{ "details_known_#{@person_index}" => 0 }]
end
end
def skip_page_in_form_flow?(log)
log.is_another_person_partner?(@person_index)
end
end

10
app/models/form/lettings/questions/person_partner.rb

@ -36,14 +36,6 @@ class Form::Lettings::Questions::PersonPartner < ::Form::Question
end
def derived?(log)
form.start_year_2026_or_later? && log.is_partner_inferred?(@person_index)
end
def hidden_in_check_answers?(log, _current_user = nil)
if form.start_year_2026_or_later?
log.is_an_earlier_person_partner(@person_index)
else
false
end
form.start_year_2026_or_later? && log.is_person_under_16(@person_index)
end
end

4
app/models/form/page.rb

@ -55,6 +55,10 @@ class Form::Page
def skip_href(log = nil); end
def skip_page_in_form_flow?(_log)
false
end
private
def conditional_question_ids

8
app/models/lettings_log.rb

@ -407,16 +407,12 @@ class LettingsLog < Log
unittype_gn_changed? && unittype_gn_was == 2
end
def is_partner_inferred?(person_index)
is_person_under_16(person_index) || is_an_earlier_person_partner(person_index)
end
def is_person_under_16(person_index)
public_send("age#{person_index}") && public_send("age#{person_index}") < 16
end
def is_an_earlier_person_partner(person_index)
(2...person_index).any? do |i|
def is_another_person_partner?(person_index)
(2..8).reject { |i| i == person_index }.any? do |i|
public_send("relat#{i}") == "P"
end
end

Loading…
Cancel
Save