diff --git a/app/models/form/sales/pages/leasehold_charges.rb b/app/models/form/sales/pages/leasehold_charges.rb new file mode 100644 index 000000000..7aed92db9 --- /dev/null +++ b/app/models/form/sales/pages/leasehold_charges.rb @@ -0,0 +1,15 @@ +class Form::Sales::Pages::LeaseholdCharges < ::Form::Page + def initialize(id, hsh, subsection) + super + @header = "" + @description = "" + @subsection = subsection + end + + def questions + @questions ||= [ + Form::Sales::Questions::LeaseholdChargesKnown.new(nil, nil, self), + Form::Sales::Questions::LeaseholdCharges.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/questions/leasehold_charges.rb b/app/models/form/sales/questions/leasehold_charges.rb new file mode 100644 index 000000000..dc2e39291 --- /dev/null +++ b/app/models/form/sales/questions/leasehold_charges.rb @@ -0,0 +1,18 @@ +class Form::Sales::Questions::LeaseholdCharges < ::Form::Question + def initialize(id, hsh, page) + super + @id = "mscharge" + @check_answer_label = "Monthly rent" + @header = "Enter the total monthly charge" + @type = "numeric" + @page = page + @width = 2 + @prefix = "£" + @inferred_check_answers_value = { + "condition" => { + "mscharge_known" => 0, + }, + "value" => 0, + } + end +end diff --git a/app/models/form/sales/questions/leasehold_charges_known.rb b/app/models/form/sales/questions/leasehold_charges_known.rb new file mode 100644 index 000000000..7874e28bc --- /dev/null +++ b/app/models/form/sales/questions/leasehold_charges_known.rb @@ -0,0 +1,30 @@ +class Form::Sales::Questions::LeaseholdChargesKnown < ::Form::Question + def initialize(id, hsh, page) + super + @id = "mscharge_known" + @check_answer_label = "Monthly rent" + @header = "Does the property have any monthly leasehold charges?" + @hint_text = "For example, service and management charges" + @type = "radio" + @answer_options = ANSWER_OPTIONS + @page = page + @conditional_for = { + "mscharge" => [1], + } + @hidden_in_check_answers = { + "depends_on" => [ + { + "mscharge_known" => 0, + }, + { + "mscharge_known" => 1, + }, + ], + } + end + + ANSWER_OPTIONS = { + "1" => { "value" => "Yes" }, + "0" => { "value" => "No" }, + }.freeze +end diff --git a/app/models/form/sales/subsections/discounted_ownership_scheme.rb b/app/models/form/sales/subsections/discounted_ownership_scheme.rb index b1a485382..a2063c129 100644 --- a/app/models/form/sales/subsections/discounted_ownership_scheme.rb +++ b/app/models/form/sales/subsections/discounted_ownership_scheme.rb @@ -13,6 +13,7 @@ class Form::Sales::Subsections::DiscountedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::AboutPriceRtb.new(nil, nil, self), Form::Sales::Pages::AboutPriceNotRtb.new(nil, nil, self), Form::Sales::Pages::AboutDeposit.new("about_deposit_discounted_ownership", nil, self), + Form::Sales::Pages::LeaseholdCharges.new("leasehold_charges_discounted_ownership", nil, self), ] end diff --git a/app/models/form/sales/subsections/outright_sale.rb b/app/models/form/sales/subsections/outright_sale.rb index cc566c396..c2d5dbdbd 100644 --- a/app/models/form/sales/subsections/outright_sale.rb +++ b/app/models/form/sales/subsections/outright_sale.rb @@ -10,6 +10,7 @@ class Form::Sales::Subsections::OutrightSale < ::Form::Subsection def pages @pages ||= [ Form::Sales::Pages::AboutDeposit.new("about_deposit_outright_sale", nil, self), + Form::Sales::Pages::LeaseholdCharges.new("leasehold_charges_outright_sale", nil, self), ] end diff --git a/app/models/form/sales/subsections/shared_ownership_scheme.rb b/app/models/form/sales/subsections/shared_ownership_scheme.rb index 74dba4351..84c3dde61 100644 --- a/app/models/form/sales/subsections/shared_ownership_scheme.rb +++ b/app/models/form/sales/subsections/shared_ownership_scheme.rb @@ -13,6 +13,7 @@ class Form::Sales::Subsections::SharedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::Staircase.new(nil, nil, self), Form::Sales::Pages::AboutStaircase.new(nil, nil, self), Form::Sales::Pages::Resale.new(nil, nil, self), + Form::Sales::Pages::ExchangeDate.new(nil, nil, self), Form::Sales::Pages::LaNominations.new(nil, nil, self), Form::Sales::Pages::BuyerPrevious.new(nil, nil, self), Form::Sales::Pages::PreviousBedrooms.new(nil, nil, self), @@ -20,7 +21,7 @@ class Form::Sales::Subsections::SharedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::AboutPriceSocialHousing.new(nil, nil, self), Form::Sales::Pages::AboutDeposit.new("about_deposit_shared_ownership", nil, self), Form::Sales::Pages::MonthlyRent.new(nil, nil, self), - Form::Sales::Pages::ExchangeDate.new(nil, nil, self), + Form::Sales::Pages::LeaseholdCharges.new("leasehold_charges_shared_ownership", nil, self), ] end diff --git a/db/migrate/20230103112225_add_mscharge_known_to_sales.rb b/db/migrate/20230103112225_add_mscharge_known_to_sales.rb new file mode 100644 index 000000000..cf09e8a52 --- /dev/null +++ b/db/migrate/20230103112225_add_mscharge_known_to_sales.rb @@ -0,0 +1,8 @@ +class AddMschargeKnownToSales < ActiveRecord::Migration[7.0] + def change + change_table :sales_logs, bulk: true do |t| + t.column :mscharge_known, :integer + t.column :mscharge, :decimal, precision: 10, scale: 2 + end + end +end