Browse Source

Merge branch 'main' into CLDC-4270-fix-text-being-coerced-to-0-on-integer-fields

pull/3230/head
samyou-softwire 3 months ago
parent
commit
42c5653198
  1. 4
      app/helpers/bulk_upload/sales_log_to_csv.rb
  2. 8
      app/models/derived_variables/sales_log_variables.rb
  3. 15
      app/models/form/lettings/questions/layear.rb
  4. 2
      app/models/form/lettings/questions/waityear.rb
  5. 28
      app/models/form/question.rb
  6. 2
      app/models/form/sales/pages/buyer1_gender_same_as_sex.rb
  7. 2
      app/models/form/sales/pages/buyer2_gender_same_as_sex.rb
  8. 6
      app/models/form/sales/pages/person_known.rb
  9. 14
      app/models/form/sales/pages/service_charge_changed.rb
  10. 4
      app/models/form/sales/questions/address_line1.rb
  11. 4
      app/models/form/sales/questions/address_search.rb
  12. 4
      app/models/form/sales/questions/age1.rb
  13. 4
      app/models/form/sales/questions/age2.rb
  14. 4
      app/models/form/sales/questions/armed_forces.rb
  15. 4
      app/models/form/sales/questions/armed_forces_spouse.rb
  16. 2
      app/models/form/sales/questions/building_height_class.rb
  17. 4
      app/models/form/sales/questions/buyer1_age_known.rb
  18. 4
      app/models/form/sales/questions/buyer1_ethnic_background_arab.rb
  19. 4
      app/models/form/sales/questions/buyer1_ethnic_background_asian.rb
  20. 4
      app/models/form/sales/questions/buyer1_ethnic_background_black.rb
  21. 4
      app/models/form/sales/questions/buyer1_ethnic_background_mixed.rb
  22. 4
      app/models/form/sales/questions/buyer1_ethnic_background_white.rb
  23. 4
      app/models/form/sales/questions/buyer1_ethnic_group.rb
  24. 4
      app/models/form/sales/questions/buyer1_income.rb
  25. 4
      app/models/form/sales/questions/buyer1_income_known.rb
  26. 4
      app/models/form/sales/questions/buyer1_live_in_property.rb
  27. 4
      app/models/form/sales/questions/buyer1_mortgage.rb
  28. 4
      app/models/form/sales/questions/buyer1_nationality.rb
  29. 4
      app/models/form/sales/questions/buyer1_previous_tenure.rb
  30. 4
      app/models/form/sales/questions/buyer1_working_situation.rb
  31. 4
      app/models/form/sales/questions/buyer2_age_known.rb
  32. 4
      app/models/form/sales/questions/buyer2_ethnic_background_arab.rb
  33. 4
      app/models/form/sales/questions/buyer2_ethnic_background_asian.rb
  34. 4
      app/models/form/sales/questions/buyer2_ethnic_background_black.rb
  35. 4
      app/models/form/sales/questions/buyer2_ethnic_background_mixed.rb
  36. 4
      app/models/form/sales/questions/buyer2_ethnic_background_white.rb
  37. 4
      app/models/form/sales/questions/buyer2_ethnic_group.rb
  38. 4
      app/models/form/sales/questions/buyer2_income.rb
  39. 4
      app/models/form/sales/questions/buyer2_income_known.rb
  40. 4
      app/models/form/sales/questions/buyer2_live_in_property.rb
  41. 4
      app/models/form/sales/questions/buyer2_living_in.rb
  42. 4
      app/models/form/sales/questions/buyer2_mortgage.rb
  43. 2
      app/models/form/sales/questions/buyer2_nationality.rb
  44. 4
      app/models/form/sales/questions/buyer2_relationship_to_buyer1.rb
  45. 4
      app/models/form/sales/questions/buyer2_relationship_to_buyer1_yes_no.rb
  46. 4
      app/models/form/sales/questions/buyer2_working_situation.rb
  47. 4
      app/models/form/sales/questions/buyer_company.rb
  48. 4
      app/models/form/sales/questions/buyer_interview.rb
  49. 4
      app/models/form/sales/questions/buyer_live.rb
  50. 2
      app/models/form/sales/questions/buyer_previous.rb
  51. 4
      app/models/form/sales/questions/buyer_still_serving.rb
  52. 2
      app/models/form/sales/questions/buyers_organisations.rb
  53. 4
      app/models/form/sales/questions/county.rb
  54. 9
      app/models/form/sales/questions/deposit_amount.rb
  55. 4
      app/models/form/sales/questions/deposit_discount.rb
  56. 4
      app/models/form/sales/questions/discount.rb
  57. 15
      app/models/form/sales/questions/discounted_ownership_type.rb
  58. 11
      app/models/form/sales/questions/equity.rb
  59. 2
      app/models/form/sales/questions/exchange_date.rb
  60. 9
      app/models/form/sales/questions/extra_borrowing.rb
  61. 4
      app/models/form/sales/questions/fromprop.rb
  62. 8
      app/models/form/sales/questions/gender_description.rb
  63. 4
      app/models/form/sales/questions/gender_identity1.rb
  64. 4
      app/models/form/sales/questions/gender_identity2.rb
  65. 5
      app/models/form/sales/questions/gender_same_as_sex.rb
  66. 4
      app/models/form/sales/questions/grant.rb
  67. 4
      app/models/form/sales/questions/handover_date.rb
  68. 9
      app/models/form/sales/questions/has_leasehold_charges.rb
  69. 4
      app/models/form/sales/questions/has_management_fee.rb
  70. 17
      app/models/form/sales/questions/has_service_charge.rb
  71. 27
      app/models/form/sales/questions/has_service_charges_changed.rb
  72. 4
      app/models/form/sales/questions/household_disability.rb
  73. 4
      app/models/form/sales/questions/household_wheelchair.rb
  74. 4
      app/models/form/sales/questions/housing_benefits.rb
  75. 4
      app/models/form/sales/questions/joint_purchase.rb
  76. 4
      app/models/form/sales/questions/la_nominations.rb
  77. 9
      app/models/form/sales/questions/leasehold_charges.rb
  78. 5
      app/models/form/sales/questions/living_before_purchase.rb
  79. 5
      app/models/form/sales/questions/living_before_purchase_years.rb
  80. 4
      app/models/form/sales/questions/management_fee.rb
  81. 4
      app/models/form/sales/questions/managing_organisation.rb
  82. 4
      app/models/form/sales/questions/monthly_rent.rb
  83. 4
      app/models/form/sales/questions/monthly_rent_after_staircasing.rb
  84. 4
      app/models/form/sales/questions/monthly_rent_before_staircasing.rb
  85. 9
      app/models/form/sales/questions/mortgage_amount.rb
  86. 10
      app/models/form/sales/questions/mortgage_length.rb
  87. 6
      app/models/form/sales/questions/mortgage_length_known.rb
  88. 23
      app/models/form/sales/questions/mortgageused.rb
  89. 3
      app/models/form/sales/questions/nationality_all.rb
  90. 3
      app/models/form/sales/questions/nationality_all_group.rb
  91. 17
      app/models/form/sales/questions/new_service_charges.rb
  92. 4
      app/models/form/sales/questions/number_joint_buyers.rb
  93. 6
      app/models/form/sales/questions/number_of_others_in_property.rb
  94. 2
      app/models/form/sales/questions/other_ownership_type.rb
  95. 2
      app/models/form/sales/questions/outright_ownership_type.rb
  96. 4
      app/models/form/sales/questions/ownership_scheme.rb
  97. 4
      app/models/form/sales/questions/owning_organisation_id.rb
  98. 9
      app/models/form/sales/questions/person_age.rb
  99. 4
      app/models/form/sales/questions/person_age_known.rb
  100. 7
      app/models/form/sales/questions/person_gender_identity.rb
  101. Some files were not shown because too many files have changed in this diff Show More

4
app/helpers/bulk_upload/sales_log_to_csv.rb

@ -678,7 +678,9 @@ class BulkUpload::SalesLogToCsv
log.gender_same_as_sex5,
log.gender_description5,
log.gender_same_as_sex6,
log.gender_description6, # 134
log.gender_description6,
log.hasservicechargeschanged,
log.newservicecharges, # 136
]
end

8
app/models/derived_variables/sales_log_variables.rb

@ -158,8 +158,12 @@ private
def number_of_household_members
return unless hholdcount.present? && jointpur.present?
number_of_buyers = joint_purchase? ? 2 : 1
hholdcount + number_of_buyers
if form.start_year_2026_or_later?
hholdcount
else
number_of_buyers = joint_purchase? ? 2 : 1
hholdcount + number_of_buyers
end
end
def total_elder

15
app/models/form/lettings/questions/layear.rb

@ -8,7 +8,20 @@ class Form::Lettings::Questions::Layear < ::Form::Question
end
def answer_options
if form.start_year_2024_or_later?
if form.start_year_2025_or_later?
{
"1" => { "value" => "Just moved to local authority area with this new let" },
"2" => { "value" => "Under 1 year" },
"7" => { "value" => "1 year but under 2 years" },
"8" => { "value" => "2 years but under 3 years" },
"9" => { "value" => "3 years but under 4 years" },
"10" => { "value" => "4 years but under 5 years" },
"11" => { "value" => "5 years but under 10 years" },
"12" => { "value" => "10 years or more" },
"divider" => { "value" => true },
"6" => { "value" => "Don’t know" },
}
elsif form.start_year_2024_or_later?
{
"1" => { "value" => "Just moved to local authority area with this new let" },
"2" => { "value" => "Less than 1 year" },

2
app/models/form/lettings/questions/waityear.rb

@ -11,7 +11,7 @@ class Form::Lettings::Questions::Waityear < ::Form::Question
if form.start_year_2025_or_later?
return {
"13" => { "value" => "Household not on the housing register (or waiting list) in this area" },
"2" => { "value" => "Less than 1 year" },
"2" => { "value" => "Under 1 year" },
"7" => { "value" => "1 year but under 2 years" },
"8" => { "value" => "2 years but under 3 years" },
"9" => { "value" => "3 years but under 4 years" },

28
app/models/form/question.rb

@ -373,8 +373,32 @@ private
# every year currently visible should have an explicit question number specified.
# however, form_handler.rb will still initialise the next form even if its not visible.
# so we have a fallback to the latest year for these future years so all question have a question number.
def get_question_number_from_hash(hash)
hash[form.start_date.year] || hash[hash.keys.max]
#
# some hashes are complex and require a second key to find the correct year.
# 2025 and before the question number used to depend on the ownershipsch and other log attributes
# 2026 and beyond we use the subsection ID for consistency
def get_question_number_from_hash(hash, value_key: nil)
year = if hash[form.start_date.year].present?
form.start_date.year
else
hash.keys.max
end
hash_value = hash[year]
return hash_value if hash_value.is_a?(Integer)
hash_value[value_key]
end
def get_person_question_number(base_hash, override_hash: nil)
buyer_override_question_number = override_hash&.dig(form.start_date.year, @person_index)
return buyer_override_question_number if buyer_override_question_number.present? && @buyer
base_question_number = base_hash[form.start_date.year] || base_hash[base_hash.keys.max]
base_question_number + (form.person_question_count * @person_index)
end
RADIO_YES_VALUE = {

2
app/models/form/sales/pages/buyer1_gender_same_as_sex.rb

@ -15,7 +15,7 @@ class Form::Sales::Pages::Buyer1GenderSameAsSex < ::Form::Page
def questions
@questions ||= [
Form::Sales::Questions::GenderSameAsSex.new(nil, nil, self, person_index: 1, buyer: true),
Form::Sales::Questions::GenderDescription.new(nil, nil, self, person_index: 1),
Form::Sales::Questions::GenderDescription.new(nil, nil, self, person_index: 1, buyer: true),
]
end
end

2
app/models/form/sales/pages/buyer2_gender_same_as_sex.rb

@ -17,7 +17,7 @@ class Form::Sales::Pages::Buyer2GenderSameAsSex < ::Form::Page
def questions
@questions ||= [
Form::Sales::Questions::GenderSameAsSex.new(nil, nil, self, person_index: 2, buyer: true),
Form::Sales::Questions::GenderDescription.new(nil, nil, self, person_index: 2),
Form::Sales::Questions::GenderDescription.new(nil, nil, self, person_index: 2, buyer: true),
]
end
end

6
app/models/form/sales/pages/person_known.rb

@ -16,18 +16,18 @@ class Form::Sales::Pages::PersonKnown < Form::Sales::Pages::Person
[{ "not_joint_purchase?" => true,
"hholdcount" => {
"operator" => ">=",
"operand" => 1,
"operand" => form.start_year_2026_or_later? ? 2 : 1,
} }]
else
[{ "not_joint_purchase?" => true,
"hholdcount" => {
"operator" => ">=",
"operand" => @person_index - 1,
"operand" => form.start_year_2026_or_later? ? @person_index : @person_index - 1,
} },
{ "joint_purchase?" => true,
"hholdcount" => {
"operator" => ">=",
"operand" => @person_index - 2,
"operand" => form.start_year_2026_or_later? ? @person_index : @person_index - 2,
} }]
end
end

14
app/models/form/sales/pages/service_charge_changed.rb

@ -0,0 +1,14 @@
class Form::Sales::Pages::ServiceChargeChanged < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "service_charge_changed"
@copy_key = "sales.sale_information.servicecharges_changed"
end
def questions
@questions ||= [
Form::Sales::Questions::HasServiceChargesChanged.new(nil, nil, self),
Form::Sales::Questions::NewServiceCharges.new(nil, nil, self),
]
end
end

4
app/models/form/sales/questions/address_line1.rb

@ -7,7 +7,7 @@ class Form::Sales::Questions::AddressLine1 < ::Form::Question
@type = "text"
@plain_label = true
@disable_clearing_if_not_routed_or_dynamic_answer_options = true
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@hide_question_number_on_page = true
end
@ -18,5 +18,5 @@ class Form::Sales::Questions::AddressLine1 < ::Form::Question
].select(&:present?).join("\n")
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 15, 2024 => 16, 2025 => 14 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 15, 2024 => 16, 2025 => 14, 2026 => 14 }.freeze
end

4
app/models/form/sales/questions/address_search.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::AddressSearch < ::Form::Question
@copy_key = "sales.property_information.address_search"
@plain_label = true
@bottom_guidance_partial = "address_search"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@hide_question_number_on_page = true
end
@ -38,5 +38,5 @@ class Form::Sales::Questions::AddressSearch < ::Form::Question
answer_options(log, user).transform_values { |value| value["value"] } || {}
end
QUESTION_NUMBER_FROM_YEAR = { 2024 => 15, 2025 => 13 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2024 => 15, 2025 => 13, 2026 => 13 }.freeze
end

4
app/models/form/sales/questions/age1.rb

@ -19,8 +19,8 @@ class Form::Sales::Questions::Age1 < ::Form::Question
@min = 16
@max = 110
@step = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 20, 2024 => 22, 2025 => 20 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 20, 2024 => 22, 2025 => 20, 2026 => 21 }.freeze
end

4
app/models/form/sales/questions/age2.rb

@ -13,8 +13,8 @@ class Form::Sales::Questions::Age2 < ::Form::Question
@max = 110
@min = 16
@step = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 28, 2024 => 30, 2025 => 28 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 28, 2024 => 30, 2025 => 28, 2026 => 30 }.freeze
end

4
app/models/form/sales/questions/armed_forces.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::ArmedForces < ::Form::Question
@id = "hhregres"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -15,5 +15,5 @@ class Form::Sales::Questions::ArmedForces < ::Form::Question
"8" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 62, 2024 => 64, 2025 => 61 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 62, 2024 => 64, 2025 => 61, 2026 => 69 }.freeze
end

4
app/models/form/sales/questions/armed_forces_spouse.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::ArmedForcesSpouse < ::Form::Question
@id = "armedforcesspouse"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -15,5 +15,5 @@ class Form::Sales::Questions::ArmedForcesSpouse < ::Form::Question
"7" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 64, 2024 => 66, 2025 => 63 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 64, 2024 => 66, 2025 => 63, 2026 => 71 }.freeze
end

2
app/models/form/sales/questions/building_height_class.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::BuildingHeightClass < ::Form::Question
@id = "buildheightclass"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {

4
app/models/form/sales/questions/buyer1_age_known.rb

@ -22,7 +22,7 @@ class Form::Sales::Questions::Buyer1AgeKnown < ::Form::Question
],
}
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -31,5 +31,5 @@ class Form::Sales::Questions::Buyer1AgeKnown < ::Form::Question
"2" => { "value" => "Buyer prefers not to say" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 20, 2024 => 22, 2025 => 20 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 20, 2024 => 22, 2025 => 20, 2026 => 21 }.freeze
end

4
app/models/form/sales/questions/buyer1_ethnic_background_arab.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundArab < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -14,5 +14,5 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundArab < ::Form::Question
"16" => { "value" => "Other ethnic group" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23, 2026 => 25 }.freeze
end

4
app/models/form/sales/questions/buyer1_ethnic_background_asian.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundAsian < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -17,5 +17,5 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundAsian < ::Form::Question
"11" => { "value" => "Any other Asian or Asian British background" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23, 2026 => 25 }.freeze
end

4
app/models/form/sales/questions/buyer1_ethnic_background_black.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundBlack < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -15,5 +15,5 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundBlack < ::Form::Question
"14" => { "value" => "Any other Black, African, Caribbean or Black British background" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23, 2026 => 25 }.freeze
end

4
app/models/form/sales/questions/buyer1_ethnic_background_mixed.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundMixed < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -16,5 +16,5 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundMixed < ::Form::Question
"7" => { "value" => "Any other Mixed or Multiple ethnic background" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23, 2026 => 25 }.freeze
end

4
app/models/form/sales/questions/buyer1_ethnic_background_white.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundWhite < ::Form::Question
@copy_key = "sales.household_characteristics.ethnic.ethnic_background_white"
@type = "radio"
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options
@ -27,5 +27,5 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundWhite < ::Form::Question
end
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 23, 2024 => 25, 2025 => 23, 2026 => 25 }.freeze
end

4
app/models/form/sales/questions/buyer1_ethnic_group.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer1EthnicGroup < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -18,5 +18,5 @@ class Form::Sales::Questions::Buyer1EthnicGroup < ::Form::Question
"17" => { "value" => "Buyer prefers not to say" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 22, 2024 => 24, 2025 => 22 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 22, 2024 => 24, 2025 => 22, 2026 => 24 }.freeze
end

4
app/models/form/sales/questions/buyer1_income.rb

@ -10,9 +10,9 @@ class Form::Sales::Questions::Buyer1Income < ::Form::Question
@width = 5
@prefix = "£"
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 67, 2024 => 69, 2025 => 66 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 67, 2024 => 69, 2025 => 66, 2026 => 74 }.freeze
end

4
app/models/form/sales/questions/buyer1_income_known.rb

@ -9,7 +9,7 @@ class Form::Sales::Questions::Buyer1IncomeKnown < ::Form::Question
"income1" => [0],
}
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@hidden_in_check_answers = {
"depends_on" => [
{
@ -24,5 +24,5 @@ class Form::Sales::Questions::Buyer1IncomeKnown < ::Form::Question
"1" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 67, 2024 => 69, 2025 => 66 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 67, 2024 => 69, 2025 => 66, 2026 => 74 }.freeze
end

4
app/models/form/sales/questions/buyer1_live_in_property.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer1LiveInProperty < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -13,5 +13,5 @@ class Form::Sales::Questions::Buyer1LiveInProperty < ::Form::Question
"2" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 26, 2024 => 28, 2025 => 26 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 26, 2024 => 28, 2025 => 26, 2026 => 28 }.freeze
end

4
app/models/form/sales/questions/buyer1_mortgage.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer1Mortgage < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -21,5 +21,5 @@ class Form::Sales::Questions::Buyer1Mortgage < ::Form::Question
}
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 68, 2024 => 70, 2025 => 67 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 68, 2024 => 70, 2025 => 67, 2026 => 75 }.freeze
end

4
app/models/form/sales/questions/buyer1_nationality.rb

@ -11,7 +11,7 @@ class Form::Sales::Questions::Buyer1Nationality < ::Form::Question
},
"value" => "Prefers not to say",
}]
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -22,5 +22,5 @@ class Form::Sales::Questions::Buyer1Nationality < ::Form::Question
"13" => { "value" => "Buyer prefers not to say" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 24, 2024 => 26, 2025 => 24 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 24, 2024 => 26, 2025 => 24, 2026 => 26 }.freeze
end

4
app/models/form/sales/questions/buyer1_previous_tenure.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::Buyer1PreviousTenure < ::Form::Question
@id = "prevten"
@type = "radio"
@answer_options = answer_options
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options
@ -22,5 +22,5 @@ class Form::Sales::Questions::Buyer1PreviousTenure < ::Form::Question
}
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 56, 2024 => 58, 2025 => 56 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 56, 2024 => 58, 2025 => 56, 2026 => 64 }.freeze
end

4
app/models/form/sales/questions/buyer1_working_situation.rb

@ -11,7 +11,7 @@ class Form::Sales::Questions::Buyer1WorkingSituation < ::Form::Question
},
"value" => "Prefers not to say",
}]
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options
@ -44,5 +44,5 @@ class Form::Sales::Questions::Buyer1WorkingSituation < ::Form::Question
end
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 25, 2024 => 27, 2025 => 25 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 25, 2024 => 27, 2025 => 25, 2026 => 27 }.freeze
end

4
app/models/form/sales/questions/buyer2_age_known.rb

@ -19,7 +19,7 @@ class Form::Sales::Questions::Buyer2AgeKnown < ::Form::Question
],
}
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -27,5 +27,5 @@ class Form::Sales::Questions::Buyer2AgeKnown < ::Form::Question
"1" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 28, 2024 => 30, 2025 => 28 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 28, 2024 => 30, 2025 => 28, 2026 => 30 }.freeze
end

4
app/models/form/sales/questions/buyer2_ethnic_background_arab.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundArab < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -14,5 +14,5 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundArab < ::Form::Question
"16" => { "value" => "Other ethnic group" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31, 2026 => 34 }.freeze
end

4
app/models/form/sales/questions/buyer2_ethnic_background_asian.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundAsian < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -17,5 +17,5 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundAsian < ::Form::Question
"11" => { "value" => "Any other Asian or Asian British background" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31, 2026 => 34 }.freeze
end

4
app/models/form/sales/questions/buyer2_ethnic_background_black.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundBlack < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -15,5 +15,5 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundBlack < ::Form::Question
"14" => { "value" => "Any other Black, African, Caribbean or Black British background" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31, 2026 => 34 }.freeze
end

4
app/models/form/sales/questions/buyer2_ethnic_background_mixed.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundMixed < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -16,5 +16,5 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundMixed < ::Form::Question
"7" => { "value" => "Any other Mixed or Multiple ethnic background" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31, 2026 => 34 }.freeze
end

4
app/models/form/sales/questions/buyer2_ethnic_background_white.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundWhite < ::Form::Question
@copy_key = "sales.household_characteristics.ethnicbuy2.ethnic_background_white"
@type = "radio"
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options
@ -27,5 +27,5 @@ class Form::Sales::Questions::Buyer2EthnicBackgroundWhite < ::Form::Question
end
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 31, 2024 => 33, 2025 => 31, 2026 => 34 }.freeze
end

4
app/models/form/sales/questions/buyer2_ethnic_group.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer2EthnicGroup < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -18,5 +18,5 @@ class Form::Sales::Questions::Buyer2EthnicGroup < ::Form::Question
"17" => { "value" => "Buyer prefers not to say" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 30, 2024 => 32, 2025 => 30 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 30, 2024 => 32, 2025 => 30, 2026 => 33 }.freeze
end

4
app/models/form/sales/questions/buyer2_income.rb

@ -10,9 +10,9 @@ class Form::Sales::Questions::Buyer2Income < ::Form::Question
@width = 5
@prefix = "£"
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 69, 2024 => 71, 2025 => 68 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 69, 2024 => 71, 2025 => 68, 2026 => 76 }.freeze
end

4
app/models/form/sales/questions/buyer2_income_known.rb

@ -9,7 +9,7 @@ class Form::Sales::Questions::Buyer2IncomeKnown < ::Form::Question
"income2" => [0],
}
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@hidden_in_check_answers = {
"depends_on" => [
{
@ -24,5 +24,5 @@ class Form::Sales::Questions::Buyer2IncomeKnown < ::Form::Question
"1" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 69, 2024 => 71, 2025 => 68 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 69, 2024 => 71, 2025 => 68, 2026 => 76 }.freeze
end

4
app/models/form/sales/questions/buyer2_live_in_property.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer2LiveInProperty < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -13,5 +13,5 @@ class Form::Sales::Questions::Buyer2LiveInProperty < ::Form::Question
"2" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 34, 2024 => 36, 2025 => 34 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 34, 2024 => 36, 2025 => 34, 2026 => 37 }.freeze
end

4
app/models/form/sales/questions/buyer2_living_in.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::Buyer2LivingIn < ::Form::Question
@id = "buy2living"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -14,5 +14,5 @@ class Form::Sales::Questions::Buyer2LivingIn < ::Form::Question
"3" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 60, 2024 => 62, 2025 => 59 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 60, 2024 => 62, 2025 => 59, 2026 => 67 }.freeze
end

4
app/models/form/sales/questions/buyer2_mortgage.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer2Mortgage < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -21,5 +21,5 @@ class Form::Sales::Questions::Buyer2Mortgage < ::Form::Question
}
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 70, 2024 => 72, 2025 => 69 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 70, 2024 => 72, 2025 => 69, 2026 => 77 }.freeze
end

2
app/models/form/sales/questions/buyer2_nationality.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Buyer2Nationality < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@inferred_check_answers_value = [{
"condition" => {
"national" => 13,

4
app/models/form/sales/questions/buyer2_relationship_to_buyer1.rb

@ -12,7 +12,7 @@ class Form::Sales::Questions::Buyer2RelationshipToBuyer1 < ::Form::Question
},
"value" => "Prefers not to say",
}]
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options
@ -33,5 +33,5 @@ class Form::Sales::Questions::Buyer2RelationshipToBuyer1 < ::Form::Question
end
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 27, 2024 => 29, 2025 => 27 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 27, 2024 => 29, 2025 => 27, 2026 => 29 }.freeze
end

4
app/models/form/sales/questions/buyer2_relationship_to_buyer1_yes_no.rb

@ -16,8 +16,8 @@ class Form::Sales::Questions::Buyer2RelationshipToBuyer1YesNo < ::Form::Question
"value" => "Prefers not to say",
}]
@check_answers_card_number = 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
QUESTION_NUMBER_FROM_YEAR = { 2025 => 27 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2025 => 27, 2026 => 29 }.freeze
end

4
app/models/form/sales/questions/buyer2_working_situation.rb

@ -12,7 +12,7 @@ class Form::Sales::Questions::Buyer2WorkingSituation < ::Form::Question
},
"value" => "Prefers not to say",
}]
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def displayed_answer_options(_log, _user = nil)
@ -51,5 +51,5 @@ class Form::Sales::Questions::Buyer2WorkingSituation < ::Form::Question
end
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 33, 2024 => 35, 2025 => 33 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 33, 2024 => 35, 2025 => 33, 2026 => 36 }.freeze
end

4
app/models/form/sales/questions/buyer_company.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::BuyerCompany < ::Form::Question
@id = "companybuy"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -12,5 +12,5 @@ class Form::Sales::Questions::BuyerCompany < ::Form::Question
"2" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 7, 2024 => 9 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 7, 2024 => 9, 2025 => 9, 2026 => 9 }.freeze
end

4
app/models/form/sales/questions/buyer_interview.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::BuyerInterview < ::Form::Question
@copy_key = "sales.#{subsection.copy_key}.noint.#{joint_purchase ? 'joint_purchase' : 'not_joint_purchase'}"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -13,5 +13,5 @@ class Form::Sales::Questions::BuyerInterview < ::Form::Question
"1" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 18, 2024 => 13, 2025 => 11 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 18, 2024 => 13, 2025 => 11, 2026 => 11 }.freeze
end

4
app/models/form/sales/questions/buyer_live.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::BuyerLive < ::Form::Question
@id = "buylivein"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -12,5 +12,5 @@ class Form::Sales::Questions::BuyerLive < ::Form::Question
"2" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 8, 2024 => 10 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 8, 2024 => 10, 2025 => 10, 2026 => 10 }.freeze
end

2
app/models/form/sales/questions/buyer_previous.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::BuyerPrevious < ::Form::Question
@copy_key = "sales.sale_information.soctenant.#{joint_purchase ? 'joint_purchase' : 'not_joint_purchase'}"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {

4
app/models/form/sales/questions/buyer_still_serving.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::BuyerStillServing < ::Form::Question
@id = "hhregresstill"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -15,5 +15,5 @@ class Form::Sales::Questions::BuyerStillServing < ::Form::Question
"7" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 63, 2024 => 65, 2025 => 62 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 63, 2024 => 65, 2025 => 62, 2026 => 70 }.freeze
end

2
app/models/form/sales/questions/buyers_organisations.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::BuyersOrganisations < ::Form::Question
@id = "buyers_organisations"
@type = "checkbox"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {

4
app/models/form/sales/questions/county.rb

@ -6,9 +6,9 @@ class Form::Sales::Questions::County < ::Form::Question
@type = "text"
@plain_label = true
@disable_clearing_if_not_routed_or_dynamic_answer_options = true
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@hide_question_number_on_page = true
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 15, 2024 => 16, 2025 => 14 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 15, 2024 => 16, 2025 => 14, 2026 => 14 }.freeze
end

9
app/models/form/sales/questions/deposit_amount.rb

@ -1,6 +1,6 @@
class Form::Sales::Questions::DepositAmount < ::Form::Question
def initialize(id, hsh, subsection, ownershipsch:, optional:)
super(id, hsh, subsection)
def initialize(id, hsh, page, ownershipsch:, optional:)
super(id, hsh, page)
@id = "deposit"
@type = "numeric"
@min = 0
@ -9,7 +9,7 @@ class Form::Sales::Questions::DepositAmount < ::Form::Question
@width = 5
@prefix = "£"
@ownershipsch = ownershipsch
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
@optional = optional
@top_guidance_partial = top_guidance_partial
@copy_key = copy_key
@ -20,10 +20,11 @@ class Form::Sales::Questions::DepositAmount < ::Form::Question
log.outright_sale? && !log.mortgage_used?
end
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 95, 2 => 108, 3 => 116 },
2024 => { 1 => 96, 2 => 109, 3 => 116 },
2025 => { 1 => 85, 2 => 110 },
2026 => { "shared_ownership_initial_purchase" => 93, "discounted_ownership_scheme" => 120 },
}.freeze
def top_guidance_partial

4
app/models/form/sales/questions/deposit_discount.rb

@ -8,10 +8,10 @@ class Form::Sales::Questions::DepositDiscount < ::Form::Question
@step = 1
@width = 5
@prefix = "£"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@top_guidance_partial = "financial_calculations_shared_ownership"
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 96, 2024 => 97, 2025 => 86 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 96, 2024 => 97, 2025 => 86, 2026 => 94 }.freeze
end

4
app/models/form/sales/questions/discount.rb

@ -8,9 +8,9 @@ class Form::Sales::Questions::Discount < ::Form::Question
@step = 0.1
@width = 5
@suffix = "%"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@top_guidance_partial = "financial_calculations_discounted_ownership"
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 102, 2024 => 103, 2025 => 105 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 102, 2024 => 103, 2025 => 105, 2026 => 115 }.freeze
end

15
app/models/form/sales/questions/discounted_ownership_type.rb

@ -5,8 +5,8 @@ class Form::Sales::Questions::DiscountedOwnershipType < ::Form::Question
@copy_key = "sales.setup.type.discounted_ownership"
@type = "radio"
@top_guidance_partial = guidance_partial
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@answer_options = form.start_year_2026_or_later? ? ANSWER_OPTIONS_2026_OR_LATER : ANSWER_OPTIONS
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -19,9 +19,18 @@ class Form::Sales::Questions::DiscountedOwnershipType < ::Form::Question
"22" => { "value" => "Any other equity loan scheme" },
}.freeze
ANSWER_OPTIONS_2026_OR_LATER = {
"8" => { "value" => "Right to Acquire (RTA)" },
"14" => { "value" => "Preserved Right to Buy (PRTB)" },
"9" => { "value" => "Right to Buy (RTB)" },
"29" => { "value" => "Rent to Buy - Full Ownership" },
"21" => { "value" => "Social HomeBuy for outright purchase" },
"22" => { "value" => "Any other equity loan scheme" },
}.freeze
def guidance_partial
"discounted_ownership_type_definitions" if form.start_date.year >= 2023
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 5, 2024 => 7, 2025 => 8 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 5, 2024 => 7, 2025 => 8, 2026 => 8 }.freeze
end

11
app/models/form/sales/questions/equity.rb

@ -9,11 +9,14 @@ class Form::Sales::Questions::Equity < ::Form::Question
@step = 0.1
@width = 5
@suffix = "%"
@question_number = question_number_from_year[form.start_date.year] || question_number_from_year[question_number_from_year.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: subsection.id)
@top_guidance_partial = "financial_calculations_shared_ownership"
end
def question_number_from_year
{ 2023 => 89, 2024 => 90, 2025 => subsection.id == "shared_ownership_staircasing_transaction" ? 98 : 81 }
end
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => 89,
2024 => 90,
2025 => { "shared_ownership_initial_purchase" => 81, "shared_ownership_staircasing_transaction" => 98 },
2026 => { "shared_ownership_initial_purchase" => 89, "shared_ownership_staircasing_transaction" => 106 },
}.freeze
end

2
app/models/form/sales/questions/exchange_date.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::ExchangeDate < ::Form::Question
@id = "exdate"
@copy_key = "sales.sale_information.exchange_date"
@type = "date"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 81, 2024 => 83 }.freeze

9
app/models/form/sales/questions/extra_borrowing.rb

@ -1,12 +1,12 @@
class Form::Sales::Questions::ExtraBorrowing < ::Form::Question
def initialize(id, hsh, subsection, ownershipsch:)
super(id, hsh, subsection)
def initialize(id, hsh, page, ownershipsch:)
super(id, hsh, page)
@id = "extrabor"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@page = page
@ownershipsch = ownershipsch
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
end
ANSWER_OPTIONS = {
@ -16,9 +16,10 @@ class Form::Sales::Questions::ExtraBorrowing < ::Form::Question
"3" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 94, 2 => 107, 3 => 115 },
2024 => { 1 => 95, 2 => 108, 3 => 115 },
2025 => { 2 => 109 },
2026 => { "discounted_ownership_scheme" => 119 },
}.freeze
end

4
app/models/form/sales/questions/fromprop.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::Fromprop < ::Form::Question
@type = "radio"
@page = page
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -27,5 +27,5 @@ class Form::Sales::Questions::Fromprop < ::Form::Question
}
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 86, 2024 => 87, 2025 => 78 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 86, 2024 => 87, 2025 => 78, 2026 => 86 }.freeze
end

8
app/models/form/sales/questions/gender_description.rb

@ -1,14 +1,16 @@
class Form::Sales::Questions::GenderDescription < ::Form::Question
def initialize(id, hsh, page, person_index:)
def initialize(id, hsh, page, person_index:, buyer: false)
super(id, hsh, page)
@id = "gender_description#{person_index}"
@type = "text"
@check_answers_card_number = person_index
@buyer = buyer
@person_index = person_index
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS, override_hash: BUYER_OVERRIDE_QUESTION_NUMBERS)
end
QUESTION_NUMBER_FROM_YEAR = { 2026 => 0 }.freeze
BASE_QUESTION_NUMBERS = { 2026 => 32 }.freeze
BUYER_OVERRIDE_QUESTION_NUMBERS = { 2026 => { 1 => 23, 2 => 32 } }.freeze
def derived?(log)
log.public_send("gender_same_as_sex#{@person_index}") != 2

4
app/models/form/sales/questions/gender_identity1.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::GenderIdentity1 < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_number = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -15,5 +15,5 @@ class Form::Sales::Questions::GenderIdentity1 < ::Form::Question
"R" => { "value" => "Prefers not to say" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 21, 2024 => 23, 2025 => 21 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 21, 2024 => 23, 2025 => 21, 2026 => 22 }.freeze
end

4
app/models/form/sales/questions/gender_identity2.rb

@ -12,7 +12,7 @@ class Form::Sales::Questions::GenderIdentity2 < ::Form::Question
},
"value" => "Prefers not to say",
}]
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -22,5 +22,5 @@ class Form::Sales::Questions::GenderIdentity2 < ::Form::Question
"R" => { "value" => "Buyer prefers not to say" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 29, 2024 => 31, 2025 => 29 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 29, 2024 => 31, 2025 => 29, 2026 => 31 }.freeze
end

5
app/models/form/sales/questions/gender_same_as_sex.rb

@ -9,10 +9,11 @@ class Form::Sales::Questions::GenderSameAsSex < ::Form::Question
@person_index = person_index
@buyer = buyer
@copy_key = "sales.household_characteristics.gender_same_as_sex#{person_index}.#{buyer ? 'buyer' : 'person'}" if person_index == 2
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS, override_hash: BUYER_OVERRIDE_QUESTION_NUMBERS)
end
QUESTION_NUMBER_FROM_YEAR = { 2026 => 0 }.freeze
BASE_QUESTION_NUMBERS = { 2026 => 32 }.freeze
BUYER_OVERRIDE_QUESTION_NUMBERS = { 2026 => { 1 => 23, 2 => 32 } }.freeze
def answer_options
{

4
app/models/form/sales/questions/grant.rb

@ -8,10 +8,10 @@ class Form::Sales::Questions::Grant < ::Form::Question
@step = 1
@width = 5
@prefix = "£"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@top_guidance_partial = "financial_calculations_discounted_ownership"
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 101, 2024 => 102, 2025 => 104 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 101, 2024 => 102, 2025 => 104, 2026 => 114 }.freeze
end

4
app/models/form/sales/questions/handover_date.rb

@ -4,8 +4,8 @@ class Form::Sales::Questions::HandoverDate < ::Form::Question
@id = "hodate"
@copy_key = "sales.sale_information.handover_date"
@type = "date"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 82, 2024 => 84, 2025 => 76 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 82, 2024 => 84, 2025 => 76, 2026 => 84 }.freeze
end

9
app/models/form/sales/questions/has_leasehold_charges.rb

@ -1,6 +1,6 @@
class Form::Sales::Questions::HasLeaseholdCharges < ::Form::Question
def initialize(id, hsh, subsection, ownershipsch:)
super(id, hsh, subsection)
def initialize(id, hsh, page, ownershipsch:)
super(id, hsh, page)
@id = "has_mscharge"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@ -16,7 +16,7 @@ class Form::Sales::Questions::HasLeaseholdCharges < ::Form::Question
}
@ownershipsch = ownershipsch
@copy_key = "sales.sale_information.leaseholdcharges.has_mscharge"
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
end
ANSWER_OPTIONS = {
@ -24,8 +24,9 @@ class Form::Sales::Questions::HasLeaseholdCharges < ::Form::Question
"0" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2024 => { 1 => 99, 2 => 110, 3 => 117 },
2025 => { 2 => 111 },
2026 => 121,
}.freeze
end

4
app/models/form/sales/questions/has_management_fee.rb

@ -15,7 +15,7 @@ class Form::Sales::Questions::HasManagementFee < ::Form::Question
},
],
}
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -23,5 +23,5 @@ class Form::Sales::Questions::HasManagementFee < ::Form::Question
"0" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2025 => 89 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2025 => 89, 2026 => 97 }.freeze
end

17
app/models/form/sales/questions/has_service_charge.rb

@ -1,6 +1,6 @@
class Form::Sales::Questions::HasServiceCharge < ::Form::Question
def initialize(id, hsh, subsection, staircasing:)
super(id, hsh, subsection)
def initialize(id, hsh, page, staircasing:)
super(id, hsh, page)
@id = "has_mscharge"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@ -16,7 +16,7 @@ class Form::Sales::Questions::HasServiceCharge < ::Form::Question
}
@copy_key = "sales.sale_information.servicecharges.has_servicecharge"
@staircasing = staircasing
@question_number = question_number_from_year[form.start_date.year] || question_number_from_year[question_number_from_year.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: subsection.id)
end
ANSWER_OPTIONS = {
@ -24,11 +24,8 @@ class Form::Sales::Questions::HasServiceCharge < ::Form::Question
"0" => { "value" => "No" },
}.freeze
def question_number_from_year
if @staircasing
{ 2026 => 0 }.freeze
else
{ 2025 => 88, 2026 => 0 }.freeze
end
end
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2025 => 88,
2026 => { "shared_ownership_initial_purchase" => 96, "shared_ownership_staircasing_transaction" => 110 },
}.freeze
end

27
app/models/form/sales/questions/has_service_charges_changed.rb

@ -0,0 +1,27 @@
class Form::Sales::Questions::HasServiceChargesChanged < ::Form::Question
def initialize(id, hsh, page)
super
@id = "hasservicechargeschanged"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@conditional_for = {
"newservicecharges" => [1],
}
@hidden_in_check_answers = {
"depends_on" => [
{
"hasservicechargeschanged" => 1,
},
],
}
@copy_key = "sales.sale_information.servicecharges_changed.has_service_charges_changed"
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
"1" => { "value" => "Yes" },
"2" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2026 => 111 }.freeze
end

4
app/models/form/sales/questions/household_disability.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::HouseholdDisability < ::Form::Question
@id = "disabled"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -14,5 +14,5 @@ class Form::Sales::Questions::HouseholdDisability < ::Form::Question
"3" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 65, 2024 => 67, 2025 => 64 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 65, 2024 => 67, 2025 => 64, 2026 => 72 }.freeze
end

4
app/models/form/sales/questions/household_wheelchair.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::HouseholdWheelchair < ::Form::Question
@id = "wheel"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -14,5 +14,5 @@ class Form::Sales::Questions::HouseholdWheelchair < ::Form::Question
"3" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 66, 2024 => 68, 2025 => 65 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 66, 2024 => 68, 2025 => 65, 2026 => 73 }.freeze
end

4
app/models/form/sales/questions/housing_benefits.rb

@ -6,7 +6,7 @@ class Form::Sales::Questions::HousingBenefits < ::Form::Question
@type = "radio"
@answer_options = ANSWER_OPTIONS
@check_answers_card_title = "All buyers" if form.start_year_2026_or_later?
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -17,5 +17,5 @@ class Form::Sales::Questions::HousingBenefits < ::Form::Question
"4" => { "value" => "Don’t know " },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 71, 2024 => 73, 2025 => 70 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 71, 2024 => 73, 2025 => 70, 2026 => 78 }.freeze
end

4
app/models/form/sales/questions/joint_purchase.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::JointPurchase < ::Form::Question
@id = "jointpur"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -12,5 +12,5 @@ class Form::Sales::Questions::JointPurchase < ::Form::Question
"2" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 9, 2024 => 11, 2025 => 9 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 9, 2024 => 11, 2025 => 9, 2026 => 9 }.freeze
end

4
app/models/form/sales/questions/la_nominations.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::LaNominations < ::Form::Question
@copy_key = "sales.sale_information.la_nominations"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -15,5 +15,5 @@ class Form::Sales::Questions::LaNominations < ::Form::Question
"3" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 83, 2024 => 85 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 83, 2024 => 85, 2025 => 85, 2026 => 93 }.freeze
end

9
app/models/form/sales/questions/leasehold_charges.rb

@ -1,6 +1,6 @@
class Form::Sales::Questions::LeaseholdCharges < ::Form::Question
def initialize(id, hsh, subsection, ownershipsch:)
super(id, hsh, subsection)
def initialize(id, hsh, page, ownershipsch:)
super(id, hsh, page)
@id = "mscharge"
@type = "numeric"
@min = 1
@ -9,13 +9,14 @@ class Form::Sales::Questions::LeaseholdCharges < ::Form::Question
@prefix = "£"
@copy_key = "sales.sale_information.leaseholdcharges.mscharge"
@ownershipsch = ownershipsch
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 98, 2 => 109, 3 => 117 },
2024 => { 1 => 99, 2 => 110, 3 => 117 },
2025 => { 2 => 111 },
2026 => { "discounted_ownership_scheme" => 121 },
}.freeze
end

5
app/models/form/sales/questions/living_before_purchase.rb

@ -16,7 +16,7 @@ class Form::Sales::Questions::LivingBeforePurchase < ::Form::Question
],
}
@ownershipsch = ownershipsch
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
end
ANSWER_OPTIONS = {
@ -24,9 +24,10 @@ class Form::Sales::Questions::LivingBeforePurchase < ::Form::Question
"1" => { "value" => "No" },
}.freeze
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 75, 2 => 99 },
2024 => { 1 => 77, 2 => 100 },
2025 => { 1 => 75, 2 => 102 },
2026 => { "shared_ownership_initial_purchase" => 83, "discounted_ownership_scheme" => 112 },
}.freeze
end

5
app/models/form/sales/questions/living_before_purchase_years.rb

@ -9,16 +9,17 @@ class Form::Sales::Questions::LivingBeforePurchaseYears < ::Form::Question
@step = 1
@width = 5
@ownershipsch = ownershipsch
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
end
def suffix_label(log)
" #{'year'.pluralize(log[id])}"
end
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 75, 2 => 99 },
2024 => { 1 => 77, 2 => 100 },
2025 => { 1 => 75, 2 => 102 },
2026 => { "shared_ownership_initial_purchase" => 83, "discounted_ownership_scheme" => 112 },
}.freeze
end

4
app/models/form/sales/questions/management_fee.rb

@ -8,9 +8,9 @@ class Form::Sales::Questions::ManagementFee < ::Form::Question
@step = 0.01
@width = 5
@prefix = "£"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2025 => 89 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2025 => 89, 2026 => 97 }.freeze
end

4
app/models/form/sales/questions/managing_organisation.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::ManagingOrganisation < ::Form::Question
@id = "managing_organisation_id"
@derived = true
@type = "select"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options(log = nil, user = nil)
@ -72,5 +72,5 @@ private
true
end
QUESTION_NUMBER_FROM_YEAR = { 2024 => 2, 2025 => 2 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2024 => 2, 2025 => 2, 2026 => 2 }.freeze
end

4
app/models/form/sales/questions/monthly_rent.rb

@ -7,9 +7,9 @@ class Form::Sales::Questions::MonthlyRent < ::Form::Question
@step = 0.01
@width = 5
@prefix = "£"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 97, 2024 => 98, 2025 => 87 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 97, 2024 => 98, 2025 => 87, 2026 => 95 }.freeze
end

4
app/models/form/sales/questions/monthly_rent_after_staircasing.rb

@ -8,9 +8,9 @@ class Form::Sales::Questions::MonthlyRentAfterStaircasing < ::Form::Question
@step = 0.01
@width = 5
@prefix = "£"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2025 => 101 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2025 => 101, 2026 => 109 }.freeze
end

4
app/models/form/sales/questions/monthly_rent_before_staircasing.rb

@ -8,9 +8,9 @@ class Form::Sales::Questions::MonthlyRentBeforeStaircasing < ::Form::Question
@step = 0.01
@width = 5
@prefix = "£"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2025 => 100 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2025 => 100, 2026 => 108 }.freeze
end

9
app/models/form/sales/questions/mortgage_amount.rb

@ -1,6 +1,6 @@
class Form::Sales::Questions::MortgageAmount < ::Form::Question
def initialize(id, hsh, subsection, ownershipsch:)
super(id, hsh, subsection)
def initialize(id, hsh, page, ownershipsch:)
super(id, hsh, page)
@id = "mortgage"
@type = "numeric"
@min = 1
@ -8,15 +8,16 @@ class Form::Sales::Questions::MortgageAmount < ::Form::Question
@width = 5
@prefix = "£"
@ownershipsch = ownershipsch
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
@top_guidance_partial = top_guidance_partial
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 91, 2 => 104, 3 => 112 },
2024 => { 1 => 92, 2 => 105, 3 => 113 },
2025 => { 1 => 83, 2 => 107 },
2026 => { "shared_ownership_initial_purchase" => 91, "discounted_ownership_scheme" => 117 },
}.freeze
def derived?(log)

10
app/models/form/sales/questions/mortgage_length.rb

@ -1,6 +1,6 @@
class Form::Sales::Questions::MortgageLength < ::Form::Question
def initialize(id, hsh, subsection, ownershipsch:)
super(id, hsh, subsection)
def initialize(id, hsh, page, ownershipsch:)
super(id, hsh, page)
@id = "mortlen"
@type = "numeric"
@min = 0
@ -8,17 +8,17 @@ class Form::Sales::Questions::MortgageLength < ::Form::Question
@step = 1
@width = 5
@ownershipsch = ownershipsch
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
end
def suffix_label(log)
" #{'year'.pluralize(log[id])}"
end
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 93, 2 => 106, 3 => 114 },
2024 => { 1 => 94, 2 => 107, 3 => 114 },
2025 => { 1 => 84, 2 => 108 },
2026 => { 1 => 84, 2 => 108 },
2026 => { "shared_ownership_initial_purchase" => 92, "discounted_ownership_scheme" => 118 },
}.freeze
end

6
app/models/form/sales/questions/mortgage_length_known.rb

@ -10,12 +10,12 @@ class Form::Sales::Questions::MortgageLengthKnown < ::Form::Question
{ "mortlen_known" => 0 },
],
}
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2026_or_later? ? subsection.id : ownershipsch)
end
ANSWER_OPTIONS = { "0" => { "value" => "Yes" }, "1" => { "value" => "No" } }.freeze
QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP = {
2026 => { 1 => 84, 2 => 108 },
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2026 => { "shared_ownership_initial_purchase" => 92, "discounted_ownership_scheme" => 118 },
}.freeze
end

23
app/models/form/sales/questions/mortgageused.rb

@ -1,18 +1,16 @@
class Form::Sales::Questions::Mortgageused < ::Form::Question
def initialize(id, hsh, subsection, ownershipsch:)
super(id, hsh, subsection)
def initialize(id, hsh, page, ownershipsch:)
super(id, hsh, page)
@id = "mortgageused"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@ownershipsch = ownershipsch
@question_number = question_number_from_year_and_ownership.fetch(form.start_date.year, question_number_from_year_and_ownership.max_by { |k, _v| k }.last)[ownershipsch]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_SECTION, value_key: form.start_year_2025_or_later? ? subsection.id : ownershipsch)
@top_guidance_partial = top_guidance_partial
end
def displayed_answer_options(log, _user = nil)
if log.outright_sale? && log.saledate && !form.start_year_2024_or_later?
answer_options_without_dont_know
elsif log.stairowned_100? || log.outright_sale? || (log.is_staircase? && form.start_year_2025_or_later?)
if form.start_year_2026_or_later? || log.stairowned_100? || log.outright_sale? || (log.is_staircase? && form.start_year_2025_or_later?)
ANSWER_OPTIONS
else
answer_options_without_dont_know
@ -30,13 +28,12 @@ class Form::Sales::Questions::Mortgageused < ::Form::Question
ANSWER_OPTIONS.reject { |key, _v| %w[3 divider].include?(key) }
end
def question_number_from_year_and_ownership
{
2023 => { 1 => 90, 2 => 103, 3 => 111 },
2024 => { 1 => 91, 2 => 104, 3 => 112 },
2025 => { 1 => subsection.id == "shared_ownership_staircasing_transaction" ? 99 : 82, 2 => 106 },
}
end
QUESTION_NUMBER_FROM_YEAR_AND_SECTION = {
2023 => { 1 => 90, 2 => 103, 3 => 111 },
2024 => { 1 => 91, 2 => 104, 3 => 112 },
2025 => { "shared_ownership_initial_purchase" => 82, "shared_ownership_staircasing_transaction" => 99, "discounted_ownership_scheme" => 106 },
2026 => { "shared_ownership_initial_purchase" => 90, "shared_ownership_staircasing_transaction" => 107, "discounted_ownership_scheme" => 116 },
}.freeze
def top_guidance_partial
return "financial_calculations_shared_ownership" if @ownershipsch == 1

3
app/models/form/sales/questions/nationality_all.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::NationalityAll < ::Form::Question
@answer_options = GlobalConstants::COUNTRIES_ANSWER_OPTIONS
@check_answers_card_number = buyer_index
@buyer_index = buyer_index
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_BUYER_INDEX.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_BUYER_INDEX.max_by { |k, _v| k }.last)[buyer_index]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_BUYER_INDEX, value_key: buyer_index)
end
def answer_label(log, _current_user = nil)
@ -20,6 +20,7 @@ class Form::Sales::Questions::NationalityAll < ::Form::Question
2023 => { 1 => 24, 2 => 32 },
2024 => { 1 => 26, 2 => 34 },
2025 => { 1 => 24, 2 => 32 },
2026 => { 1 => 26, 2 => 35 },
}.freeze
def label_from_value(value)

3
app/models/form/sales/questions/nationality_all_group.rb

@ -7,7 +7,7 @@ class Form::Sales::Questions::NationalityAllGroup < ::Form::Question
@conditional_for = buyer_index == 1 ? { "nationality_all" => [12] } : { "nationality_all_buyer2" => [12] }
@hidden_in_check_answers = { "depends_on" => [{ id => 12 }] }
@buyer_index = buyer_index
@question_number = QUESTION_NUMBER_FROM_YEAR_AND_BUYER_INDEX.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_BUYER_INDEX.max_by { |k, _v| k }.last)[buyer_index]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR_AND_BUYER_INDEX, value_key: buyer_index)
end
ANSWER_OPTIONS = {
@ -20,5 +20,6 @@ class Form::Sales::Questions::NationalityAllGroup < ::Form::Question
2023 => { 1 => 24, 2 => 32 },
2024 => { 1 => 26, 2 => 34 },
2025 => { 1 => 24, 2 => 32 },
2026 => { 1 => 26, 2 => 35 },
}.freeze
end

17
app/models/form/sales/questions/new_service_charges.rb

@ -0,0 +1,17 @@
class Form::Sales::Questions::NewServiceCharges < ::Form::Question
def initialize(id, hsh, page)
super
@id = "newservicecharges"
@type = "numeric"
@min = 0
@max = 9999.99
@step = 0.01
@width = 5
@prefix = "£"
@copy_key = "sales.sale_information.servicecharges_changed.new_service_charges"
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
@strip_commas = true
end
QUESTION_NUMBER_FROM_YEAR = { 2026 => 111 }.freeze
end

4
app/models/form/sales/questions/number_joint_buyers.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::NumberJointBuyers < ::Form::Question
@id = "jointmore"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {
@ -14,5 +14,5 @@ class Form::Sales::Questions::NumberJointBuyers < ::Form::Question
"3" => { "value" => "Don’t know" },
}.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 10, 2024 => 12, 2025 => 10 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 10, 2024 => 12, 2025 => 10, 2026 => 10 }.freeze
end

6
app/models/form/sales/questions/number_of_others_in_property.rb

@ -5,11 +5,11 @@ class Form::Sales::Questions::NumberOfOthersInProperty < ::Form::Question
@copy_key = joint_purchase ? "sales.household_characteristics.hholdcount.joint_purchase" : "sales.household_characteristics.hholdcount.not_joint_purchase"
@type = "numeric"
@width = 2
@min = 0
@min = form.start_year_2026_or_later? ? 1 : 0
@max = 15
@step = 1
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 35, 2024 => 37, 2025 => 35 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 35, 2024 => 37, 2025 => 35, 2026 => 38 }.freeze
end

2
app/models/form/sales/questions/other_ownership_type.rb

@ -5,7 +5,7 @@ class Form::Sales::Questions::OtherOwnershipType < ::Form::Question
@copy_key = "sales.setup.type.outright_ownership.othtype"
@type = "text"
@width = 10
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 6, 2024 => 8 }.freeze

2
app/models/form/sales/questions/outright_ownership_type.rb

@ -9,7 +9,7 @@ class Form::Sales::Questions::OutrightOwnershipType < ::Form::Question
@conditional_for = {
"othtype" => [12],
}
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
ANSWER_OPTIONS = {

4
app/models/form/sales/questions/ownership_scheme.rb

@ -3,7 +3,7 @@ class Form::Sales::Questions::OwnershipScheme < ::Form::Question
super
@id = "ownershipsch"
@type = "radio"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options
@ -27,5 +27,5 @@ class Form::Sales::Questions::OwnershipScheme < ::Form::Question
end
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 3, 2024 => 5 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2023 => 3, 2024 => 5, 2025 => 5, 2026 => 5 }.freeze
end

4
app/models/form/sales/questions/owning_organisation_id.rb

@ -4,7 +4,7 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question
@id = "owning_organisation_id"
@derived = true
@type = "select"
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
@question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR)
end
def answer_options(log = nil, user = nil)
@ -93,5 +93,5 @@ private
"#{name} (inactive as of #{merge_date.to_fs(:govuk_date)})"
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => nil, 2024 => 1, 2025 => 1 }.freeze
QUESTION_NUMBER_FROM_YEAR = { 2024 => 1, 2025 => 1, 2026 => 1 }.freeze
end

9
app/models/form/sales/questions/person_age.rb

@ -13,13 +13,8 @@ class Form::Sales::Questions::PersonAge < ::Form::Question
@max = 110
@step = 1
@person_index = person_index
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS)
end
BASE_QUESTION_NUMBERS = { 2023 => 29, 2024 => 31, 2025 => 29 }.freeze
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (4 * @person_index)
end
BASE_QUESTION_NUMBERS = { 2023 => 29, 2024 => 31, 2025 => 29, 2026 => 30 }.freeze
end

4
app/models/form/sales/questions/person_age_known.rb

@ -27,10 +27,10 @@ class Form::Sales::Questions::PersonAgeKnown < ::Form::Question
"1" => { "value" => "No" },
}.freeze
BASE_QUESTION_NUMBERS = { 2023 => 29, 2024 => 31, 2025 => 29 }.freeze
BASE_QUESTION_NUMBERS = { 2023 => 29, 2024 => 31, 2025 => 29, 2026 => 30 }.freeze
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (4 * @person_index)
base_question_number + (form.person_question_count * @person_index)
end
end

7
app/models/form/sales/questions/person_gender_identity.rb

@ -12,7 +12,7 @@ class Form::Sales::Questions::PersonGenderIdentity < ::Form::Question
"value" => "Prefers not to say",
}]
@person_index = person_index
@question_number = question_number
@question_number = get_person_question_number(BASE_QUESTION_NUMBERS)
end
ANSWER_OPTIONS = {
@ -23,9 +23,4 @@ class Form::Sales::Questions::PersonGenderIdentity < ::Form::Question
}.freeze
BASE_QUESTION_NUMBERS = { 2023 => 30, 2024 => 32, 2025 => 30 }.freeze
def question_number
base_question_number = BASE_QUESTION_NUMBERS[form.start_date.year] || BASE_QUESTION_NUMBERS[BASE_QUESTION_NUMBERS.keys.max]
base_question_number + (4 * @person_index)
end
end

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save