Source code for _gettsim.transfers.arbeitsl_geld_2.arbeitsl_geld_2

from _gettsim.shared import dates_active


[docs]def arbeitsl_geld_2_m_hh( arbeitsl_geld_2_vor_vorrang_m_hh: float, wohngeld_vorrang_hh: bool, kinderzuschl_vorrang_hh: bool, wohngeld_kinderzuschl_vorrang_hh: bool, erwachsene_alle_rentner_hh: bool, ) -> float: """Calculate final monthly subsistence payment on household level. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- arbeitsl_geld_2_vor_vorrang_m_hh See :func:`arbeitsl_geld_2_vor_vorrang_m_hh`. wohngeld_vorrang_hh See :func:`wohngeld_vorrang_hh`. kinderzuschl_vorrang_hh See :func:`kinderzuschl_vorrang_hh`. wohngeld_kinderzuschl_vorrang_hh See :func:`wohngeld_kinderzuschl_vorrang_hh`. erwachsene_alle_rentner_hh See :func:`erwachsene_alle_rentner_hh`. Returns ------- float with the income by unemployment insurance on household level. """ if ( wohngeld_vorrang_hh or kinderzuschl_vorrang_hh or wohngeld_kinderzuschl_vorrang_hh or erwachsene_alle_rentner_hh ): out = 0.0 else: out = arbeitsl_geld_2_vor_vorrang_m_hh return out
[docs]def arbeitsl_geld_2_regelbedarf_m_hh( arbeitsl_geld_2_regelsatz_m_hh: float, arbeitsl_geld_2_kost_unterk_m_hh: float, ) -> float: """Basic monthly subsistence level on household level. This includes cost of dwelling. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld.: Parameters ---------- arbeitsl_geld_2_regelsatz_m_hh See :func:`arbeitsl_geld_2_regelsatz_m_hh`. arbeitsl_geld_2_kost_unterk_m_hh See :func:`arbeitsl_geld_2_kost_unterk_m_hh`. Returns ------- float checks the minimum monthly needs of an household. """ return arbeitsl_geld_2_regelsatz_m_hh + arbeitsl_geld_2_kost_unterk_m_hh
def _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh( alleinerz_hh: bool, anz_kinder_hh: int, anz_kinder_bis_6_hh: int, anz_kinder_bis_15_hh: int, arbeitsl_geld_2_params: dict, ) -> float: """Compute additional need for single parents. Additional need for single parents. Maximum 60% of the standard amount on top if you have at least one kid below 6 or two or three below 15, you get 36% on top alternatively, you get 12% per kid, depending on what's higher. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- alleinerz_hh See :func:`alleinerz_hh`. anz_kinder_hh See :func:`anz_kinder_hh`. anz_kinder_bis_6_hh See :func:`anz_kinder_bis_6_hh`. anz_kinder_bis_15_hh See :func:`anz_kinder_bis_15_hh`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- float checks how much more a single parent need. """ if alleinerz_hh: # Clip value at calculated minimal share and given upper share # Note that upper limit is applied last (for many children lower # could be greater than upper) out = min( max( # Minimal Mehrbedarf share. Minimal rate times number of children arbeitsl_geld_2_params["mehrbedarf_anteil"]["min_1_kind"] * anz_kinder_hh, # Special case if 1 kid below 6 or 2,3 below 15. arbeitsl_geld_2_params["mehrbedarf_anteil"]["kind_unter_7_oder_mehr"] if (anz_kinder_bis_6_hh >= 1) or (2 <= anz_kinder_bis_15_hh <= 3) else 0.0, ), arbeitsl_geld_2_params["mehrbedarf_anteil"]["max"], ) else: out = 0.0 return out
[docs]@dates_active(end="2010-12-31", change_name="arbeitsl_geld_2_kindersatz_m_hh") def arbeitsl_geld_2_kindersatz_m_hh_bis_2010( anz_kinder_bis_5_hh: int, anz_kinder_ab_6_bis_13_hh: int, anz_kinder_ab_14_bis_24_hh: int, arbeitsl_geld_2_params: dict, ) -> float: """Calculate basic monthly subsistence for children until 2010. Since 2010 children get additional shares instead of lump sum payments. Parameters ---------- anz_kinder_bis_5_hh See :func:`anz_kinder_bis_5_hh`. anz_kinder_ab_6_bis_13_hh See :func:`anz_kinder_ab_6_bis_13_hh`. anz_kinder_ab_14_bis_24_hh See :func:`anz_kinder_ab_14_bis_24_hh`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- float with the support of children until year 2010. """ # Dictionary of additional shares. anteile = arbeitsl_geld_2_params["anteil_regelsatz"] # Multiply number of kids in age range with corresponding additional share out = arbeitsl_geld_2_params["regelsatz"] * ( anteile["kinder_bis_5"] * anz_kinder_bis_5_hh + anteile["kinder_ab_6_bis_13"] * anz_kinder_ab_6_bis_13_hh + anteile["kinder_ab_14_bis_24"] * anz_kinder_ab_14_bis_24_hh ) return float(out)
[docs]@dates_active(start="2011-01-01", change_name="arbeitsl_geld_2_kindersatz_m_hh") def arbeitsl_geld_2_kindersatz_m_hh_ab_2011( anz_kinder_bis_5_hh: int, anz_kinder_ab_6_bis_13_hh: int, anz_kinder_ab_14_bis_17_hh: int, anz_kinder_ab_18_bis_24_hh: int, arbeitsl_geld_2_params: dict, ) -> float: """Calculate basic monthly subsistence for children since 2011. Here the sum in euro is directly in the law. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- anz_kinder_bis_5_hh See :func:`anz_kinder_bis_5_hh`. anz_kinder_ab_6_bis_13_hh See :func:`anz_kinder_ab_6_bis_13_hh`. anz_kinder_ab_14_bis_17_hh See :func:`anz_kinder_ab_14_bis_17_hh`. anz_kinder_ab_18_bis_24_hh See :func:`anz_kinder_ab_18_bis_24_hh`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- float with the support of children since year 2011 """ # Sum payments for each age group out = ( arbeitsl_geld_2_params["regelsatz"][6] * anz_kinder_bis_5_hh + arbeitsl_geld_2_params["regelsatz"][5] * anz_kinder_ab_6_bis_13_hh + arbeitsl_geld_2_params["regelsatz"][4] * anz_kinder_ab_14_bis_17_hh + arbeitsl_geld_2_params["regelsatz"][3] * anz_kinder_ab_18_bis_24_hh ) kindersofortzuschl = arbeitsl_geld_2_params.get("kindersofortzuschl", 0.0) out += kindersofortzuschl * ( anz_kinder_bis_5_hh + anz_kinder_ab_6_bis_13_hh + anz_kinder_ab_14_bis_17_hh + anz_kinder_ab_18_bis_24_hh ) return float(out)
[docs]@dates_active(end="2010-12-31", change_name="arbeitsl_geld_2_regelsatz_m_hh") def arbeitsl_geld_2_regelsatz_m_hh_bis_2010( anz_erwachsene_hh: int, _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh: float, arbeitsl_geld_2_kindersatz_m_hh: float, arbeitsl_geld_2_params: dict, ) -> float: """Calculate basic monthly subsistence without dwelling until 2010. Parameters ---------- anz_erwachsene_hh See :func:`anz_erwachsene_hh`. _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh See :func:`_arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh`. arbeitsl_geld_2_kindersatz_m_hh See :func:`arbeitsl_geld_2_kindersatz_m_hh`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- float with the sum in Euro. """ # Note that we, currently, do not support households with more than 2 adults. weitere_erwachsene = max(anz_erwachsene_hh - 2, 0) if anz_erwachsene_hh == 1: out = arbeitsl_geld_2_params["regelsatz"] * ( 1 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh ) else: out = arbeitsl_geld_2_params["regelsatz"] * ( 2 * arbeitsl_geld_2_params["anteil_regelsatz"]["zwei_erwachsene"] + weitere_erwachsene * arbeitsl_geld_2_params["anteil_regelsatz"]["weitere_erwachsene"] ) return out + arbeitsl_geld_2_kindersatz_m_hh
[docs]@dates_active(start="2011-01-01", change_name="arbeitsl_geld_2_regelsatz_m_hh") def arbeitsl_geld_2_regelsatz_m_hh_ab_2011( anz_erwachsene_hh: int, _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh: float, arbeitsl_geld_2_kindersatz_m_hh: float, arbeitsl_geld_2_params: dict, ) -> float: """Calculate basic monthly subsistence without dwelling since 2011. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- anz_erwachsene_hh See :func:`anz_erwachsene_hh`. _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh See :func:`_arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh`. arbeitsl_geld_2_kindersatz_m_hh See :func:`arbeitsl_geld_2_kindersatz_m_hh`. arbeitsl_geld_2_params See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. Returns ------- float with the minimum needs of an household in Euro. """ zuschlag = arbeitsl_geld_2_params.get("kindersofortzuschl", 0) weitere_erwachsene = max(anz_erwachsene_hh - 2, 0) if anz_erwachsene_hh == 1: out = arbeitsl_geld_2_params["regelsatz"][1] * ( 1 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh ) else: out = arbeitsl_geld_2_params["regelsatz"][2] * ( 2 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m_hh ) + ((arbeitsl_geld_2_params["regelsatz"][3] + zuschlag) * weitere_erwachsene) return out + arbeitsl_geld_2_kindersatz_m_hh
[docs]def arbeitsl_geld_2_vor_vorrang_m_hh( # noqa: PLR0913 arbeitsl_geld_2_regelbedarf_m_hh: float, kindergeld_m_hh: float, kind_unterh_erhalt_m_hh: float, unterhaltsvors_m_hh: float, arbeitsl_geld_2_eink_m_hh: float, vermögen_bedürft_hh: float, arbeitsl_geld_2_vermög_freib_hh: float, ) -> float: """Calculate potential basic subsistence (after income deduction and wealth check). Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. Parameters ---------- arbeitsl_geld_2_regelbedarf_m_hh See :func:`arbeitsl_geld_2_regelbedarf_m_hh`. kindergeld_m_hh See :func:`kindergeld_m_hh`. kind_unterh_erhalt_m_hh See basic input variable :ref:`kind_unterh_erhalt_m_hh <kind_unterh_erhalt_m_hh>`. unterhaltsvors_m_hh See :func:`unterhaltsvors_m_hh`. arbeitsl_geld_2_eink_m_hh See :func:`arbeitsl_geld_2_eink_m_hh`. arbeitsl_geld_2_vermög_freib_hh See :func:`arbeitsl_geld_2_vermög_freib_hh`. vermögen_bedürft_hh See basic input variable :ref:`vermögen_bedürft_hh <vermögen_bedürft_hh>`. Returns ------- """ # Check wealth exemption if vermögen_bedürft_hh > arbeitsl_geld_2_vermög_freib_hh: out = 0.0 else: # Deduct income from various sources out = max( 0.0, arbeitsl_geld_2_regelbedarf_m_hh - arbeitsl_geld_2_eink_m_hh - kind_unterh_erhalt_m_hh - unterhaltsvors_m_hh - kindergeld_m_hh, ) return out