diff --git a/app/models/derived_variables/lettings_log_variables.rb b/app/models/derived_variables/lettings_log_variables.rb index f584b6238e..1e2aab7901 100644 --- a/app/models/derived_variables/lettings_log_variables.rb +++ b/app/models/derived_variables/lettings_log_variables.rb @@ -72,6 +72,7 @@ def set_derived_fields! self.beds = 1 end + clear_child_ecstat_for_age_changes! child_under_16_constraints! self.hhtype = household_type @@ -243,6 +244,14 @@ def child_under_16_constraints! end end + def clear_child_ecstat_for_age_changes! + (2..8).each do |idx| + if public_send("age#{idx}_changed?") && self["ecstat#{idx}"] == 9 + self["ecstat#{idx}"] = nil + end + end + end + def household_type return unless totelder && totadult && totchild diff --git a/app/models/derived_variables/sales_log_variables.rb b/app/models/derived_variables/sales_log_variables.rb index ef4997283a..ff8cd49169 100644 --- a/app/models/derived_variables/sales_log_variables.rb +++ b/app/models/derived_variables/sales_log_variables.rb @@ -46,6 +46,7 @@ def set_derived_fields! if saledate && form.start_year_2024_or_later? self.soctenant = soctenant_from_prevten_values + clear_child_ecstat_for_age_changes! child_under_16_constraints! end @@ -181,6 +182,15 @@ def child_under_16_constraints! end end + def clear_child_ecstat_for_age_changes! + start_index = joint_purchase? ? 3 : 2 + (start_index..6).each do |idx| + if public_send("age#{idx}_changed?") && self["ecstat#{idx}"] == 9 + self["ecstat#{idx}"] = nil + end + end + end + def household_type return unless total_elder && total_adult && totchild diff --git a/spec/models/lettings_log_derived_fields_spec.rb b/spec/models/lettings_log_derived_fields_spec.rb index d315db51e1..e4edb194e1 100644 --- a/spec/models/lettings_log_derived_fields_spec.rb +++ b/spec/models/lettings_log_derived_fields_spec.rb @@ -1206,4 +1206,24 @@ end end end + + describe "#clear_child_ecstat_for_age_changes!" do + it "clears the working situation of a person that was previously a child under 16" do + log = create(:lettings_log, :completed, age2: 13) + log.age2 = 17 + expect { log.set_derived_fields! }.to change(log, :ecstat2).from(9).to(nil) + end + + it "does not clear the working situation of a person that had an age change but is still a child under 16" do + log = create(:lettings_log, :completed, age2: 13) + log.age2 = 15 + expect { log.set_derived_fields! }.to not_change(log, :ecstat2) + end + + it "does not clear the working situation of a person that had an age change but is still an adult" do + log = create(:lettings_log, :completed, age2: 45) + log.age2 = 46 + expect { log.set_derived_fields! }.to not_change(log, :ecstat2) + end + end end diff --git a/spec/models/sales_log_derived_fields_spec.rb b/spec/models/sales_log_derived_fields_spec.rb index 8eda0c36f0..7827ce2820 100644 --- a/spec/models/sales_log_derived_fields_spec.rb +++ b/spec/models/sales_log_derived_fields_spec.rb @@ -78,6 +78,26 @@ expect { log.set_derived_fields! }.to change(log, :mortgage).from(50_000).to(nil) end + describe "#clear_child_ecstat_for_age_changes!" do + it "clears the working situation of a person that was previously a child under 16" do + log = create(:sales_log, :completed, age3: 13, age4: 16, age5: 45) + log.age3 = 17 + expect { log.set_derived_fields! }.to change(log, :ecstat3).from(9).to(nil) + end + + it "does not clear the working situation of a person that had an age change but is still a child under 16" do + log = create(:sales_log, :completed, age3: 13, age4: 16, age5: 45) + log.age3 = 15 + expect { log.set_derived_fields! }.to not_change(log, :ecstat3) + end + + it "does not clear the working situation of a person that had an age change but is still an adult" do + log = create(:sales_log, :completed, age3: 13, age4: 16, age5: 45) + log.age5 = 46 + expect { log.set_derived_fields! }.to not_change(log, :ecstat5) + end + end + context "with a log that is not outright sales" do it "does not derive deposit when mortgage used is no" do log = build(:sales_log, :shared_ownership_setup_complete, value: 123_400, deposit: nil, mortgageused: 2)