Vereinsheim
Buchungen verwalten
Die Seite Vereinsheim → Buchungen ist die zentrale Schaltstelle für alle Vereinsheim-Reservierungen. Sie kombiniert einen Monatskalender für die Übersicht mit einer Tabellenansicht für Such- und Genehmigungsarbeit.
Sichtbar für Rollen mit
clubhouse.bookings.view. Bestätigen, ablehnen und stornieren erfordert zusätzlichclubhouse.bookings.manage— beides ist standardmäßig bei Administrator, Vorstand und Schriftführer gesetzt.
#Aufbau der Seite
#Obere Leiste
| Element | Beschreibung |
|---|---|
| Suchen | Volltextsuche über den Namen (Mitglied oder bei externen Buchungen den eingetragenen Namen). |
| Neue Buchung | Öffnet den Anlage-Flyout mit dem aktuell ausgewählten Raum als Voreinstellung. |
#Filter-Leiste
Direkt unterhalb der oberen Leiste sitzt eine segmentierte Filterleiste (auf schmalen Bildschirmen ein Listbox-Select):
| Filter | Wirkung |
|---|---|
| Offene (Standard) | Wechselt in die Tabellenansicht und zeigt alle Buchungen mit Status Genehmigung offen — älteste zuerst (FIFO). Ein amber Badge zeigt die Anzahl an. |
| Alle | Kalenderansicht über alle Räume und alle Status. |
| (je Raum) | Pro aktivem Raum ein Pill — Kalenderansicht beschränkt auf diesen Raum. |
Sobald die Suche aktiv ist oder Offene gewählt ist, schaltet die Seite automatisch auf die Tabellenansicht mit Pagination (50 Einträge / Seite). Die Tabelle führt Spalten für Name, Raum, Zeitraum, Zweck und Status; ein Auge-Symbol pro Zeile öffnet das Detail-Flyout.
#Monatskalender
Im Kalender steht oben eine kleine Toolbar mit ‹ Monat ›-Knöpfen und dem Monatsnamen. Jede Zelle ist klickbar und öffnet den Anlage-Flyout mit dem entsprechenden Datum vorausgefüllt. Bestehende Buchungen erscheinen pro Tag als kleine Karten mit Uhrzeit, Zweck und Name; die Hintergrundfarbe spiegelt den Status:
| Farbe | Status |
|---|---|
| Grün | Bestätigt |
| Amber | Genehmigung offen |
| Grau | Abgelehnt oder Storniert |
Ein Klick auf eine Karte öffnet das Detail-Flyout — der umgebende Tag-Klick wird dabei abgefangen, sodass nicht versehentlich ein neuer Eintrag angelegt wird.
#Buchung anlegen
Über Neue Buchung oder einen Klick auf einen Tag öffnet sich der Flyout. Felder:
| Feld | Pflicht | Beschreibung |
|---|---|---|
| Raum | Ja | Auswahl aus allen aktiven, nicht archivierten Räumen. |
| Mitglied (optional) | Nein | Combobox über alle aktiven Mitglieder. Bei Auswahl wird der Name automatisch übernommen. Leer lassen für externe Buchungen (Gast, Vorstand-Block etc.). |
| Name | Ja | Anzeige- und Suchname der Buchung. |
| Beginn / Ende — Datum, Uhrzeit | Ja | Vier Felder; Datum als Date-Picker, Uhrzeit als Time-Picker. |
| Zweck | Ja | Kurzbeschreibung (max. 200 Zeichen), z. B. „Familienfeier" oder „Werkstatt-Termin". |
| Interne Notizen | Nein | Nur für Vorstand sichtbar. |
Beim Anlegen über den Admin-Bereich gibt es keine Zukunftsprüfung — der Vorstand kann historische Buchungen für die Dokumentation nachtragen. Im Mitgliederportal hingegen müssen Buchungen in der Zukunft liegen.
#Detail-Flyout: Bestätigen, Ablehnen, Stornieren
Ein Klick auf eine Buchungskarte oder eine Tabellenzeile öffnet das Detail-Flyout. Es zeigt Raum, Status-Badge, Zeitraum, Zweck, Name (mit Hinweis „externe Buchung"), Gebühr (falls > 0), Zugangscode (falls vergeben), Notizen und ggf. die Begründung einer Ablehnung oder Stornierung.
Im Feld Begründung kann optional eine kurze Erklärung erfasst werden — sie wird in der Mitglieder-Benachrichtigung ausgegeben.
| Aktion | Voraussetzung | Wirkung |
|---|---|---|
| Bestätigen | Status = Genehmigung offen | Setzt Status auf Bestätigt, erzeugt einen 6-stelligen Zugangscode, sendet Bestätigungsmail an das Mitglied. |
| Ablehnen | Status = Genehmigung offen | Setzt Status auf Abgelehnt und sendet Ablehnungsmail. |
| Stornieren | Status = Bestätigt | Setzt Status auf Storniert. Bei Buchungen mit Mitglied wird eine Storno-Mail versendet, externe Buchungen bleiben stumm. |
Stornierte oder abgelehnte Buchungen bleiben im System erhalten und werden grau im Kalender angezeigt. Sie blockieren keine weiteren Buchungen.
#Zugangscodes
Ein Zugangscode ist 6 Zeichen lang (Buchstaben + Ziffern) und wird automatisch beim Bestätigen erzeugt. Er steht ab diesem Moment im Detail-Flyout, in der Bestätigungsmail des Mitglieds und auf der Mitgliederportal-Ansicht zur Verfügung. Nach dem Buchungsende verliert der Code seine Gültigkeit — wie genau Schließanlage oder Schlüssel-Safe ihn auswerten, regelt der Verein lokal.
#Erinnerungen
24 Stunden vor Buchungsbeginn erhält das Mitglied automatisch eine Erinnerung. Versendet wird der Job vom Cron-Befehl clubhouse:send-booking-reminders, der stündlich läuft und nur bestätigte Buchungen im 23–25-Stunden-Fenster auswählt; ein gesetzter reminder_sent_at-Zeitstempel verhindert Doppelversand.
#Gebühren, Mietvertrag und Rechnung
Hat ein Raum eine Gebühr, wird der Betrag im Moment der Buchungsanlage als Snapshot in fee_cents festgeschrieben — eine spätere Anpassung am Raum wirkt nicht zurück. Beim Bestätigen der Buchung erzeugt das System dann in einem Schritt:
- einen Mietvertrag als PDF (auch für kostenfreie Buchungen),
- eine Rechnung über den Snapshot-Betrag,
- bei Mitgliedsbuchungen zusätzlich eine Soll-Zahlung in der Zahlungsübersicht.
Beide Dokumente erscheinen anschließend als Download-Links im Detail-Flyout („Mietvertrag (PDF)" und „Rechnung Nummer (PDF)"). Mitglieder sehen die gleichen Links im Portal. Wird die Buchung später storniert, kümmert sich das System automatisch um die Rechnungs-Stornierung und das Entfernen einer unbeglichenen Soll-Zahlung — vollständige Details und die Bearbeitung der Vertragsvorlage stehen unter Mietvertrag & Rechnung.
#Anfragen aus dem Posteingang übernehmen
Trifft eine Buchungsanfrage über das öffentliche Kontaktformular ein, klassifiziert die KI sie ggf. als Vereinsheimbuchung. Aus dem Detail einer solchen Nachricht öffnet die Schnellaktion Buchung anlegen die Buchungsseite mit ?prefill_message_id=… — der Anlage-Flyout ist dann automatisch geöffnet und mit Mitglied, Name, Zweck (= Betreff) und Notizen (= Originalnachricht) befüllt. Datum, Uhrzeit und Raum müssen manuell ergänzt werden.