Browse Source

Merge managed sales logs

pull/2049/head
Kat 3 years ago
parent
commit
c2e8e434cf
  1. 12
      app/services/merge/merge_organisations_service.rb
  2. 11
      spec/services/merge/merge_organisations_service_spec.rb

12
app/services/merge/merge_organisations_service.rb

@ -79,6 +79,9 @@ private
def merge_lettings_logs(merging_organisation)
merging_organisation.owned_lettings_logs.after_date(@merge_date.to_time).each do |lettings_log|
if lettings_log.managing_organisation == merging_organisation
lettings_log.managing_organisation = @absorbing_organisation
end
if lettings_log.scheme.present?
scheme_to_set = @absorbing_organisation.owned_schemes.find_by(service_name: lettings_log.scheme.service_name)
location_to_set = scheme_to_set.locations.find_by(name: lettings_log.location&.name, postcode: lettings_log.location&.postcode)
@ -96,10 +99,17 @@ private
end
def merge_sales_logs(merging_organisation)
merging_organisation.sales_logs.after_date(@merge_date.to_time).each do |sales_log|
merging_organisation.owned_sales_logs.after_date(@merge_date.to_time).each do |sales_log|
if sales_log.managing_organisation == merging_organisation
sales_log.managing_organisation = @absorbing_organisation
end
sales_log.owning_organisation = @absorbing_organisation
sales_log.save!(validate: false)
end
merging_organisation.managed_sales_logs.after_date(@merge_date.to_time).each do |sales_log|
sales_log.managing_organisation = @absorbing_organisation
sales_log.save!(validate: false)
end
end
def mark_organisation_as_merged(merging_organisation)

11
spec/services/merge/merge_organisations_service_spec.rb

@ -238,10 +238,16 @@ RSpec.describe Merge::MergeOrganisationsService do
end
context "and merging sales logs" do
let!(:sales_log) { create(:sales_log, saledate: Time.zone.today, owning_organisation: merging_organisation) }
let(:owning_organisation) { create(:organisation, holds_own_stock: true) }
let!(:sales_log) { create(:sales_log, saledate: Time.zone.today, owning_organisation: merging_organisation, purchid: "owned") }
let!(:managed_sales_log) { create(:sales_log, saledate: Time.zone.today, purchid: "managed") }
before do
create(:sales_log, saledate: Time.zone.today - 2.days, owning_organisation: merging_organisation)
create(:organisation_relationship) { create(:organisation_relationship, parent_organisation: owning_organisation, child_organisation: merging_organisation) }
managed_sales_log.update!(owning_organisation:, managing_organisation: merging_organisation, created_by: merging_organisation_user)
create(:sales_log, saledate: Time.zone.today - 2.days, owning_organisation: merging_organisation, created_by: merging_organisation_user, purchid: "ranom 1")
create(:sales_log, saledate: Time.zone.today - 2.days, owning_organisation:, managing_organisation: merging_organisation, created_by: merging_organisation_user, purchid: "ranom 2")
end
it "moves relevant logs" do
@ -250,6 +256,9 @@ RSpec.describe Merge::MergeOrganisationsService do
absorbing_organisation.reload
expect(SalesLog.filter_by_owning_organisation(absorbing_organisation).count).to eq(1)
expect(SalesLog.filter_by_owning_organisation(absorbing_organisation).first).to eq(sales_log)
expect(SalesLog.filter_by_managing_organisation(absorbing_organisation).count).to eq(2)
expect(SalesLog.filter_by_managing_organisation(absorbing_organisation)).to include(managed_sales_log)
expect(SalesLog.filter_by_managing_organisation(absorbing_organisation)).to include(sales_log)
end
it "rolls back if there's an error" do

Loading…
Cancel
Save