Browse Source

Update fees mappings for the export

pull/2943/head
Kat 1 month ago
parent
commit
1f7fe8f590
  1. 8
      app/services/exports/sales_log_export_constants.rb
  2. 9
      app/services/exports/sales_log_export_service.rb
  3. 8
      spec/fixtures/exports/sales_log.xml
  4. 8
      spec/fixtures/exports/sales_log_2024.xml
  5. 59
      spec/services/exports/sales_log_export_service_spec.rb

8
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}"

9
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

8
spec/fixtures/exports/sales_log.xml vendored

@ -114,6 +114,8 @@
<ethnicgroup2>17</ethnicgroup2>
<previouslaknown>1</previouslaknown>
<hasmscharge>1</hasmscharge>
<hasservicecharges/>
<servicecharges/>
<inc1nk>0</inc1nk>
<inc2nk>0</inc2nk>
<postcode>AA1 1AA</postcode>
@ -139,8 +141,8 @@
<prevlocname>Westminster</prevlocname>
<liveinbuyer1>1</liveinbuyer1>
<liveinbuyer2>1</liveinbuyer2>
<has_estate_fee/>
<estate_fee/>
<hasestatefee/>
<estatefee/>
<stairlastday/>
<stairlastmonth/>
<stairlastyear/>
@ -148,7 +150,5 @@
<stairinitialmonth/>
<stairinitialyear/>
<mscharge_value_check/>
<hasservicecharges>1</hasservicecharges><!-- #?? -->
<servicecharges>100.0</servicecharges><!-- #?? -->
</form>
</forms>

8
spec/fixtures/exports/sales_log_2024.xml vendored

@ -114,6 +114,8 @@
<ethnicgroup2>17</ethnicgroup2>
<previouslaknown>1</previouslaknown>
<hasmscharge>1</hasmscharge>
<hasservicecharges/>
<servicecharges/>
<inc1nk>0</inc1nk>
<inc2nk>0</inc2nk>
<postcode>AA1 1AA</postcode>
@ -139,8 +141,8 @@
<prevlocname>Westminster</prevlocname>
<liveinbuyer1>1</liveinbuyer1>
<liveinbuyer2>1</liveinbuyer2>
<has_estate_fee/>
<estate_fee/>
<hasestatefee/>
<estatefee/>
<stairlastday/>
<stairlastmonth/>
<stairlastyear/>
@ -148,7 +150,5 @@
<stairinitialmonth/>
<stairinitialyear/>
<mscharge_value_check/>
<hasservicecharges>1</hasservicecharges><!-- #?? -->
<servicecharges>100.0</servicecharges><!-- #?? -->
</form>
</forms>

59
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!("<mscharge>100.0</mscharge>", "<mscharge>123.0</mscharge>")
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!("<hasservicecharges/>", "<hasservicecharges>1</hasservicecharges>")
export_file.sub!("<servicecharges/>", "<servicecharges>321.0</servicecharges>")
export_file.sub!("<hasestatefee/>", "<hasestatefee>1</hasestatefee>")
export_file.sub!("<estatefee/>", "<estatefee>222.0</estatefee>")
export_file.sub!("<mscharge>100.0</mscharge>", "<mscharge/>")
export_file.sub!("<hasmscharge>1</hasmscharge>", "<hasmscharge/>")
export_file.sub!("<type>8</type>", "<type>30</type>")
export_file.sub!("<staircase/>", "<staircase>2</staircase>")
export_file.sub!("<grant>10000.0</grant>", "<grant/>")
export_file.sub!("<ppcodenk>0</ppcodenk>", "<ppcodenk>1</ppcodenk>")
export_file.sub!("<ppostc1>SW1A</ppostc1>", "<ppostc1/>")
export_file.sub!("<ppostc2>1AA</ppostc2>", "<ppostc2/>")
export_file.sub!("<prevloc>E09000033</prevloc>", "<prevloc/>")
export_file.sub!("<extrabor>1</extrabor>", "<extrabor/>")
export_file.sub!("<ownership>2</ownership>", "<ownership>1</ownership>")
export_file.sub!("<previouslaknown>1</previouslaknown>", "<previouslaknown>0</previouslaknown>")
export_file.sub!("<prevlocname>Westminster</prevlocname>", "<prevlocname/>")
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

Loading…
Cancel
Save