diff --git a/changelog.d/hb-income-exclusions.fixed.md b/changelog.d/hb-income-exclusions.fixed.md new file mode 100644 index 0000000000..b20caa7ee1 --- /dev/null +++ b/changelog.d/hb-income-exclusions.fixed.md @@ -0,0 +1 @@ +- Excluded Child Benefit, Sure Start Maternity Grants and dependent children's own income from the ordinary Housing Benefit income assessment. diff --git a/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml b/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml index eb2aa87c0e..343e0b9c48 100644 --- a/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml +++ b/policyengine_uk/tests/policy/baseline/finance/benefit/family/housing_benefit/applicable_income/housing_benefit_applicable_income.yaml @@ -23,7 +23,7 @@ output: housing_benefit_applicable_income: 0 -- name: Baseline inputs +- name: Child Benefit is fully disregarded period: 2025 input: would_claim_uc: false # not on Universal Credit, which passports the means test @@ -46,7 +46,7 @@ housing_benefit_applicable_income_disregard: 0 housing_benefit_applicable_income_childcare_element: 0 output: - housing_benefit_applicable_income: 1_000 + housing_benefit_applicable_income: 0 - name: Pension contributions halved # SI 2006/213 reg 36(3)(b): half of the pension contributions come off @@ -264,6 +264,424 @@ housing_benefit_applicable_income: 9_740 housing_benefit_net_earnings: 10_000 +# GB Sch 5 paras 31/65 and reg 25(3); NI Sch 6 paras 32/64 and reg 22(3). + +- name: ENGLAND working-age excludes Child Benefit, Social Fund and dependent earnings + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + child: + age: 17 + is_claimant_or_partner: false + is_child_or_young_person_for_legacy_benefits: true + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, child] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: false + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, child] + country: ENGLAND + output: + housing_benefit_applicable_income: 12000 + +- name: ENGLAND working-age counts partner income + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + partner: + age: 40 + is_claimant_or_partner: true + is_child_or_young_person_for_legacy_benefits: false + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, partner] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: false + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, partner] + country: ENGLAND + output: + housing_benefit_applicable_income: 22400 + +- name: ENGLAND pension-age excludes Child Benefit, Social Fund and dependent earnings + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 75 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + child: + age: 17 + is_claimant_or_partner: false + is_child_or_young_person_for_legacy_benefits: true + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, child] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: true + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, child] + country: ENGLAND + output: + housing_benefit_applicable_income: 12000 + +- name: ENGLAND pension-age counts partner income + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 75 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + partner: + age: 40 + is_claimant_or_partner: true + is_child_or_young_person_for_legacy_benefits: false + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, partner] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: true + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, partner] + country: ENGLAND + output: + housing_benefit_applicable_income: 22400 + +- name: NORTHERN_IRELAND working-age excludes Child Benefit, Social Fund and dependent earnings + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + child: + age: 17 + is_claimant_or_partner: false + is_child_or_young_person_for_legacy_benefits: true + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, child] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: false + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, child] + country: NORTHERN_IRELAND + output: + housing_benefit_applicable_income: 12000 + +- name: NORTHERN_IRELAND working-age counts partner income + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + partner: + age: 40 + is_claimant_or_partner: true + is_child_or_young_person_for_legacy_benefits: false + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, partner] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: false + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, partner] + country: NORTHERN_IRELAND + output: + housing_benefit_applicable_income: 22400 + +- name: NORTHERN_IRELAND pension-age excludes Child Benefit, Social Fund and dependent earnings + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 75 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + child: + age: 17 + is_claimant_or_partner: false + is_child_or_young_person_for_legacy_benefits: true + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, child] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: true + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, child] + country: NORTHERN_IRELAND + output: + housing_benefit_applicable_income: 12000 + +- name: NORTHERN_IRELAND pension-age counts partner income + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 75 + is_claimant_or_partner: true + private_pension_income: 12000 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + ssmg: 500 + partner: + age: 40 + is_claimant_or_partner: true + is_child_or_young_person_for_legacy_benefits: false + employment_income: 10400 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant, partner] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: true + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, partner] + country: NORTHERN_IRELAND + output: + housing_benefit_applicable_income: 22400 + +- name: Counted disability benefits remain income under the working-age regime + period: 2025 + input: + people: + claimant: + age: 40 + is_claimant_or_partner: true + iidb: 1000 + sda: 2000 + incapacity_benefit: 3000 + ssmg: 500 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: false + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant] + country: ENGLAND + output: + housing_benefit_applicable_income: 6000 + +- name: Counted disability benefits remain income under the pension-age regime + period: 2025 + input: + people: + claimant: + age: 75 + is_claimant_or_partner: true + iidb: 1000 + sda: 2000 + incapacity_benefit: 3000 + ssmg: 500 + income_tax: 0 + national_insurance: 0 + pension_contributions: 0 + benunits: + family: + members: [claimant] + child_benefit: 1500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: true + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant] + country: ENGLAND + output: + housing_benefit_applicable_income: 6000 + - name: Statutory paternity pay counts as income and the income tax on it comes off # SI 2006/213 reg 35(1)(i): statutory paternity pay is earnings. ITEPA 2003 # s. 660 taxes it, and reg 36(3) deducts the income tax and Class 1 NI on @@ -287,3 +705,53 @@ output: housing_benefit_applicable_income_disregard: 260 housing_benefit_applicable_income: 17_939.42 + +- name: Taxable statutory paternity pay counts while disregarded family income and tax stay excluded + # Combine the SPP earnings rule with the Child Benefit, Social Fund and + # dependent-income exclusions. Both people have taxable earnings, but only + # the claimant's earnings and deductions enter the ordinary means test. + # With disregards pinned to zero: 20,388.64 - 1,563.728 - 625.4944 + # = 18,199.4176. Child Benefit (1,500), SSMG (500), and the child's wages, + # SPP and tax do not enter that calculation. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_claimant_or_partner: true + employment_income: 20_000 + statutory_paternity_pay: 388.64 + pension_contributions: 0 + ssmg: 500 + child: + age: 17 + is_claimant_or_partner: false + is_child_or_young_person_for_legacy_benefits: true + employment_income: 20_000 + statutory_paternity_pay: 388.64 + pension_contributions: 0 + benunits: + family: + members: [claimant, child] + child_benefit: 1_500 + income_support: 0 + esa_income: 0 + jsa_income: 0 + tax_credits: 0 + housing_benefit_pension_age_regulations_apply: false + in_receipt_of_guarantee_credit: false + in_receipt_of_savings_credit_only: false + housing_benefit_on_passporting_benefit: false + housing_benefit_tariff_income: 0 + housing_benefit_applicable_income_disregard: 0 + housing_benefit_applicable_income_childcare_element: 0 + households: + home: + members: [claimant, child] + country: ENGLAND + output: + income_tax: [1_563.73, 1_563.73] + national_insurance: [625.49, 625.49] + housing_benefit_net_earnings: 18_199.42 + housing_benefit_applicable_income: 18_199.42 diff --git a/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py b/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py index 5b3741f5e4..792b327eeb 100644 --- a/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py +++ b/policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py @@ -1,6 +1,115 @@ from policyengine_uk.model_api import * +def hb_income_before_deductions(benunit, period, parameters): + """Ordinary income before childcare/disregards and the income floor.""" + # Members whose income counts: the claimant and partner (SSCBA 1992 + # s.136(1); HB Regs 2006 reg 25(1), HB (SPC) Regs 2006 reg 23(1)). "The + # income and capital of a child or young person shall not be treated as + # the income and capital of the claimant" (HB Regs 2006 reg 25(3)). + # Pension-age reg 23(3) and NI regs 22(3) / 21(3) do the same. + # Anyone else in the benefit unit does not count either. + person = benunit.members + members = person("is_claimant_or_partner", period) + # Only the claimant's and partner's income-related awards: their income is + # the claimant's (SSCBA s.136(1); HB Regs 2006 reg 25(1)). A member outside + # the family who has an award of their own claims in their own right. + # Income Support already needs the claimant's or partner's own award + # (income_support_eligible). + # Child Benefit is disregarded (GB Sch 5 para 65; NI Sch 6 para 64). + # Pension-age exclusions: GB reg 29(1)(j)(vi); NI reg 27(1)(h)(v). + BENUNIT_MEANS_TESTED_BENEFITS = [ + "income_support", + "claimant_or_partner_jsa_income", + "claimant_or_partner_esa_income", + ] + # Social Fund payments including SSMG are disregarded (GB Sch 5 para 31; + # NI Sch 6 para 32); pension-age GB reg 29(1)(j)(ix) / NI reg 27(1)(h)(viii). + PERSONAL_BENEFITS = [ + "carers_allowance", + # The Carer Support Payment component only: the Scottish Carer + # Supplement is disregarded (HB Regs 2006 Sch 5 para 75; HB (SPC) + # Regs 2006 reg 29(1)(j)(xviiha)), so scottish_carer_supplement is + # not listed. + "carer_support_payment", + "esa_contrib", + "jsa_contrib", + "state_pension", + "maternity_allowance", + # Statutory sick, maternity and paternity pay are earnings: SI + # 2006/213 reg 35(1)(i); SI 2006/214 reg 35(1)(h) and (i); NI SR + # 2006/405 reg 32(1)(i); NI SR 2006/406 reg 33(1)(h) and (i). The + # income tax and National Insurance deducted below include the + # tax on them (employment_benefits, ni_class_1_income). + "statutory_sick_pay", + "statutory_maternity_pay", + "statutory_paternity_pay", + # Counted by both regimes: HB (SPC) Regs 2006 reg 29(1)(j), whose + # exceptions touching these are the IIDB increases under SSCBA + # ss.104-105 (head (iii)) and non-partner dependant increases (head + # (viii)); heads (iv) and (v) cover the Sch 8 schemes for old + # industrial injury cases. And HB Regs 2006 reg 40 with Sch 5, + # whose para 9 attendance allowance disregard covers the + # ss.104-105 increases (reg 2(1)). iidb is the whole reported + # payment and cannot separate those increases. + "iidb", + "sda", + "incapacity_benefit", + ] + INCOME_COMPONENTS = [ + "employment_income", + "self_employment_income", + "property_income_after_finance_costs", + "private_pension_income", + ] + bi = parameters(period).gov.contrib.ubi_center.basic_income + # Add personal benefits, credits and total benefits to income + benefits = add_for_members(benunit, period, BENUNIT_MEANS_TESTED_BENEFITS, members) + income = add_for_members(benunit, period, INCOME_COMPONENTS, members) + personal_benefits = add_for_members(benunit, period, PERSONAL_BENEFITS, members) + credits = add_for_members(benunit, period, ["tax_credits"], members) + # Maintenance paid to the claimant or partner by a spouse, civil partner + # or former partner is income other than earnings (HB Regs 2006 reg 40(1); + # HB (SPC) Regs 2006 reg 29(1)(o)), less £15 a week where the family + # includes a child or young person. Child maintenance is disregarded in + # full (HB Regs 2006 Sch 5 para 47A) or is not listed as income (reg + # 29(1)), so maintenance_income is not counted. + spousal_maintenance = benunit.sum( + max_(0, person("spousal_maintenance_income", period)) * members + ) - benunit("housing_benefit_maintenance_disregard", period) + # Widowed parent's allowance less £15 a week (HB Regs 2006 Sch 5 para + # 16(b); HB (SPC) Regs 2006 Sch 5 para 7), the claimant's and partner's + # only. + widowed_parents_allowance = benunit( + "housing_benefit_widowed_parents_allowance_income", period + ) + increased_income = ( + income + + personal_benefits + + credits + + benefits + + spousal_maintenance + + widowed_parents_allowance + ) + + if not bi.interactions.include_in_means_tests: + # Basic income is already in personal benefits, deduct if needed + increased_income -= add_for_members(benunit, period, ["basic_income"], members) + # Reduce increased income by pension contributions and tax + p = parameters(period).gov.dwp.housing_benefit.means_test + pension_contributions = ( + add_for_members(benunit, period, ["pension_contributions"], members) + * p.pension_contribution_deduction_rate + ) + TAX_COMPONENTS = ["income_tax", "national_insurance"] + tax = add_for_members(benunit, period, TAX_COMPONENTS, members) + increased_income_reduced_by_tax_and_pensions = ( + increased_income - tax - pension_contributions + ) + tariff_income = benunit("housing_benefit_tariff_income", period) + return increased_income_reduced_by_tax_and_pensions + tariff_income + + class housing_benefit_applicable_income(Variable): value_type = float entity = BenUnit @@ -18,6 +127,16 @@ class housing_benefit_applicable_income(Variable): "income under the Housing Benefit rules." ) reference = ( + "https://www.legislation.gov.uk/uksi/2006/213/regulation/25", + "https://www.legislation.gov.uk/uksi/2006/213/schedule/5/paragraph/65", + "https://www.legislation.gov.uk/uksi/2006/213/schedule/5/paragraph/31", + "https://www.legislation.gov.uk/uksi/2006/214/regulation/23", + "https://www.legislation.gov.uk/uksi/2006/214/regulation/29", + "https://www.legislation.gov.uk/nisr/2006/405/regulation/22", + "https://www.legislation.gov.uk/nisr/2006/405/schedule/6/paragraph/64", + "https://www.legislation.gov.uk/nisr/2006/405/schedule/6/paragraph/32", + "https://www.legislation.gov.uk/nisr/2006/406/regulation/21", + "https://www.legislation.gov.uk/nisr/2006/406/regulation/27", "https://www.legislation.gov.uk/uksi/2006/213/schedule/5/paragraph/4", "https://www.legislation.gov.uk/nisr/2006/405/schedule/6/paragraph/4", "https://www.legislation.gov.uk/uksi/2006/213/regulation/2", @@ -35,125 +154,19 @@ class housing_benefit_applicable_income(Variable): unit = GBP def formula(benunit, period, parameters): - # Members whose income counts: the claimant and partner (SSCBA 1992 - # s.136(1); HB Regs 2006 reg 25(1), HB (SPC) Regs 2006 reg 23(1)). "The - # income and capital of a child or young person shall not be treated as - # the income and capital of the claimant" (HB Regs 2006 reg 25(3)). - # Anyone else in the benefit unit does not count either. - person = benunit.members - members = person("is_claimant_or_partner", period) + income_before_deductions = hb_income_before_deductions( + benunit, period, parameters + ) pension_age_regulations = benunit( "housing_benefit_pension_age_regulations_apply", period ) - # Only the claimant's and partner's income-related awards: their income is - # the claimant's (SSCBA s.136(1); HB Regs 2006 reg 25(1)). A member outside - # the family who has an award of their own claims in their own right. - # Income Support already needs the claimant's or partner's own award - # (income_support_eligible). - BENUNIT_MEANS_TESTED_BENEFITS = [ - "child_benefit", - "income_support", - "claimant_or_partner_jsa_income", - "claimant_or_partner_esa_income", - ] - PERSONAL_BENEFITS = [ - "carers_allowance", - # The Carer Support Payment component only: the Scottish Carer - # Supplement is disregarded (HB Regs 2006 Sch 5 para 75; HB (SPC) - # Regs 2006 reg 29(1)(j)(xviiha)), so scottish_carer_supplement is - # not listed. - "carer_support_payment", - "esa_contrib", - "jsa_contrib", - "state_pension", - "maternity_allowance", - # Statutory sick, maternity and paternity pay are earnings: SI - # 2006/213 reg 35(1)(i); SI 2006/214 reg 35(1)(h) and (i); NI SR - # 2006/405 reg 32(1)(i); NI SR 2006/406 reg 33(1)(h) and (i). The - # income tax and National Insurance deducted below include the - # tax on them (employment_benefits, ni_class_1_income). - "statutory_sick_pay", - "statutory_maternity_pay", - "statutory_paternity_pay", - "ssmg", - # Counted by both regimes: HB (SPC) Regs 2006 reg 29(1)(j), whose - # exceptions touching these are the IIDB increases under SSCBA - # ss.104-105 (head (iii)) and non-partner dependant increases (head - # (viii)); heads (iv) and (v) cover the Sch 8 schemes for old - # industrial injury cases. And HB Regs 2006 reg 40 with Sch 5, - # whose para 9 attendance allowance disregard covers the - # ss.104-105 increases (reg 2(1)). iidb is the whole reported - # payment and cannot separate those increases. - "iidb", - "sda", - "incapacity_benefit", - ] - INCOME_COMPONENTS = [ - "employment_income", - "self_employment_income", - "property_income_after_finance_costs", - "private_pension_income", - ] - bi = parameters(period).gov.contrib.ubi_center.basic_income - # Add personal benefits, credits and total benefits to income - benefits = add_for_members( - benunit, period, BENUNIT_MEANS_TESTED_BENEFITS, members - ) - income = add_for_members(benunit, period, INCOME_COMPONENTS, members) - personal_benefits = add_for_members(benunit, period, PERSONAL_BENEFITS, members) - credits = add_for_members(benunit, period, ["tax_credits"], members) - # Maintenance paid to the claimant or partner by a spouse, civil - # partner or former partner is income other than earnings (HB Regs - # 2006 reg 40(1); HB (SPC) Regs 2006 reg 29(1)(o)), less £15 a week - # where the family includes a child or young person. Child - # maintenance is disregarded in full (HB Regs 2006 Sch 5 para 47A) or - # is not listed as income (reg 29(1)), so maintenance_income is not - # counted. - spousal_maintenance = benunit.sum( - max_(0, person("spousal_maintenance_income", period)) - * person("is_claimant_or_partner", period) - ) - benunit("housing_benefit_maintenance_disregard", period) - # Widowed parent's allowance less £15 a week (HB Regs 2006 Sch 5 - # para 16(b); HB (SPC) Regs 2006 Sch 5 para 7). - widowed_parents_allowance = benunit( - "housing_benefit_widowed_parents_allowance_income", period - ) - increased_income = ( - income - + personal_benefits - + credits - + benefits - + spousal_maintenance - + widowed_parents_allowance - ) - - if not bi.interactions.include_in_means_tests: - # Basic income is already in personal benefits, deduct if needed - increased_income -= add_for_members( - benunit, period, ["basic_income"], members - ) - # Reduce increased income by pension contributions and tax - p = parameters(period).gov.dwp.housing_benefit.means_test - pension_contributions = ( - add_for_members(benunit, period, ["pension_contributions"], members) - * p.pension_contribution_deduction_rate - ) - TAX_COMPONENTS = ["income_tax", "national_insurance"] - tax = add_for_members(benunit, period, TAX_COMPONENTS, members) - increased_income_reduced_by_tax_and_pensions = ( - increased_income - tax - pension_contributions - ) - tariff_income = benunit("housing_benefit_tariff_income", period) disregard = benunit("housing_benefit_applicable_income_disregard", period) childcare_element = benunit( "housing_benefit_applicable_income_childcare_element", period ) income_under_general_rules = max_( 0, - increased_income_reduced_by_tax_and_pensions - + tariff_income - - disregard - - childcare_element, + income_before_deductions - disregard - childcare_element, ) # SI 2006/214 reg 27 (NI: SR 2006/406 reg 25): where the award of # Pension Credit is savings credit only, the Secretary of State's