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_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.
#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:
cancelled_atwird gesetzt — die Rechnung verschwindet aus allen laufenden Listen und Summen.- Wasser- und Stromablesungen, die auf dieser Rechnung abgerechnet waren, werden wieder freigegeben und stehen für eine neue Rechnung zur Verfügung.
- 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.
- 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:
- Eine neue Rechnung wird mit
replaces_invoice_id = alte_rechnung.idangelegt. - Für die neue Rechnung entsteht eine frische Belastungszahlung.
- 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.