Key: faktura · Enthalten im Abo: Basis · Seit: v0.19.0–v0.19.4 (Juli 2026) · App: apps/faktura (Tabellen-Prefix faktura_)
Rechnungen mit normkonformer Swiss-QR-Rechnung: manuell (einzeln oder Massenlauf), automatisch (Automationen), mit Sammel-Freigabe, Zahlungserfassung und Mahnwesen. Konzept mit allen User-Entscheiden: docs/konzept-faktura.md.
Sidebar-Eintrag „Rechnungen" (nach Aktivierung), Tabs: Übersicht · Neue Rechnung · Automationen · Stammdaten. Alle Views hart Owner/Admin-only + Addon-Gate (Ausnahme vom „kein View-Gate"-Grundsatz — Finanzdaten).
Mehrere BillingProfile pro Verein, eines Default: IBAN (QR-IBAN wird automatisch erkannt, IID 30000–31999 → QRR-Referenzen, sonst SCOR), Absenderadresse, Logo-Upload, MwSt-Nr./Satz (optional — Beträge gelten inkl.), Zahlungsfrist (Default 30 Tage), Textbausteine (Rechnungs-Einleitung/Fusszeile, Versand-Mail-Betreff/-Text mit Platzhaltern {name} {nummer} {betrag} {frist}). IBAN-Eingabe mit/ohne Leerzeichen, wird normalisiert und per mod97 validiert; nur CH/LI.
{jahr}-{seq4} pro Verein lückenlos (select_for_update); kein Löschen — nur Storno (Nummernkreis bleibt intakt).kaw-sponsoring v4.22.2).qrcode-Package, QR als Inline-SVG mit Schweizerkreuz). Auslieferung nur über Admin-geprüfte View.entwurf → versendet → bezahlt | storniert.„Neue Rechnung" → Umschalter „Mehrere (Massenlauf)":
billing („Mitglied Rechnungs-Empfänger") → is_primary → Hauptkontakt (resolve_billing_person). Firmen: Adress-Rolle billing → main → einzige Adresse. Gruppen lösen Person-/Member-/Firmen-Einträge auf.Checkboxen an Entwürfen: „Per E-Mail versenden" (Mail mit PDF-Anhang an primäre Personen-Mail bzw. Firmen-billing_email; Empfänger ohne Mail werden mit Grund gemeldet), „Brief-PDF" (EIN Sammel-PDF, eine Seite pro Rechnung), „Als versendet (Brief) markieren". Limit 200 Mails pro Freigabe, Bestätigungs-Dialog (SMTP ist echt).
manage.py run_invoice_automations, Host-Cron täglich 05:15 (crontab yves, Log /srv/cluhu/compose/faktura_automations.log) — die erste Cron-Infrastruktur des Projekts.source='ausbuchung'). Zahlungen löschbar, Status wird zurückgerechnet.camt.054-Import (automatischer Zahlungsabgleich per QR-Referenz — Referenzen sind dafür vorbereitet), Event-Rechnungen (Kalender-Anbindung), Kassier-Rolle.
qrcode-Package ist in requirements.txt UND im laufenden Container nachinstalliert — beim Image-Rebuild automatisch dabei.floatformat lokalisiert mit Komma (de-ch) — alle PDF-Beträge werden serverseitig CH-formatiert (Punkt, Tausender-Apostroph).{# #}-Kommentare sind nicht mehrzeilig — ein mehrzeiliger Kommentar im Seiten-Template leakte bis v0.19.4 als sichtbare Leerseite in jedes PDF.Mit dem Buchhaltungs-Addon (drei Integrationsregeln, Soll-Stellung, Matching-Center):
YYYY-MM, Trigger-Tag 29–31 → Monatsletzter, Idempotenz pro Monat)./api/faktura/invoices/by-reference/ → öffnet direkt den Zahlungs-Dialog der gefundenen Rechnung (für Zahlungserfassung ohne camt)./api/buchhaltung/finance-accounts/ liefert sonst active:false).apps/buchhaltung/integration.py (idempotent, defensiv — Faktura bricht nie ab; ohne aktives Buchhaltungs-Addon No-Op).