{% extends "base.html" %} {% from "_macros.html" import avatar %} {% block title %}Urlaubsplaner{% endblock %} {% block heading %}Urlaubsplaner {{ "" if not status_filter else "· " + status_filter }}{% endblock %} {% block topbar_actions %}
+ Antrag stellen {% endblock %} {% block content %} {# ---------- KONTOSTAND PRO MITARBEITER ---------- #}Anspruch · Genommen · Beantragt · Rest
| Mitarbeiter | Position | Anspruch | Genommen | Beantragt | Verfügbar | Stand |
|---|---|---|---|---|---|---|
{{ avatar(b.first_name, b.last_name) }}{{ b.first_name }} {{ b.last_name }} |
{{ b.position or '—' }} | {{ b.entitled }} T | {{ b.used }} T | {% if b.requested %}{{ b.requested }} T{% else %}—{% endif %} | {{ available }} T |
{{ pct|round(0, 'common')|int }} % verbraucht |
Offene zuerst, dann genehmigte
| Mitarbeiter | Status | Von | Bis | Tage | Notiz | Entschieden | |
|---|---|---|---|---|---|---|---|
{{ avatar(r.first_name, r.last_name) }}{{ r.first_name }} {{ r.last_name }} |
{% if r.status == 'requested' %}Offen {% elif r.status == 'approved' %}Genehmigt {% elif r.status == 'rejected' %}Abgelehnt {% else %}Storniert{% endif %} | {{ r.start_date }} | {{ r.end_date }} | {{ r.days }} T | {{ r.note or '—' }} |
{% if r.decided_by_first %}{{ r.decided_by_first }} {{ r.decided_by_last }} {{ r.decided_at[:10] if r.decided_at else '' }} {% else %}—{% endif %} |
{% if r.status == 'requested' %}
{% if can(current_user, 'approve_vacation') %}
|
Wer ist wann weg? Überschneidungen für die Auftragsplanung erkennen