Browse Source

CLDC-3274 Display organisation merges for a longer period (#2456)

* Display organisation merges for a longer period

* Refactor
pull/2467/head
kosiakkatrina 9 months ago committed by GitHub
parent
commit
9f623e0cb2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      app/components/lettings_log_summary_component.html.erb
  2. 4
      app/helpers/filters_helper.rb
  3. 4
      app/models/form_handler.rb
  4. 13
      app/models/organisation.rb
  5. 4
      app/views/organisations/_merged_organisation_details.html.erb
  6. 34
      spec/requests/organisations_controller_spec.rb

2
app/components/lettings_log_summary_component.html.erb

@ -28,7 +28,7 @@
<% end %> <% end %>
</p> </p>
<% 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? %>
<dl class="app-metadata"> <dl class="app-metadata">
<% if log.owning_organisation %> <% if log.owning_organisation %>
<div class="app-metadata__item"> <div class="app-metadata__item">

4
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 > 1
return true if current_user.organisation.stock_owners.count.positive? && current_user.organisation.holds_own_stock? 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 end
def non_support_with_managing_orgs? 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 end
def user_lettings_path? def user_lettings_path?

4
app/models/form_handler.rb

@ -229,6 +229,10 @@ class FormHandler
years years
end end
def start_date_of_earliest_lettings_form
lettings_forms.values.map(&:start_date).min
end
private private
def get_all_forms def get_all_forms

13
app/models/organisation.rb

@ -40,6 +40,7 @@ class Organisation < ApplicationRecord
scope :filter_by_active, -> { where(active: true) } scope :filter_by_active, -> { where(active: true) }
scope :filter_by_inactive, -> { where(active: false) } 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_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 has_paper_trail
@ -156,14 +157,18 @@ 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) : [] } 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 end
def recently_absorbed_organisations_grouped_by_merge_date def organisations_absorbed_during_displayed_collection_period_grouped_by_merge_date
return unless absorbed_organisations.present? && absorbed_organisations.merged_during_open_collection_period.present? return unless absorbed_organisations.merged_during_displayed_collection_period.exists?
absorbed_organisations.merged_during_open_collection_period.group_by(&:merge_date) absorbed_organisations.merged_during_displayed_collection_period.group_by(&:merge_date)
end end
def has_recent_absorbed_organisations? def has_recent_absorbed_organisations?
absorbed_organisations&.merged_during_open_collection_period.present? absorbed_organisations.merged_during_open_collection_period.exists?
end
def has_organisations_absorbed_during_displayed_collection_period?
absorbed_organisations.merged_during_displayed_collection_period.exists?
end end
def organisation_or_stock_owner_signed_dsa_and_holds_own_stock? def organisation_or_stock_owner_signed_dsa_and_holds_own_stock?

4
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 %> <%= 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| %>
<p><strong>Merge date:</strong> <%= merge_date&.to_formatted_s(:govuk_date) %></p> <p><strong>Merge date:</strong> <%= merge_date&.to_formatted_s(:govuk_date) %></p>
<%= govuk_table do |table| %> <%= govuk_table do |table| %>
<%= table.with_head do |head| %> <%= table.with_head do |head| %>

34
spec/requests/organisations_controller_spec.rb

@ -381,14 +381,11 @@ RSpec.describe OrganisationsController, type: :request do
end end
context "when the organisation has absorbed other organisations" do context "when the organisation has absorbed other organisations" do
let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation") } let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) }
let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") } let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) }
let!(:previously_absorbed_organisation) { create(:organisation, name: "Previously Absorbed Organisation") } let!(:previously_absorbed_organisation) { create(:organisation, name: "Previously Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 2), absorbing_organisation: organisation) }
before do before do
absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation)
other_absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation)
previously_absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 2), absorbing_organisation: organisation)
get "/organisations/#{organisation.id}/details", headers:, params: {} get "/organisations/#{organisation.id}/details", headers:, params: {}
end end
@ -406,12 +403,23 @@ RSpec.describe OrganisationsController, type: :request do
end end
context "when the organisation has absorbed other organisations during a closed collection period" do context "when the organisation has absorbed other organisations during a closed collection period" do
let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation") } before do
let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") } create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.today - 2.years, absorbing_organisation: organisation)
create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, 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
before do before do
absorbed_organisation.update!(merge_date: Time.zone.local(2021, 4, 3), absorbing_organisation: organisation) create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.today - 3.years, absorbing_organisation: organisation)
other_absorbed_organisation.update!(merge_date: Time.zone.local(2021, 4, 3), absorbing_organisation: organisation) create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, merge_date: Time.zone.today - 3.years, absorbing_organisation: organisation)
get "/organisations/#{organisation.id}/details", headers:, params: {} get "/organisations/#{organisation.id}/details", headers:, params: {}
end end
@ -424,12 +432,10 @@ RSpec.describe OrganisationsController, type: :request do
end end
context "when the organisation has absorbed other organisations without merge dates" do context "when the organisation has absorbed other organisations without merge dates" do
let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation") } let!(:absorbed_organisation) { create(:organisation, name: "First Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) }
let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation") } let!(:other_absorbed_organisation) { create(:organisation, name: "Other Absorbed Organisation", with_dsa: false, merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation) }
before do before do
absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation)
other_absorbed_organisation.update!(merge_date: Time.zone.local(2023, 4, 3), absorbing_organisation: organisation)
get "/organisations/#{organisation.id}/details", headers:, params: {} get "/organisations/#{organisation.id}/details", headers:, params: {}
end end

Loading…
Cancel
Save