diff --git a/app/components/lettings_log_summary_component.html.erb b/app/components/lettings_log_summary_component.html.erb index 92636b148..89fddad20 100644 --- a/app/components/lettings_log_summary_component.html.erb +++ b/app/components/lettings_log_summary_component.html.erb @@ -28,7 +28,7 @@ <% end %>

<% end %> - <% if current_user.support? || current_user.organisation.has_managing_agents? || current_user.organisation.has_recent_absorbed_organisations? %> + <% if current_user.support? || current_user.organisation.has_managing_agents? || current_user.organisation.has_organisations_absorbed_during_displayed_collection_period? %>
<% if log.owning_organisation %>
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