Gutschriften Phase 3b/1: Gutschrift-PDF (pdfkit)

PDF-Erzeugung fuer Gutschriften mit Firmenstammdaten als Absender,
Empfaenger (Kunde+Adresse), Netto/USt/Brutto (bzw. ohne USt-Ausweis),
Sachwert/'Ware erhalten' bzw. Ueberweisungs-Bankverbindung,
Unterschriftsblock, Firmen-Fusszeile.

Endpoint POST /credit-notes/:id/pdf; 'PDF'-Button in CreditNotesSection
(erzeugen + im Tab oeffnen bzw. vorhandenes ansehen). PDF-Pfad wird bei
inhaltlicher Aenderung geleert -> Neu-Erzeugung. Download ueber
fileDownload (credit-notes subDir, Vertrags-Ownership).

Lokal verifiziert (valides %PDF, korrekte Betraege).

ZUGFeRD-XML-Embedding (PDF/A-3, EN 16931) folgt als Teil 2 mit
Validator-Pruefung.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-06 13:32:34 +02:00
co-authored by Claude Opus 4.8
parent 2c705272ea
commit 642fb05c76
7 changed files with 225 additions and 6 deletions
+1
View File
@@ -10,6 +10,7 @@ router.get('/number-range', authenticate, requirePermission('settings:read'), cr
router.put('/number-range', authenticate, requirePermission('settings:update'), creditNoteController.updateNumberRange);
// Einzelne Gutschrift
router.post('/:id/pdf', authenticate, requirePermission('contracts:update'), creditNoteController.generatePdf);
router.get('/:id', authenticate, requirePermission('contracts:read'), creditNoteController.getOne);
router.put('/:id', authenticate, requirePermission('contracts:update'), creditNoteController.update);
router.delete('/:id', authenticate, requirePermission('contracts:delete'), creditNoteController.remove);