diff --git a/app/models/form/sales/pages/person_sex_registered_at_birth.rb b/app/models/form/sales/pages/person_sex_registered_at_birth.rb new file mode 100644 index 000000000..d77e8d98d --- /dev/null +++ b/app/models/form/sales/pages/person_sex_registered_at_birth.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class Form::Sales::Pages::PersonSexRegisteredAtBirth < ::Form::Page + def initialize(id, hsh, subsection, person_index:) + super(id, hsh, subsection) + @copy_key = "sales.household_characteristics.sex2.person" if person_index == 2 + @person_index = person_index + @depends_on = [ + { "details_known_#{person_index}" => 1 }, + ] + end + + def questions + @questions ||= [ + Form::Sales::Questions::PersonSexRegisteredAtBirth.new("sexRAB#{@person_index}", nil, self, person_index:@person_index), + ] + end +end diff --git a/app/models/form/sales/pages/sex_registered_at_birth2.rb b/app/models/form/sales/pages/sex_registered_at_birth2.rb new file mode 100644 index 000000000..55031b92a --- /dev/null +++ b/app/models/form/sales/pages/sex_registered_at_birth2.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class Form::Sales::Pages::SexRegisteredAtBirth2 < ::Form::Page + def initialize(id, hsh, subsection) + super + @id = "buyer_2_sex_registered_at_birth" + @copy_key = "sales.household_characteristics.sex2.buyer" + @depends_on = [ + { + "joint_purchase?" => true, + "buyer_has_seen_privacy_notice?" => true, + }, + { + "joint_purchase?" => true, + "buyer_not_interviewed?" => true, + }, + ] + end + + def questions + @questions ||= [ + Form::Sales::Questions::SexRegisteredAtBirth2.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/questions/person_sex_registered_at_birth.rb b/app/models/form/sales/questions/person_sex_registered_at_birth.rb new file mode 100644 index 000000000..fe1f14fa0 --- /dev/null +++ b/app/models/form/sales/questions/person_sex_registered_at_birth.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class Form::Sales::Questions::PersonSexRegisteredAtBirth < ::Form::Question + def initialize(id, hsh, page, person_index:) + super(id, hsh, page) + @type = "radio" + @copy_key = "sales.household_characteristics.sexRAB2.person" if person_index == 2 + @check_answers_card_number = person_index + @inferred_check_answers_value = [{ + "condition" => { + id => "R", + }, + "value" => "Prefers not to say", + }] + @answer_options = ANSWER_OPTIONS + @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] + end + + ANSWER_OPTIONS = { + "F" => { "value" => "Female" }, + "M" => { "value" => "Male" }, + "divider" => { "value" => true }, + "R" => { "value" => "Person prefers not to say" }, + }.freeze + + QUESTION_NUMBER_FROM_YEAR = { 2026 => 0 }.freeze +end diff --git a/app/models/form/sales/questions/sex_registered_at_birth1.rb b/app/models/form/sales/questions/sex_registered_at_birth1.rb index 633a9dc13..f6b219d74 100644 --- a/app/models/form/sales/questions/sex_registered_at_birth1.rb +++ b/app/models/form/sales/questions/sex_registered_at_birth1.rb @@ -14,8 +14,8 @@ class Form::Sales::Questions::SexRegisteredAtBirth1 < ::Form::Question "F" => { "value" => "Female" }, "M" => { "value" => "Male" }, "divider" => { "value" => true }, - "R" => { "value" => "Tenant prefers not to say" }, + "R" => { "value" => "Buyer prefers not to say" }, }.freeze - QUESTION_NUMBER_FROM_YEAR = { 2026 => 32 }.freeze + QUESTION_NUMBER_FROM_YEAR = { 2026 => 0 }.freeze end diff --git a/app/models/form/sales/questions/sex_registered_at_birth2.rb b/app/models/form/sales/questions/sex_registered_at_birth2.rb new file mode 100644 index 000000000..073be25a2 --- /dev/null +++ b/app/models/form/sales/questions/sex_registered_at_birth2.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class Form::Sales::Questions::SexRegisteredAtBirth2 < ::Form::Question + def initialize(id, hsh, page) + super + @id = "sexRAB2" + @type = "radio" + @copy_key = "sales.household_characteristics.sexRAB2.buyer" + @check_answers_card_number = 2 + @inferred_check_answers_value = [{ + "condition" => { + "sex2" => "R", + }, + "value" => "Prefers not to say", + }] + @answer_options = ANSWER_OPTIONS + @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] + end + + ANSWER_OPTIONS = { + "F" => { "value" => "Female" }, + "M" => { "value" => "Male" }, + "divider" => { "value" => true }, + "R" => { "value" => "Buyer prefers not to say" }, + }.freeze + + QUESTION_NUMBER_FROM_YEAR = { 2026 => 0 }.freeze +end diff --git a/app/models/form/sales/subsections/household_characteristics.rb b/app/models/form/sales/subsections/household_characteristics.rb index b18f7919f..4542ad49d 100644 --- a/app/models/form/sales/subsections/household_characteristics.rb +++ b/app/models/form/sales/subsections/household_characteristics.rb @@ -47,6 +47,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Sales::Pages::RetirementValueCheck.new("age_2_buyer_retirement_value_check", nil, self, person_index: 2), (Form::Sales::Pages::NotRetiredValueCheck.new("age_2_buyer_not_retired_value_check", nil, self, person_index: 2) if form.start_year_2024_or_later?), (Form::Sales::Pages::PersonStudentNotChildValueCheck.new("buyer_2_age_student_not_child_value_check", nil, self, person_index: 2) unless form.start_year_2025_or_later?), + Form::Sales::Pages::SexRegisteredAtBirth2.new(nil, nil, self), Form::Sales::Pages::GenderIdentity2.new(nil, nil, self), buyer_2_ethnicity_nationality_pages, Form::Sales::Pages::Buyer2WorkingSituation.new(nil, nil, self), @@ -68,6 +69,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection (Form::Sales::Pages::NotRetiredValueCheck.new("age_2_not_retired_value_check", nil, self, person_index: 2) if form.start_year_2024_or_later?), (Form::Sales::Pages::PersonStudentNotChildValueCheck.new("age_2_student_not_child_value_check", nil, self, person_index: 2) unless form.start_year_2025_or_later?), (Form::Sales::Pages::PartnerUnder16ValueCheck.new("age_2_partner_under_16_value_check", nil, self, person_index: 2) if form.start_year_2024_or_later?), + Form::Sales::Pages::PersonSexRegisteredAtBirth.new("person_2_sex_registered_at_birth", nil, self, person_index: 2), Form::Sales::Pages::PersonGenderIdentity.new("person_2_gender_identity", nil, self, person_index: 2), Form::Sales::Pages::PersonWorkingSituation.new("person_2_working_situation", nil, self, person_index: 2), Form::Sales::Pages::RetirementValueCheck.new("working_situation_2_retirement_value_check", nil, self, person_index: 2), @@ -83,6 +85,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection (Form::Sales::Pages::NotRetiredValueCheck.new("age_3_not_retired_value_check", nil, self, person_index: 3) if form.start_year_2024_or_later?), (Form::Sales::Pages::PersonStudentNotChildValueCheck.new("age_3_student_not_child_value_check", nil, self, person_index: 3) unless form.start_year_2025_or_later?), (Form::Sales::Pages::PartnerUnder16ValueCheck.new("age_3_partner_under_16_value_check", nil, self, person_index: 3) if form.start_year_2024_or_later?), + Form::Sales::Pages::PersonSexRegisteredAtBirth.new("person_3_sex_registered_at_birth", nil, self, person_index: 3), Form::Sales::Pages::PersonGenderIdentity.new("person_3_gender_identity", nil, self, person_index: 3), Form::Sales::Pages::PersonWorkingSituation.new("person_3_working_situation", nil, self, person_index: 3), Form::Sales::Pages::RetirementValueCheck.new("working_situation_3_retirement_value_check", nil, self, person_index: 3), @@ -98,6 +101,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection (Form::Sales::Pages::NotRetiredValueCheck.new("age_4_not_retired_value_check", nil, self, person_index: 4) if form.start_year_2024_or_later?), (Form::Sales::Pages::PersonStudentNotChildValueCheck.new("age_4_student_not_child_value_check", nil, self, person_index: 4) unless form.start_year_2025_or_later?), (Form::Sales::Pages::PartnerUnder16ValueCheck.new("age_4_partner_under_16_value_check", nil, self, person_index: 4) if form.start_year_2024_or_later?), + Form::Sales::Pages::PersonSexRegisteredAtBirth.new("person_4_sex_registered_at_birth", nil, self, person_index: 4), Form::Sales::Pages::PersonGenderIdentity.new("person_4_gender_identity", nil, self, person_index: 4), Form::Sales::Pages::PersonWorkingSituation.new("person_4_working_situation", nil, self, person_index: 4), Form::Sales::Pages::RetirementValueCheck.new("working_situation_4_retirement_value_check", nil, self, person_index: 4), @@ -113,6 +117,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection (Form::Sales::Pages::NotRetiredValueCheck.new("age_5_not_retired_value_check", nil, self, person_index: 5) if form.start_year_2024_or_later?), (Form::Sales::Pages::PersonStudentNotChildValueCheck.new("age_5_student_not_child_value_check", nil, self, person_index: 5) unless form.start_year_2025_or_later?), (Form::Sales::Pages::PartnerUnder16ValueCheck.new("age_5_partner_under_16_value_check", nil, self, person_index: 5) if form.start_year_2024_or_later?), + Form::Sales::Pages::PersonSexRegisteredAtBirth.new("person_5_sex_registered_at_birth", nil, self, person_index: 5), Form::Sales::Pages::PersonGenderIdentity.new("person_5_gender_identity", nil, self, person_index: 5), Form::Sales::Pages::PersonWorkingSituation.new("person_5_working_situation", nil, self, person_index: 5), Form::Sales::Pages::RetirementValueCheck.new("working_situation_5_retirement_value_check", nil, self, person_index: 5), @@ -128,6 +133,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection (Form::Sales::Pages::NotRetiredValueCheck.new("age_6_not_retired_value_check", nil, self, person_index: 6) if form.start_year_2024_or_later?), (Form::Sales::Pages::PersonStudentNotChildValueCheck.new("age_6_student_not_child_value_check", nil, self, person_index: 6) unless form.start_year_2025_or_later?), (Form::Sales::Pages::PartnerUnder16ValueCheck.new("age_6_partner_under_16_value_check", nil, self, person_index: 6) if form.start_year_2024_or_later?), + Form::Sales::Pages::PersonSexRegisteredAtBirth.new("person_6_sex_registered_at_birth", nil, self, person_index: 6), Form::Sales::Pages::PersonGenderIdentity.new("person_6_gender_identity", nil, self, person_index: 6), Form::Sales::Pages::PersonWorkingSituation.new("person_6_working_situation", nil, self, person_index: 6), Form::Sales::Pages::RetirementValueCheck.new("working_situation_6_retirement_value_check", nil, self, person_index: 6), diff --git a/config/locales/forms/2026/sales/household_characteristics.en.yml b/config/locales/forms/2026/sales/household_characteristics.en.yml index 36354eb3e..01fe94769 100644 --- a/config/locales/forms/2026/sales/household_characteristics.en.yml +++ b/config/locales/forms/2026/sales/household_characteristics.en.yml @@ -20,8 +20,8 @@ en: page_header: "" check_answer_label: "Buyer 1’s sex registered at birth" check_answer_prompt: "" - hint_text: "This is your sex that was registered at birth. The next question will ask about your gender identity." - question_text: "What is your sex?" + hint_text: "This is the sex that was registered at birth. The next question will ask about the buyer's gender identity." + question_text: "What was buyer 1's sex at birth?" sex1: page_header: "" @@ -137,6 +137,20 @@ en: hint_text: "" question_text: "Age" + sexRAB2: + buyer: + page_header: "" + check_answer_label: "Buyer 2’s sex registered at birth" + check_answer_prompt: "" + hint_text: "This is the sex that was registered at birth. The next question will ask about the buyer's gender identity." + question_text: "What was buyer 2's sex at birth?" + person: + page_header: "" + check_answer_label: "Person 2’s sex registered at birth" + check_answer_prompt: "" + hint_text: "This is the sex that was registered at birth. The next question will ask about the person's gender identity." + question_text: "What was person 2's sex at birth?" + sex2: buyer: page_header: "" @@ -273,6 +287,13 @@ en: hint_text: "" question_text: "Age" + sexRAB3: + page_header: "" + check_answer_label: "Person 3’s sex registered at birth" + check_answer_prompt: "" + hint_text: "This is the sex that was registered at birth. The next question will ask about the person's gender identity." + question_text: "What was person 3's sex at birth?" + sex3: page_header: "" check_answer_label: "Person 3’s gender identity" @@ -314,6 +335,13 @@ en: hint_text: "" question_text: "Age" + sexRAB4: + page_header: "" + check_answer_label: "Person 4’s sex registered at birth" + check_answer_prompt: "" + hint_text: "This is the sex that was registered at birth. The next question will ask about the person's gender identity." + question_text: "What was person 4's sex at birth?" + sex4: page_header: "" check_answer_label: "Person 4’s gender identity" @@ -355,6 +383,13 @@ en: hint_text: "" question_text: "Age" + sexRAB5: + page_header: "" + check_answer_label: "Person 5’s sex registered at birth" + check_answer_prompt: "" + hint_text: "This is the sex that was registered at birth. The next question will ask about the person's gender identity." + question_text: "What was person 5's sex at birth?" + sex5: page_header: "" check_answer_label: "Person 5’s gender identity" @@ -396,6 +431,13 @@ en: hint_text: "" question_text: "Age" + sexRAB6: + page_header: "" + check_answer_label: "Person 6’s sex registered at birth" + check_answer_prompt: "" + hint_text: "This is the sex that was registered at birth. The next question will ask about the person's gender identity." + question_text: "What was person 6's sex at birth?" + sex6: page_header: "" check_answer_label: "Person 6’s gender identity"