From be43911b25b1f362e5853a0ac2312d2bbb6098c4 Mon Sep 17 00:00:00 2001 From: Kat <54268893+kosiakkatrina@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:49:25 +0000 Subject: [PATCH] Add management fee questions --- .../form/sales/pages/estate_management_fee.rb | 13 ++++++++++ .../sales/questions/has_management_fee.rb | 24 +++++++++++++++++++ .../form/sales/questions/management_fee.rb | 12 ++++++++++ .../shared_ownership_initial_purchase.rb | 1 + .../forms/2025/sales/sale_information.en.yml | 11 +++++++++ ...0241114154215_add_management_fee_fields.rb | 8 +++++++ db/schema.rb | 2 ++ .../shared_ownership_initial_purchase_spec.rb | 1 + 8 files changed, 72 insertions(+) create mode 100644 app/models/form/sales/pages/estate_management_fee.rb create mode 100644 app/models/form/sales/questions/has_management_fee.rb create mode 100644 app/models/form/sales/questions/management_fee.rb create mode 100644 db/migrate/20241114154215_add_management_fee_fields.rb diff --git a/app/models/form/sales/pages/estate_management_fee.rb b/app/models/form/sales/pages/estate_management_fee.rb new file mode 100644 index 000000000..5be478f80 --- /dev/null +++ b/app/models/form/sales/pages/estate_management_fee.rb @@ -0,0 +1,13 @@ +class Form::Sales::Pages::EstateManagementFee < ::Form::Page + def initialize(id, hsh, subsection) + super + @copy_key = "sales.sale_information.management_fee" + end + + def questions + @questions ||= [ + Form::Sales::Questions::HasManagementFee.new(nil, nil, self), + Form::Sales::Questions::ManagementFee.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/questions/has_management_fee.rb b/app/models/form/sales/questions/has_management_fee.rb new file mode 100644 index 000000000..20a71ff5e --- /dev/null +++ b/app/models/form/sales/questions/has_management_fee.rb @@ -0,0 +1,24 @@ +class Form::Sales::Questions::HasManagementFee < ::Form::Question + def initialize(id, hsh, subsection) + super + @id = "has_management_fee" + @copy_key = "sales.sale_information.management_fee.has_management_fee" + @type = "radio" + @answer_options = ANSWER_OPTIONS + @conditional_for = { + "management_fee" => [1], + } + @hidden_in_check_answers = { + "depends_on" => [ + { + "has_management_fee" => 1, + }, + ], + } + end + + ANSWER_OPTIONS = { + "1" => { "value" => "Yes" }, + "0" => { "value" => "No" }, + }.freeze +end diff --git a/app/models/form/sales/questions/management_fee.rb b/app/models/form/sales/questions/management_fee.rb new file mode 100644 index 000000000..213b9e3df --- /dev/null +++ b/app/models/form/sales/questions/management_fee.rb @@ -0,0 +1,12 @@ +class Form::Sales::Questions::ManagementFee < ::Form::Question + def initialize(id, hsh, subsection) + super + @id = "management_fee" + @copy_key = "sales.sale_information.management_fee.management_fee" + @type = "numeric" + @min = 1 + @step = 0.01 + @width = 5 + @prefix = "£" + end +end diff --git a/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb b/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb index 76c04d224..5dfb322a2 100644 --- a/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb +++ b/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb @@ -38,6 +38,7 @@ class Form::Sales::Subsections::SharedOwnershipInitialPurchase < ::Form::Subsect Form::Sales::Pages::MonthlyRent.new(nil, nil, self), Form::Sales::Pages::LeaseholdCharges.new("leasehold_charges_shared_ownership", nil, self, ownershipsch: 1), Form::Sales::Pages::MonthlyChargesValueCheck.new("monthly_charges_shared_ownership_value_check", nil, self), + Form::Sales::Pages::EstateManagementFee.new("estate_management_fee", nil, self), ].compact end diff --git a/config/locales/forms/2025/sales/sale_information.en.yml b/config/locales/forms/2025/sales/sale_information.en.yml index 1f98bf306..7aa429f30 100644 --- a/config/locales/forms/2025/sales/sale_information.en.yml +++ b/config/locales/forms/2025/sales/sale_information.en.yml @@ -199,3 +199,14 @@ en: check_answer_label: "Amount of any loan, grant or subsidy" hint_text: "For all schemes except Right to Buy (RTB), Preserved Right to Buy (PRTB), Voluntary Right to Buy (VRTB) and Rent to Buy" question_text: "What was the amount of any loan, grant, discount or subsidy given?" + + management_fee: + page_header: "" + has_management_fee: + check_answer_label: "Does the property have an estate management fee?" + hint_text: "Estate management fees are typically used for the maintenance of communal gardens, payments, private roads, car parks and/or play areas within new build estates." + question_text: "Does the property have an estate management fee?" + management_fee: + check_answer_label: "Monthly estate management fee" + hint_text: "" + question_text: "Enter the total monthly management fee" diff --git a/db/migrate/20241114154215_add_management_fee_fields.rb b/db/migrate/20241114154215_add_management_fee_fields.rb new file mode 100644 index 000000000..f8455d259 --- /dev/null +++ b/db/migrate/20241114154215_add_management_fee_fields.rb @@ -0,0 +1,8 @@ +class AddManagementFeeFields < ActiveRecord::Migration[7.0] + def change + change_table :sales_logs, bulk: true do |t| + t.column :has_management_fee, :integer + t.column :management_fee, :decimal, precision: 10, scale: 2 + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 5b6ddacdb..9aa744dc2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -758,6 +758,8 @@ ActiveRecord::Schema[7.0].define(version: 2024_11_18_104046) do t.integer "partner_under_16_value_check" t.integer "multiple_partners_value_check" t.bigint "created_by_id" + t.integer "has_management_fee" + t.decimal "management_fee", precision: 10, scale: 2 t.index ["assigned_to_id"], name: "index_sales_logs_on_assigned_to_id" t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id" t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id" diff --git a/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb b/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb index 90605d917..3b2d72b01 100644 --- a/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb +++ b/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb @@ -48,6 +48,7 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipInitialPurchase, type: : monthly_rent leasehold_charges_shared_ownership monthly_charges_shared_ownership_value_check + estate_management_fee ], ) end