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 mit dem Kennzeichen „Zahlt nur Wasser/Strom“ (pays_only_water_since gesetzt) werden nur für Wasser und Strom abgerechnet: Im Modus Getrennt entstehen ausschließlich die Wasser- und die Stromrechnung. Im Modus Kombiniert bleiben die Abschnitte erhalten, die eine Wasser- oder Stromposition enthalten — und zwar vollständig; alle übrigen Abschnitte entfallen. Pacht und Beiträge gehören daher nicht in denselben Abschnitt wie Wasser oder Strom.


#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.


#Rechnung stornieren

Eine falsch erzeugte Rechnung wird storniert, nicht gelöscht — die Nummernfolge bleibt dadurch lückenlos, wie es die Buchhaltung verlangt. Wer eine Rechnung „löschen“ möchte, etwa nach dem Ausprobieren, storniert sie also.

Ganzer Lauf falsch? Statt jede Rechnung einzeln zu stornieren, nimmt Rechnungslauf zurücknehmen alle offenen Rechnungen eines Jahres in einem Schritt zurück.

Zum Ausprobieren braucht es keine Rechnung. Die Pacht-Vorschau einer Parzelle (Parzellen → Zeilenmenü → Pacht anzeigen) berechnet die Rechnung mit der aktuellen Rechnungsvorlage, ohne sie anzulegen. Solange dort „Vorschau — noch keine Rechnung für {Jahr} erstellt“ steht, gibt es nichts zu stornieren. Erst Jahresrechnungen {Jahr} erstellen erzeugt echte Rechnungen mit Nummer und Belastungszahlung.

Die Aktion „Stornieren“ steht an drei Stellen bereit und setzt jeweils die Berechtigung invoices.manage voraus:

  • Rechnungen → Aktionsleiste über der Vorschau
  • Rechnungen → Prüfen → neben „Bestätigen“ und „Markieren“
  • Parzellen → Zeilenmenü → „Pacht anzeigen“ → Menü neben der Rechnungsnummer

Der Bestätigungsdialog nennt Nummer, Parzelle, Mitglied, Datum und Betrag und weist darauf hin, dass der Vorgang nicht rückgängig zu machen ist.

Beim Bestätigen passiert Folgendes:

  1. cancelled_at wird gesetzt — die Rechnung verschwindet aus allen laufenden Listen und Summen.
  2. Wasser- und Stromablesungen, die auf dieser Rechnung abgerechnet waren, werden wieder freigegeben und stehen für eine neue Rechnung zur Verfügung.
  3. Die verknüpfte Belastungszahlung wird gelöscht — außer es wurden bereits Gutschriften darauf verrechnet. Dann bleiben Zahlung und Verrechnung stehen, denn das Geld ist tatsächlich geflossen.
  4. Bei aktiver Buchhaltung wird zu jeder Buchung dieser Rechnung eine Stornobuchung erzeugt (GoBD-konform: das Original bleibt stehen, die Gegenbuchung tauscht Soll und Haben).

Abgeschlossenes Geschäftsjahr: Liegt auch nur eine Buchung der Rechnung in einem abgeschlossenen Zeitraum, wird der Storno vollständig abgelehnt — die Rechnung bleibt unverändert. Der Zeitraum muss erst wieder geöffnet werden.

Bereits versendete Rechnungen lassen sich ebenfalls stornieren — genau dafür ist die Funktion gedacht. Der Dialog weist dann ausdrücklich darauf hin, dass das Mitglied die Rechnung vorliegen hat und über den Storno informiert werden muss.

#Stornierte Rechnungen wiederfinden

Auf der Seite Rechnungen schaltet der Filter Aktiv / Storniert zwischen beiden Mengen um. Stornierte Rechnungen tragen dort das rote Kennzeichen Storniert.

Das PDF einer stornierten Rechnung bleibt über einen bereits verschickten Link abrufbar, erscheint dem Mitglied aber nicht mehr in Meine Dokumente.


#Neuausstellung

Wird eine Rechnung neu ausgestellt statt nur storniert (z. B. weil nachträglich Arbeitsstunden eingetragen wurden), läuft zusätzlich:

  1. Eine neue Rechnung wird mit replaces_invoice_id = alte_rechnung.id angelegt.
  2. Für die neue Rechnung entsteht eine frische Belastungszahlung.
  3. Die Notiz der alten Rechnung hält fest, durch welche Nummer sie ersetzt wurde.

#Rechnungen einsehen

Rechnungen sind an diesen Stellen zugänglich:

Ort Was dort zu sehen ist
Rechnungen Parzellen-Blätterer mit PDF-Vorschau, Filter Aktiv / Storniert
Rechnungen → Prüfen Prüfbericht und Positionsherkunft, nur aktive Rechnungen
Parzellen → Zeilenmenü → Pacht anzeigen Positionen des Jahres samt Rechnungsnummern

Verfügbare Aktionen:

Aktion Verfügbarkeit
Rechnung anzeigen PDF in der Vorschau
Brief versenden Aktive Rechnung, wenn der Briefversand eingerichtet ist
Stornieren Nur für aktive Rechnungen, mit invoices.manage

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.