diff --git a/app/helpers/tasklist_helper.rb b/app/helpers/tasklist_helper.rb index 678ef044f..6250f0489 100644 --- a/app/helpers/tasklist_helper.rb +++ b/app/helpers/tasklist_helper.rb @@ -31,9 +31,9 @@ module TasklistHelper def review_log_text(log) if log.collection_period_open? - link = log.sales? ? review_sales_log_path(id: log, sales_log: true) : review_lettings_log_path(log) + path = log.sales? ? review_sales_log_path(id: log, sales_log: true) : review_lettings_log_path(log) - "You can #{govuk_link_to 'review and make changes to this log', link} until #{log.form.end_date.to_formatted_s(:govuk_date)}.".html_safe + "You can #{govuk_link_to 'review and make changes to this log', path} until #{log.form.display_end_date.to_formatted_s(:govuk_date)}.".html_safe else start_year = log.startdate ? collection_start_year_for_date(log.startdate) : log.form.start_date.year diff --git a/app/models/form.rb b/app/models/form.rb index cc73d2ca6..16c896e4c 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -1,6 +1,6 @@ class Form attr_reader :form_definition, :sections, :subsections, :pages, :questions, - :start_date, :end_date, :type, :name, :setup_definition, + :start_date, :end_date, :display_end_date, :type, :name, :setup_definition, :setup_sections, :form_sections, :unresolved_log_redirect_page_id def initialize(form_path, start_year = "", sections_in_form = [], type = "lettings") @@ -9,7 +9,7 @@ class Form @end_date = if start_year && start_year.to_i > 2022 Time.zone.local(start_year + 1, 6, 9) else - Time.zone.local(start_year + 1, 6, 7) + Time.zone.local(start_year + 1, 8, 7) end @setup_sections = type == "sales" ? [Form::Sales::Sections::Setup.new(nil, nil, self)] : [Form::Lettings::Sections::Setup.new(nil, nil, self)] @form_sections = sections_in_form.map { |sec| sec.new(nil, nil, self) } @@ -40,6 +40,7 @@ class Form @end_date = Time.iso8601(form_definition["end_date"]) @unresolved_log_redirect_page_id = form_definition["unresolved_log_redirect_page_id"] end + @display_end_date = start_year == 2022 ? Time.zone.local(2023, 6, 9) : @end_date @name = "#{start_date.year}_#{end_date.year}_#{type}" end diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index cd0ebd9ac..5609f1e1c 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -187,10 +187,21 @@ private relationship = record.public_send("relat#{person_num}") return unless age && economic_status && relationship - if age >= 16 && age <= 19 && tenant_is_child?(relationship) && (!tenant_is_fulltime_student?(economic_status) && !tenant_economic_status_refused?(economic_status)) - record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.not_student_16_19", person_num:) - record.errors.add "age#{person_num}", I18n.t("validations.household.age.not_student_16_19", person_num:) - record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.not_student_16_19", person_num:) + age_between_16_19 = age.between?(16, 19) + student = tenant_is_fulltime_student?(economic_status) + economic_status_refused = tenant_economic_status_refused?(economic_status) + child = tenant_is_child?(relationship) + + if age_between_16_19 && !(student || economic_status_refused) && child + record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student") + record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student") + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.16_19_not_student") + end + + if !age_between_16_19 && student && child + record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.must_be_16_19") + record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.cannot_be_student.child_not_16_19") + record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.student_not_16_19") end end diff --git a/app/models/validations/sales/household_validations.rb b/app/models/validations/sales/household_validations.rb index a0202ce89..f25effce6 100644 --- a/app/models/validations/sales/household_validations.rb +++ b/app/models/validations/sales/household_validations.rb @@ -54,9 +54,10 @@ private age_between_16_19 = age.between?(16, 19) student = person_is_fulltime_student?(economic_status) + economic_status_refused = person_economic_status_refused?(economic_status) child = person_is_child?(relationship) - if age_between_16_19 && !student && child + if age_between_16_19 && !(student || economic_status_refused) && child record.errors.add "age#{person_num}", I18n.t("validations.household.age.student_16_19.cannot_be_16_19.child_not_student") record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19.must_be_student") record.errors.add "relat#{person_num}", I18n.t("validations.household.relat.student_16_19.cannot_be_child.16_19_not_student") @@ -74,11 +75,11 @@ private economic_status = record.public_send("ecstat#{person_num}") return unless age && economic_status - if age < 16 && !tenant_is_economic_child?(economic_status) + if age < 16 && !person_is_economic_child?(economic_status) record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.child_under_16", person_num:) record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_under_16", person_num:) end - if tenant_is_economic_child?(economic_status) && age > 16 + if person_is_economic_child?(economic_status) && age > 16 record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.child_over_16", person_num:) record.errors.add "age#{person_num}", I18n.t("validations.household.age.child_over_16", person_num:) end @@ -109,7 +110,11 @@ private relationship == "C" end - def tenant_is_economic_child?(economic_status) + def person_is_economic_child?(economic_status) economic_status == 9 end + + def person_economic_status_refused?(economic_status) + economic_status == 10 + end end diff --git a/app/views/form/review.html.erb b/app/views/form/review.html.erb index c7af8972b..1e303b027 100644 --- a/app/views/form/review.html.erb +++ b/app/views/form/review.html.erb @@ -12,7 +12,7 @@ <%= content_for(:title) %>
- You can review and make changes to this log until <%= @log.form.end_date.to_formatted_s(:govuk_date) %>. + You can review and make changes to this log until <%= @log.form.display_end_date.to_formatted_s(:govuk_date) %>.
<% @log.form.sections.map do |section| %>