diff --git a/app/models/log.rb b/app/models/log.rb index d55289997..b249e2816 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -57,7 +57,7 @@ class Log < ApplicationRecord scope :filter_by_owning_organisation_text_search, ->(param, _user) { where(owning_organisation: Organisation.search_by(param)) } scope :filter_by_managing_organisation_text_search, ->(param, _user) { where(managing_organisation: Organisation.search_by(param)) } - attr_accessor :skip_update_status, :skip_update_uprn_confirmed, :select_best_address_match, :skip_dpo_validation + attr_accessor :skip_update_status, :skip_update_uprn_confirmed, :select_best_address_match, :skip_dpo_validation, :bu_newbuilds_address_entry delegate :present?, to: :address_options, prefix: true @@ -102,21 +102,23 @@ class Log < ApplicationRecord end end - if uprn_selection == "uprn_not_listed" - self.uprn_known = 0 - self.uprn_confirmed = nil - self.uprn = nil - self.address_line1 = address_line1_input - self.address_line2 = nil - self.town_or_city = nil - self.county = nil - self.postcode_full = postcode_full_input if postcode_full_input.match(POSTCODE_REGEXP) - process_postcode_changes! - else - self.uprn = uprn_selection - self.uprn_confirmed = 1 - self.skip_update_uprn_confirmed = true - process_uprn_change! + unless bu_newbuilds_address_entry + if uprn_selection == "uprn_not_listed" + self.uprn_known = 0 + self.uprn_confirmed = nil + self.uprn = nil + self.address_line1 = address_line1_input + self.address_line2 = nil + self.town_or_city = nil + self.county = nil + self.postcode_full = postcode_full_input if postcode_full_input.match(POSTCODE_REGEXP) + process_postcode_changes! + else + self.uprn = uprn_selection + self.uprn_confirmed = 1 + self.skip_update_uprn_confirmed = true + process_uprn_change! + end end end end diff --git a/app/services/bulk_upload/lettings/year2024/row_parser.rb b/app/services/bulk_upload/lettings/year2024/row_parser.rb index 3f5227c44..5fc9ae9d7 100644 --- a/app/services/bulk_upload/lettings/year2024/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2024/row_parser.rb @@ -438,7 +438,7 @@ class BulkUpload::Lettings::Year2024::RowParser validate :validate_assigned_to_when_support, on: :after_log validate :validate_all_charges_given, on: :after_log, if: proc { is_carehome.zero? } - validate :validate_address_option_found, on: :after_log, unless: -> { supported_housing? } + validate :validate_address_option_found, on: :after_log, unless: -> { supported_housing? || rsnvac == 15 } validate :validate_uprn_exists_if_any_key_address_fields_are_blank, on: :after_log, unless: -> { supported_housing? } validate :validate_address_fields, on: :after_log, unless: -> { supported_housing? } @@ -1340,7 +1340,9 @@ private attributes["address_line1_input"] = address_line1_input attributes["postcode_full_input"] = postcode_full - attributes["select_best_address_match"] = true if field_16.blank? + attributes["select_best_address_match"] = true if field_16.blank? && rsnvac != 15 + attributes["uprn_selection"] = "uprn_not_listed" if rsnvac == 15 + attributes["bu_newbuilds_address_entry"] = true if field_16.blank? && rsnvac == 15 end attributes diff --git a/spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb index 33ab390f4..46884a78b 100644 --- a/spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb @@ -1767,6 +1767,36 @@ RSpec.describe BulkUpload::Lettings::Year2024::RowParser do end end end + + context "when it is a new build" do + let(:attributes) { setup_section_params.merge({ + field_24: "15", + field_17: "Address line 1", + field_18: "Address line 2", + field_19: "Town or city", + field_20: "County", + field_21: "DS1", + field_22: "1AA", + field_23: "E09000008", + }) } + + it "sets manual address entry fields" do + stub_request(:get, /api\.postcodes\.io/) + .to_return(status: 200, body: "{\"status\":200,\"result\":{}", headers: {}) + + parser.valid? + expect(parser.log.select_best_address_match).to be_nil + expect(parser.log.uprn_selection).to eq("uprn_not_listed") + expect(parser.log.uprn_known).to be(0) + expect(parser.log.uprn_confirmed).to be_nil + expect(parser.log.address_line1).to eq("Address line 1") + expect(parser.log.address_line2).to eq("Address line 2") + expect(parser.log.town_or_city).to eq("Town or city") + expect(parser.log.county).to eq("County") + expect(parser.log.postcode_full).to eq("DS1 1AA") + expect(parser.log.la).to eq("E09000008") + end + end end context "with a supported housing log" do