diff --git a/app/helpers/collection_time_helper.rb b/app/helpers/collection_time_helper.rb
index ea7601c70..37430bdd7 100644
--- a/app/helpers/collection_time_helper.rb
+++ b/app/helpers/collection_time_helper.rb
@@ -45,4 +45,23 @@ module CollectionTimeHelper
def previous_collection_start_date
current_collection_start_date - 1.year
end
+
+ def quarter_for_date(date: Time.zone.now)
+ quarters = [
+ { cutoff_date: Time.zone.local(2024, 1, 12), start_date: Time.zone.local(2023, 10, 1), end_date: Time.zone.local(2023, 12, 31) },
+ { cutoff_date: Time.zone.local(2024, 7, 12), start_date: Time.zone.local(2024, 4, 1), end_date: Time.zone.local(2024, 6, 30) },
+ { cutoff_date: Time.zone.local(2024, 10, 11), start_date: Time.zone.local(2024, 7, 1), end_date: Time.zone.local(2024, 9, 30) },
+ { cutoff_date: Time.zone.local(2025, 1, 10), start_date: Time.zone.local(2024, 10, 1), end_date: Time.zone.local(2024, 12, 31) },
+ ]
+
+ quarter = quarters.find { |q| date.between?(q[:start_date], q[:cutoff_date] + 1.day) }
+
+ return unless quarter
+
+ OpenStruct.new(
+ cutoff_date: quarter[:cutoff_date],
+ quarter_start_date: quarter[:start_date],
+ quarter_end_date: quarter[:end_date],
+ )
+ end
end
diff --git a/app/views/home/_upcoming_deadlines.html.erb b/app/views/home/_upcoming_deadlines.html.erb
new file mode 100644
index 000000000..5a2300ea4
--- /dev/null
+++ b/app/views/home/_upcoming_deadlines.html.erb
@@ -0,0 +1,16 @@
+
Upcoming deadlines
+<% current_quarter = quarter_for_date(date: Time.zone.now) %>
+<% if current_quarter.present? %>
+ 12 January 2024: Quarterly cut off date for tenancies and sales starting between 1 October 2023 and 31 December 2023.
+<% end %>
+
+<% current_lettings_form = FormHandler.instance.current_lettings_form %>
+<%= current_lettings_form.submission_deadline.to_formatted_s(:govuk_date) %>: Deadline to submit logs for tenancies starting between <%= collection_start_date(Time.zone.now).to_formatted_s(:govuk_date) %> to <%= collection_end_date(Time.zone.now).to_formatted_s(:govuk_date) %>
+<%= govuk_details(summary_text: "Quarterly cut-off dates for 2024 to 2025") do %>
+
+ - 12 July 2024: Quarterly cut off date for tenancies and sales starting between 1 April 2024 and 30 June 2024
+ - 11 Oct 2024: Quarterly cut off date for tenancies and sales starting between 1 July 2024 and 30 Sept 2024
+ - 10 Jan 2025: Quarterly cut off date for tenancies and sales starting between 1 Oct 2024 and 31 Dec 2024
+ - 6 June 2025: Deadline to submit logs for tenancies starting between 1 April 2024 to 31 March 2025
+
+<% end %>
diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb
index 7469ed18f..e87fde287 100644
--- a/app/views/home/index.html.erb
+++ b/app/views/home/index.html.erb
@@ -2,5 +2,7 @@
<%= render partial: "layouts/collection_resources" %>
+
+ <%= render partial: "home/upcoming_deadlines" %>
diff --git a/spec/helpers/collection_time_helper_spec.rb b/spec/helpers/collection_time_helper_spec.rb
index 3eef01b5e..859431c57 100644
--- a/spec/helpers/collection_time_helper_spec.rb
+++ b/spec/helpers/collection_time_helper_spec.rb
@@ -109,4 +109,34 @@ RSpec.describe CollectionTimeHelper do
end
end
end
+
+ describe "#quarter_for_date" do
+ it "returns correct cutoff date for curent quarter" do
+ quarter = quarter_for_date(date: Time.zone.local(2023, 10, 1))
+ expect(quarter.cutoff_date).to eq(Time.zone.local(2024, 1, 12))
+ expect(quarter.quarter_start_date).to eq(Time.zone.local(2023, 10, 1))
+ expect(quarter.quarter_end_date).to eq(Time.zone.local(2023, 12, 31))
+ end
+
+ it "returns correct cutoff date for the first quarter of 2024/25" do
+ quarter = quarter_for_date(date: Time.zone.local(2024, 4, 1))
+ expect(quarter.cutoff_date).to eq(Time.zone.local(2024, 7, 12))
+ expect(quarter.quarter_start_date).to eq(Time.zone.local(2024, 4, 1))
+ expect(quarter.quarter_end_date).to eq(Time.zone.local(2024, 6, 30))
+ end
+
+ it "returns correct cutoff date for the second quarter of 2024/25" do
+ quarter = quarter_for_date(date: Time.zone.local(2024, 9, 30))
+ expect(quarter.cutoff_date).to eq(Time.zone.local(2024, 10, 11))
+ expect(quarter.quarter_start_date).to eq(Time.zone.local(2024, 7, 1))
+ expect(quarter.quarter_end_date).to eq(Time.zone.local(2024, 9, 30))
+ end
+
+ it "returns correct cutoff date for the third quarter of 2024/25" do
+ quarter = quarter_for_date(date: Time.zone.local(2024, 10, 25))
+ expect(quarter.cutoff_date).to eq(Time.zone.local(2025, 1, 10))
+ expect(quarter.quarter_start_date).to eq(Time.zone.local(2024, 10, 1))
+ expect(quarter.quarter_end_date).to eq(Time.zone.local(2024, 12, 31))
+ end
+ end
end