Source code for _gettsim.taxes.zu_verst_eink.zu_verst_eink
"""
Calculate taxable income (zve = zu versteuerndes Einkommen). The calculation
of the 7 branches of income is according to
https://de.wikipedia.org/wiki/Einkommensteuer_(Deutschland)#Rechenschema
The income types 1 to 3 according to the law are subsumed under the first income typ
(business income). The distinction is important as there are different deduction rules
for each income type. In fact, you need several taxable incomes because of
- child allowance vs. child benefit
- abgeltungssteuer vs. taxing capital income in the tariff ( not implemented yet, #81)
It's always the most favorable for the taxpayer, but you know that only after
applying the tax schedule.
"""
[docs]def freibeträge_ind(
_eink_st_behinderungsgrad_pauschbetrag: float,
eink_st_altersfreib: float,
alleinerz_freib_tu: float,
) -> float:
"""Sum up all tax-deductible allowances applicable at the individual level.
#ToDo: Check whether these columns are really calculated at the individual level.
Parameters
----------
_eink_st_behinderungsgrad_pauschbetrag
See :func:`_eink_st_behinderungsgrad_pauschbetrag`.
eink_st_altersfreib
See :func:`eink_st_altersfreib`.
alleinerz_freib_tu
See :func:`alleinerz_freib_tu`.
Returns
-------
"""
out = (
_eink_st_behinderungsgrad_pauschbetrag
+ eink_st_altersfreib
+ alleinerz_freib_tu
)
return out
[docs]def freibeträge_tu(
eink_st_sonderausgaben_tu: float,
vorsorgeaufw_tu: float,
freibeträge_ind_tu: float,
) -> float:
"""Calculate total allowances on tax unit level.
Parameters
----------
eink_st_sonderausgaben_tu
See :func:`eink_st_sonderausgaben_tu`.
vorsorgeaufw_tu
See :func:`vorsorgeaufw_tu`.
freibeträge_ind_tu
See :func:`freibeträge_ind_tu`.
Returns
-------
"""
out = eink_st_sonderausgaben_tu + vorsorgeaufw_tu + freibeträge_ind_tu
return out
def _zu_verst_eink_ohne_kinderfreib_tu(
sum_eink_tu: float,
freibeträge_tu: float,
) -> float:
"""Calculate taxable income without child allowance on tax unit level.
Parameters
----------
sum_eink_tu
See :func:`sum_eink_tu`.
freibeträge_tu
See :func:`freibeträge_tu`.
Returns
-------
"""
out = sum_eink_tu - freibeträge_tu
return max(out, 0.0)
[docs]def zu_verst_eink_mit_kinderfreib_tu(
_zu_verst_eink_ohne_kinderfreib_tu: float, eink_st_kinderfreib_tu: float
) -> float:
"""Calculate taxable income with child allowance on tax unit level.
Parameters
----------
_zu_verst_eink_ohne_kinderfreib_tu
See :func:`_zu_verst_eink_ohne_kinderfreib_tu`.
eink_st_kinderfreib_tu
See :func:`eink_st_kinderfreib_tu`.
Returns
-------
"""
out = _zu_verst_eink_ohne_kinderfreib_tu - eink_st_kinderfreib_tu
return max(out, 0.0)
[docs]def zu_verst_eink_tu(
zu_verst_eink_mit_kinderfreib_tu: float,
_zu_verst_eink_ohne_kinderfreib_tu: float,
kinderfreib_günstiger_tu: bool,
) -> float:
"""Calculate taxable income on tax unit level.
Parameters
----------
zu_verst_eink_mit_kinderfreib_tu
See :func:`zu_verst_eink_mit_kinderfreib_tu`.
_zu_verst_eink_ohne_kinderfreib_tu
See :func:`_zu_verst_eink_ohne_kinderfreib_tu`.
kinderfreib_günstiger_tu
See :func:`kinderfreib_günstiger_tu`.
Returns
-------
"""
if kinderfreib_günstiger_tu:
out = zu_verst_eink_mit_kinderfreib_tu
else:
out = _zu_verst_eink_ohne_kinderfreib_tu
return out