diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..0cef9db1c74 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Kansas disabled veteran exemptions. diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml index 0a7f26674e2..db856294ae8 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml @@ -8,8 +8,12 @@ metadata: label: Kansas personal exemption reference: - title: 2021 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip21.pdf + href: https://www.ksrevenue.gov/pdf/ip21.pdf#page=6 - title: 2022 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip22.pdf + href: https://www.ksrevenue.gov/pdf/ip22.pdf#page=6 - title: 2023 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=2 + href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=6 + - title: 2023 Form K-40 + href: https://www.ksrevenue.gov/pdf/k-4023.pdf#page=1 + - title: KS Stat § 79-32,121 (2023) + href: https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/ \ No newline at end of file diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/veterans_matched.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/veterans_matched.yaml new file mode 100644 index 00000000000..5c42089c6e6 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/veterans_matched.yaml @@ -0,0 +1,14 @@ +description: Kansas provides additional exemptions for disabled veterans if this is true. +metadata: + unit: bool + period: year + label: Kansas additional exemptions for disabled veterans in effect + reference: + - title: KS Stat § 79-32,121 (2023) (b) + href: https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/ + - title: 2023 Form K-40 + href: https://www.ksrevenue.gov/pdf/k-4023.pdf#page=1 + +values: + 2021-01-01: false + 2023-01-01: true \ No newline at end of file diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_exemptions.yaml similarity index 63% rename from policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml rename to policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_exemptions.yaml index e026e153944..8457e2e4ecd 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_exemptions.yaml @@ -13,3 +13,12 @@ state_code: KS output: ks_exemptions: 2_250 * 2 + +- name: Two exemptions in 2022 + period: 2023 + input: + ks_disabled_veteran + ks_count_exemptions: 2 + state_code: KS + output: + ks_exemptions: 2_250 * 2 \ No newline at end of file diff --git a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/disabled_veteran/ks_disabled_veteran_exemptions.py b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/disabled_veteran/ks_disabled_veteran_exemptions.py new file mode 100644 index 00000000000..d260fbeb49a --- /dev/null +++ b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/disabled_veteran/ks_disabled_veteran_exemptions.py @@ -0,0 +1,16 @@ +from policyengine_us.model_api import * + + +class ks_disabled_veteran_exemptions(Variable): + value_type = float + entity = TaxUnit + label = "Kansas disabled veteran exemptions" + unit = USD + definition_period = YEAR + reference = "https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/" + defined_for = StateCode.KS + + def formula(tax_unit, period, parameters): + p = parameters(period).gov.states.ks.tax.income.exemptions + return p.veterans_matched * adds(tax_unit, period, ["ks_disabled_veteran_exemptions_person"]) + \ No newline at end of file diff --git a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/disabled_veteran/ks_disabled_veteran_exemptions_person.py b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/disabled_veteran/ks_disabled_veteran_exemptions_person.py new file mode 100644 index 00000000000..4cb8a91e1f3 --- /dev/null +++ b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/disabled_veteran/ks_disabled_veteran_exemptions_person.py @@ -0,0 +1,16 @@ +from policyengine_us.model_api import * + + +class ks_disabled_veteran_exemptions_person(Variable): + value_type = float + entity = Person + label = "Kansas disabled veteran exemptions for each person" + unit = USD + definition_period = YEAR + defined_for = StateCode.KS + + def formula(person, period, parameters): + p = parameters(period).gov.states.ks.tax.income.exemptions + disabled = person("is_permanently_and_totally_disabled", period) + return p.amount * disabled + \ No newline at end of file diff --git a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py index 544e16f0dfb..cea363b493f 100644 --- a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py +++ b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py @@ -7,13 +7,11 @@ class ks_exemptions(Variable): label = "Kansas exemptions amount" unit = USD definition_period = YEAR - reference = ( - "https://www.ksrevenue.gov/pdf/ip21.pdf" - "https://www.ksrevenue.gov/pdf/ip22.pdf" - ) + reference = "https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/" defined_for = StateCode.KS def formula(tax_unit, period, parameters): exemptions_count = tax_unit("ks_count_exemptions", period) p = parameters(period).gov.states.ks.tax.income.exemptions - return exemptions_count * p.amount + disabled_veteran_exemption = tax_unit("ks_disabled_veteran_exemptions", period) + return exemptions_count * p.amount + disabled_veteran_exemption