diff --git a/app/models/form/sales/pages/service_charge_changed.rb b/app/models/form/sales/pages/service_charge_changed.rb new file mode 100644 index 000000000..000e34c03 --- /dev/null +++ b/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 diff --git a/app/models/form/sales/questions/has_service_charges_changed.rb b/app/models/form/sales/questions/has_service_charges_changed.rb new file mode 100644 index 000000000..bc3bb7832 --- /dev/null +++ b/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 = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] + end + + ANSWER_OPTIONS = { + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, + }.freeze + + QUESTION_NUMBER_FROM_YEAR = { 2026 => 0 }.freeze +end diff --git a/app/models/form/sales/questions/new_service_charges.rb b/app/models/form/sales/questions/new_service_charges.rb new file mode 100644 index 000000000..81fde998b --- /dev/null +++ b/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 = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] + @strip_commas = true + end + + QUESTION_NUMBER_FROM_YEAR = { 2026 => 0 }.freeze +end diff --git a/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb b/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb index cfd00e5e1..1af25a140 100644 --- a/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb +++ b/app/models/form/sales/subsections/shared_ownership_staircasing_transaction.rb @@ -26,6 +26,7 @@ class Form::Sales::Subsections::SharedOwnershipStaircasingTransaction < ::Form:: Form::Sales::Pages::MonthlyRentStaircasingOwned.new(nil, nil, self), Form::Sales::Pages::MonthlyRentStaircasing.new(nil, nil, self), (Form::Sales::Pages::ServiceChargeStaircasing.new("service_charge_staircasing", nil, self) if form.start_year_2026_or_later?), + (Form::Sales::Pages::ServiceChargeChanged.new(nil, nil, self) if form.start_year_2026_or_later?), Form::Sales::Pages::MonthlyChargesValueCheck.new("monthly_charges_shared_ownership_value_check", nil, self), ].compact end