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_at gesetzt → Storniert
  • paid_at gesetzt → Bezahlt
  • pdf_generated_at gesetzt → 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 = true angelegt und dem Mitglied sowie der Parzelle zugeordnet.
  • Der Betreff wird aus dem Rechnungsbetreff übernommen (z. B. „Jahresrechnung 2026 — Parzelle 42").
  • Die Kategorie invoice ist fix vorgegeben (eigene Zahlungskategorie, nicht manuell änderbar).
  • Die Zahlung enthält eine FK invoice_id auf 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):

  1. Die alte Rechnung wird storniert (cancelled_at = now()).
  2. Eine neue Rechnung wird mit replaces_invoice_id = alte_rechnung.id angelegt.
  3. Der Betrag der verknüpften Belastungszahlung wird auf den neuen Gesamtbetrag aktualisiert.
  4. 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.