Source code for _gettsim.transfers.benefit_checks.vermoegens_checks

from _gettsim.shared import dates_active


def _kinderzuschl_nach_vermög_check_m_tu(
    _kinderzuschl_vor_vermög_check_m_tu: float,
    vermögen_bedürft_hh: float,
    arbeitsl_geld_2_vermög_freib_hh: float,
) -> float:
    """Set preliminary child benefit to zero if it exceeds the wealth exemption.

    Parameters
    ----------
    _kinderzuschl_vor_vermög_check_m_tu
        See :func:`_kinderzuschl_vor_vermög_check_m_tu`.
    vermögen_bedürft_hh
        See basic input variable :ref:`vermögen_bedürft_hh <vermögen_bedürft_hh>`.
    arbeitsl_geld_2_vermög_freib_hh
        See :func:`arbeitsl_geld_2_vermög_freib_hh`.

    Returns
    -------

    """

    if vermögen_bedürft_hh > arbeitsl_geld_2_vermög_freib_hh:
        out = max(
            _kinderzuschl_vor_vermög_check_m_tu
            - (vermögen_bedürft_hh - arbeitsl_geld_2_vermög_freib_hh),
            0.0,
        )
    else:
        out = _kinderzuschl_vor_vermög_check_m_tu
    return out


[docs]def wohngeld_nach_vermög_check_m_hh( wohngeld_vor_vermög_check_m_hh: float, vermögen_bedürft_hh: float, haushaltsgröße_hh: int, wohngeld_params: dict, ) -> float: """Set preliminary housing benefit to zero if it exceeds the wealth exemption. The payment depends on the wealth of the household and the number of household members. Parameters ---------- wohngeld_vor_vermög_check_m_hh See :func:`wohngeld_vor_vermög_check_m_hh`. vermögen_bedürft_hh See basic input variable :ref:`vermögen_bedürft_hh <vermögen_bedürft_hh>`. haushaltsgröße_hh See :func:`haushaltsgröße_hh`. wohngeld_params See params documentation :ref:`wohngeld_params <wohngeld_params>`. Returns ------- """ if vermögen_bedürft_hh <= ( wohngeld_params["vermögensgrundfreibetrag"] + (wohngeld_params["vermögensfreibetrag_pers"] * (haushaltsgröße_hh - 1)) ): out = wohngeld_vor_vermög_check_m_hh else: out = 0.0 return out
def _arbeitsl_geld_2_grundfreib_vermög( kind: bool, alter: int, geburtsjahr: int, _arbeitsl_geld_2_max_grundfreib_vermög: float, arbeitsl_geld_2_params: dict, ) -> float: """Calculate wealth exemptions based on individuals age. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- kind See basic input variable :ref:`kind <kind>`. alter See basic input variable :ref:`alter <alter>`. geburtsjahr See basic input variable :ref:`geburtsjahr <geburtsjahr>`. _arbeitsl_geld_2_max_grundfreib_vermög See :func:`_arbeitsl_geld_2_max_grundfreib_vermög`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- """ threshold_years = list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].keys()) if geburtsjahr <= threshold_years[0]: out = ( list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())[0] * alter ) elif (geburtsjahr >= threshold_years[1]) and (not kind): out = ( list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())[1] * alter ) else: out = 0.0 return float(min(out, _arbeitsl_geld_2_max_grundfreib_vermög)) def _arbeitsl_geld_2_max_grundfreib_vermög( geburtsjahr: int, kind: bool, arbeitsl_geld_2_params: dict, ) -> float: """Calculate maximal wealth exemptions by year of birth. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- hh_id See basic input variable :ref:`hh_id <hh_id>`. geburtsjahr See basic input variable :ref:`geburtsjahr <geburtsjahr>`. kind See basic input variable :ref:`kind <kind>`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- """ threshold_years = list( arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].keys() ) obergrenzen = list( arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].values() ) if kind: out = 0.0 else: if geburtsjahr < threshold_years[1]: out = obergrenzen[0] elif geburtsjahr < threshold_years[2]: out = obergrenzen[1] elif geburtsjahr < threshold_years[3]: out = obergrenzen[2] else: out = obergrenzen[3] return float(out)
[docs]@dates_active(end="2022-12-31", change_name="arbeitsl_geld_2_vermög_freib_hh") def arbeitsl_geld_2_vermög_freib_hh_bis_2022( _arbeitsl_geld_2_grundfreib_vermög_hh: float, anz_kinder_bis_17_hh: int, haushaltsgröße_hh: int, arbeitsl_geld_2_params: dict, ) -> float: """Calculate actual exemptions until 2022. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- _arbeitsl_geld_2_grundfreib_vermög_hh See :func:`_arbeitsl_geld_2_grundfreib_vermög_hh`. anz_kinder_bis_17_hh See basic input variable :ref:`anz_kinder_bis_17_hh <anz_kinder_bis_17_hh>`. haushaltsgröße_hh See :func:`haushaltsgröße_hh`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- """ out = ( _arbeitsl_geld_2_grundfreib_vermög_hh + anz_kinder_bis_17_hh * arbeitsl_geld_2_params["vermögensfreibetrag_kind"] + haushaltsgröße_hh * arbeitsl_geld_2_params["vermögensfreibetrag_austattung"] ) return out
[docs]@dates_active(start="2023-01-01", change_name="arbeitsl_geld_2_vermög_freib_hh") def arbeitsl_geld_2_vermög_freib_hh_ab_2023( arbeitsl_geld_2_params: dict, haushaltsgröße_hh: int, bürgerg_bezug_vorj: bool, ) -> float: """Calculate actual wealth exemptions since 2023. During the first year (Karenzzeit), the wealth exemption is substantially larger. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. haushaltsgröße_hh See :func:`haushaltsgröße_hh`. bürgerg_bezug_vorj See basic input variable :ref:`bürgerg_bezug_vorj <bürgerg_bezug_vorj>`. Returns ------- """ params = arbeitsl_geld_2_params["schonvermögen_bürgergeld"] if bürgerg_bezug_vorj: out = haushaltsgröße_hh * params["normaler_satz"] else: out = ( params["während_karenzzeit"] + (haushaltsgröße_hh - 1) * params["normaler_satz"] ) return out