From 544f7b10ae0aa69a3c1b8078de129067cda49df2 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Tue, 3 Jan 2023 11:30:25 +0000 Subject: [PATCH] feat: add page, question, and update db --- .../form/sales/pages/leasehold_charges.rb | 15 ++++++++++ .../form/sales/questions/leasehold_charges.rb | 18 +++++++++++ .../questions/leasehold_charges_known.rb | 30 +++++++++++++++++++ .../discounted_ownership_scheme.rb | 1 + .../form/sales/subsections/outright_sale.rb | 1 + .../subsections/shared_ownership_scheme.rb | 3 +- ...30103112225_add_mscharge_known_to_sales.rb | 8 +++++ db/schema.rb | 5 +++- 8 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 app/models/form/sales/pages/leasehold_charges.rb create mode 100644 app/models/form/sales/questions/leasehold_charges.rb create mode 100644 app/models/form/sales/questions/leasehold_charges_known.rb create mode 100644 db/migrate/20230103112225_add_mscharge_known_to_sales.rb 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 b432e0700..14e5e4e11 100644 --- a/app/models/form/sales/subsections/discounted_ownership_scheme.rb +++ b/app/models/form/sales/subsections/discounted_ownership_scheme.rb @@ -12,6 +12,7 @@ class Form::Sales::Subsections::DiscountedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::AboutDeposit.new("about_deposit_discounted_ownership", nil, self), Form::Sales::Pages::AboutPriceRtb.new("about_deposit_discounted_ownership", nil, self), Form::Sales::Pages::AboutPriceNotRtb.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 b22adc11e..e1318401e 100644 --- a/app/models/form/sales/subsections/shared_ownership_scheme.rb +++ b/app/models/form/sales/subsections/shared_ownership_scheme.rb @@ -12,6 +12,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), @@ -19,7 +20,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 diff --git a/db/schema.rb b/db/schema.rb index 0b85e7f1d..39be059e8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2022_12_22_133600) do +ActiveRecord::Schema[7.0].define(version: 2023_01_03_112225) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -434,6 +434,9 @@ ActiveRecord::Schema[7.0].define(version: 2022_12_22_133600) do t.decimal "equity", precision: 10, scale: 2 t.decimal "discount", precision: 10, scale: 2 t.decimal "grant", precision: 10, scale: 2 + t.integer "proplen" + t.integer "mscharge_known" + t.decimal "mscharge", precision: 10, scale: 2 t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id" t.index ["managing_organisation_id"], name: "index_sales_logs_on_managing_organisation_id" t.index ["owning_organisation_id"], name: "index_sales_logs_on_owning_organisation_id"