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:
@@ -14,6 +14,7 @@ import CustomerList from './pages/customers/CustomerList';
|
||||
import CustomerDetail from './pages/customers/CustomerDetail';
|
||||
import CustomerForm from './pages/customers/CustomerForm';
|
||||
import ContractList from './pages/contracts/ContractList';
|
||||
import CreditNotesOverview from './pages/CreditNotesOverview';
|
||||
import ContractDetail from './pages/contracts/ContractDetail';
|
||||
import ContractForm from './pages/contracts/ContractForm';
|
||||
import ContractCockpit from './pages/contracts/ContractCockpit';
|
||||
@@ -200,6 +201,7 @@ function App() {
|
||||
|
||||
{/* Contracts */}
|
||||
<Route path="contracts" element={<PortalConsentGate><ContractList /></PortalConsentGate>} />
|
||||
<Route path="credit-notes" element={<PortalConsentGate><CreditNotesOverview /></PortalConsentGate>} />
|
||||
<Route path="contracts/cockpit" element={<ContractCockpit />} />
|
||||
<Route path="contracts/new" element={<ContractForm />} />
|
||||
<Route path="contracts/:id" element={<PortalConsentGate><ContractDetail /></PortalConsentGate>} />
|
||||
|
||||
Reference in New Issue
Block a user