Browse Source

Reuse soft validations for retirement in sales

pull/1191/head
Kat 3 years ago
parent
commit
a072a81fb2
  1. 21
      app/models/lettings_log.rb
  2. 21
      app/models/log.rb
  3. 9
      app/models/sales_log.rb
  4. 4
      app/models/validations/soft_validations.rb

21
app/models/lettings_log.rb

@ -456,16 +456,6 @@ class LettingsLog < Log
OPTIONAL_FIELDS + dynamically_not_required
end
(1..8).each do |person_num|
define_method("retirement_age_for_person_#{person_num}") do
retirement_age_for_person(person_num)
end
define_method("plural_gender_for_person_#{person_num}") do
plural_gender_for_person(person_num)
end
end
def retirement_age_for_person(person_num)
gender = public_send("sex#{person_num}".to_sym)
return unless gender
@ -473,17 +463,6 @@ class LettingsLog < Log
RETIREMENT_AGES[gender]
end
def plural_gender_for_person(person_num)
gender = public_send("sex#{person_num}".to_sym)
return unless gender
if %w[M X].include?(gender)
"male and non-binary people"
elsif gender == "F"
"females"
end
end
def age_known?(person_num)
return false unless person_num.is_a?(Integer)

21
app/models/log.rb

@ -61,9 +61,30 @@ class Log < ApplicationRecord
public_send("#{error.attribute}=", nil)
end
end
(1..8).each do |person_num|
define_method("retirement_age_for_person_#{person_num}") do
retirement_age_for_person(person_num)
end
define_method("plural_gender_for_person_#{person_num}") do
plural_gender_for_person(person_num)
end
end
private
def plural_gender_for_person(person_num)
gender = public_send("sex#{person_num}".to_sym)
return unless gender
if %w[M X].include?(gender)
"male and non-binary people"
elsif gender == "F"
"females"
end
end
def update_status!
self.status = if all_fields_completed? && errors.empty?
"completed"

9
app/models/sales_log.rb

@ -16,6 +16,7 @@ end
class SalesLog < Log
include DerivedVariables::SalesLogVariables
include Validations::Sales::SoftValidations
include Validations::SoftValidations
self.inheritance_column = :_type_disabled
@ -33,6 +34,7 @@ class SalesLog < Log
scope :search_by, ->(param) { filter_by_id(param) }
OPTIONAL_FIELDS = %w[purchid].freeze
RETIREMENT_AGES = { "M" => 65, "F" => 60, "X" => 65 }.freeze
def startdate
saledate
@ -181,4 +183,11 @@ class SalesLog < Log
self.postcode_full = upcase_and_remove_whitespace(postcode_full)
process_postcode(postcode_full, "pcodenk", "is_la_inferred", "la")
end
def retirement_age_for_person(person_num)
gender = public_send("sex#{person_num}".to_sym)
return unless gender
RETIREMENT_AGES[gender]
end
end

4
app/models/validations/soft_validations.rb

@ -111,7 +111,7 @@ private
gender = public_send("sex#{person_num}")
return unless age && economic_status && gender
%w[M X].include?(gender) && tenant_is_retired?(economic_status) && age < 67 ||
%w[M X].include?(gender) && tenant_is_retired?(economic_status) && age < retirement_age_for_person(person_num) ||
gender == "F" && tenant_is_retired?(economic_status) && age < 60
end
@ -122,7 +122,7 @@ private
tenant_retired_or_prefers_not_say = tenant_is_retired?(economic_status) || tenant_prefers_not_to_say?(economic_status)
return unless age && economic_status && gender
%w[M X].include?(gender) && !tenant_retired_or_prefers_not_say && age > 67 ||
%w[M X].include?(gender) && !tenant_retired_or_prefers_not_say && age > retirement_age_for_person(person_num) ||
gender == "F" && !tenant_retired_or_prefers_not_say && age > 60
end
end

Loading…
Cancel
Save