Hauptmenue: Gutschriften/Lieferscheine-Gesamtuebersicht (portal-scoped)

Neuer Menuepunkt 'Gutschriften' -> Seite /credit-notes mit Tabelle
aller Belege (Beleg-Nr, Art, Kunde, Vertrag, Betrag, Datum, PDF),
Suche + Pagination.

Neuer Endpoint GET /credit-notes (NICHT staff-only wie die uebrigen
Credit-Note-Endpoints): Staff sieht alle Belege aller Kunden, Portal-
Kunden nur eigene + vertretene (Vollmacht via hasAuthorization).
customerIds kommt aus dem JWT, nicht aus Query/Body -> nicht
manipulierbar. Fuer Portal wird receiptPath aus der Response entfernt
(Belege bleiben staff-only). Route requirePermission contracts:read.

Verifiziert: Staff -> alle Belege; Portal-scoped -> nur eigene, korrekt
zugeordnet.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-12 10:23:53 +02:00
co-authored by Claude Opus 4.8
parent bbe1aed230
commit 48e65be91c
9 changed files with 281 additions and 2 deletions
+4
View File
@@ -4,6 +4,10 @@ import { authenticate, requirePermission } from '../middleware/auth.js';
const router = Router();
// Gesamtübersicht aller Belege (Hauptmenü) – portal-scoped (nicht staff-only).
// VOR /:id, damit die Wurzel nicht als ID interpretiert wird.
router.get('/', authenticate, requirePermission('contracts:read'), creditNoteController.listAll);
// Nummernkreis-Verwaltung (Einstellungen). VOR /:id, damit "number-range"
// nicht als ID interpretiert wird.
router.get('/number-range', authenticate, requirePermission('settings:read'), creditNoteController.getNumberRange);