Rechnungen
Rechnungen – Übersicht
Das Rechnungsmodul erzeugt Jahresrechnungen für Pacht und Wasser pro Parzelle und Mitglied. Rechnungen werden als PDF gespeichert, können per E-Mail versandt werden und erzeugen automatisch eine verknüpfte Belastungszahlung in der Zahlungsverwaltung.
Nur Administratoren und Vorstandsmitglieder haben Zugriff auf die Rechnungsverwaltung.
#Rechnungsarten und -modi
Eine Vereins-Jahresrechnung kann in zwei Modi konfiguriert werden:
| Modus | Beschreibung |
|---|---|
| Kombiniert | Eine Rechnung pro Parzelle mit allen Posten (Pacht, Gebühren, Wasser) |
| Getrennt | Zwei Rechnungen pro Parzelle: eine für Pacht/Gebühren, eine für Wasserverbrauch |
Der Modus wird im Rechnungstemplate des Vereins für das jeweilige Abrechnungsjahr hinterlegt. Parzellen, für die nur Wasser abgerechnet wird (pays_only_water_since gesetzt), erhalten immer ausschließlich eine Wasserrechnung.
#Rechnungslebenszyklus
1ENTWURF ──→ AKTIV ──→ BEZAHLT
2 └──→ STORNIERT ──→ (neue AKTIVE Ersatzrechnung)
| Status | Bedeutung |
|---|---|
| Entwurf | Rechnungsdatensatz erzeugt; PDF noch nicht generiert |
| Aktiv | PDF generiert; Zahlung steht aus |
| Bezahlt | paid_at ist gesetzt |
| Storniert | cancelled_at ist gesetzt; eine Ersatzrechnung kann über replaces_invoice_id verknüpft sein |
Der Status wird nicht als eigene Spalte gespeichert, sondern aus den Datenbankfeldern berechnet:
cancelled_atgesetzt → Storniertpaid_atgesetzt → Bezahltpdf_generated_atgesetzt → Aktiv- Sonst → Entwurf
#Rechnungsnummern
Format: {JAHR}-{5-stellige-Folgenummer}, z. B. 2026-00042.
Die Folgenummer ist pro Verein und Jahr eindeutig. Sie wird innerhalb einer Datenbanktransaktion mit SELECT FOR UPDATE erzeugt, um bei der Stapelgenerierung keine Duplikate zu produzieren.
#Verknüpfung mit Zahlungen
Jede erzeugte Rechnung löst automatisch eine Belastungszahlung in der Zahlungsverwaltung aus:
- Die Zahlung wird mit
is_debit = trueangelegt und dem Mitglied sowie der Parzelle zugeordnet. - Der Betreff wird aus dem Rechnungsbetreff übernommen (z. B. „Jahresrechnung 2026 — Parzelle 42").
- Die Kategorie
invoiceist fix vorgegeben (eigene Zahlungskategorie, nicht manuell änderbar). - Die Zahlung enthält eine FK
invoice_idauf die Rechnung — so sind Rechnung und Zahlung eindeutig verknüpft.
Bei Stornierung mit Ersatzrechnung: Der Betrag der bestehenden Zahlung wird aktualisiert; eine neue Zahlung wird nicht erzeugt.
Bei Stornierung ohne Ersatzrechnung: Die verknüpfte Belastungszahlung wird ebenfalls gelöscht.
#Wasserablesungen und Rechnungen
Jeder WaterState-Datensatz besitzt eine nullable invoice_id. Sobald eine Wasserrechnung für einen Verbrauchszeitraum (Ablesung A → Ablesung B) erzeugt wird, erhält die End-Ablesung (B) die invoice_id der neuen Rechnung.
Dadurch lässt sich jederzeit feststellen, ob für eine Parzelle noch unberechneter Wasserverbrauch vorliegt: Alle WaterState-Einträge ohne invoice_id, die nach der letzten abgerechneten Ablesung liegen, gelten als unberechnet.
Bei einer Mitgliederwechsel-Situation dient die Wechsel-Ablesung gleichzeitig als Schluss-Ablesung des ausscheidenden und als Start-Ablesung des einziehenden Mitglieds.
#Stornierung und Neuausstellung
Muss eine bereits aktive Rechnung korrigiert werden (z. B. weil nachträglich Arbeitsstunden eingetragen wurden):
- Die alte Rechnung wird storniert (
cancelled_at = now()). - Eine neue Rechnung wird mit
replaces_invoice_id = alte_rechnung.idangelegt. - Der Betrag der verknüpften Belastungszahlung wird auf den neuen Gesamtbetrag aktualisiert.
- Das alte PDF bleibt erhalten und ist im Mitglieds- bzw. Parzellen-Reiter mit dem Badge Storniert sichtbar.
#Rechnungen einsehen
Rechnungen sind an zwei Stellen im System zugänglich:
- Mitgliedsdetails → Reiter „Rechnungen": alle Rechnungen des Mitglieds
- Parzellendetails → Reiter „Rechnungen": alle Rechnungen der Parzelle
Für jeden Rechnungseintrag stehen im Aktionsmenü folgende Aktionen zur Verfügung:
| Aktion | Verfügbarkeit |
|---|---|
| Rechnung anzeigen | PDF in neuem Tab öffnen |
| Per E-Mail senden | Nur für aktive, ungesendete Rechnungen |
| Stornieren | Nur für aktive Rechnungen |
| Neu ausstellen | Nur für stornierte Rechnungen (erzeugt Ersatzrechnung) |
Wird eine Rechnung erstellt, erhält das zugehörige Mitglied automatisch eine Benachrichtigung (sofern ein Benutzerkonto vorhanden ist).
Weitere Informationen zur Stapelgenerierung finden Sie unter Rechnungen generieren.