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": {