Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kansas Additional Exemption for Disabled Veterans 2023 #5052

Merged
merged 16 commits into from
Oct 15, 2024
4 changes: 4 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- bump: minor
changes:
added:
- Kansas disabled veteran exemptions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
description: Kansas provides the following exemption amount for each person in a filing unit.
values:
2021-01-01: 2_250

metadata:
period: year
unit: currency-USD
label: Kansas personal exemption
reference:
- title: 2021 Form K-40 instructions
href: https://www.ksrevenue.gov/pdf/ip21.pdf#page=6
- title: 2022 Form K-40 instructions
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=6
- title: 2023 Form K-40
href: https://www.ksrevenue.gov/pdf/k-4023.pdf#page=1
- title: KS Stat § 79-32,121 (2023) (a)
href: https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description: Kansas provides the following exemption amount for disabled veterans.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description: Kansas provides the following exemption amount for disabled veterans.
description: Kansas provides the following exemption amount for each disabled veteran.

values:
2023-01-01: 2_250

metadata:
period: year
unit: currency-USD
label: Kansas disabled veteran exemption amount
reference:
- title: 2023 Form K-40 instructions
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=2
- title: KS Stat § 79-32,121 (2023) (b)
href: https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
- name: Case 1, the filer is a disabled veteran, get exemptions.
period: 2023
input:
is_permanently_and_totally_disabled: true
is_veteran: true
state_code: KS
output:
ks_disabled_veteran_exemptions_eligible_person: true

- name: Case 2, the filer is a veteran, but not disabled, no exemption.
period: 2023
input:
is_permanently_and_totally_disabled: false
is_veteran: true
state_code: KS
output:
ks_disabled_veteran_exemptions_eligible_person: false

- name: Case 3, the filer is a disabled, but not veteran, no exemption.
period: 2023
input:
is_permanently_and_totally_disabled: false
is_veteran: true
state_code: KS
output:
ks_disabled_veteran_exemptions_eligible_person: false

- name: Case 4, in 2022, the filer is a disabled veteran.
period: 2022
input:
is_permanently_and_totally_disabled: true
is_veteran: true
state_code: KS
output:
ks_disabled_veteran_exemptions_eligible_person: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
- name: Four exemptions in 2021
period: 2021
input:
ks_count_exemptions: 4
state_code: KS
output:
ks_exemptions: 2_250 * 4

- name: Two exemptions in 2022
period: 2022
input:
ks_count_exemptions: 2
state_code: KS
output:
ks_exemptions: 2_250 * 2

- name: Case 3,two exemptions in 2023, and one disabled veteran exemption.
period: 2023
input:
people:
person1:
ks_disabled_veteran_exemptions_eligible_person: true
person2:
ks_disabled_veteran_exemptions_eligible_person: false
tax_units:
tax_unit:
members: [person1, person2]
ks_count_exemptions: 2
households:
household:
members: [person1, person2]
state_code: KS
output:
ks_exemptions: 6_750

- name: Case 4,two exemptions in 2023, and two disabled veteran exemption.
period: 2023
input:
people:
person1:
ks_disabled_veteran_exemptions_eligible_person: true
person2:
ks_disabled_veteran_exemptions_eligible_person: true
tax_units:
tax_unit:
members: [person1, person2]
ks_count_exemptions: 2
households:
household:
members: [person1, person2]
state_code: KS
output:
ks_exemptions: 9_000

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
- name: Case 1, veterans_benefits > 0, is a veteran.
period: 2020
input:
veterans_benefits: 100
output:
is_veteran: true

- name: Case 2, veterans_benefits = 0, is not a veteran.
period: 2020
input:
veterans_benefits: 0
output:
is_veteran: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from policyengine_us.model_api import *


class ks_disabled_veteran_exemptions_eligible_person(Variable):
value_type = bool
entity = Person
label = "Eligible person for the Kansas disabled veteran exemption"
unit = USD
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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(person, period, parameters):
p = parameters(
period
).gov.states.ks.tax.income.exemptions.disabled_veteran
disabled = person("is_permanently_and_totally_disabled", period)
is_veteran = person("is_veteran", period)

return p.in_effect * disabled * is_veteran
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,20 @@ 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
hua7450 marked this conversation as resolved.
Show resolved Hide resolved
return exemptions_count * p.amount
exemptions_count = tax_unit("ks_count_exemptions", period)
base_exemptions = exemptions_count * p.base
veteran_exemptions_count = add(
tax_unit,
period,
["ks_disabled_veteran_exemptions_eligible_person"],
)
additional_exemptions = (
veteran_exemptions_count * p.disabled_veteran.base
)

return base_exemptions + additional_exemptions
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MaxGhenis
we have been using veterans_benefits > 0 for the determination of whether the person is a veteran or not, I think adding a bool variable would be appropriate given how we handle other situations like parent etc.
thoughts?

@hua7450 if confirmed
could we add a formula to check if veterans_benefits > 0 and file an issue to consolidate in the rest of the repo

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from policyengine_us.model_api import *


class is_veteran(Variable):
value_type = bool
hua7450 marked this conversation as resolved.
Show resolved Hide resolved
entity = Person
label = "Is veteran"
hua7450 marked this conversation as resolved.
Show resolved Hide resolved
documentation = "A person who served in the active military, naval, air, or space service, and who was discharged or released therefrom under conditions other than dishonorable."
reference = "https://www.law.cornell.edu/uscode/text/38/101" # (2)
definition_period = YEAR

def formula(person, period, parameters):
return person("veterans_benefits", period) > 0