Source code for _gettsim.transfers.unterhaltsvors
"""This module provides functions to compute advance alimony payments
(Unterhaltsvorschuss)."""
[docs]def unterhaltsvors_m( # noqa: PLR0913
alleinerz_tu: bool,
alter: int,
unterhaltsvorschuss_eink_m_tu: float,
kind_unterh_erhalt_m: float,
unterhalt_params: dict,
unterhaltsvors_params: dict,
kindergeld_params: dict,
) -> float:
"""Calculate advance on alimony payment (Unterhaltsvorschuss).
Single Parents get alimony payments for themselves and for their child from the ex
partner. If the ex partner is not able to pay the child alimony, the government pays
the child alimony to the mother (or the father, if he has the kids).
According to §1 Abs.1 Nr.3 UhVorschG those single parents are entitled to
advance alimony payments, who do not or not regularly receive child alimony
payments or orphans' benefits (Waisenbezüge) in at least the amount specified in
§2 Abs.1 and 2 UhVorschG. The child alimonay payment paid by the other parent
is credited against the amount of the advance alimony payments
(§2 Abs.3 Nr.1 UhVorschG).
The amount is specified in §1612a BGB and, ultimately, in
Mindestunterhaltsverordnung.
# ToDo: Result was rounded up in previous code. Check if this is correct and
# ToDo: implement rounding spec accordingly
Parameters
----------
alleinerz_tu
See basic input variable :ref:`alleinerz_tu <alleinerz_tu>`.
alter
See basic input variable :ref:`alter <alter>`.
unterhaltsvorschuss_eink_m_tu
See :func:`unterhaltsvorschuss_eink_m_tu`.
kind_unterh_erhalt_m
See basic input variable :ref:`kind_unterh_erhalt_m <kind_unterh_erhalt_m>`
unterhalt_params
See params documentation :ref:`unterhalt_params <unterhalt_params>`.
unterhaltsvors_params
See params documentation :ref:`unterhaltsvors_params <unterhaltsvors_params>`.
kindergeld_params
See params documentation :ref:`kindergeld_params <kindergeld_params>`.
Returns
-------
"""
altersgrenzen = unterhaltsvors_params["altersgrenzen"]
if (alter < altersgrenzen[1]) and alleinerz_tu:
out = (
unterhalt_params["mindestunterhalt"][6] - kindergeld_params["kindergeld"][1]
)
elif (altersgrenzen[1] <= alter < altersgrenzen[2]) and alleinerz_tu:
out = (
unterhalt_params["mindestunterhalt"][12]
- kindergeld_params["kindergeld"][1]
)
# Older kids get it only if the single parent has income > mindesteinkommen.
elif (
(altersgrenzen[2] <= alter < altersgrenzen[3])
and alleinerz_tu
and (unterhaltsvorschuss_eink_m_tu > unterhaltsvors_params["mindesteinkommen"])
):
out = (
unterhalt_params["mindestunterhalt"][18]
- kindergeld_params["kindergeld"][1]
)
else:
out = 0.0
# Check against the actual child alimony payments given by kindesunterhalt_m
out = max(out - kind_unterh_erhalt_m, 0.0)
return out
[docs]def unterhaltsvorschuss_eink_m_tu( # noqa: PLR0913
bruttolohn_m_tu: float,
sonstig_eink_m_tu: float,
eink_selbst_m_tu: float,
eink_vermietung_m_tu: float,
kapitaleink_brutto_m_tu: float,
sum_ges_rente_priv_rente_m_tu: float,
arbeitsl_geld_m_tu: float,
) -> float:
"""Calculate relevant income for advance on alimony payment on tax unit level.
Parameters
----------
bruttolohn_m_tu
See :func:`bruttolohn_m_tu`.
sonstig_eink_m_tu
See :func:`sonstig_eink_m_tu`.
eink_selbst_m_tu
See :func:`eink_selbst_m_tu`.
eink_vermietung_m_tu
See :func:`eink_vermietung_m_tu`.
kapitaleink_brutto_m_tu
See :func:`kapitaleink_brutto_m_tu`.
sum_ges_rente_priv_rente_m_tu
See :func:`sum_ges_rente_priv_rente_m_tu`.
arbeitsl_geld_m_tu
See :func:`arbeitsl_geld_m_tu`.
Returns
-------
"""
out = (
bruttolohn_m_tu
+ sonstig_eink_m_tu
+ eink_selbst_m_tu
+ eink_vermietung_m_tu
+ kapitaleink_brutto_m_tu
+ sum_ges_rente_priv_rente_m_tu
+ arbeitsl_geld_m_tu
)
return out