{% extends "base.html" %} {% block title %}Lohnabrechnung — {{ year }}-{{ '%02d'|format(month) }}{% endblock %} {% block heading %}Lohnabrechnung — {{ ['','Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'][month] }} {{ year }}{% endblock %} {% block topbar_actions %} {% set prev_y = year if month > 1 else year - 1 %} {% set prev_m = month - 1 if month > 1 else 12 %} {% set next_y = year if month < 12 else year + 1 %} {% set next_m = month + 1 if month < 12 else 1 %} ← {{ prev_m }}/{{ prev_y }} {{ next_m }}/{{ next_y }} → CSV-Export {% endblock %} {% block content %}

Mitarbeiter-Stunden

{{ summary.from_date }} bis {{ summary.to_date }} · {{ summary.workdays }} Werktage · Soll-Std basieren auf weekly_hours in der Personalakte (5-Tage-Woche)

{% for u in summary.users %} {% else %} {% endfor %}
Personal-Nr Mitarbeiter Anstellung WS-Std Soll Ist (Arbeit) Pause Netto Diff Tage Plausi
{{ u.ident or u.username }} {{ u.name }} {% if u.position %}
{{ u.position }}
{% endif %}
{{ u.employment_type or '—' }} {{ u.weekly_hours or '—' }} {% if u.soll_h is not none %}{{ '%.1f'|format(u.soll_h) }}{% else %}—{% endif %} {{ '%.2f'|format(u.work_h) }} {{ '%.2f'|format(u.break_h) }} {{ '%.2f'|format(u.net_h) }} {% if u.diff_h is none %} {% elif u.diff_h > 5 %}+{{ '%.1f'|format(u.diff_h) }} {% elif u.diff_h < -5 %}{{ '%.1f'|format(u.diff_h) }} {% else %}{{ '%.1f'|format(u.diff_h) }}{% endif %} {{ u.days_worked }} {% if u.flags %}
⚠ {{ u.flags|length }}
    {% for f in u.flags %}
  • {{ f }}
  • {% endfor %}
{% else %}{% endif %}
Keine aktiven Mitarbeiter.

Lese-Hilfe

Soll-Stunden

Wochenstunden ÷ 5 × Werktage im Monat. Setzt Mo–Fr-Arbeitswoche voraus.

Netto-Stunden

Ist-Arbeit minus erfasste Pausen. Das ist die abrechnungsrelevante Größe.

Plausi-Flags

Tag mit > 12 h Arbeit oder < 30 min Pause bei > 6 h Arbeit (ArbZG).

{% endblock %}