Source code for _gettsim.transfers.kinderzuschl.kinderzuschl
"""Kinderzuschlag / Additional Child Benefit.
"""
from _gettsim.shared import dates_active
[docs]def kinderzuschl_m_hh(
_kinderzuschl_nach_vermög_check_m_tu: float,
kinderzuschl_vorrang_hh: bool,
wohngeld_kinderzuschl_vorrang_hh: bool,
anz_rentner_hh: int,
) -> float:
"""Aggregate child benefit on household level.
Parameters
----------
_kinderzuschl_nach_vermög_check_m_tu
See :func:`_kinderzuschl_nach_vermög_check_m_tu`.
kinderzuschl_vorrang_hh
See :func:`kinderzuschl_vorrang_hh`.
wohngeld_kinderzuschl_vorrang_hh
See :func:`wohngeld_kinderzuschl_vorrang_hh`.
anz_rentner_hh
See :func:`anz_rentner_hh`.
Returns
-------
"""
if ((not kinderzuschl_vorrang_hh) and (not wohngeld_kinderzuschl_vorrang_hh)) or (
anz_rentner_hh > 0
):
out = 0.0
else:
out = _kinderzuschl_nach_vermög_check_m_tu
return out
@dates_active(
end="2019-06-30",
change_name="_kinderzuschl_vor_vermög_check_m_tu",
)
def _kinderzuschl_vor_vermög_check_m_tu_check_eink_max( # noqa: PLR0913
kinderzuschl_bruttoeink_eltern_m_tu: float,
kinderzuschl_eink_eltern_m_tu: float,
kinderzuschl_eink_min_m_tu: float,
kinderzuschl_eink_max_m_tu: float,
kinderzuschl_kindereink_abzug_m_tu: float,
kinderzuschl_eink_anrechn_m_tu: float,
) -> float:
"""Calculate Kinderzuschlag since 2005 until 06/2019. Whether Kinderzuschlag or
Arbeitslosengeld 2 applies will be checked later.
To be eligible for Kinderzuschlag, gross income of parents needs to exceed the
minimum income threshold and net income needs to be below the maximum income
threshold.
Parameters
----------
kinderzuschl_bruttoeink_eltern_m_tu
See :func:`kinderzuschl_bruttoeink_eltern_m_tu`.
kinderzuschl_eink_eltern_m_tu
See :func:`kinderzuschl_eink_eltern_m_tu`.
kinderzuschl_eink_min_m_tu
See :func:`kinderzuschl_eink_min_m_tu`.
kinderzuschl_eink_max_m_tu
See :func:`kinderzuschl_eink_max_m_tu`.
kinderzuschl_kindereink_abzug_m_tu
See :func:`kinderzuschl_kindereink_abzug_m_tu`.
kinderzuschl_eink_anrechn_m_tu
See :func:`kinderzuschl_eink_anrechn_m_tu`.
Returns
-------
"""
# Check if parental income is in income range for child benefit.
if (kinderzuschl_bruttoeink_eltern_m_tu >= kinderzuschl_eink_min_m_tu) and (
kinderzuschl_eink_eltern_m_tu <= kinderzuschl_eink_max_m_tu
):
out = max(
kinderzuschl_kindereink_abzug_m_tu - kinderzuschl_eink_anrechn_m_tu, 0.0
)
else:
out = 0.0
return out
@dates_active(start="2019-07-01")
def _kinderzuschl_vor_vermög_check_m_tu(
kinderzuschl_bruttoeink_eltern_m_tu: float,
kinderzuschl_eink_min_m_tu: float,
kinderzuschl_kindereink_abzug_m_tu: float,
kinderzuschl_eink_anrechn_m_tu: float,
) -> float:
"""Calculate Kinderzuschlag since 07/2019. Whether Kinderzuschlag or
Arbeitslosengeld 2 applies will be checked later.
To be eligible for Kinderzuschlag, gross income of parents needs to exceed the
minimum income threshold.
Parameters
----------
hh_id
See basic input variable :ref:`hh_id <hh_id>`.
kinderzuschl_bruttoeink_eltern_m_tu
See :func:`kinderzuschl_bruttoeink_eltern_m_tu`.
kinderzuschl_eink_min_m_tu
See :func:`kinderzuschl_eink_min_m_tu`.
kinderzuschl_kindereink_abzug_m_tu
See :func:`kinderzuschl_kindereink_abzug_m_tu`.
kinderzuschl_eink_anrechn_m_tu
See :func:`kinderzuschl_eink_anrechn_m_tu`.
Returns
-------
"""
if kinderzuschl_bruttoeink_eltern_m_tu >= kinderzuschl_eink_min_m_tu:
out = max(
kinderzuschl_kindereink_abzug_m_tu - kinderzuschl_eink_anrechn_m_tu, 0.0
)
else:
out = 0.0
return out