Browse Source

CLDC-4168: Allow mortgage not know if buyer wasn't interviewed

previously had this the wrong way around. this makes sense because if you interviewed the buyer you should know this
pull/3195/head
samyou-softwire 3 weeks ago
parent
commit
93f8860562
  1. 2
      app/models/derived_variables/sales_log_variables.rb
  2. 1
      app/models/form/sales/pages/mortgage_length_interviewed.rb
  3. 1
      app/models/form/sales/pages/mortgage_length_not_interviewed.rb
  4. 4
      app/models/sales_log.rb
  5. 16
      app/services/bulk_upload/sales/year2026/row_parser.rb
  6. 2
      config/locales/validations/sales/2026/bulk_upload.en.yml
  7. 8
      spec/services/bulk_upload/sales/year2026/row_parser_spec.rb

2
app/models/derived_variables/sales_log_variables.rb

@ -98,7 +98,7 @@ module DerivedVariables::SalesLogVariables
self.numstair = is_firststair? ? 1 : nil if numstair == 1 && firststair_changed?
self.mrent = 0 if stairowned_100?
if buyer_not_interviewed_changed_to_interviewed_and_mortgage_length_known?
if buyer_interviewed_changed_to_not_interviewed_and_mortgage_length_known?
self.mortgage_length_known = 0
end

1
app/models/form/sales/pages/mortgage_length_interviewed.rb

@ -9,7 +9,6 @@ class Form::Sales::Pages::MortgageLengthInterviewed < ::Form::Page
def questions
@questions ||= [
Form::Sales::Questions::MortgageLengthKnown.new(nil, nil, self, ownershipsch: @ownershipsch),
Form::Sales::Questions::MortgageLength.new(nil, nil, self, ownershipsch: @ownershipsch),
]
end

1
app/models/form/sales/pages/mortgage_length_not_interviewed.rb

@ -9,6 +9,7 @@ class Form::Sales::Pages::MortgageLengthNotInterviewed < ::Form::Page
def questions
@questions ||= [
Form::Sales::Questions::MortgageLengthKnown.new(nil, nil, self, ownershipsch: @ownershipsch),
Form::Sales::Questions::MortgageLength.new(nil, nil, self, ownershipsch: @ownershipsch),
]
end

4
app/models/sales_log.rb

@ -390,8 +390,8 @@ class SalesLog < Log
proptype_changed? && proptype_was == 2
end
def buyer_not_interviewed_changed_to_interviewed_and_mortgage_length_known?
noint_changed? && noint_was == 1 && !buyer_not_interviewed? && mortlen.present?
def buyer_interviewed_changed_to_not_interviewed_and_mortgage_length_known?
noint_changed? && noint_was == 2 && buyer_not_interviewed? && mortlen.present?
end
def shared_ownership_scheme?

16
app/services/bulk_upload/sales/year2026/row_parser.rb

@ -454,7 +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_mortlen_field_if_buyer_interviewed, on: :after_log
validate :validate_nulls, on: :after_log
@ -672,6 +672,10 @@ private
field_99 == 1
end
def buyer_interviewed?
field_14 == 2
end
def rtb_like_sale_type?
[9, 14, 27, 29].include?(field_11)
end
@ -1176,7 +1180,7 @@ private
end
def mortgage_length_known
return nil if field_14 == 1
return nil if buyer_interviewed?
if mortlen == "R"
1
@ -1552,10 +1556,10 @@ private
%w[0] + GlobalConstants::COUNTRIES_ANSWER_OPTIONS.keys # 0 is "Prefers not to say"
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?
def validate_mortlen_field_if_buyer_interviewed
if buyer_interviewed? && mortlen == "R"
errors.add(:field_90, I18n.t("#{ERROR_BASE_KEY}.mortlen.invalid_for_interviewed")) if shared_ownership?
errors.add(:field_118, I18n.t("#{ERROR_BASE_KEY}.mortlen.invalid_for_interviewed")) if discounted_ownership?
end
end

2
config/locales/validations/sales/2026/bulk_upload.en.yml

@ -46,4 +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."
invalid_for_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."

8
spec/services/bulk_upload/sales/year2026/row_parser_spec.rb

@ -1475,18 +1475,18 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do
context "and buyer was interviewed" do
let(:attributes) { field_90_number_attributes.merge({ field_14: 2 }) }
it "does not add an error" do
it "adds an error" do
parser.valid?
expect(parser.errors.where(:field_90)).not_to be_present
expect(parser.errors.where(:field_90)).to be_present
end
end
context "and buyer was not interviewed" do
let(:attributes) { field_90_number_attributes.merge({ field_14: 1 }) }
it "adds an error" do
it "does not add an error" do
parser.valid?
expect(parser.errors.where(:field_90)).to be_present
expect(parser.errors.where(:field_90)).not_to be_present
end
end
end

Loading…
Cancel
Save