Belege zu Buchungen: Durchsuchen, Ziehen-und-Ablegen, Einfügen

Zu jeder Buchung lässt sich ein Beleg hinterlegen, im Formular oder
nachträglich über die Buchungsliste.

Der Medientyp wird aus der Dateisignatur bestimmt, nicht aus Endung oder
Browserangabe: eine als rechnung.pdf benannte Textdatei wird abgewiesen. SVG ist
ausgeschlossen, weil es Skripte enthalten kann, die beim Anzeigen ausgeführt
würden. Ausgeliefert wird mit nosniff und enger Content-Security-Policy.

Zur Aufbewahrungspflicht nach §147 AO werden Belege nie überschrieben und nie
gelöscht. Beim Ersetzen bleibt die alte Datei liegen; das Lösen der Verknüpfung
entfernt nur den Verweis. Der Dateiname trägt den SHA-256-Anfang, die Buchung
den vollständigen Hash.

Ablage unter data/belege/<mandant>/<jahr>/ – je Mandant getrennt und im selben
Bind-Mount wie die Datenbanken, sodass ein Backup des data-Ordners Buchungen und
Belege gemeinsam erfasst.

Bisher fehlte jede Möglichkeit, bestehende Mandantendateien um neue Spalten zu
erweitern: CREATE TABLE IF NOT EXISTS lässt vorhandene Tabellen unverändert. Neu
hinzugekommene Spalten werden jetzt beim Öffnen additiv ergänzt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-08-03 22:28:16 +02:00
co-authored by Claude Opus 5
parent 49ddaeccff
commit b343e89fbf
12 changed files with 765 additions and 4 deletions
+25
View File
@@ -120,6 +120,31 @@ SKR04 `1800`) und das Feld `kontenrahmen` in den Stammdaten schreibgeschützt
sonst könnte der DATEV-Export einen Rahmen melden, den die Buchungszeilen nicht
verwenden.
## Belege
Zu jeder Buchung lässt sich ein Beleg hinterlegen – per Durchsuchen-Schaltfläche,
Ziehen-und-Ablegen oder <kbd>Strg</kbd>+<kbd>V</kbd>. Nachträglich geht es über
die Schaltfläche „+ Beleg" in der Buchungsliste.
**Zum Einfügen mit Strg+V:** Screenshots liegen als Bild in der Zwischenablage
und funktionieren überall. Beim Kopieren einer *Datei* im Dateimanager hängt es
vom System ab: Windows und macOS legen die Datei selbst ab, dann klappt es auch
für PDFs. Unter Linux liefern viele Dateimanager nur einen `file://`-Verweis, den
der Browser aus Sicherheitsgründen nicht lesen darf – dort bleibt
Ziehen-und-Ablegen der verlässliche Weg für PDFs.
Zulässig sind PDF, JPEG, PNG, WebP, TIFF und HEIC bis 20 MB. **Der Typ wird aus
der Dateisignatur bestimmt, nicht aus Endung oder Browserangabe** – eine als
`rechnung.pdf` benannte Textdatei wird abgewiesen. SVG ist ausgeschlossen, weil
es Skripte enthalten kann, die beim Anzeigen ausgeführt würden.
Die Dateien liegen unter `data/belege/<mandant>/<jahr>/` und damit im selben
Bind-Mount wie die Datenbanken; ein Backup des `data`-Ordners erfasst Buchungen
und Belege gemeinsam. Zur Aufbewahrungspflicht (§147 AO): Belege werden nie
überschrieben und nie gelöscht. Wird ein Beleg ersetzt oder die Verknüpfung
gelöst, bleibt die Datei erhalten – der Dateiname enthält den SHA-256-Anfang, die
Buchung den vollständigen Hash.
## Anlagevermögen oder Sofortabzug
Ob eine Ausgabe abzuschreiben ist, entscheidet das **Konto** (Kontotyp `anlage`),