austax: Implement Medicare levy reduction
This commit is contained in:
parent
2130bb70c7
commit
4f2085c35f
@ -20,7 +20,7 @@ from drcr.models import AccountConfiguration, Amount, Metadata, Transaction, Tri
|
|||||||
from drcr.reports import Calculated, Report, Section, Spacer, Subtotal, entries_for_kind
|
from drcr.reports import Calculated, Report, Section, Spacer, Subtotal, entries_for_kind
|
||||||
from drcr.webapp import eofy_date, sofy_date
|
from drcr.webapp import eofy_date, sofy_date
|
||||||
|
|
||||||
from .tax_tables import base_tax, repayment_rates, fbt_grossup
|
from .tax_tables import base_tax, medicare_levy_threshold, repayment_rates, fbt_grossup
|
||||||
|
|
||||||
def base_income_tax(year, taxable_income):
|
def base_income_tax(year, taxable_income):
|
||||||
"""Get the amount of base income tax"""
|
"""Get the amount of base income tax"""
|
||||||
@ -42,10 +42,17 @@ def lito(taxable_income):
|
|||||||
|
|
||||||
return Amount(0, '$')
|
return Amount(0, '$')
|
||||||
|
|
||||||
def medicare_levy(taxable_income):
|
def medicare_levy(year, taxable_income):
|
||||||
if taxable_income.quantity < 2920700:
|
lower_threshold, upper_threshold = medicare_levy_threshold[year]
|
||||||
raise NotImplementedError('Medicare levy reduction is not implemented')
|
|
||||||
|
|
||||||
|
if taxable_income.quantity < lower_threshold * 100:
|
||||||
|
return Amount(0, '$')
|
||||||
|
|
||||||
|
if taxable_income.quantity < upper_threshold * 100:
|
||||||
|
# Medicare levy is 10% of the amount above the lower threshold
|
||||||
|
return Amount((taxable_income - lower_threshold * 100) * 0.1, '$')
|
||||||
|
|
||||||
|
# Normal Medicare levy
|
||||||
return Amount(int(taxable_income.quantity * 0.02), '$')
|
return Amount(int(taxable_income.quantity * 0.02), '$')
|
||||||
|
|
||||||
def study_loan_repayment(year, taxable_income, rfb_grossedup):
|
def study_loan_repayment(year, taxable_income, rfb_grossedup):
|
||||||
@ -153,7 +160,7 @@ def tax_summary_report():
|
|||||||
),
|
),
|
||||||
Calculated(
|
Calculated(
|
||||||
'Medicare levy',
|
'Medicare levy',
|
||||||
lambda _: medicare_levy(report.by_id('taxable').amount)
|
lambda _: medicare_levy(eofy_date().year, report.by_id('taxable').amount)
|
||||||
),
|
),
|
||||||
Subtotal('Total income tax', id='total_tax', bordered=True)
|
Subtotal('Total income tax', id='total_tax', bordered=True)
|
||||||
]
|
]
|
||||||
|
@ -82,6 +82,14 @@ repayment_rates = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Medicare levy thresholds
|
||||||
|
# https://www.ato.gov.au/Individuals/Medicare-and-private-health-insurance/Medicare-levy/Medicare-levy-reduction/Medicare-levy-reduction-for-low-income-earners/
|
||||||
|
# Maps each financial year to list of (lower threshold, upper threshold)
|
||||||
|
medicare_levy_threshold = {
|
||||||
|
2023: (24276, 30345),
|
||||||
|
2022: (23365, 29207)
|
||||||
|
}
|
||||||
|
|
||||||
# FBT type 1 gross-up factor
|
# FBT type 1 gross-up factor
|
||||||
# https://www.ato.gov.au/rates/fbt/#GrossupratesforFBT
|
# https://www.ato.gov.au/rates/fbt/#GrossupratesforFBT
|
||||||
fbt_grossup = {
|
fbt_grossup = {
|
||||||
|
Loading…
Reference in New Issue
Block a user