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