diff --git a/app/models/derived_variables/case_log_variables.rb b/app/models/derived_variables/case_log_variables.rb index 99f5307e2..a49f0cce1 100644 --- a/app/models/derived_variables/case_log_variables.rb +++ b/app/models/derived_variables/case_log_variables.rb @@ -34,9 +34,11 @@ module DerivedVariables::CaseLogVariables self.wpschrge = weekly_value(pscharge) if pscharge.present? self.wsupchrg = weekly_value(supcharg) if supcharg.present? self.wtcharge = weekly_value(tcharge) if tcharge.present? - self.wtshortfall = weekly_value(tshortfall) if tshortfall && receives_housing_related_benefits? self.wchchrg = weekly_value(chcharge) if is_supported_housing? && chcharge.present? end + self.wtshortfall = if tshortfall && receives_housing_related_benefits? && period + weekly_value(tshortfall) + end self.has_benefits = get_has_benefits self.tshortfall_known = 0 if tshortfall self.nocharge = household_charge&.zero? ? 1 : 0 diff --git a/app/models/form/question.rb b/app/models/form/question.rb index 35d776e6c..9dd7488cb 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -173,6 +173,24 @@ class Form::Question type == "radio" && RADIO_REFUSED_VALUE[id.to_sym]&.include?(value) end + def suffix_label(case_log) + return "" unless suffix + return suffix if suffix.is_a?(String) + + label = "" + + suffix.each do |s| + condition = s["depends_on"] + next unless condition + + answer = case_log.send(condition.keys.first) + if answer == condition.values.first + label = s["label"] + end + end + label + end + private def selected_answer_option_is_derived?(case_log) @@ -196,24 +214,6 @@ private prefix == "£" ? ActionController::Base.helpers.number_to_currency(answer_label, delimiter: ",", format: "%n") : answer_label end - def suffix_label(case_log) - return "" unless suffix - return suffix if suffix.is_a?(String) - - label = "" - - suffix.each do |s| - condition = s["depends_on"] - next unless condition - - answer = case_log.send(condition.keys.first) - if answer == condition.values.first - label = ANSWER_SUFFIX_LABELS.key?(answer) ? ANSWER_SUFFIX_LABELS[answer] : answer - end - end - label - end - def conditional_on @conditional_on ||= form.conditional_question_conditions.select do |condition| condition[:to] == id @@ -237,12 +237,6 @@ private inferred_answers.filter { |_key, value| value.all? { |condition_key, condition_value| case_log[condition_key] == condition_value } } end - ANSWER_SUFFIX_LABELS = { - 1 => " every week", - 2 => " every month", - 3 => " every year", - }.freeze - RADIO_YES_VALUE = { renewal: [1], postcode_known: [1], diff --git a/app/views/form/_numeric_output_question.html.erb b/app/views/form/_numeric_output_question.html.erb index e3019a62c..fdcfa4148 100644 --- a/app/views/form/_numeric_output_question.html.erb +++ b/app/views/form/_numeric_output_question.html.erb @@ -17,6 +17,6 @@ name="case_log[tcharge]" for="<%= question.fields_added.present? ? question.fields_added.map { |x| "case-log-#{x}-field" }.join(" ") : "" %>"> <%= case_log[question.id] %> - <%= question.suffix %> + <%= question.suffix_label(case_log) %> diff --git a/app/views/form/_numeric_question.html.erb b/app/views/form/_numeric_question.html.erb index c392ebaf1..ead2c86a0 100644 --- a/app/views/form/_numeric_question.html.erb +++ b/app/views/form/_numeric_question.html.erb @@ -8,5 +8,5 @@ width: question.width, readonly: question.read_only?, prefix_text: question.prefix.to_s, - suffix_text: question.suffix.is_a?(String) ? question.suffix : nil, + suffix_text: question.suffix_label(case_log), **stimulus_html_attributes(question) %> diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index b84092479..49c38f47c 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -6799,19 +6799,19 @@ "prefix": "£", "suffix": [ { - "label": "every week", + "label": " every week", "depends_on": { "incfreq": 1 } }, { - "label": "every month", + "label": " every month", "depends_on": { "incfreq": 2 } }, { - "label": "every year", + "label": " every year", "depends_on": { "incfreq": 3 } @@ -7906,7 +7906,44 @@ "step": 0.01, "width": 5, "prefix": "£", - "suffix": " every month" + "suffix": [ + { + "label": " every 2 weeks", + "depends_on": { "period": 2 } + }, + { + "label": " every 4 weeks", + "depends_on": { "period": 3 } + }, + { + "label": " every calendar month", + "depends_on": { "period": 4 } + }, + { + "label": " every week for 50 weeks", + "depends_on": { "period": 5 } + }, + { + "label": " every week for 49 weeks", + "depends_on": { "period": 6 } + }, + { + "label": " every week for 48 weeks", + "depends_on": { "period": 7 } + }, + { + "label": " every week for 47 weeks", + "depends_on": { "period": 8 } + }, + { + "label": " every week for 46 weeks", + "depends_on": { "period": 9 } + }, + { + "label": " every week for 52 weeks", + "depends_on": { "period": 1 } + } + ] } }, "depends_on": [ diff --git a/config/forms/2022_2023.json b/config/forms/2022_2023.json index 30cd73344..7bfe37a09 100644 --- a/config/forms/2022_2023.json +++ b/config/forms/2022_2023.json @@ -6758,19 +6758,19 @@ "prefix": "£", "suffix": [ { - "label": "every week", + "label": " every week", "depends_on": { "incfreq": 1 } }, { - "label": "every month", + "label": " every month", "depends_on": { "incfreq": 2 } }, { - "label": "every year", + "label": " every year", "depends_on": { "incfreq": 3 } @@ -7854,7 +7854,44 @@ "step": 0.01, "width": 5, "prefix": "£", - "suffix": " every month" + "suffix": [ + { + "label": " every 2 weeks", + "depends_on": { "period": 2 } + }, + { + "label": " every 4 weeks", + "depends_on": { "period": 3 } + }, + { + "label": " every calendar month", + "depends_on": { "period": 4 } + }, + { + "label": " every week for 50 weeks", + "depends_on": { "period": 5 } + }, + { + "label": " every week for 49 weeks", + "depends_on": { "period": 6 } + }, + { + "label": " every week for 48 weeks", + "depends_on": { "period": 7 } + }, + { + "label": " every week for 47 weeks", + "depends_on": { "period": 8 } + }, + { + "label": " every week for 46 weeks", + "depends_on": { "period": 9 } + }, + { + "label": " every week for 52 weeks", + "depends_on": { "period": 1 } + } + ] } }, "depends_on": [ diff --git a/spec/fixtures/forms/2021_2022.json b/spec/fixtures/forms/2021_2022.json index 51fe74714..f8afa669e 100644 --- a/spec/fixtures/forms/2021_2022.json +++ b/spec/fixtures/forms/2021_2022.json @@ -568,9 +568,9 @@ "width": 5, "prefix": "£", "suffix": [ - { "label": "every week", "depends_on" : { "incfreq": 1 } }, - { "label": "every month", "depends_on" : { "incfreq": 2 } }, - { "label": "every month", "depends_on" : { "incfreq": 3 } } + { "label": " every week", "depends_on" : { "incfreq": 1 } }, + { "label": " every month", "depends_on" : { "incfreq": 2 } }, + { "label": " every year", "depends_on" : { "incfreq": 3 } } ] }, "incfreq": {