diff --git a/app/services/bulk_upload/sales/year2026/row_parser.rb b/app/services/bulk_upload/sales/year2026/row_parser.rb index 6a46eceee..736c802cc 100644 --- a/app/services/bulk_upload/sales/year2026/row_parser.rb +++ b/app/services/bulk_upload/sales/year2026/row_parser.rb @@ -454,6 +454,7 @@ class BulkUpload::Sales::Year2026::RowParser validate :validate_nationality, on: :after_log validate :validate_buyer_2_nationality, on: :after_log + validate :validate_mortlen_field_if_buyer_not_interviewed, on: :after_log validate :validate_nulls, on: :after_log @@ -948,7 +949,7 @@ private attributes["hb"] = field_74 - attributes["mortlen"] = mortlen + attributes["mortlen"] = mortlen != "R" ? mortlen : nil attributes["mortgage_length_known"] = mortgage_length_known attributes["proplen"] = proplen if proplen&.positive? @@ -1169,25 +1170,15 @@ private end def mortlen - value = if shared_ownership? - field_90 - elsif discounted_ownership? - field_118 - end + return field_90 if shared_ownership? - return nil if value == "R" - - value + field_118 if discounted_ownership? end def mortgage_length_known - value = if shared_ownership? - field_90 - elsif discounted_ownership? - field_118 - end + return nil if field_14 == 1 - if value == "R" + if mortlen == "R" 1 else 0 @@ -1561,14 +1552,10 @@ private %w[0] + GlobalConstants::COUNTRIES_ANSWER_OPTIONS.keys # 0 is "Prefers not to say" end - def validate_relat_fields - %i[field_34 field_42 field_46 field_50 field_54].each do |field| - value = send(field) - next if value.blank? - - unless (1..3).cover?(value) - errors.add(field, I18n.t("#{ERROR_BASE_KEY}.invalid_option", question: format_ending(QUESTIONS[field]))) - end + def validate_mortlen_field_if_buyer_not_interviewed + if field_14 == 1 && mortlen == "R" + errors.add(:field_90, I18n.t("#{ERROR_BASE_KEY}.mortlen.invalid_for_not_interviewed")) if shared_ownership? + errors.add(:field_118, I18n.t("#{ERROR_BASE_KEY}.mortlen.invalid_for_not_interviewed")) if discounted_ownership? end end diff --git a/config/locales/validations/sales/2026/bulk_upload.en.yml b/config/locales/validations/sales/2026/bulk_upload.en.yml index 3cdb6b877..eb4e10b90 100644 --- a/config/locales/validations/sales/2026/bulk_upload.en.yml +++ b/config/locales/validations/sales/2026/bulk_upload.en.yml @@ -46,3 +46,4 @@ en: invalid: "Select a valid nationality." mortlen: invalid: "Mortgage length must be a number or the letter R" + invalid_for_not_interviewed: "You indicated that the buyer was interviewed, but selected “Don’t know” for mortgage length. Please provide the mortgage length or update your response."