From 476707bfe7cc15a35aa8356c1a76693928bfebd9 Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis Date: Fri, 6 Feb 2026 08:39:08 +0000 Subject: [PATCH] CLDC-4141: include fields rather than omitting in lettings_log_export_service.rb --- .../exports/lettings_log_export_service.rb | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index 2f5e9e22d..999cb3c13 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -163,18 +163,36 @@ module Exports attribute_hash["location_status"] = location.status_at(attribute_hash["startdate"]) end - def is_omitted_field?(field_name, lettings_log) + def is_included_field?(field_name, included_fields) + included_fields.include?(field_name) + end + + def get_included_fields(lettings_log) pattern_age = /age\d_known/ details_known_prefix = "details_known_" - field_name.starts_with?(details_known_prefix) || - pattern_age.match(field_name) || - (!EXPORT_FIELDS.include?(field_name) && !POST_2026_EXPORT_FIELDS.include?(field_name)) || - (lettings_log.form.start_year_2024_or_later? && PRE_2024_EXPORT_FIELDS.include?(field_name)) || - (!lettings_log.form.start_year_2024_or_later? && POST_2024_EXPORT_FIELDS.include?(field_name)) || - (lettings_log.form.start_year_2025_or_later? && PRE_2025_EXPORT_FIELDS.include?(field_name)) || - (lettings_log.form.start_year_2026_or_later? && PRE_2026_EXPORT_FIELDS.include?(field_name)) || - (!lettings_log.form.start_year_2026_or_later? && POST_2026_EXPORT_FIELDS.include?(field_name)) - # TODO: refactor to include rather than omit - and note that it seems POST 2024 additions have been omitted thus far... + included_fields = Set[] + included_fields.merge(EXPORT_FIELDS) + included_fields.merge(POST_2026_EXPORT_FIELDS) + + if lettings_log.form.start_year_2024_or_later? + included_fields.subtract(PRE_2024_EXPORT_FIELDS) + else + included_fields.subtract(POST_2024_EXPORT_FIELDS) + end + + if lettings_log.form.start_year_2025_or_later? + included_fields.subtract(PRE_2025_EXPORT_FIELDS) + end + + if lettings_log.form.start_year_2026_or_later? + included_fields.subtract(PRE_2026_EXPORT_FIELDS) + else + included_fields.subtract(POST_2026_EXPORT_FIELDS) + end + + included_fields.reject! { |field| field.starts_with?(details_known_prefix) || pattern_age.match(field) } + + included_fields end def build_export_xml(lettings_logs) @@ -184,11 +202,12 @@ module Exports attribute_hash = apply_cds_transformation(lettings_log, EXPORT_MODE[:xml]) form = doc.create_element("form") doc.at("forms") << form + included_fields = get_included_fields(lettings_log) attribute_hash.each do |key, value| - if is_omitted_field?(key, lettings_log) - next - else + if is_included_field?(key, included_fields) form << doc.create_element(key, value) + else + next end end form << doc.create_element("providertype", lettings_log.owning_organisation&.read_attribute_before_type_cast(:provider_type))