From 1f7fe8f590a0dfe87c89fc4ece12e66c10c8eebc Mon Sep 17 00:00:00 2001
From: Kat <54268893+kosiakkatrina@users.noreply.github.com>
Date: Fri, 7 Mar 2025 08:47:54 +0000
Subject: [PATCH] Update fees mappings for the export
---
.../exports/sales_log_export_constants.rb | 8 ++-
.../exports/sales_log_export_service.rb | 9 ++-
spec/fixtures/exports/sales_log.xml | 8 +--
spec/fixtures/exports/sales_log_2024.xml | 8 +--
.../exports/sales_log_export_service_spec.rb | 59 +++++++++++++++++++
5 files changed, 78 insertions(+), 14 deletions(-)
diff --git a/app/services/exports/sales_log_export_constants.rb b/app/services/exports/sales_log_export_constants.rb
index 459925f43..5ba2f694c 100644
--- a/app/services/exports/sales_log_export_constants.rb
+++ b/app/services/exports/sales_log_export_constants.rb
@@ -121,8 +121,8 @@ module Exports::SalesLogExportConstants
"bulkla",
"createdby",
"createdbyid",
- "has_estate_fee",
- "estate_fee",
+ "hasestatefee",
+ "estatefee",
"firststair",
"numstair",
"stairlastday",
@@ -130,7 +130,9 @@ module Exports::SalesLogExportConstants
"stairlastyear",
"stairinitialyear",
"stairinitialmonth",
- "stairinitialday"]
+ "stairinitialday",
+ "hasservicecharges",
+ "servicecharges",]
(1..6).each do |index|
EXPORT_FIELDS << "age#{index}"
diff --git a/app/services/exports/sales_log_export_service.rb b/app/services/exports/sales_log_export_service.rb
index 49508e379..10881e650 100644
--- a/app/services/exports/sales_log_export_service.rb
+++ b/app/services/exports/sales_log_export_service.rb
@@ -69,7 +69,10 @@ module Exports
attribute_hash["ethnicgroup1"] = sales_log.ethnic_group
attribute_hash["ethnicgroup2"] = sales_log.ethnic_group2
attribute_hash["previouslaknown"] = sales_log.previous_la_known
- attribute_hash["hasmscharge"] = sales_log.has_mscharge
+ attribute_hash["hasmscharge"] = sales_log.discounted_ownership_sale? ? sales_log.has_mscharge : nil
+ attribute_hash["mscharge"] = sales_log.discounted_ownership_sale? ? sales_log.mscharge : nil
+ attribute_hash["hasservicecharges"] = sales_log.shared_ownership_scheme? ? sales_log.has_mscharge : nil
+ attribute_hash["servicecharges"] = sales_log.shared_ownership_scheme? ? sales_log.mscharge : nil
attribute_hash["hoday"] = sales_log.hodate&.day
attribute_hash["homonth"] = sales_log.hodate&.month
@@ -103,8 +106,8 @@ module Exports
attribute_hash["liveinbuyer1"] = sales_log.buy1livein
attribute_hash["liveinbuyer2"] = sales_log.buy2livein
- attribute_hash["has_estate_fee"] = sales_log.has_management_fee
- attribute_hash["estate_fee"] = sales_log.management_fee
+ attribute_hash["hasestatefee"] = sales_log.has_management_fee
+ attribute_hash["estatefee"] = sales_log.management_fee
attribute_hash["stairlastday"] = sales_log.lasttransaction&.day
attribute_hash["stairlastmonth"] = sales_log.lasttransaction&.month
diff --git a/spec/fixtures/exports/sales_log.xml b/spec/fixtures/exports/sales_log.xml
index 6a9f02abe..5e8428194 100644
--- a/spec/fixtures/exports/sales_log.xml
+++ b/spec/fixtures/exports/sales_log.xml
@@ -114,6 +114,8 @@
17
1
1
+
+
0
0
AA1 1AA
@@ -139,8 +141,8 @@
Westminster
1
1
-
-
+
+
@@ -148,7 +150,5 @@
- 1
- 100.0
diff --git a/spec/fixtures/exports/sales_log_2024.xml b/spec/fixtures/exports/sales_log_2024.xml
index 5f49b8ffa..9338dd2ce 100644
--- a/spec/fixtures/exports/sales_log_2024.xml
+++ b/spec/fixtures/exports/sales_log_2024.xml
@@ -114,6 +114,8 @@
17
1
1
+
+
0
0
AA1 1AA
@@ -139,8 +141,8 @@
Westminster
1
1
-
-
+
+
@@ -148,7 +150,5 @@
- 1
- 100.0
diff --git a/spec/services/exports/sales_log_export_service_spec.rb b/spec/services/exports/sales_log_export_service_spec.rb
index 14571d88a..b0c9b13bf 100644
--- a/spec/services/exports/sales_log_export_service_spec.rb
+++ b/spec/services/exports/sales_log_export_service_spec.rb
@@ -362,5 +362,64 @@ RSpec.describe Exports::SalesLogExportService do
end
end
end
+
+ context "when exporting various fees, correctly maps the values" do
+ context "with discounted ownership and mscharge" do
+ let!(:sales_log) { FactoryBot.create(:sales_log, :export, mscharge: 123) }
+
+ def replace_mscharge_value(export_file)
+ export_file.sub!("100.0", "123.0")
+ end
+
+ it "exports mscharge fields as hasmscharge and mscharge" do
+ expected_content = replace_entity_ids(sales_log, xml_export_file.read)
+ expected_content = replace_mscharge_value(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_sales_logs
+ end
+ end
+
+ context "with shared ownership and mscharge" do
+ let!(:sales_log) { FactoryBot.create(:sales_log, :export, ownershipsch: 1, staircase: 2, type: 30, mscharge: 321, has_management_fee: 1, management_fee: 222) }
+
+ def replace_mscharge_and_shared_ownership_values(export_file)
+ export_file.sub!("", "1")
+ export_file.sub!("", "321.0")
+ export_file.sub!("", "1")
+ export_file.sub!("", "222.0")
+ export_file.sub!("100.0", "")
+ export_file.sub!("1", "")
+
+ export_file.sub!("8", "30")
+ export_file.sub!("", "2")
+ export_file.sub!("10000.0", "")
+ export_file.sub!("0", "1")
+ export_file.sub!("SW1A", "")
+ export_file.sub!("1AA", "")
+ export_file.sub!("E09000033", "")
+ export_file.sub!("1", "")
+ export_file.sub!("2", "1")
+ export_file.sub!("1", "0")
+ export_file.sub!("Westminster", "")
+ end
+
+ it "exports mscharge fields as hasmscharge and mscharge" do
+ expected_content = replace_entity_ids(sales_log, xml_export_file.read)
+ expected_content = replace_mscharge_and_shared_ownership_values(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_sales_logs
+ end
+ end
+ end
end
end