/reschedule")
+@login_required
+def reschedule_manual_booking(booking_id):
+ client_id = session["client_id"]
+ client = bdb.get_client(client_id)
+ monday = _week_start(request.form.get("week"))
+ new_start = _parse_local_start(request.form.get("start_time"), _tz(client))
+ if new_start is None:
+ return _agenda_redirect(monday, error="bad_time")
+ try:
+ bapi.reschedule_booking_row(client_id, booking_id, new_start)
+ except bapi.NotFound:
+ return _agenda_redirect(monday, error="not_found")
+ except bapi.AlreadyCancelled:
+ return _agenda_redirect(monday, error="already_cancelled")
+ except bapi.SlotUnavailable:
+ return _agenda_redirect(monday, error="unavailable")
+ except bapi.SlotTaken:
+ return _agenda_redirect(monday, error="slot_taken")
+ return _agenda_redirect(monday)
diff --git a/backoffice/app/templates/owner/agenda.html b/backoffice/app/templates/owner/agenda.html
new file mode 100644
index 0000000..01cdbac
--- /dev/null
+++ b/backoffice/app/templates/owner/agenda.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+ Kalender — {{ client.business_name if client else '' }}
+
+
+
+ {{ client.business_name if client else 'Kalender' }}
+
+ {% if error == "missing_fields" %}
+ Bitte alle Felder ausfüllen.
+ {% elif error == "not_found" %}
+ Ressource, Leistung oder Buchung nicht gefunden.
+ {% elif error == "slot_taken" %}
+ Dieser Zeitraum überschneidet sich mit einem bestehenden Termin.
+ {% elif error == "unavailable" %}
+ Dieser Termin liegt außerhalb der verfügbaren Zeiten.
+ {% elif error == "already_cancelled" %}
+ Diese Buchung wurde bereits storniert.
+ {% elif error == "bad_time" %}
+ Bitte eine gültige Uhrzeit angeben.
+ {% endif %}
+
+
+ {% if week_start.isoformat() != this_week %}
+ ↑ Zu heute springen
+ {% endif %}
+
+ {% for day, bookings in days %}
+
+
{{ day.strftime('%A, %d.%m.%Y') }}{{ ' — Heute' if day == today else '' }}
+ {% if not bookings %}
+
Keine Buchungen.
+ {% else %}
+
+ | Zeit | Kunde | Leistung | Ressource | Status | |
+
+ {% for b in bookings %}
+
+ | {{ b.start_local.strftime('%H:%M') }} |
+ {{ b.customer_name }} |
+ {{ b.service }} |
+ {{ b.resource_name }} |
+ {{ b.status }} |
+
+ {% if b.status != "cancelled" %}
+
+
+ {% endif %}
+ |
+
+ {% endfor %}
+
+
+ {% endif %}
+
+ {% endfor %}
+
+
+
Neue Buchung (Laufkundschaft / Telefon)
+
+
+
+ Zurück
+
+
diff --git a/backoffice/app/templates/owner/dashboard.html b/backoffice/app/templates/owner/dashboard.html
index 158fcf2..b3455af 100644
--- a/backoffice/app/templates/owner/dashboard.html
+++ b/backoffice/app/templates/owner/dashboard.html
@@ -23,7 +23,8 @@
{{ client.business_name if client else 'Mein Konto' }}
Sie sind angemeldet.
-
Kalender, Buchungen und Einstellungen folgen hier.
+
Zum Kalender
+
Einstellungen folgen hier.
Abmelden