diff --git a/app/services/exports/lettings_log_export_constants.rb b/app/services/exports/lettings_log_export_constants.rb
index edfb58b17..6186c60ae 100644
--- a/app/services/exports/lettings_log_export_constants.rb
+++ b/app/services/exports/lettings_log_export_constants.rb
@@ -136,7 +136,8 @@ module Exports::LettingsLogExportConstants
"scheme_status",
"location_status",
"created_by",
- "amended_by"
+ "amended_by",
+ "duplicate_log_reference_id"
]
(1..8).each do |index|
diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb
index 5cc7cac00..23a91bb5d 100644
--- a/app/services/exports/lettings_log_export_service.rb
+++ b/app/services/exports/lettings_log_export_service.rb
@@ -226,6 +226,7 @@ module Exports
attribute_hash["relat#{index}"] = "R"
attribute_hash["ecstat#{index}"] = 10
end
+ attribute_hash["duplicate_log_reference_id"] = lettings_log.duplicate_log_reference_id
attribute_hash
end
diff --git a/spec/factories/duplicate_log_reference.rb b/spec/factories/duplicate_log_reference.rb
new file mode 100644
index 000000000..955979790
--- /dev/null
+++ b/spec/factories/duplicate_log_reference.rb
@@ -0,0 +1,9 @@
+FactoryBot.define do
+ factory :duplicate_log_reference do
+ log_id { 1 }
+ log_type { "SalesLog" }
+ duplicate_log_reference_id { nil }
+ created_at { Time.zone.today }
+ updated_at { Time.zone.today }
+ end
+end
diff --git a/spec/fixtures/exports/general_needs_log.xml b/spec/fixtures/exports/general_needs_log.xml
index fe7985668..8148af1d8 100644
--- a/spec/fixtures/exports/general_needs_log.xml
+++ b/spec/fixtures/exports/general_needs_log.xml
@@ -156,6 +156,7 @@
{log_id}
test1@example.com
+
1
diff --git a/spec/fixtures/exports/general_needs_log_23_24.xml b/spec/fixtures/exports/general_needs_log_23_24.xml
index ab4871a94..c3477c037 100644
--- a/spec/fixtures/exports/general_needs_log_23_24.xml
+++ b/spec/fixtures/exports/general_needs_log_23_24.xml
@@ -157,6 +157,7 @@
{log_id}
test1@example.com
+
1
diff --git a/spec/fixtures/exports/supported_housing_logs.xml b/spec/fixtures/exports/supported_housing_logs.xml
index c05f2c76a..f1a467758 100644
--- a/spec/fixtures/exports/supported_housing_logs.xml
+++ b/spec/fixtures/exports/supported_housing_logs.xml
@@ -172,6 +172,7 @@
20
{location_id}
active
+
1
diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb
index 790995c9e..6162af3b2 100644
--- a/spec/services/exports/lettings_log_export_service_spec.rb
+++ b/spec/services/exports/lettings_log_export_service_spec.rb
@@ -413,6 +413,30 @@ RSpec.describe Exports::LettingsLogExportService do
export_service.export_xml_lettings_logs
end
end
+
+ context "and one lettings log with duplicate reference is available for export" do
+ let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, created_by: user, propcode: "123", ppostcode_full: "SE2 6RT", postcode_full: "NW1 5TY", tenancycode: "BZ737", startdate: Time.zone.local(2022, 2, 2, 10, 36, 49), voiddate: Time.zone.local(2019, 11, 3), mrcdate: Time.zone.local(2020, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4) }
+
+ before do
+ FactoryBot.create(:duplicate_log_reference, log_type: "LettingsLog", log_id: lettings_log.id, duplicate_log_reference_id: 123)
+ end
+
+ def replace_duplicate_log_reference_id(export_file)
+ export_file.sub!("", "123")
+ end
+
+ it "generates an XML export file with the expected content within the ZIP file" do
+ expected_content = replace_entity_ids(lettings_log, xml_export_file.read)
+ expected_content = replace_duplicate_log_reference_id(expected_content)
+ expect(storage_service).to receive(:write_file).with(expected_zip_filename, any_args) do |_, content|
+ entry = Zip::File.open_buffer(content).find_entry(expected_data_filename)
+ expect(entry).not_to be_nil
+ expect(entry.get_input_stream.read).to eq(expected_content)
+ end
+
+ export_service.export_xml_lettings_logs
+ end
+ end
end
context "when exporting a supported housing lettings logs in XML" do