diff --git a/app/services/exports/lettings_log_export_constants.rb b/app/services/exports/lettings_log_export_constants.rb index 1698fb0a1..eb067e0ba 100644 --- a/app/services/exports/lettings_log_export_constants.rb +++ b/app/services/exports/lettings_log_export_constants.rb @@ -203,4 +203,9 @@ module Exports::LettingsLogExportConstants PRE_2026_EXPORT_FIELDS = Set[ "builtype" ] + + POST_2026_EXPORT_FIELDS = Set[] + (1..8).each do |index| + POST_2026_EXPORT_FIELDS << "sexrab#{index}" + end end diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index 5e67b4854..a71423d81 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -162,16 +162,38 @@ module Exports attribute_hash["location_status"] = location.status_at(attribute_hash["startdate"]) end - def is_omitted_field?(field_name, lettings_log) - pattern_age = /age\d_known/ + def is_included_field?(field_name, fields_for_form) details_known_prefix = "details_known_" - field_name.starts_with?(details_known_prefix) || - pattern_age.match(field_name) || - !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)) + pattern_age = /age\d_known/ + + if field_name.starts_with?(details_known_prefix) || pattern_age.match(field_name) + false + end + + fields_for_form.include?(field_name) + end + + def get_fields_for_form(lettings_log) + included_fields = Set[] + included_fields.merge(EXPORT_FIELDS) + + if lettings_log.form.start_year_2024_or_later? + included_fields.merge(POST_2024_EXPORT_FIELDS) + else + included_fields.merge(PRE_2024_EXPORT_FIELDS) + end + + if !lettings_log.form.start_year_2025_or_later? + included_fields.merge(PRE_2025_EXPORT_FIELDS) + end + + if lettings_log.form.start_year_2026_or_later? + included_fields.merge(POST_2026_EXPORT_FIELDS) + else + included_fields.merge(PRE_2026_EXPORT_FIELDS) + end + + included_fields end def build_export_xml(lettings_logs) @@ -181,11 +203,13 @@ module Exports attribute_hash = apply_cds_transformation(lettings_log, EXPORT_MODE[:xml]) form = doc.create_element("form") doc.at("forms") << form + fields_for_form = get_fields_for_form(lettings_log) + attribute_hash.each do |key, value| - if is_omitted_field?(key, lettings_log) - next - else + if is_included_field?(key, fields_for_form) 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))