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)