From d4d9ab9b25dda311028f6c6f4b9e2e8c27ca07da Mon Sep 17 00:00:00 2001 From: Yiwei Jia Date: Wed, 29 Nov 2023 15:56:10 -0500 Subject: [PATCH] British Columbia Pension Income Amount Fixes #470 --- changelog_entry.yaml | 4 ++++ .../credits/pension_income_amount/cap.yaml | 11 +++++++++++ .../bc_pension_income_amount.yaml | 15 +++++++++++++++ .../bc_pension_income_amount.py | 18 ++++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 policyengine_canada/parameters/gov/provinces/bc/tax/income/credits/pension_income_amount/cap.yaml create mode 100644 policyengine_canada/tests/gov/provinces/bc/tax/income/credits/bc_pension_income_amount/bc_pension_income_amount.yaml create mode 100644 policyengine_canada/variables/gov/provinces/bc/tax/income/credits/pension_income_amount/bc_pension_income_amount.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..5718e314a 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - British Columbia pension income amount. diff --git a/policyengine_canada/parameters/gov/provinces/bc/tax/income/credits/pension_income_amount/cap.yaml b/policyengine_canada/parameters/gov/provinces/bc/tax/income/credits/pension_income_amount/cap.yaml new file mode 100644 index 000000000..1908cd63e --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/tax/income/credits/pension_income_amount/cap.yaml @@ -0,0 +1,11 @@ +description: British Columbia provides this maximum pension benefit. +values: + 2022-01-01: 1_000 +metadata: + unit: currency-CAD + label: British Columbia pension benefit max amount + reference: + - title: 2023 British Columbia Personal Tax Credits Return, TD1BC + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1bc/td1bc-23e.pdf#page=1 + - title: British Columbia Income Tax Act ยง 4.32 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/96215_00_multi#section4.32 diff --git a/policyengine_canada/tests/gov/provinces/bc/tax/income/credits/bc_pension_income_amount/bc_pension_income_amount.yaml b/policyengine_canada/tests/gov/provinces/bc/tax/income/credits/bc_pension_income_amount/bc_pension_income_amount.yaml new file mode 100644 index 000000000..fc4c4d5ba --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/bc/tax/income/credits/bc_pension_income_amount/bc_pension_income_amount.yaml @@ -0,0 +1,15 @@ +- name: Max Pension Benefit + period: 2023 + input: + province_code: BC + pension_and_savings_plan_income: 1_001 + output: + bc_pension_income_amount: 1_000 + +- name: Pension Benefit Below Maximum Amount + period: 2023 + input: + province_code: BC + pension_and_savings_plan_income: 800 + output: + bc_pension_income_amount: 800 diff --git a/policyengine_canada/variables/gov/provinces/bc/tax/income/credits/pension_income_amount/bc_pension_income_amount.py b/policyengine_canada/variables/gov/provinces/bc/tax/income/credits/pension_income_amount/bc_pension_income_amount.py new file mode 100644 index 000000000..b48904d42 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/bc/tax/income/credits/pension_income_amount/bc_pension_income_amount.py @@ -0,0 +1,18 @@ +from policyengine_canada.model_api import * + + +class bc_pension_income_amount(Variable): + value_type = float + entity = Person + label = "British Columbia pension income amount" + unit = CAD + definition_period = YEAR + defined_for = ProvinceCode.BC + + def formula(person, period, parameters): + pension_income = person("pension_and_savings_plan_income", period) + max_amount = parameters( + period + ).gov.provinces.bc.tax.income.credits.pension_income_amount.cap + # Capped at a certain amount + return min_(max_amount, pension_income)