From 61e5d22ace21616ddb03db3dd43ec54f9ce78533 Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 25 Jul 2023 10:41:32 +0100 Subject: [PATCH] Merge sales logs --- app/models/sales_log.rb | 1 + .../merge/merge_organisations_service.rb | 9 +++++++++ .../merge/merge_organisations_service_spec.rb | 16 ++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index fc57f3ba3..2a0a6d5c4 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -51,6 +51,7 @@ class SalesLog < Log .where.not(postcode_full: nil) .where("age1 IS NOT NULL OR age1_known = 1 OR age1_known = 2") } + scope :after_date, ->(date) { where("saledate >= ?", date) } OPTIONAL_FIELDS = %w[purchid othtype].freeze RETIREMENT_AGES = { "M" => 65, "F" => 60, "X" => 65 }.freeze diff --git a/app/services/merge/merge_organisations_service.rb b/app/services/merge/merge_organisations_service.rb index 835b5fa66..7610a6e4e 100644 --- a/app/services/merge/merge_organisations_service.rb +++ b/app/services/merge/merge_organisations_service.rb @@ -11,6 +11,7 @@ class Merge::MergeOrganisationsService merge_users merge_schemes_and_locations merge_lettings_logs + merge_sales_logs mark_organisations_as_merged @absorbing_organisation.save! end @@ -88,6 +89,14 @@ private end end + def merge_sales_logs + @merging_organisations.each do |merging_organisation| + merging_organisation.owned_sales_logs.after_date(Time.zone.today).each do |sales_log| + sales_log.update(owning_organisation: @absorbing_organisation) + end + end + end + def mark_organisations_as_merged # @merging_organisations.update_all(merge_date: Time.zone.today) end diff --git a/spec/services/merge/merge_organisations_service_spec.rb b/spec/services/merge/merge_organisations_service_spec.rb index 4a12991d8..5e5929495 100644 --- a/spec/services/merge/merge_organisations_service_spec.rb +++ b/spec/services/merge/merge_organisations_service_spec.rb @@ -116,6 +116,22 @@ RSpec.describe Merge::MergeOrganisationsService do expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(nil) end end + + context "and merging sales logs" do + let!(:sales_log) { create(:sales_log, saledate: Time.zone.tomorrow, owning_organisation: merging_organisation) } + + before do + create(:sales_log, saledate: Time.zone.yesterday, owning_organisation: merging_organisation) + end + + it "moves relevant logs" do + merge_organisations_service.call + + absorbing_organisation.reload + expect(absorbing_organisation.owned_sales_logs.count).to eq(1) + expect(absorbing_organisation.owned_sales_logs.first).to eq(sales_log) + end + end end end end