import pandas as pd
# Beispielhafte steuerliche Höchstgrenzen (jährlich, Stand 2024)
BENEFIT_LIMITS = {
'Sachbezug': 600, # 50€/Monat
'Erholungsbeihilfe_MA': 156,
'Erholungsbeihilfe_Ehepartner': 104,
'Erholungsbeihilfe_Kind': 52,
'Essenszuschuss': 996, # 4,13€/Arbeitstag, ca. 21 Tage/Monat
'Jobticket': 1200, # Beispielwert
}
def verteile_benefits(mitarbeiter_df, gesamtbudget):
# Initiale Verteilung: maximal steuerfrei, Rest ggf. pauschal versteuert
for i, row in mitarbeiter_df.iterrows():
rest = gesamtbudget
# Sachbezug
sachbezug = min(BENEFIT_LIMITS['Sachbezug'], rest)
rest -= sachbezug
# Essenszuschuss
essens = min(BENEFIT_LIMITS['Essenszuschuss'], rest)
rest -= essens
# Erholungsbeihilfe
erholung = BENEFIT_LIMITS['Erholungsbeihilfe_MA']
if row['Ehepartner']:
erholung += BENEFIT_LIMITS['Erholungsbeihilfe_Ehepartner']
erholung += row['Kinder'] * BENEFIT_LIMITS['Erholungsbeihilfe_Kind']
erholung = min(erholung, rest)
rest -= erholung
# Jobticket
jobticket = min(BENEFIT_LIMITS['Jobticket'], rest)
rest -= jobticket
# Ergebnisse speichern
mitarbeiter_df.loc[i, 'Sachbezug'] = sachbezug
mitarbeiter_df.loc[i, 'Essenszuschuss'] = essens
mitarbeiter_df.loc[i, 'Erholungsbeihilfe'] = erholung
mitarbeiter_df.loc[i, 'Jobticket'] = jobticket
mitarbeiter_df.loc[i, 'Restbudget'] = rest
return mitarbeiter_df
# Beispiel-Mitarbeiterdaten
mitarbeiter = pd.DataFrame([
{'Name': 'Anna', 'Ehepartner': 1, 'Kinder': 2},
{'Name': 'Ben', 'Ehepartner': 0, 'Kinder': 0},
])
# Anwendung
gesamtbudget_pro_mitarbeiter = 2000
verteilung = verteile_benefits(mitarbeiter, gesamtbudget_pro_mitarbeiter)
print(verteilung)
import pandas as pd
# Beispielhafte steuerliche Höchstgrenzen (jährlich, Stand 2024)
BENEFIT_LIMITS = {
‚Sachbezug‘: 600, # 50€/Monat
‚Erholungsbeihilfe_MA‘: 156,
‚Erholungsbeihilfe_Ehepartner‘: 104,
‚Erholungsbeihilfe_Kind‘: 52,
‚Essenszuschuss‘: 996, # 4,13€/Arbeitstag, ca. 21 Tage/Monat
‚Jobticket‘: 1200, # Beispielwert
}
def verteile_benefits(mitarbeiter_df, gesamtbudget):
# Initiale Verteilung: maximal steuerfrei, Rest ggf. pauschal versteuert
for i, row in mitarbeiter_df.iterrows():
rest = gesamtbudget
# Sachbezug
sachbezug = min(BENEFIT_LIMITS[‚Sachbezug‘], rest)
rest -= sachbezug
# Essenszuschuss
essens = min(BENEFIT_LIMITS[‚Essenszuschuss‘], rest)
rest -= essens
# Erholungsbeihilfe
erholung = BENEFIT_LIMITS[‚Erholungsbeihilfe_MA‘]
if row[‚Ehepartner‘]:
erholung += BENEFIT_LIMITS[‚Erholungsbeihilfe_Ehepartner‘]
erholung += row[‚Kinder‘] * BENEFIT_LIMITS[‚Erholungsbeihilfe_Kind‘]
erholung = min(erholung, rest)
rest -= erholung
# Jobticket
jobticket = min(BENEFIT_LIMITS[‚Jobticket‘], rest)
rest -= jobticket
# Ergebnisse speichern
mitarbeiter_df.loc[i, ‚Sachbezug‘] = sachbezug
mitarbeiter_df.loc[i, ‚Essenszuschuss‘] = essens
mitarbeiter_df.loc[i, ‚Erholungsbeihilfe‘] = erholung
mitarbeiter_df.loc[i, ‚Jobticket‘] = jobticket
mitarbeiter_df.loc[i, ‚Restbudget‘] = rest
return mitarbeiter_df
# Beispiel-Mitarbeiterdaten
mitarbeiter = pd.DataFrame([
{‚Name‘: ‚Anna‘, ‚Ehepartner‘: 1, ‚Kinder‘: 2},
{‚Name‘: ‚Ben‘, ‚Ehepartner‘: 0, ‚Kinder‘: 0},
])
# Anwendung
gesamtbudget_pro_mitarbeiter = 2000
verteilung = verteile_benefits(mitarbeiter, gesamtbudget_pro_mitarbeiter)
print(verteilung)