diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb
index 59b407527..f60946c74 100644
--- a/app/helpers/filters_helper.rb
+++ b/app/helpers/filters_helper.rb
@@ -142,11 +142,11 @@ module FiltersHelper
return true if current_user.organisation.stock_owners.count > 1
return true if current_user.organisation.stock_owners.count.positive? && current_user.organisation.holds_own_stock?
- current_user.organisation.has_recent_absorbed_organisations?
+ current_user.organisation.has_organisations_absorbed_during_displayed_collection_period?
end
def non_support_with_managing_orgs?
- current_user.organisation.managing_agents.count >= 1 || current_user.organisation.has_recent_absorbed_organisations?
+ current_user.organisation.managing_agents.count >= 1 || current_user.organisation.has_organisations_absorbed_during_displayed_collection_period?
end
def user_lettings_path?
diff --git a/app/models/form_handler.rb b/app/models/form_handler.rb
index e4774ccf1..02f3a9d70 100644
--- a/app/models/form_handler.rb
+++ b/app/models/form_handler.rb
@@ -229,6 +229,10 @@ class FormHandler
years
end
+ def start_date_of_earliest_lettings_form
+ lettings_forms.values.map(&:start_date).min
+ end
+
private
def get_all_forms
diff --git a/app/models/organisation.rb b/app/models/organisation.rb
index 0bd69f847..8f3479cd6 100644
--- a/app/models/organisation.rb
+++ b/app/models/organisation.rb
@@ -40,6 +40,7 @@ class Organisation < ApplicationRecord
scope :filter_by_active, -> { where(active: true) }
scope :filter_by_inactive, -> { where(active: false) }
scope :merged_during_open_collection_period, -> { where("merge_date >= ?", FormHandler.instance.start_date_of_earliest_open_for_editing_collection_period) }
+ scope :merged_during_displayed_collection_period, -> { where("merge_date >= ?", FormHandler.instance.start_date_of_earliest_lettings_form) }
has_paper_trail
@@ -156,16 +157,20 @@ class Organisation < ApplicationRecord
sales_logs.after_date(FormHandler.instance.sales_earliest_open_for_editing_collection_start_date).duplicate_sets.map { |array_str| array_str ? array_str.map(&:to_i) : [] }
end
- def recently_absorbed_organisations_grouped_by_merge_date
- return unless absorbed_organisations.present? && absorbed_organisations.merged_during_open_collection_period.present?
+ def organisations_absorbed_during_displayed_collection_period_grouped_by_merge_date
+ return unless absorbed_organisations.present? && absorbed_organisations.merged_during_displayed_collection_period.present?
- absorbed_organisations.merged_during_open_collection_period.group_by(&:merge_date)
+ absorbed_organisations.merged_during_displayed_collection_period.group_by(&:merge_date)
end
def has_recent_absorbed_organisations?
absorbed_organisations&.merged_during_open_collection_period.present?
end
+ def has_organisations_absorbed_during_displayed_collection_period?
+ absorbed_organisations&.merged_during_displayed_collection_period.present?
+ end
+
def organisation_or_stock_owner_signed_dsa_and_holds_own_stock?
return true if data_protection_confirmed? && holds_own_stock?
return true if stock_owners.any? { |stock_owner| stock_owner.data_protection_confirmed? && stock_owner.holds_own_stock? }
diff --git a/app/views/organisations/_merged_organisation_details.html.erb b/app/views/organisations/_merged_organisation_details.html.erb
index e54735225..020051156 100644
--- a/app/views/organisations/_merged_organisation_details.html.erb
+++ b/app/views/organisations/_merged_organisation_details.html.erb
@@ -1,6 +1,6 @@
-<% if @organisation.recently_absorbed_organisations_grouped_by_merge_date.present? %>
+<% if @organisation.organisations_absorbed_during_displayed_collection_period_grouped_by_merge_date.present? %>
<%= govuk_details(summary_text: "View all organisations that were merged into #{@organisation.name}") do %>
- <% @organisation.recently_absorbed_organisations_grouped_by_merge_date.each do |merge_date, organisations| %>
+ <% @organisation.organisations_absorbed_during_displayed_collection_period_grouped_by_merge_date.each do |merge_date, organisations| %>
Merge date: <%= merge_date&.to_formatted_s(:govuk_date) %>
<%= govuk_table do |table| %>
<%= table.with_head do |head| %>
diff --git a/spec/requests/organisations_controller_spec.rb b/spec/requests/organisations_controller_spec.rb
index 1b236f8fc..a86816f4c 100644
--- a/spec/requests/organisations_controller_spec.rb
+++ b/spec/requests/organisations_controller_spec.rb
@@ -410,8 +410,25 @@ RSpec.describe OrganisationsController, type: :request do
let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") }
before do
- absorbed_organisation.update!(merge_date: Time.zone.local(2021, 4, 3), absorbing_organisation: organisation)
- other_absorbed_organisation.update!(merge_date: Time.zone.local(2021, 4, 3), absorbing_organisation: organisation)
+ absorbed_organisation.update!(merge_date: Time.zone.today - 2.years, absorbing_organisation: organisation)
+ other_absorbed_organisation.update!(merge_date: Time.zone.today - 2.years, absorbing_organisation: organisation)
+ get "/organisations/#{organisation.id}/details", headers:, params: {}
+ end
+
+ it "displays absorbed organisations" do
+ expect(page).to have_content("View all organisations that were merged into #{organisation.name}")
+ expect(page).to have_content("First Absorbed Organisation")
+ expect(page).to have_content("Other Absorbed Organisation")
+ end
+ end
+
+ context "when the organisation has absorbed other organisations during a collection period before archived" do
+ let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation") }
+ let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") }
+
+ before do
+ absorbed_organisation.update!(merge_date: Time.zone.today - 3.years, absorbing_organisation: organisation)
+ other_absorbed_organisation.update!(merge_date: Time.zone.today - 3.years, absorbing_organisation: organisation)
get "/organisations/#{organisation.id}/details", headers:, params: {}
end