From 10e6588b4bf05f3ae570d5a0d3000fc9340fc46f Mon Sep 17 00:00:00 2001 From: Kun Yao <90804230+Kenyaokun@users.noreply.github.com> Date: Thu, 8 Jun 2023 22:12:33 +0000 Subject: [PATCH 1/6] Alberta Caregiver Amount First try #331 Co-authored-by: YiweiJ --- .../credits_return/lower_age_eligibility.yaml | 9 +++++++ .../lower_dependent_income_threshold.yaml | 9 +++++++ .../maximum_caregiver_amount.yaml | 9 +++++++ .../upper_dependent_income_Threshold.yaml | 9 +++++++ .../credits_return/ab_caregiver_amount.yaml | 18 ++++++++++++++ .../tax/credits_return/ab_caregiver_amount.py | 24 +++++++++++++++++++ .../person/is_parent_or_grandparent.py | 11 +++++++++ 7 files changed, 89 insertions(+) create mode 100644 policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependent_income_threshold.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependent_income_Threshold.yaml create mode 100644 policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml create mode 100644 policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py create mode 100644 policyengine_canada/variables/household/person/is_parent_or_grandparent.py diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml new file mode 100644 index 000000000..16f66bc0a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml @@ -0,0 +1,9 @@ +description: Alberta limits its Child and Family Benefit to people above this age. +values: + 2023-01-01: 18 +metadata: + unit: year + label: Alberta child and Family Benefit child age eligibility + reference: + - title: Province of Alberta - Alberta Child and Family Benefit + href: https://www.alberta.ca/alberta-child-and-family-benefit.aspx \ No newline at end of file diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependent_income_threshold.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependent_income_threshold.yaml new file mode 100644 index 000000000..6f5da50f1 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependent_income_threshold.yaml @@ -0,0 +1,9 @@ +description: Alberta Lower Income threshold for dependents. +values: + 2023-01-01: 19_331 +metadata: + unit: currency-CAD + label: Alberta Dependent Lower Income Threshold + reference: + - title: Government of Canada - Alberta Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml new file mode 100644 index 000000000..200767bcf --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml @@ -0,0 +1,9 @@ +description: Alberta Maximum Caregiver Amount +values: + 2023-01-01: 12_158 +metadata: + unit: currency-CAD + label: Alberta Maximum Caregiver Amount + reference: + - title: Government of Canada - Alberta Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependent_income_Threshold.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependent_income_Threshold.yaml new file mode 100644 index 000000000..e358d5197 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependent_income_Threshold.yaml @@ -0,0 +1,9 @@ +description: Alberta Upper Income Threshold +values: + 2023-01-01: 31_489 +metadata: + unit: currency-CAD + label: Alberta Upper Income + reference: + - title: Government of Canada - Alberta Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file diff --git a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml new file mode 100644 index 000000000..25614ad94 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml @@ -0,0 +1,18 @@ +- name: Over 18 + period: 2023 + input: + age: 19 + is_disabled: true + is_parent_or_grandparent: false + individual_net_income: 20_000 + province_code: AB + output: + ab_caregiver_amount: 11_489 + +# - name: Under age eligibility +# period: 2023 +# input: +# age: 17 +# province_code: AB +# output: +# acfb_eligible_child: true diff --git a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py new file mode 100644 index 000000000..26611b1de --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py @@ -0,0 +1,24 @@ +from policyengine_canada.model_api import * + + +class ab_caregiver_amount(Variable): + value_type = float + entity = Person + label = "Alberta caregiver amount" + unit = CAD + definition_period = YEAR + reference = "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf" + defined_for = ProvinceCode.AB + + def formula(person, period, parameters): + + p = parameters(period).gov.provinces.ab.tax.income.credits.credits_return + + # Whether the person is dependant (65 or older/ disabled) + is_dependant = person("is_parent_or_grandparent", period) | (person("age", period) >= 18 & person("is_disabled", period)) + dependant_net_income = person("individual_net_income", period) * is_dependant + + income_eligibility = (dependant_net_income >= p.lower_dependent_income_threshold & dependant_net_income <= p.upper_dependent_income_threshold) + caregiver_amount = income_eligibility * (p.upper_dependent_income_threshold - dependant_net_income) + + return min_(caregiver_amount, p.maximum_caregiver_amount) \ No newline at end of file diff --git a/policyengine_canada/variables/household/person/is_parent_or_grandparent.py b/policyengine_canada/variables/household/person/is_parent_or_grandparent.py new file mode 100644 index 000000000..aa429233a --- /dev/null +++ b/policyengine_canada/variables/household/person/is_parent_or_grandparent.py @@ -0,0 +1,11 @@ +from policyengine_canada.model_api import * + + +class is_parent_or_grandparent(Variable): + value_type = bool + entity = Person + label = "Is parent or grandparent" + definition_period = YEAR + + def formula(person, period, parameters): + return person("age", period) >= 65 \ No newline at end of file From d8b687957fdb44a60c814c40f56a2204aad85086 Mon Sep 17 00:00:00 2001 From: Kun Yao <90804230+Kenyaokun@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:57:57 +0000 Subject: [PATCH 2/6] Alberta Caregiver Amount Debug #331 --- .../credits_return/lower_age_eligibility.yaml | 2 +- ... => lower_dependant_income_threshold.yaml} | 2 +- ... => upper_dependant_income_threshold.yaml} | 4 +- .../credits_return/ab_caregiver_amount.yaml | 48 +++++++++++++++---- .../tax/credits_return/ab_caregiver_amount.py | 6 +-- 5 files changed, 46 insertions(+), 16 deletions(-) rename policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/{lower_dependent_income_threshold.yaml => lower_dependant_income_threshold.yaml} (81%) rename policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/{upper_dependent_income_Threshold.yaml => upper_dependant_income_threshold.yaml} (66%) diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml index 16f66bc0a..f43dc60ae 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml @@ -6,4 +6,4 @@ metadata: label: Alberta child and Family Benefit child age eligibility reference: - title: Province of Alberta - Alberta Child and Family Benefit - href: https://www.alberta.ca/alberta-child-and-family-benefit.aspx \ No newline at end of file + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependent_income_threshold.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml similarity index 81% rename from policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependent_income_threshold.yaml rename to policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml index 6f5da50f1..4316b7a20 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependent_income_threshold.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml @@ -1,4 +1,4 @@ -description: Alberta Lower Income threshold for dependents. +description: Alberta Lower Income threshold for dependants. values: 2023-01-01: 19_331 metadata: diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependent_income_Threshold.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependant_income_threshold.yaml similarity index 66% rename from policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependent_income_Threshold.yaml rename to policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependant_income_threshold.yaml index e358d5197..f2ee20204 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependent_income_Threshold.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependant_income_threshold.yaml @@ -1,9 +1,9 @@ -description: Alberta Upper Income Threshold +description: Alberta Upper Income Threshold for dependants. values: 2023-01-01: 31_489 metadata: unit: currency-CAD - label: Alberta Upper Income + label: Alberta Dependant Upper Income Threshold reference: - title: Government of Canada - Alberta Caregiver Amount href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file diff --git a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml index 25614ad94..25e982c16 100644 --- a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml +++ b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml @@ -1,18 +1,48 @@ -- name: Over 18 +- name: Dependant Over 18 with net income between 19,331 and 31,489 period: 2023 input: age: 19 is_disabled: true - is_parent_or_grandparent: false individual_net_income: 20_000 province_code: AB output: ab_caregiver_amount: 11_489 -# - name: Under age eligibility -# period: 2023 -# input: -# age: 17 -# province_code: AB -# output: -# acfb_eligible_child: true +- name: Dependant Over 18 with net income below 19,331 + period: 2023 + input: + age: 19 + is_disabled: true + individual_net_income: 10_000 + province_code: AB + output: + ab_caregiver_amount: 12_158 + +- name: Dependant Over 65 with net income below 19,331 + period: 2023 + input: + is_parent_or_grandparent: true + individual_net_income: 10_000 + province_code: AB + output: + ab_caregiver_amount: 12_158 + +- name: Dependant Over 65 with net income between 19,331 and 31,489 + period: 2023 + input: + age: 67 + is_parent_or_grandparent: true + individual_net_income: 20_000 + province_code: AB + output: + ab_caregiver_amount: 11_489 + +- name: Dependant Over 65 with net income over 31,489 + period: 2023 + input: + age: 25 + is_disabled: true + individual_net_income: 40_000 + province_code: AB + output: + ab_caregiver_amount: 0 diff --git a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py index 26611b1de..03df4b130 100644 --- a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py +++ b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py @@ -15,10 +15,10 @@ def formula(person, period, parameters): p = parameters(period).gov.provinces.ab.tax.income.credits.credits_return # Whether the person is dependant (65 or older/ disabled) - is_dependant = person("is_parent_or_grandparent", period) | (person("age", period) >= 18 & person("is_disabled", period)) + is_dependant = (person("is_parent_or_grandparent", period) | (person("age", period) >= p.lower_age_eligibility & person("is_disabled", period))) dependant_net_income = person("individual_net_income", period) * is_dependant - income_eligibility = (dependant_net_income >= p.lower_dependent_income_threshold & dependant_net_income <= p.upper_dependent_income_threshold) - caregiver_amount = income_eligibility * (p.upper_dependent_income_threshold - dependant_net_income) + income_eligibility = dependant_net_income <= p.upper_dependant_income_threshold + caregiver_amount = (p.upper_dependant_income_threshold - dependant_net_income) * income_eligibility return min_(caregiver_amount, p.maximum_caregiver_amount) \ No newline at end of file From fdd9a605e797bc03b9bd28d9ed8f1075e2379c3e Mon Sep 17 00:00:00 2001 From: Kun Yao <90804230+Kenyaokun@users.noreply.github.com> Date: Wed, 14 Jun 2023 23:21:09 +0000 Subject: [PATCH 3/6] Alberta Caregiver Amount Final Draft #331 Co-authored-by: YiweiJ Co-authored-by: 7qiwx <7qiwx@users.noreply.github.com> --- changelog_entry.yaml | 4 +++ .../credits_return/lower_age_eligibility.yaml | 2 +- .../lower_dependant_income_threshold.yaml | 2 +- .../maximum_caregiver_amount.yaml | 2 +- .../upper_dependant_income_threshold.yaml | 2 +- .../sa/qc_sa_married_both_eligible.yaml | 2 +- .../sa/qc_sa_married_one_eligible.yaml | 2 +- .../tax/credits_return/ab_caregiver_amount.py | 25 ++++++++++++++----- .../person/is_parent_or_grandparent.py | 2 +- 9 files changed, 30 insertions(+), 13 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..4afb06ce5 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Alberta Caregiver Amount. diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml index f43dc60ae..696c5f3dd 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml @@ -6,4 +6,4 @@ metadata: label: Alberta child and Family Benefit child age eligibility reference: - title: Province of Alberta - Alberta Child and Family Benefit - href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml index 4316b7a20..64538a3ec 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml @@ -6,4 +6,4 @@ metadata: label: Alberta Dependent Lower Income Threshold reference: - title: Government of Canada - Alberta Caregiver Amount - href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml index 200767bcf..c1443f116 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/maximum_caregiver_amount.yaml @@ -6,4 +6,4 @@ metadata: label: Alberta Maximum Caregiver Amount reference: - title: Government of Canada - Alberta Caregiver Amount - href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependant_income_threshold.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependant_income_threshold.yaml index f2ee20204..685fa8407 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependant_income_threshold.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/upper_dependant_income_threshold.yaml @@ -6,4 +6,4 @@ metadata: label: Alberta Dependant Upper Income Threshold reference: - title: Government of Canada - Alberta Caregiver Amount - href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf \ No newline at end of file + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf diff --git a/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_both_eligible.yaml b/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_both_eligible.yaml index fcfcb7cb6..8f78cb520 100644 --- a/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_both_eligible.yaml +++ b/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_both_eligible.yaml @@ -29,4 +29,4 @@ members: [c1, c2] province_code: QC output: - qc_sa_married_both_eligible: 1 \ No newline at end of file + qc_sa_married_both_eligible: 1 diff --git a/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_one_eligible.yaml b/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_one_eligible.yaml index 6ce860c0e..fd8414b26 100644 --- a/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_one_eligible.yaml +++ b/policyengine_canada/tests/gov/provinces/qc/tax/income/credits/sa/qc_sa_married_one_eligible.yaml @@ -28,4 +28,4 @@ members: [c1, c2] province_code: QC output: - qc_sa_married_one_eligible: 1 \ No newline at end of file + qc_sa_married_one_eligible: 1 diff --git a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py index 03df4b130..02956051a 100644 --- a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py +++ b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py @@ -12,13 +12,26 @@ class ab_caregiver_amount(Variable): def formula(person, period, parameters): - p = parameters(period).gov.provinces.ab.tax.income.credits.credits_return + p = parameters( + period + ).gov.provinces.ab.tax.income.credits.credits_return # Whether the person is dependant (65 or older/ disabled) - is_dependant = (person("is_parent_or_grandparent", period) | (person("age", period) >= p.lower_age_eligibility & person("is_disabled", period))) - dependant_net_income = person("individual_net_income", period) * is_dependant + is_dependant = person("is_parent_or_grandparent", period) | ( + person("age", period) + >= p.lower_age_eligibility & person("is_disabled", period) + ) + dependant_net_income = ( + person("individual_net_income", period) * is_dependant + ) - income_eligibility = dependant_net_income <= p.upper_dependant_income_threshold - caregiver_amount = (p.upper_dependant_income_threshold - dependant_net_income) * income_eligibility + income_eligibility = ( + dependant_net_income <= p.upper_dependant_income_threshold + ) - return min_(caregiver_amount, p.maximum_caregiver_amount) \ No newline at end of file + # https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab-ws/td1ab-ws-23e.pdf Deduct line 6 + caregiver_amount = ( + p.upper_dependant_income_threshold - dependant_net_income + ) * income_eligibility + + return min_(caregiver_amount, p.maximum_caregiver_amount) diff --git a/policyengine_canada/variables/household/person/is_parent_or_grandparent.py b/policyengine_canada/variables/household/person/is_parent_or_grandparent.py index aa429233a..f365f37cd 100644 --- a/policyengine_canada/variables/household/person/is_parent_or_grandparent.py +++ b/policyengine_canada/variables/household/person/is_parent_or_grandparent.py @@ -8,4 +8,4 @@ class is_parent_or_grandparent(Variable): definition_period = YEAR def formula(person, period, parameters): - return person("age", period) >= 65 \ No newline at end of file + return person("age", period) >= 65 From 74dbb83ea7e800003c1c26f6587767607e5c7717 Mon Sep 17 00:00:00 2001 From: Kun Yao <90804230+Kenyaokun@users.noreply.github.com> Date: Tue, 4 Jul 2023 18:03:01 +0000 Subject: [PATCH 4/6] Alberta Caregiver Amount Done #331 --- .../ab/tax/income/credits/pension/ab_pension_credit.yaml | 2 +- .../gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml index e3c23fabd..a9faa8c92 100644 --- a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml +++ b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml @@ -20,4 +20,4 @@ pension_and_savings_plan_income: 0 province_code: AB output: - ab_pension_credit: 0 \ No newline at end of file + ab_pension_credit: 0 diff --git a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py index 02956051a..3d56f9df6 100644 --- a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py +++ b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py @@ -29,7 +29,6 @@ def formula(person, period, parameters): dependant_net_income <= p.upper_dependant_income_threshold ) - # https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab-ws/td1ab-ws-23e.pdf Deduct line 6 caregiver_amount = ( p.upper_dependant_income_threshold - dependant_net_income ) * income_eligibility From 3f6d0d882daf81e99ddabdaa71ddf5ffff01f4c5 Mon Sep 17 00:00:00 2001 From: Kun Yao <90804230+Kenyaokun@users.noreply.github.com> Date: Tue, 4 Jul 2023 18:12:07 +0000 Subject: [PATCH 5/6] Alberta Caregiver Amount Update #331 --- .../gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py | 1 - 1 file changed, 1 deletion(-) diff --git a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py index 3d56f9df6..0a01e36eb 100644 --- a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py +++ b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py @@ -11,7 +11,6 @@ class ab_caregiver_amount(Variable): defined_for = ProvinceCode.AB def formula(person, period, parameters): - p = parameters( period ).gov.provinces.ab.tax.income.credits.credits_return From 9e990a764fe2bf5b83989de820dd844eb4ef5421 Mon Sep 17 00:00:00 2001 From: Kun Yao <90804230+Kenyaokun@users.noreply.github.com> Date: Tue, 25 Jul 2023 23:48:31 +0000 Subject: [PATCH 6/6] Alberta Caregiver Amount Fixes #331 --- .../credits/credits_return/age_eligibility.yaml | 11 +++++++++++ .../credits/credits_return/lower_age_eligibility.yaml | 2 ++ .../lower_dependant_income_threshold.yaml | 4 ++-- .../credits/credits_return/ab_caregiver_amount.yaml | 8 ++++++-- .../ab/tax/credits_return/ab_caregiver_amount.py | 8 +++++--- .../provinces/ab/tax/credits_return/live_together.py | 11 +++++++++++ .../household/person/is_parent_or_grandparent.py | 11 ----------- 7 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/age_eligibility.yaml create mode 100644 policyengine_canada/variables/gov/provinces/ab/tax/credits_return/live_together.py delete mode 100644 policyengine_canada/variables/household/person/is_parent_or_grandparent.py diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/age_eligibility.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/age_eligibility.yaml new file mode 100644 index 000000000..c55128b97 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/age_eligibility.yaml @@ -0,0 +1,11 @@ +description: Alberta limits its Child and Family Benefit to people above this age. +values: + 2023-01-01: 18 +metadata: + unit: year + label: Alberta child and Family Benefit adult dependant age eligibility + reference: + - title: Province of Alberta - Alberta Child and Family Benefit + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf + - title: Province of Alberta - Alberta Personal Income Tax Act, RSA 2000 + href: https://www.canlii.org/en/ab/laws/stat/rsa-2000-c-a-30/latest/rsa-2000-c-a-30.html diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml index 696c5f3dd..c1a6f4521 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_age_eligibility.yaml @@ -7,3 +7,5 @@ metadata: reference: - title: Province of Alberta - Alberta Child and Family Benefit href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf + - title: Province of Alberta - Alberta Personal Income Tax Act, RSA 2000 + href: https://www.canlii.org/en/ab/laws/stat/rsa-2000-c-a-30/latest/rsa-2000-c-a-30.html diff --git a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml index 64538a3ec..0ab34fc13 100644 --- a/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml +++ b/policyengine_canada/parameters/gov/provinces/ab/tax/income/credits/credits_return/lower_dependant_income_threshold.yaml @@ -1,9 +1,9 @@ -description: Alberta Lower Income threshold for dependants. +description: Alberta provides the caregiver amount for dependants with income below this threshold. values: 2023-01-01: 19_331 metadata: unit: currency-CAD - label: Alberta Dependent Lower Income Threshold + label: Alberta caregiver amount dependent lower income threshold reference: - title: Government of Canada - Alberta Caregiver Amount href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf diff --git a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml index 25e982c16..676d19d9f 100644 --- a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml +++ b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/credits_return/ab_caregiver_amount.yaml @@ -3,6 +3,7 @@ input: age: 19 is_disabled: true + live_together: true individual_net_income: 20_000 province_code: AB output: @@ -13,6 +14,7 @@ input: age: 19 is_disabled: true + live_together: true individual_net_income: 10_000 province_code: AB output: @@ -21,7 +23,8 @@ - name: Dependant Over 65 with net income below 19,331 period: 2023 input: - is_parent_or_grandparent: true + age: 66 + live_together: true individual_net_income: 10_000 province_code: AB output: @@ -31,7 +34,7 @@ period: 2023 input: age: 67 - is_parent_or_grandparent: true + live_together: true individual_net_income: 20_000 province_code: AB output: @@ -42,6 +45,7 @@ input: age: 25 is_disabled: true + live_together: false individual_net_income: 40_000 province_code: AB output: diff --git a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py index 0a01e36eb..a82c4b364 100644 --- a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py +++ b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/ab_caregiver_amount.py @@ -16,7 +16,7 @@ def formula(person, period, parameters): ).gov.provinces.ab.tax.income.credits.credits_return # Whether the person is dependant (65 or older/ disabled) - is_dependant = person("is_parent_or_grandparent", period) | ( + is_dependant = (person("age", period) >= 65) | ( person("age", period) >= p.lower_age_eligibility & person("is_disabled", period) ) @@ -29,7 +29,9 @@ def formula(person, period, parameters): ) caregiver_amount = ( - p.upper_dependant_income_threshold - dependant_net_income - ) * income_eligibility + (p.upper_dependant_income_threshold - dependant_net_income) + * income_eligibility + * person("live_together", period) + ) return min_(caregiver_amount, p.maximum_caregiver_amount) diff --git a/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/live_together.py b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/live_together.py new file mode 100644 index 000000000..be2362f8f --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/ab/tax/credits_return/live_together.py @@ -0,0 +1,11 @@ +from policyengine_canada.model_api import * + + +class live_together(Variable): + value_type = bool + entity = Person + label = "Albert Caregiver Dependant" + documentation = "Whthere your spouse's or common-law partner's dependant lives with you or not." + definition_period = YEAR + reference = "chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ab/td1ab-23e.pdf" + defined_for = ProvinceCode.AB diff --git a/policyengine_canada/variables/household/person/is_parent_or_grandparent.py b/policyengine_canada/variables/household/person/is_parent_or_grandparent.py deleted file mode 100644 index f365f37cd..000000000 --- a/policyengine_canada/variables/household/person/is_parent_or_grandparent.py +++ /dev/null @@ -1,11 +0,0 @@ -from policyengine_canada.model_api import * - - -class is_parent_or_grandparent(Variable): - value_type = bool - entity = Person - label = "Is parent or grandparent" - definition_period = YEAR - - def formula(person, period, parameters): - return person("age", period) >= 65