Browse Source

Fix suffix label for outstanding amount

pull/709/head
baarkerlounger 3 years ago
parent
commit
4a8496e1c2
  1. 4
      app/models/derived_variables/case_log_variables.rb
  2. 42
      app/models/form/question.rb
  3. 2
      app/views/form/_numeric_output_question.html.erb
  4. 2
      app/views/form/_numeric_question.html.erb
  5. 45
      config/forms/2021_2022.json
  6. 45
      config/forms/2022_2023.json
  7. 6
      spec/fixtures/forms/2021_2022.json

4
app/models/derived_variables/case_log_variables.rb

@ -34,9 +34,11 @@ module DerivedVariables::CaseLogVariables
self.wpschrge = weekly_value(pscharge) if pscharge.present? self.wpschrge = weekly_value(pscharge) if pscharge.present?
self.wsupchrg = weekly_value(supcharg) if supcharg.present? self.wsupchrg = weekly_value(supcharg) if supcharg.present?
self.wtcharge = weekly_value(tcharge) if tcharge.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? self.wchchrg = weekly_value(chcharge) if is_supported_housing? && chcharge.present?
end end
self.wtshortfall = if tshortfall && receives_housing_related_benefits? && period
weekly_value(tshortfall)
end
self.has_benefits = get_has_benefits self.has_benefits = get_has_benefits
self.tshortfall_known = 0 if tshortfall self.tshortfall_known = 0 if tshortfall
self.nocharge = household_charge&.zero? ? 1 : 0 self.nocharge = household_charge&.zero? ? 1 : 0

42
app/models/form/question.rb

@ -173,6 +173,24 @@ class Form::Question
type == "radio" && RADIO_REFUSED_VALUE[id.to_sym]&.include?(value) type == "radio" && RADIO_REFUSED_VALUE[id.to_sym]&.include?(value)
end 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 private
def selected_answer_option_is_derived?(case_log) 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 prefix == "£" ? ActionController::Base.helpers.number_to_currency(answer_label, delimiter: ",", format: "%n") : answer_label
end 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 def conditional_on
@conditional_on ||= form.conditional_question_conditions.select do |condition| @conditional_on ||= form.conditional_question_conditions.select do |condition|
condition[:to] == id 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 } } inferred_answers.filter { |_key, value| value.all? { |condition_key, condition_value| case_log[condition_key] == condition_value } }
end end
ANSWER_SUFFIX_LABELS = {
1 => " every week",
2 => " every month",
3 => " every year",
}.freeze
RADIO_YES_VALUE = { RADIO_YES_VALUE = {
renewal: [1], renewal: [1],
postcode_known: [1], postcode_known: [1],

2
app/views/form/_numeric_output_question.html.erb

@ -17,6 +17,6 @@
name="case_log[tcharge]" name="case_log[tcharge]"
for="<%= question.fields_added.present? ? question.fields_added.map { |x| "case-log-#{x}-field" }.join(" ") : "" %>"> for="<%= question.fields_added.present? ? question.fields_added.map { |x| "case-log-#{x}-field" }.join(" ") : "" %>">
<%= case_log[question.id] %></output> <%= case_log[question.id] %></output>
<span class="govuk-input__suffix"><%= question.suffix %></span> <span class="govuk-input__suffix"><%= question.suffix_label(case_log) %></span>
</div> </div>
</div> </div>

2
app/views/form/_numeric_question.html.erb

@ -8,5 +8,5 @@
width: question.width, width: question.width,
readonly: question.read_only?, readonly: question.read_only?,
prefix_text: question.prefix.to_s, 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) %> **stimulus_html_attributes(question) %>

45
config/forms/2021_2022.json

@ -6799,19 +6799,19 @@
"prefix": "£", "prefix": "£",
"suffix": [ "suffix": [
{ {
"label": "every week", "label": " every week",
"depends_on": { "depends_on": {
"incfreq": 1 "incfreq": 1
} }
}, },
{ {
"label": "every month", "label": " every month",
"depends_on": { "depends_on": {
"incfreq": 2 "incfreq": 2
} }
}, },
{ {
"label": "every year", "label": " every year",
"depends_on": { "depends_on": {
"incfreq": 3 "incfreq": 3
} }
@ -7906,7 +7906,44 @@
"step": 0.01, "step": 0.01,
"width": 5, "width": 5,
"prefix": "£", "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": [ "depends_on": [

45
config/forms/2022_2023.json

@ -6758,19 +6758,19 @@
"prefix": "£", "prefix": "£",
"suffix": [ "suffix": [
{ {
"label": "every week", "label": " every week",
"depends_on": { "depends_on": {
"incfreq": 1 "incfreq": 1
} }
}, },
{ {
"label": "every month", "label": " every month",
"depends_on": { "depends_on": {
"incfreq": 2 "incfreq": 2
} }
}, },
{ {
"label": "every year", "label": " every year",
"depends_on": { "depends_on": {
"incfreq": 3 "incfreq": 3
} }
@ -7854,7 +7854,44 @@
"step": 0.01, "step": 0.01,
"width": 5, "width": 5,
"prefix": "£", "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": [ "depends_on": [

6
spec/fixtures/forms/2021_2022.json vendored

@ -568,9 +568,9 @@
"width": 5, "width": 5,
"prefix": "£", "prefix": "£",
"suffix": [ "suffix": [
{ "label": "every week", "depends_on" : { "incfreq": 1 } }, { "label": " every week", "depends_on" : { "incfreq": 1 } },
{ "label": "every month", "depends_on" : { "incfreq": 2 } }, { "label": " every month", "depends_on" : { "incfreq": 2 } },
{ "label": "every month", "depends_on" : { "incfreq": 3 } } { "label": " every year", "depends_on" : { "incfreq": 3 } }
] ]
}, },
"incfreq": { "incfreq": {

Loading…
Cancel
Save