Rechnungen

Rechnungsvorlagen

Ein Rechnungstemplate (InvoiceTemplate) beschreibt, welche Posten in welcher Reihenfolge auf den Jahresrechnungen eines Vereins erscheinen. Pro Verein und Abrechnungsjahr gibt es genau ein Template. Das Template steuert die Berechnung — die Rechenlogik liest ausschließlich das Template, es gibt keine fest codierten Positionen.

Nur Administratoren und Vorstandsmitglieder können Rechnungstemplates einsehen. Die Verwaltungsoberfläche (Drag-and-drop-Editor) wird in einem späteren Schritt unter Administration → Rechnungsvorlagen bereitgestellt.


#Aufbau der Template-Konfiguration

Das Template speichert seine Struktur als JSON-Objekt im Feld config. Die Grundstruktur:

 1{
 2    "mode": "combined",
 3    "invoices": [
 4        {
 5            "type": "lease",
 6            "label": "Jahresrechnung",
 7            "sections": [
 8                {
 9                    "id": "pacht",
10                    "label": "Pacht",
11                    "items": [
12                        { "type": "base_rent", "position": 1 },
13                        { "type": "public_legal_rate", "position": 2 }
14                    ]
15                }
16            ]
17        }
18    ]
19}
Feld Beschreibung
mode combined oder separate — bestimmt ob eine oder zwei Rechnungen pro Parzelle erzeugt werden
invoices Array mit einem Eintrag (combined) oder zwei Einträgen (separate)
invoices[].type lease für Pacht-/Gebührenrechnung, water für Wasserrechnung
invoices[].sections Abschnitte der Rechnung mit Label und Positionsliste
items[].type Positionstyp aus InvoiceLineItemTypeEnum (siehe unten)
items[].position Anzeigereihenfolge innerhalb des Abschnitts
items[].addon_id Nur für Typ addon: UUID des verknüpften RentPaymentAddOn-Eintrags

Im Modus separate enthält das invoices-Array zwei Einträge: einen mit "type": "lease" und einen mit "type": "water". Der Wasserabschnitt erscheint dann nur in der Wasserrechnung.


#Verfügbare Positionstypen

#Pacht

Typ Bezeichnung Berechnung
base_rent Pacht (Parzellenfl. + Gemeinschaftsfl.) × Pachtsatz
public_legal_rate Öffentl.-rechtliche Lasten (Parzellenfl. + Gemeinschaftsfl.) × Satz

Die Pacht ist ein einziger Posten für die Gartenfläche inkl. Gemeinschaftsflächenanteil. Es gibt keine separaten Posten für Hausfläche, Schuppen oder Gewächshaus.

#Verbands- und Vereinsbeiträge

Typ Bezeichnung Berechnung
federation_bv_fee Verbandsbeitrag BV BV-Satz × Mitgliederzahl; entfällt bei Freistellung
federation_lv_fee Verbandsbeitrag LV LV-Satz × Mitgliederzahl; entfällt bei Freistellung
membership_fee_first Vereinsbeitrag 1. Mitglied Mitgliedsbeitrag × 12 (jährlich)
membership_fee_others Vereinsbeitrag weitere Mitglieder Weitere-Mitglieds-Beitrag × 12 × (aktive Mitglieder − 1)

#Feste und variable Gebühren

Typ Bezeichnung Berechnung
winter_service Winterdienst Pauschalbetrag pro Parzelle
working_hours_fee Abgeltung Arbeitsstunden Fehlstunden × Stundensatz; nur wenn Fehlstunden > 0
waste_fee Müllgebühren Aus Waste/WasteCommunity-Einträgen; nur wenn Feature Müll aktiv
addon (benutzerdefiniert) Betrag × Anzahl (Parzelle oder Mitglied); erfordert addon_id im Template

working_hours_fee ist nur verfügbar, wenn das Feature Arbeitsstunden aktiv ist. waste_fee setzt das Feature Müll voraus. Alle Wasserposten setzen das Feature Wasser voraus.

#Überträge aus dem Vorjahr

Typ Bezeichnung Berechnung
open_balance_prev_year Offener Betrag [Jahr−1] Summe unbeglichener Belastungszahlungen aus dem Vorjahr
credits_prev_year Guthaben/Vorauszahlungen [Jahr−1] Summe ungenutzter Guthabenzahlungen aus dem Vorjahr (negativer Wert)

#Wasserposten

Typ Bezeichnung Berechnung
water_usage Trinkwasser Verbrauch (m³) × Wasserpreis/m³; Mehrwertsteuer wird auf Rechnungsebene aufgeschlagen
water_wastewater_levy Fäkalienumlage / Abwasser Verbrauchskosten × Abwasserprozentsatz
water_meter_fee Zählergebühr Pauschalbetrag pro Parzelle
water_meter_difference Messdifferenz Differenz bei nicht übereinstimmenden Zählerständen; nur wenn > 0
water_prepayment_deduction Abzügl. Vorauszahlung [Jahr−1] Vorauszahlungsbetrag des Vorjahres als negativer Posten

#Zusatzposten (Add-ons)

RentPaymentAddOn-Einträge erlauben vereinsspezifische Posten (z. B. Versicherung, Kulturgebühr, Zeitung). Jedes Add-on hat:

Feld Beschreibung
Name Anzeigename auf der Rechnung
Betrag Betrag in Cent
Bezug plot (einmal pro Parzelle) oder member (einmal je aktivem Mitglied)
Gültig ab / bis Optionaler Gültigkeitszeitraum; außerhalb davon ist das Add-on nicht wählbar

Ein Add-on wird in das Template aufgenommen, indem ein Positionseintrag mit "type": "addon" und der entsprechenden addon_id eingefügt wird.


#Proratierung

Posten werden anteilig berechnet, wenn ein Mitglied das Pachtjahr nicht vollständig belegt oder eine Parzelle zeitweise zahlungsfrei gestellt ist. Es gibt zwei unabhängige Faktoren:

Faktor Basis
membershipFactor Zeitraum, in dem das Mitglied die Parzelle als Erstbelegter nutzt
paymentPeriodFactor Freistellungszeitraum der Parzelle (no_payment_from / no_payment_until)

Der effektive Faktor ist min(membershipFactor, paymentPeriodFactor) und wird auf alle Geldposten angewendet. Der Arbeitsstunden-Ausgleich wird nicht proratiert — hier zählt nur die tatsächliche Fehlstundenzahl.

Weitere Details zur Berechnung finden Sie unter Rechnungen generieren.