diff --git a/app/models/derived_variables/sales_log_variables.rb b/app/models/derived_variables/sales_log_variables.rb index 16fb6ebd7..525c12936 100644 --- a/app/models/derived_variables/sales_log_variables.rb +++ b/app/models/derived_variables/sales_log_variables.rb @@ -21,12 +21,19 @@ module DerivedVariables::SalesLogVariables self.pcode1, self.pcode2 = postcode_full.split(" ") if postcode_full.present? self.totchild = total_child self.totadult = total_adult + total_elder - self.hhmemb = totchild + totadult + self.hhmemb = number_of_household_members self.hhtype = household_type end private + def number_of_household_members + return unless hholdcount.present? && jointpur.present? + + number_of_buyers = joint_purchase? ? 2 : 1 + hholdcount + number_of_buyers + end + def total_elder ages = [age1, age2, age3, age4, age5, age6] ages.count { |age| age.present? && age >= 60 } diff --git a/spec/fixtures/imports/sales_logs/discounted_ownership_sales_log.xml b/spec/fixtures/imports/sales_logs/discounted_ownership_sales_log.xml index bc1d5f274..b697c4960 100644 --- a/spec/fixtures/imports/sales_logs/discounted_ownership_sales_log.xml +++ b/spec/fixtures/imports/sales_logs/discounted_ownership_sales_log.xml @@ -292,7 +292,7 @@ - 0 + 1 0 0 diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb index 7b9f7c7ef..897303b56 100644 --- a/spec/models/sales_log_spec.rb +++ b/spec/models/sales_log_spec.rb @@ -283,6 +283,12 @@ RSpec.describe SalesLog, type: :model do expect(record_from_db["hhmemb"]).to eq(6) end + it "correctly derives and saves hhmemb if it's a joint purchase" do + sales_log.update!(jointpur: 2, jointmore: 2) + record_from_db = ActiveRecord::Base.connection.execute("select hhmemb from sales_logs where id=#{sales_log.id}").to_a[0] + expect(record_from_db["hhmemb"]).to eq(5) + end + it "correctly derives and saves totchild" do record_from_db = ActiveRecord::Base.connection.execute("select totchild from sales_logs where id=#{sales_log.id}").to_a[0] expect(record_from_db["totchild"]).to eq(2)