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>
25 lines
1.5 KiB
TypeScript
25 lines
1.5 KiB
TypeScript
import { Router } from 'express';
|
||
import * as creditNoteController from '../controllers/creditNote.controller.js';
|
||
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);
|
||
router.put('/number-range', authenticate, requirePermission('settings:update'), creditNoteController.updateNumberRange);
|
||
router.get('/delivery-note-number-range', authenticate, requirePermission('settings:read'), creditNoteController.getDeliveryNoteNumberRange);
|
||
router.put('/delivery-note-number-range', authenticate, requirePermission('settings:update'), creditNoteController.updateDeliveryNoteNumberRange);
|
||
|
||
// 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);
|
||
|
||
export default router;
|