Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
)
def zu_versteuerndes_einkommen_y_sn_mit_abrundungsregel(
zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float,
einkommensteuer__gesamteinkommen_y: float,
gesamteinkommen_y: float,
kinderfreibetrag_günstiger_sn: bool,
) -> float:
"""Calculate taxable income on Steuernummer level."""
if kinderfreibetrag_günstiger_sn:
out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn
else:
out = einkommensteuer__gesamteinkommen_y
out = gesamteinkommen_y

Check warning on line 24 in src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py

View check run for this annotation

Codecov / codecov/patch

src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py#L24

Added line #L24 was not covered by tests

return out

Expand All @@ -39,14 +39,14 @@
)
def zu_versteuerndes_einkommen_y_sn_mit_grober_54er_rundungsregel(
zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float,
einkommensteuer__gesamteinkommen_y: float,
gesamteinkommen_y: float,
kinderfreibetrag_günstiger_sn: bool,
) -> float:
"""Calculate taxable income on Steuernummer level."""
if kinderfreibetrag_günstiger_sn:
out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn
else:
out = einkommensteuer__gesamteinkommen_y
out = gesamteinkommen_y

Check warning on line 49 in src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py

View check run for this annotation

Codecov / codecov/patch

src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py#L49

Added line #L49 was not covered by tests

return out

Expand All @@ -63,24 +63,24 @@
)
def zu_versteuerndes_einkommen_y_sn_mit_dmark_rundungsregel(
zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float,
einkommensteuer__gesamteinkommen_y: float,
gesamteinkommen_y: float,
kinderfreibetrag_günstiger_sn: bool,
) -> float:
"""Calculate taxable income on Steuernummer level."""
if kinderfreibetrag_günstiger_sn:
out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn
else:
out = einkommensteuer__gesamteinkommen_y
out = gesamteinkommen_y

Check warning on line 73 in src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py

View check run for this annotation

Codecov / codecov/patch

src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py#L73

Added line #L73 was not covered by tests

return out


@policy_function()
def zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn(
einkommensteuer__gesamteinkommen_y: float,
gesamteinkommen_y: float,
kinderfreibetrag_y_sn: float,
) -> float:
"""Calculate taxable income with child allowance on Steuernummer level."""

out = einkommensteuer__gesamteinkommen_y - kinderfreibetrag_y_sn
out = gesamteinkommen_y - kinderfreibetrag_y_sn

Check warning on line 85 in src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py

View check run for this annotation

Codecov / codecov/patch

src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py#L85

Added line #L85 was not covered by tests
return max(out, 0.0)
32 changes: 16 additions & 16 deletions src/_gettsim/sozialversicherung/beiträge.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,33 @@

@policy_function()
def beiträge_versicherter_m(
sozialversicherung__pflege__beitrag__betrag_versicherter_m: float,
sozialversicherung__kranken__beitrag__betrag_versicherter_m: float,
sozialversicherung__rente__beitrag__betrag_versicherter_m: float,
sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: float,
pflege__beitrag__betrag_versicherter_m: float,
kranken__beitrag__betrag_versicherter_m: float,
rente__beitrag__betrag_versicherter_m: float,
arbeitslosen__beitrag__betrag_versicherter_m: float,
) -> float:
"""Sum of social insurance contributions paid by the insured person."""
return (
sozialversicherung__pflege__beitrag__betrag_versicherter_m
+ sozialversicherung__kranken__beitrag__betrag_versicherter_m
+ sozialversicherung__rente__beitrag__betrag_versicherter_m
+ sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m
pflege__beitrag__betrag_versicherter_m
+ kranken__beitrag__betrag_versicherter_m
+ rente__beitrag__betrag_versicherter_m
+ arbeitslosen__beitrag__betrag_versicherter_m
)


@policy_function()
def beiträge_arbeitgeber_m(
sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: float,
sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: float,
sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: float,
sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: float,
pflege__beitrag__betrag_arbeitgeber_m: float,
kranken__beitrag__betrag_arbeitgeber_m: float,
rente__beitrag__betrag_arbeitgeber_m: float,
arbeitslosen__beitrag__betrag_arbeitgeber_m: float,
) -> float:
"""Sum of employer's social insurance contributions."""
return (
sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m
+ sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m
+ sozialversicherung__rente__beitrag__betrag_arbeitgeber_m
+ sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m
pflege__beitrag__betrag_arbeitgeber_m
+ kranken__beitrag__betrag_arbeitgeber_m
+ rente__beitrag__betrag_arbeitgeber_m
+ arbeitslosen__beitrag__betrag_arbeitgeber_m
)


Expand Down
100 changes: 42 additions & 58 deletions src/_gettsim/sozialversicherung/midijob.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m(
rounding_spec=RoundingSpec(base=0.0001, direction="nearest"),
)
def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004(
sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float,
sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float,
sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float,
sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float,
sozialversicherung__pflege__beitrag__beitragssatz_jahresanfang: float,
kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float,
kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float,
rente__beitrag__beitragssatz_jahresanfang: float,
arbeitslosen__beitrag__beitragssatz_jahresanfang: float,
pflege__beitrag__beitragssatz_jahresanfang: float,
lohnsteuer__minijob_arbeitgeberpauschale: float,
sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float,
sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float,
kranken__beitrag__minijob_arbeitgeberpauschale: float,
rente__beitrag__minijob_arbeitgeberpauschale: float,
) -> float:
"""Midijob Faktor F until December 2004.

Expand All @@ -68,25 +68,23 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004(
# First calculate the factor F from the formula in § 163 (10) SGB VI
# Therefore sum the contributions which are the same for employee and employer
allg_sozialv_beitr = (
sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2
+ sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2
+ sozialversicherung__pflege__beitrag__beitragssatz_jahresanfang / 2
rente__beitrag__beitragssatz_jahresanfang / 2
+ arbeitslosen__beitrag__beitragssatz_jahresanfang / 2
+ pflege__beitrag__beitragssatz_jahresanfang / 2
)

# Then calculate specific shares
an_anteil = (
allg_sozialv_beitr
+ sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang
allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang
)
ag_anteil = (
allg_sozialv_beitr
+ sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang
allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang
)

# Sum over the shares which are specific for midijobs.
pausch_mini = (
sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale
+ sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale
kranken__beitrag__minijob_arbeitgeberpauschale
+ rente__beitrag__minijob_arbeitgeberpauschale
+ lohnsteuer__minijob_arbeitgeberpauschale
)

Expand All @@ -101,16 +99,14 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004(
rounding_spec=RoundingSpec(base=0.0001, direction="nearest"),
)
def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09(
sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float,
sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float,
sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float,
sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float,
sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[
str, float
],
kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float,
kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float,
rente__beitrag__beitragssatz_jahresanfang: float,
arbeitslosen__beitrag__beitragssatz_jahresanfang: float,
pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[str, float],
lohnsteuer__minijob_arbeitgeberpauschale: float,
sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float,
sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float,
kranken__beitrag__minijob_arbeitgeberpauschale: float,
rente__beitrag__minijob_arbeitgeberpauschale: float,
) -> float:
"""Midijob Faktor F between 2005 and September 2025.

Expand All @@ -120,27 +116,22 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09(
# First calculate the factor F from the formula in § 163 (10) SGB VI
# Therefore sum the contributions which are the same for employee and employer
allg_sozialv_beitr = (
sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2
+ sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2
+ sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang[
"standard"
]
/ 2
rente__beitrag__beitragssatz_jahresanfang / 2
+ arbeitslosen__beitrag__beitragssatz_jahresanfang / 2
+ pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang["standard"] / 2
)

an_anteil = (
allg_sozialv_beitr
+ sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang
allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang
)
ag_anteil = (
allg_sozialv_beitr
+ sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang
allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang
)

# Sum over the shares which are specific for midijobs.
pausch_mini = (
sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale
+ sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale
kranken__beitrag__minijob_arbeitgeberpauschale
+ rente__beitrag__minijob_arbeitgeberpauschale
+ lohnsteuer__minijob_arbeitgeberpauschale
)

Expand All @@ -154,15 +145,13 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09(
rounding_spec=RoundingSpec(base=0.0001, direction="nearest"),
)
def midijob_faktor_f_ohne_minijob_steuerpauschale(
sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float,
sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float,
sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float,
sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[
str, float
],
sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float,
sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float,
sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float,
kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float,
kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float,
rente__beitrag__beitragssatz_jahresanfang: float,
pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[str, float],
arbeitslosen__beitrag__beitragssatz_jahresanfang: float,
kranken__beitrag__minijob_arbeitgeberpauschale: float,
rente__beitrag__minijob_arbeitgeberpauschale: float,
) -> float:
"""Midijob Faktor F since October 2022.

Expand All @@ -174,30 +163,25 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale(
# First calculate the factor F from the formula in § 163 (10) SGB VI
# Therefore sum the contributions which are the same for employee and employer
allg_sozialv_beitr = (
sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2
+ sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang[
"standard"
]
/ 2
+ sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2
rente__beitrag__beitragssatz_jahresanfang / 2
+ pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang["standard"] / 2
+ arbeitslosen__beitrag__beitragssatz_jahresanfang / 2
)

# Then calculate specific shares
an_anteil = (
allg_sozialv_beitr
+ sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang
allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang
)
ag_anteil = (
allg_sozialv_beitr
+ sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang
allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang
)

# Sum over the shares which are specific for midijobs.
# New formula only inludes the lump-sum contributions to health care
# and pension insurance
pausch_mini = (
sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale
+ sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale
kranken__beitrag__minijob_arbeitgeberpauschale
+ rente__beitrag__minijob_arbeitgeberpauschale
)

# Now calculate final factor f
Expand Down
Loading
Loading