diff --git a/app/frontend/styles/_document-list.scss b/app/frontend/styles/_document-list.scss
index d3f632b27..47936a365 100644
--- a/app/frontend/styles/_document-list.scss
+++ b/app/frontend/styles/_document-list.scss
@@ -1,5 +1,10 @@
+.app-document-list {
+ margin-top: govuk-spacing(3);
+ margin-bottom: govuk-spacing(6);
+}
+
.app-document-list__item {
- margin-bottom: govuk-spacing(4);
+ margin-bottom: govuk-spacing(3);
&:last-child {
margin-bottom: 0;
diff --git a/app/models/form/sales/pages/handover_date.rb b/app/models/form/sales/pages/handover_date.rb
index eeeb48333..35fbe7822 100644
--- a/app/models/form/sales/pages/handover_date.rb
+++ b/app/models/form/sales/pages/handover_date.rb
@@ -2,9 +2,9 @@ class Form::Sales::Pages::HandoverDate < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "handover_date"
- @depends_on = [{
- "ownershipsch" => 1,
- }]
+ @depends_on = [
+ { "ownershipsch" => 1, "resale" => 2 },
+ ]
end
def questions
diff --git a/app/models/form/sales/questions/deposit_amount.rb b/app/models/form/sales/questions/deposit_amount.rb
index 094f47697..05403dbab 100644
--- a/app/models/form/sales/questions/deposit_amount.rb
+++ b/app/models/form/sales/questions/deposit_amount.rb
@@ -7,6 +7,7 @@ class Form::Sales::Questions::DepositAmount < ::Form::Question
@type = "numeric"
@min = 0
@width = 5
+ @max = 9_999_999
@prefix = "£"
@hint_text = "Enter the total cash sum paid by the buyer towards the property that was not funded by the mortgage"
@derived = true
diff --git a/app/models/form/sales/questions/mortgage_amount.rb b/app/models/form/sales/questions/mortgage_amount.rb
index 5ad85bd31..bd4ae5e60 100644
--- a/app/models/form/sales/questions/mortgage_amount.rb
+++ b/app/models/form/sales/questions/mortgage_amount.rb
@@ -8,5 +8,6 @@ class Form::Sales::Questions::MortgageAmount < ::Form::Question
@min = 0
@width = 5
@prefix = "£"
+ @hint_text = "Enter the amount of mortgage agreed with the mortgage lender. Exclude any deposits or cash payments. Numeric in pounds. Rounded to the nearest pound."
end
end
diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb
index df76ffcbf..0f660ceb0 100644
--- a/app/models/sales_log.rb
+++ b/app/models/sales_log.rb
@@ -1,7 +1,9 @@
class SalesLogValidator < ActiveModel::Validator
include Validations::Sales::HouseholdValidations
- include Validations::SharedValidations
include Validations::Sales::FinancialValidations
+ include Validations::Sales::SaleInformationValidations
+
+ include Validations::SharedValidations
include Validations::LocalAuthorityValidations
def validate(record)
diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb
new file mode 100644
index 000000000..4c8747f18
--- /dev/null
+++ b/app/models/validations/sales/sale_information_validations.rb
@@ -0,0 +1,9 @@
+module Validations::Sales::SaleInformationValidations
+ def validate_deposit_range(record)
+ return if record.deposit.blank?
+
+ unless record.deposit >= 0 && record.deposit <= 999_999
+ record.errors.add :deposit, "Cash deposit must be £0 - £999,999"
+ end
+ end
+end
diff --git a/app/views/layouts/_collection_resources.html.erb b/app/views/layouts/_collection_resources.html.erb
index 4be268e7a..726cd1a86 100644
--- a/app/views/layouts/_collection_resources.html.erb
+++ b/app/views/layouts/_collection_resources.html.erb
@@ -1,16 +1,22 @@
-
Collection resources
+
Collection resources
+
For lettings starting during 1 April 2023 - 31 March 2024 and sales completing during the same period, use the 23/24 forms.
+
Lettings 23/24
+ <%= render DocumentListComponent.new(items: [
+ {
+ name: "Lettings log for tenants (2023/24)",
+ href: "https://core.communities.gov.uk/public/download/guides-and-manuals/2023-24%20Lettings%20paper%20form.pdf?download-format=pdf",
+ metadata: "PDF, 281 KB, 8 pages",
+ },
+ ]) %>
+
+
Lettings 22/23
<%= render DocumentListComponent.new(items: [
{
name: "Lettings log for tenants (2022/23)",
href: "https://core.communities.gov.uk/public/download/guides-and-manuals/2022-23%20Lettings%20paper%20form.pdf?download-format=pdf",
metadata: "PDF, 654 KB, 4 pages",
},
- {
- name: "Lettings log for tenants (2021/22)",
- href: "https://core.communities.gov.uk/public/download/guides-and-manuals/2021_22%20Lettings%20Log.pdf?download-format=pdf",
- metadata: "PDF, 302 KB, 3 pages",
- },
]) %>
diff --git a/db/seeds.rb b/db/seeds.rb
index cf6895501..8dea68d80 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -110,8 +110,8 @@ unless Rails.env.test?
)
User.find_or_create_by!(
- name: "Provider Owns Stock",
- email: "provider.nostock1@example.com",
+ name: "Provider No Stock",
+ email: "provider.nostock@example.com",
organisation: standalone_no_stock,
role: "data_provider",
) do |user|
@@ -120,8 +120,8 @@ unless Rails.env.test?
end
User.find_or_create_by!(
- name: "Coordinator Owns Stock",
- email: "coordinator.nostock1@example.com",
+ name: "Coordinator No Stock",
+ email: "coordinator.nostock@example.com",
organisation: standalone_no_stock,
role: "data_coordinator",
) do |user|
diff --git a/spec/models/form/sales/pages/handover_date_spec.rb b/spec/models/form/sales/pages/handover_date_spec.rb
index fa2156cf7..1699dbf9e 100644
--- a/spec/models/form/sales/pages/handover_date_spec.rb
+++ b/spec/models/form/sales/pages/handover_date_spec.rb
@@ -28,8 +28,6 @@ RSpec.describe Form::Sales::Pages::HandoverDate, type: :model do
end
it "has the correct depends_on" do
- expect(page.depends_on).to eq([{
- "ownershipsch" => 1,
- }])
+ expect(page.depends_on).to eq([{ "ownershipsch" => 1, "resale" => 2 }])
end
end
diff --git a/spec/models/form/sales/questions/deposit_amount_spec.rb b/spec/models/form/sales/questions/deposit_amount_spec.rb
index db47387d3..961576d62 100644
--- a/spec/models/form/sales/questions/deposit_amount_spec.rb
+++ b/spec/models/form/sales/questions/deposit_amount_spec.rb
@@ -46,4 +46,8 @@ RSpec.describe Form::Sales::Questions::DepositAmount, type: :model do
it "has correct min" do
expect(question.min).to eq(0)
end
+
+ it "has correct max" do
+ expect(question.max).to eq(9_999_999)
+ end
end
diff --git a/spec/models/form/sales/questions/mortgage_amount_spec.rb b/spec/models/form/sales/questions/mortgage_amount_spec.rb
index eadec2876..832b47d37 100644
--- a/spec/models/form/sales/questions/mortgage_amount_spec.rb
+++ b/spec/models/form/sales/questions/mortgage_amount_spec.rb
@@ -32,7 +32,7 @@ RSpec.describe Form::Sales::Questions::MortgageAmount, type: :model do
end
it "has the correct hint" do
- expect(question.hint_text).to be_nil
+ expect(question.hint_text).to eq("Enter the amount of mortgage agreed with the mortgage lender. Exclude any deposits or cash payments. Numeric in pounds. Rounded to the nearest pound.")
end
it "has correct width" do
diff --git a/spec/models/validations/sales/household_validations_spec.rb b/spec/models/validations/sales/household_validations_spec.rb
index ea581c096..b7ea4f663 100644
--- a/spec/models/validations/sales/household_validations_spec.rb
+++ b/spec/models/validations/sales/household_validations_spec.rb
@@ -7,42 +7,42 @@ RSpec.describe Validations::Sales::HouseholdValidations do
describe "#validate_number_of_other_people_living_in_the_property" do
context "when within permitted bounds" do
- let(:record) { FactoryBot.build(:sales_log, hholdcount: 2) }
+ let(:record) { build(:sales_log, hholdcount: 2) }
it "does not add an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record)
- expect(record.errors).not_to be_present
+ expect(record.errors[:hholdcount]).not_to be_present
end
end
context "when blank" do
- let(:record) { FactoryBot.build(:sales_log, hholdcount: nil) }
+ let(:record) { build(:sales_log, hholdcount: nil) }
it "does not add an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record)
- expect(record.errors).not_to be_present
+ expect(record.errors[:hholdcount]).not_to be_present
end
end
context "when below lower bound" do
- let(:record) { FactoryBot.build(:sales_log, hholdcount: -1) }
+ let(:record) { build(:sales_log, hholdcount: -1) }
it "adds an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record)
- expect(record.errors).to be_present
+ expect(record.errors[:hholdcount]).to be_present
end
end
context "when higher than upper bound" do
- let(:record) { FactoryBot.build(:sales_log, hholdcount: 5) }
+ let(:record) { build(:sales_log, hholdcount: 5) }
it "adds an error" do
household_validator.validate_number_of_other_people_living_in_the_property(record)
- expect(record.errors).to be_present
+ expect(record.errors[:hholdcount]).to be_present
end
end
end
diff --git a/spec/models/validations/sales/sale_information_validations_spec.rb b/spec/models/validations/sales/sale_information_validations_spec.rb
new file mode 100644
index 000000000..575eedfff
--- /dev/null
+++ b/spec/models/validations/sales/sale_information_validations_spec.rb
@@ -0,0 +1,49 @@
+require "rails_helper"
+
+RSpec.describe Validations::Sales::SaleInformationValidations do
+ subject(:sale_information_validator) { validator_class.new }
+
+ let(:validator_class) { Class.new { include Validations::Sales::SaleInformationValidations } }
+
+ describe "#validate_deposit_range" do
+ context "when within permitted bounds" do
+ let(:record) { build(:sales_log, deposit: 0) }
+
+ it "does not add an error" do
+ sale_information_validator.validate_deposit_range(record)
+
+ expect(record.errors[:deposit]).not_to be_present
+ end
+ end
+
+ context "when blank" do
+ let(:record) { build(:sales_log, deposit: nil) }
+
+ it "does not add an error" do
+ sale_information_validator.validate_deposit_range(record)
+
+ expect(record.errors[:deposit]).not_to be_present
+ end
+ end
+
+ context "when below lower bound" do
+ let(:record) { build(:sales_log, deposit: -1) }
+
+ it "adds an error" do
+ sale_information_validator.validate_deposit_range(record)
+
+ expect(record.errors[:deposit]).to be_present
+ end
+ end
+
+ context "when higher than upper bound" do
+ let(:record) { build(:sales_log, deposit: 1_000_000) }
+
+ it "adds an error" do
+ sale_information_validator.validate_deposit_range(record)
+
+ expect(record.errors[:deposit]).to be_present
+ end
+ end
+ end
+end
diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb
index 04a740dc1..dcf67cb71 100644
--- a/spec/requests/form_controller_spec.rb
+++ b/spec/requests/form_controller_spec.rb
@@ -658,7 +658,7 @@ RSpec.describe FormController, type: :request do
let(:referrer) { "/lettings-logs/#{completed_lettings_log.id}/net-income-value-check?referrer=check_answers" }
before do
- completed_lettings_log.update!(ecstat1: 1, earnings: 130, hhmemb: 1) # we're not routing to that page, so it gets cleared?§
+ completed_lettings_log.update!(ecstat1: 1, earnings: 130, hhmemb: 1) # we're not routing to that page, so it gets cleared?
allow(completed_lettings_log).to receive(:net_income_soft_validation_triggered?).and_return(true)
allow(completed_lettings_log.form).to receive(:end_date).and_return(Time.zone.today + 1.day)
post "/lettings-logs/#{completed_lettings_log.id}/form", params: interrupt_params, headers: headers.merge({ "HTTP_REFERER" => referrer })