Source code for _gettsim.transfers.kindergeld

from _gettsim.shared import dates_active

aggregation_kindergeld = {
    "kumulativer_kindergeld_anspruch_tu": {
        "source_col": "kindergeld_anspruch",
        "aggr": "cumsum",
    },
    "anz_kinder_mit_kindergeld_tu": {
        "source_col": "kindergeld_anspruch",
        "aggr": "sum",
    },
}


[docs]def kindergeld_m( kindergeld_anspruch: bool, kumulativer_kindergeld_anspruch_tu: int, kindergeld_params: dict, ) -> float: """Calculate kindergeld for an individual child. Parameters ---------- kindergeld_anspruch See :func:`kindergeld_anspruch`. kumulativer_kindergeld_anspruch_tu See :func:`kumulativer_kindergeld_anspruch_tu`. kindergeld_params See params documentation :ref:`kindergeld_params <kindergeld_params>`. Returns ------- """ # Make sure that only eligible children get assigned kindergeld if not kindergeld_anspruch: out = 0.0 else: # Kindergeld_Anspruch is the cumulative sum of eligible children. out = kindergeld_params["kindergeld"][ min( kumulativer_kindergeld_anspruch_tu, max(kindergeld_params["kindergeld"]) ) ] return out
[docs]@dates_active(end="2011-12-31", change_name="kindergeld_anspruch") def kindergeld_anspruch_nach_lohn( alter: int, in_ausbildung: bool, bruttolohn_m: float, kindergeld_params: dict, ) -> bool: """Determine kindergeld eligibility for an individual child depending on kids wage. Before 2011, there was an income ceiling for children returns a boolean variable whether a specific person is a child eligible for child benefit Parameters ---------- alter See basic input variable :ref:`alter <alter>`. kindergeld_params See params documentation :ref:`kindergeld_params <kindergeld_params>`. in_ausbildung See basic input variable :ref:`in_ausbildung <in_ausbildung>`. bruttolohn_m See basic input variable :ref:`bruttolohn_m <bruttolohn_m>`. Returns ------- """ out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) and in_ausbildung and (bruttolohn_m <= kindergeld_params["einkommensgrenze"] / 12) ) return out
[docs]@dates_active(start="2012-01-01", change_name="kindergeld_anspruch") def kindergeld_anspruch_nach_stunden( alter: int, in_ausbildung: bool, arbeitsstunden_w: float, kindergeld_params: dict, ) -> bool: """Determine kindergeld eligibility for an individual child depending on working hours. The current eligibility rule is, that kids must not work more than 20 hour and are below 25. Parameters ---------- alter See basic input variable :ref:`alter <alter>`. in_ausbildung See :func:`in_ausbildung`. arbeitsstunden_w See :func:`arbeitsstunden_w`. kindergeld_params See params documentation :ref:`kindergeld_params <kindergeld_params>`. Returns ------- Boolean indiciating kindergeld eligibility. """ out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) and in_ausbildung and (arbeitsstunden_w <= kindergeld_params["stundengrenze"]) ) return out