PDF: Seitenzahlen auf allen Seiten, Lieferschein-Beschriftung

- page_script in invoice, delivery, credit und cancellation ans Ende des
  body verschoben (wirkte nur auf Seite 1), Beschriftung uebersetzt
- Gutschriften rendern mit enable_php wie Rechnungen
- Lieferschein: Schluessel pdf.delivery_note_no ohne ueberzaehligen Punkt
- Tests: Position des Skripts, alle pdf.*-Schluessel in allen Sprachen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-08 13:06:55 +00:00
parent 4274bff9e2
commit 0a3eb791d4
11 changed files with 84 additions and 57 deletions

View file

@ -26,7 +26,7 @@
| `v1.2.1` | bereinigte Git-Historie (alle Hashes neu), IDE-Helper-Dateien nicht mehr versioniert |
| `v1.2.2` | `deploy.sh` nur bei `APP_ENV=production`, `dev/app-bak` entfernt |
| `v1.3.0` | GlitchTip (Server, Fehlersignale, Browser), `sentry/sentry-laravel`; Tests ohne lokalen Datei-Cache |
| `v1.4.0` | Composer-Sicherheitsupdates, dompdf 3, `email`-Regel lehnt Zeilenumbrüche ab |
| `v1.4.0` | Composer-Sicherheitsupdates, dompdf 3, `email`-Regel lehnt Zeilenumbrüche ab; PDF-Seitenzahlen und Lieferschein-Beschriftung |
Alle Tags vor dem 08.10. wurden beim Bereinigen der Historie neu erzeugt; Commit-Hashes in älteren
Notizen unter `dev/` gehören zur alten Historie.
@ -77,6 +77,8 @@ sind die alten Objekte (`.env`, Schlüssel, 10-GB-Datei) auch auf den Git-Server
`emails/exception.blade.php` prüfen, ob sonst noch genutzt. Betriebs-Alarme (`OperationalAlert`) bleiben.
- **Datenschutzerklärung**: Fehlerprotokollierung aufnehmen (User-ID, URL, Browser, Fehlermeldung;
eigener Server; Frist = Aufbewahrung in GlitchTip; berechtigtes Interesse) — neue Erklärung ist in Arbeit.
- **Passport-Schlüssel** (`storage/oauth-*.key`) standen bis 08.10. in der Git-Historie. Falls sie nicht
mit den Zugangsdaten getauscht wurden: `php artisan passport:keys --force` — alle API-Tokens werden ungültig.
- **Laravel 12**: `composer audit` meldet noch 3 Hinweise zu `laravel/framework` — Fixes gibt es nur in
12.x/13.x, Laravel 11 bekommt keine Sicherheitsupdates mehr. Stand 08.10.:
- CRLF in der `email`-Regel (hoch): Fix aus 12.60 rückportiert (`App\Support\Validation\Validator`,
@ -86,11 +88,6 @@ sind die alten Objekte (`.env`, Schlüssel, 10-GB-Datei) auch auf den Git-Server
- XSS auf der Debug-Seite (niedrig): nur mit `APP_DEBUG=true`, auf Live aus.
Das Update auf Laravel 12 ist ein eigenes Paket.
- **PDF-Seitenzahlen** (Befund beim dompdf-Update, schon vorher so): In `pdf/invoice`, `delivery`,
`credit` und `cancellation` steht das `page_script` am Anfang des `<body>` und wirkt deshalb nur auf
Seite 1 — „Seite x/y“ erscheint auf mehrseitigen Rechnungen nie. In `credit_details*` steht es am
Ende und funktioniert. Außerdem fehlt die Übersetzung `pdf.delivery_note_no` (Lieferschein zeigt den
Schlüssel).
### Composer-Sicherheitshinweise (08.10.2026)
@ -104,5 +101,14 @@ sind die alten Objekte (`.env`, Schlüssel, 10-GB-Datei) auch auf den Git-Server
laden Schriften lokal aus `public/fonts`, Bilder per URL gibt es nicht. Test: `tests/Feature/Pdf`.
- Testsuite vorher und nachher: dieselben 88 vorbestehenden Fehlschläge, keine neuen.
- **Passport-Schlüssel** (`storage/oauth-*.key`) standen bis 08.10. in der Git-Historie. Falls sie nicht
mit den Zugangsdaten getauscht wurden: `php artisan passport:keys --force` — alle API-Tokens werden ungültig.
Zwei ältere PDF-Fehler, beim Vergleich gefunden und mit behoben:
- **Seitenzahlen**: `page_script` wirkt nur auf Seiten, die beim Aufruf schon gerendert sind. In
`pdf/invoice`, `delivery`, `credit` und `cancellation` stand es am Anfang des `<body>` — „Seite x/y“
erschien deshalb nie. Jetzt am Ende wie in `credit_details`, Beschriftung übersetzt (`pdf.page`).
Gutschriften (`CreditRepository::createCreditPDF`) rendern jetzt auch mit `enable_php`, wie
Rechnungen und Gutschrift-Details.
- **Lieferschein**: zeigte `pdf.delivery_note_no.:` statt „Lieferschein-Nr.:“ (Punkt zu viel im
Schlüssel).
Tests prüfen beides für alle Vorlagen und Sprachen (`tests/Feature/Pdf/PdfPipelineTest.php`).