Skip to content

Commit 995a46c

Browse files
committed
Merge remote-tracking branch 'origin/fix-1148' into gsia-rewritten
2 parents 0c453fc + 61d7879 commit 995a46c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+839
-3
lines changed

CHANGES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ All releases are available on [Anaconda.org](https://anaconda.org/conda-forge/ge
1515

1616
## Unreleased
1717

18+
- {gh}`1167` Implement 100k children exclusion for Grundsicherung im Alter (§43 SGB
19+
XII). ({ghuser}`MImmesberger`)
1820
- {gh}`1164` Proper treatment of gemischte Bedarfsgemeinschaften (SGB II + SGB XII) via
1921
Vertikalmethode. ({ghuser}`MImmesberger`)
2022
- {gh}`1159` Add Einsatzgemeinschaft (SGB XII); remove Einstandsgemeinschaft.

src/gettsim/germany/grundsicherung/im_alter/freibeträge_und_mehrbedarfe.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,25 @@ anrechnungsfreier_anteil_zusätzliche_altersvorsorge:
120120
slope: 1
121121
- interval: '[100, inf)'
122122
slope: 0.3
123+
einkommensgrenze_kinder:
124+
name:
125+
de: Einkommensgrenze der Kinder für Grundsicherung im Alter
126+
en: Children's income threshold for Grundsicherung im Alter
127+
description:
128+
de: >-
129+
§ 43 SGB XII (BGBl. I 2003 S. 3022).
130+
Übersteigt das jährliche Gesamteinkommen (§ 16 SGB IV) eines Kindes ersten Grades
131+
diesen Betrag, besteht kein Anspruch auf Grundsicherung im Alter.
132+
en: >-
133+
§ 43 SGB XII (BGBl. I 2003 S. 3022).
134+
If the annual Gesamteinkommen (§ 16 SGB IV) of any first-degree descendant exceeds
135+
this threshold, the applicant is excluded from Grundsicherung im Alter.
136+
unit: Euros
137+
reference_period: Year
138+
type: scalar
139+
2005-01-01:
140+
value: 100000
141+
reference: § 43 Abs. 2 SGB XII, BGBl. I 2003 S. 3022
123142
mehrbedarf_bei_schwerbehinderungsgrad_g:
124143
name:
125144
de: Mehrbedarf bei Schwerbehinderung

src/gettsim/germany/grundsicherung/im_alter/im_alter.py

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,26 @@
1717
RegelsatzAnteilsbasiert,
1818
)
1919

20-
from gettsim.tt import policy_function
20+
from gettsim.tt import AggType, agg_by_p_id_function, policy_function
2121

2222

2323
@policy_function(start_date="2005-01-01")
2424
def betrag_m(
2525
anspruchshöhe_m: float,
2626
vorrangprüfungen__wohngeld_kinderzuschlag_vorrangig_oder_günstiger: bool,
27+
hat_kind_über_einkommensgrenze: bool,
2728
) -> float:
28-
"""Grundsicherung im Alter after Vorrangprüfung (§2 Abs. 1 SGB XII)."""
29-
if vorrangprüfungen__wohngeld_kinderzuschlag_vorrangig_oder_günstiger:
29+
"""Grundsicherung im Alter after Vorrangprüfung and 100k-children exclusion.
30+
31+
§43 SGB XII (BGBl. I 2003 S. 3022): Persons are excluded from Grundsicherung im
32+
Alter if any first-degree descendant has annual Gesamteinkommen (§16 SGB IV)
33+
exceeding the threshold.
34+
§2 Abs. 1 SGB XII: Vorrangprüfung.
35+
"""
36+
if (
37+
hat_kind_über_einkommensgrenze
38+
or vorrangprüfungen__wohngeld_kinderzuschlag_vorrangig_oder_günstiger
39+
):
3040
return 0.0
3141
else:
3242
return anspruchshöhe_m
@@ -254,3 +264,54 @@ def vermögensfreibetrag_eg(
254264
parameter_vermögensfreibetrag["erwachsene"] * familie__anzahl_erwachsene_eg
255265
+ parameter_vermögensfreibetrag["kinder"] * familie__anzahl_kinder_eg
256266
)
267+
268+
269+
@policy_function(start_date="2005-01-01")
270+
def hat_gesamteinkommen_über_einkommensgrenze(
271+
einkommensteuer__gesamteinkommen_y: float,
272+
einkommensgrenze_kinder: float,
273+
) -> bool:
274+
"""Whether a person's Gesamteinkommen exceeds the children's income threshold.
275+
276+
Used to determine if a child's income excludes a parent from Grundsicherung im
277+
Alter.
278+
279+
Reference: § 43 SGB XII (BGBl. I 2003 S. 3022)
280+
"""
281+
return einkommensteuer__gesamteinkommen_y >= einkommensgrenze_kinder
282+
283+
284+
@agg_by_p_id_function(agg_type=AggType.SUM)
285+
def anzahl_kinder_über_einkommensgrenze_über_elternteil_1(
286+
hat_gesamteinkommen_über_einkommensgrenze: bool,
287+
familie__p_id_elternteil_1: int,
288+
p_id: int,
289+
) -> int:
290+
pass
291+
292+
293+
@agg_by_p_id_function(agg_type=AggType.SUM)
294+
def anzahl_kinder_über_einkommensgrenze_über_elternteil_2(
295+
hat_gesamteinkommen_über_einkommensgrenze: bool,
296+
familie__p_id_elternteil_2: int,
297+
p_id: int,
298+
) -> int:
299+
pass
300+
301+
302+
@policy_function(start_date="2005-01-01")
303+
def hat_kind_über_einkommensgrenze(
304+
anzahl_kinder_über_einkommensgrenze_über_elternteil_1: int,
305+
anzahl_kinder_über_einkommensgrenze_über_elternteil_2: int,
306+
) -> bool:
307+
"""Whether any first-degree child has income above the threshold.
308+
309+
Both parent pointers are checked because a child may point to either parent via
310+
p_id_elternteil_1 or p_id_elternteil_2.
311+
312+
Reference: § 43 SGB XII (BGBl. I 2003 S. 3022)
313+
"""
314+
return (
315+
anzahl_kinder_über_einkommensgrenze_über_elternteil_1
316+
+ anzahl_kinder_über_einkommensgrenze_über_elternteil_2
317+
) > 0

src/gettsim/tests_germany/policy_cases/grundsicherung/im_alter/2010-07-01/mehrbedarf_bei_schwerbehinderung.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ inputs:
114114
- 1
115115
- 1
116116
grundsicherung:
117+
im_alter:
118+
hat_kind_über_einkommensgrenze:
119+
- false
120+
- false
121+
- false
117122
hilfe_zum_lebensunterhalt:
118123
überschusseinkommen_m:
119124
- 0.0

src/gettsim/tests_germany/policy_cases/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ inputs:
9393
- 13
9494
- 13
9595
grundsicherung:
96+
im_alter:
97+
hat_kind_über_einkommensgrenze:
98+
- false
99+
- false
96100
hilfe_zum_lebensunterhalt:
97101
überschusseinkommen_m:
98102
- 0.0

src/gettsim/tests_germany/policy_cases/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ inputs:
6666
hh_id:
6767
- 16
6868
grundsicherung:
69+
im_alter:
70+
hat_kind_über_einkommensgrenze:
71+
- false
6972
hilfe_zum_lebensunterhalt:
7073
überschusseinkommen_m:
7174
- 0.0

src/gettsim/tests_germany/policy_cases/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ inputs:
6666
hh_id:
6767
- 17
6868
grundsicherung:
69+
im_alter:
70+
hat_kind_über_einkommensgrenze:
71+
- false
6972
hilfe_zum_lebensunterhalt:
7073
überschusseinkommen_m:
7174
- 0.0

src/gettsim/tests_germany/policy_cases/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ inputs:
9090
- 6
9191
- 6
9292
grundsicherung:
93+
im_alter:
94+
hat_kind_über_einkommensgrenze:
95+
- false
96+
- false
9397
hilfe_zum_lebensunterhalt:
9498
überschusseinkommen_m:
9599
- 0.0

src/gettsim/tests_germany/policy_cases/grundsicherung/im_alter/2017-07-01/kein_freibetrag_zusaetzliche_altersvorsorge.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ inputs:
6969
hh_id:
7070
- 100
7171
grundsicherung:
72+
im_alter:
73+
hat_kind_über_einkommensgrenze:
74+
- false
7275
hilfe_zum_lebensunterhalt:
7376
überschusseinkommen_m:
7477
- 0.0

src/gettsim/tests_germany/policy_cases/grundsicherung/im_alter/2018-07-01/berufsständische_versorgung_kein_freibetrag.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ inputs:
6969
hh_id:
7070
- 101
7171
grundsicherung:
72+
im_alter:
73+
hat_kind_über_einkommensgrenze:
74+
- false
7275
hilfe_zum_lebensunterhalt:
7376
überschusseinkommen_m:
7477
- 0.0

0 commit comments

Comments
 (0)