diff --git a/app/models/derived_variables/sales_log_variables.rb b/app/models/derived_variables/sales_log_variables.rb index 3f4d61114..f5106f4c0 100644 --- a/app/models/derived_variables/sales_log_variables.rb +++ b/app/models/derived_variables/sales_log_variables.rb @@ -20,15 +20,8 @@ module DerivedVariables::SalesLogVariables if outright_sale? && mortgage_not_used? self.deposit = value - elsif outright_sale? && mortgage_use_unknown? - self.deposit = nil - elsif outright_sale? && mortgageused_changed? && !deposit_changed? - # Clear when switching to mortgage used - self.deposit = nil - elsif ownershipsch_changed?(from: 3) && - ((mortgage_not_used? && !mortgageused_changed?) || mortgageused_changed?(from: 2)) && - !deposit_changed? - # Clear when switching to to different ownership type + elsif outright_sale? && mortgageused_changed?(from: 2, to: 1) + # Clear when switching mortgage used from no to yes self.deposit = nil end diff --git a/app/models/form.rb b/app/models/form.rb index baae2d9bb..1d58e2f9f 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -270,7 +270,7 @@ class Form else questions.reject { |q| %w[radio checkbox].include?(q.type) || q.disable_clearing_if_not_routed_or_dynamic_answer_options } end - routed, not_routed = questions_by_type.partition { |q| q.page.routed_to?(log, current_user) || q.derived? } + routed, not_routed = questions_by_type.partition { |q| q.page.routed_to?(log, current_user) || q.derived?(log) } { routed:, not_routed: } end diff --git a/app/models/form/lettings/questions/created_by_id.rb b/app/models/form/lettings/questions/created_by_id.rb index b2516808e..02176fb4d 100644 --- a/app/models/form/lettings/questions/created_by_id.rb +++ b/app/models/form/lettings/questions/created_by_id.rb @@ -6,6 +6,7 @@ class Form::Lettings::Questions::CreatedById < ::Form::Question @id = "created_by_id" @check_answer_label = "Log owner" @header = "Which user are you creating this log for?" + @derived = true @type = "select" end @@ -44,10 +45,6 @@ class Form::Lettings::Questions::CreatedById < ::Form::Question present_user(User.find(value)) end - def derived? - true - end - private def present_user(user) diff --git a/app/models/form/lettings/questions/managing_organisation.rb b/app/models/form/lettings/questions/managing_organisation.rb index c9ab1247a..51eccdaac 100644 --- a/app/models/form/lettings/questions/managing_organisation.rb +++ b/app/models/form/lettings/questions/managing_organisation.rb @@ -4,6 +4,7 @@ class Form::Lettings::Questions::ManagingOrganisation < ::Form::Question @id = "managing_organisation_id" @check_answer_label = "Managing agent" @header = "Which organisation manages this letting?" + @derived = true @type = "select" @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] if form.start_date.present? end @@ -62,10 +63,6 @@ class Form::Lettings::Questions::ManagingOrganisation < ::Form::Question answer_options[value] end - def derived? - true - end - def hidden_in_check_answers?(log, user = nil) user.nil? || !@page.routed_to?(log, user) end diff --git a/app/models/form/lettings/questions/stock_owner.rb b/app/models/form/lettings/questions/stock_owner.rb index 758427fc9..682c64247 100644 --- a/app/models/form/lettings/questions/stock_owner.rb +++ b/app/models/form/lettings/questions/stock_owner.rb @@ -4,6 +4,7 @@ class Form::Lettings::Questions::StockOwner < ::Form::Question @id = "owning_organisation_id" @check_answer_label = "Stock owner" @header = "Which organisation owns this property?" + @derived = true @type = "select" @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] if form.start_date.present? end @@ -60,10 +61,6 @@ class Form::Lettings::Questions::StockOwner < ::Form::Question answer_options(log, user)[value] end - def derived? - true - end - def hidden_in_check_answers?(_log, user = nil) return false if user.support? diff --git a/app/models/form/question.rb b/app/models/form/question.rb index 0a486b5bd..0c1611e60 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -99,7 +99,7 @@ class Form::Question page.routed_to?(log, nil) && enabled?(log) end - def derived? + def derived?(_log) !!derived end diff --git a/app/models/form/sales/questions/buyer_previous.rb b/app/models/form/sales/questions/buyer_previous.rb index fe16969d7..b35a67c5e 100644 --- a/app/models/form/sales/questions/buyer_previous.rb +++ b/app/models/form/sales/questions/buyer_previous.rb @@ -22,7 +22,7 @@ class Form::Sales::Questions::BuyerPrevious < ::Form::Question } end - def derived? + def derived?(_log) form.start_year_after_2024? end diff --git a/app/models/form/sales/questions/created_by_id.rb b/app/models/form/sales/questions/created_by_id.rb index 4e0e73e27..725361ee4 100644 --- a/app/models/form/sales/questions/created_by_id.rb +++ b/app/models/form/sales/questions/created_by_id.rb @@ -6,6 +6,7 @@ class Form::Sales::Questions::CreatedById < ::Form::Question @id = "created_by_id" @check_answer_label = "Log owner" @header = "Which user are you creating this log for?" + @derived = true @type = "select" end @@ -47,10 +48,6 @@ class Form::Sales::Questions::CreatedById < ::Form::Question true end - def derived? - true - end - private def present_user(user) diff --git a/app/models/form/sales/questions/deposit_amount.rb b/app/models/form/sales/questions/deposit_amount.rb index 9c18e3688..72faa818c 100644 --- a/app/models/form/sales/questions/deposit_amount.rb +++ b/app/models/form/sales/questions/deposit_amount.rb @@ -10,12 +10,15 @@ class Form::Sales::Questions::DepositAmount < ::Form::Question @step = 1 @width = 5 @prefix = "£" - @derived = true @ownershipsch = ownershipsch @question_number = QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.fetch(form.start_date.year, QUESTION_NUMBER_FROM_YEAR_AND_OWNERSHIP.max_by { |k, _v| k }.last)[ownershipsch] @optional = optional end + def derived?(log) + log.outright_sale? && log.mortgage_not_used? + end + def selected_answer_option_is_derived?(_log) true end diff --git a/app/models/form/sales/questions/managing_organisation.rb b/app/models/form/sales/questions/managing_organisation.rb index a0e8f2c28..f98dd0100 100644 --- a/app/models/form/sales/questions/managing_organisation.rb +++ b/app/models/form/sales/questions/managing_organisation.rb @@ -4,6 +4,7 @@ class Form::Sales::Questions::ManagingOrganisation < ::Form::Question @id = "managing_organisation_id" @check_answer_label = "Reported by" @header = "Which organisation is reporting this sale?" + @derived = true @type = "select" @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] end @@ -54,10 +55,6 @@ class Form::Sales::Questions::ManagingOrganisation < ::Form::Question answer_options[value] end - def derived? - true - end - def hidden_in_check_answers?(log, user = nil) user.nil? || !@page.routed_to?(log, user) end diff --git a/app/models/form/sales/questions/owning_organisation_id.rb b/app/models/form/sales/questions/owning_organisation_id.rb index 838b770f6..062fbcaaf 100644 --- a/app/models/form/sales/questions/owning_organisation_id.rb +++ b/app/models/form/sales/questions/owning_organisation_id.rb @@ -4,6 +4,7 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question @id = "owning_organisation_id" @check_answer_label = "Owning organisation" @header = "Which organisation owns this log?" + @derived = true @type = "select" @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] end @@ -71,10 +72,6 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question answer_options(log, user)[value] end - def derived? - true - end - def hidden_in_check_answers?(_log, user = nil) return false if user.support? diff --git a/app/models/form/subsection.rb b/app/models/form/subsection.rb index bff8b8e73..25a473e98 100644 --- a/app/models/form/subsection.rb +++ b/app/models/form/subsection.rb @@ -29,7 +29,7 @@ class Form::Subsection qs = applicable_questions(log) qs_optional_removed = qs.reject { |q| log.optional_fields.include?(q.id) } - return :not_started if qs.count.positive? && qs.all? { |question| question.unanswered?(log) || question.read_only? || question.derived? } + return :not_started if qs.count.positive? && qs.all? { |question| question.unanswered?(log) || question.read_only? || question.derived?(log) } return :completed if qs_optional_removed.all? { |question| question.completed?(log) } :in_progress @@ -49,7 +49,7 @@ class Form::Subsection def applicable_questions(log) questions.select do |q| - (q.displayed_to_user?(log) && !q.derived?) || q.is_derived_or_has_inferred_check_answers_value?(log) + (q.displayed_to_user?(log) && !q.derived?(log)) || q.is_derived_or_has_inferred_check_answers_value?(log) end end