UX: Rechnungs-Edit-Modal status-bewusst + Storno-Button, SW by-v1075

- _openNeueRechnungModal akzeptiert jetzt status+invoice_number; je
  nach Status anderes Verhalten:
  • draft   → bearbeitbar, Stornieren + Abbrechen + Speichern
  • sent    → readonly Banner, Stornieren + Schließen
  • paid    → readonly Banner, Stornieren + Schließen
  • neu     → Abbrechen + Erstellen (kein Storno-Slot)
- Footer-Layout: Stornieren links, Abbrechen/Speichern rechts
  (justify-content:space-between → symmetrisch)
- Stornieren öffnet den existierenden _openStornoModal; das Edit-
  Modal wird durch UI.modal.open() automatisch geschlossen
- Submit-Handler ignoriert locked-Status (Schutz auch wenn Button
  irgendwie sichtbar wäre)
- Upgrades-Tab + Rechnungen-Tab geben jetzt inv.status+invoice_number
  beim Öffnen mit; Reload-Callback aus Upgrades-Tab rendert den Tab
  neu, damit nach Stornierung der gelbe Button zurück auf orange geht
This commit is contained in:
rene 2026-05-26 13:59:40 +02:00
parent 5886e1b269
commit c4a82e96fd
5 changed files with 66 additions and 18 deletions

View file

@ -101,9 +101,9 @@
</script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=1074">
<link rel="stylesheet" href="/css/layout.css?v=1074">
<link rel="stylesheet" href="/css/components.css?v=1074">
<link rel="stylesheet" href="/css/design-system.css?v=1075">
<link rel="stylesheet" href="/css/layout.css?v=1075">
<link rel="stylesheet" href="/css/components.css?v=1075">
</head>
<body>
@ -616,10 +616,10 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=1074"></script>
<script src="/js/ui.js?v=1074"></script>
<script src="/js/app.js?v=1074"></script>
<script src="/js/worlds.js?v=1074"></script>
<script src="/js/api.js?v=1075"></script>
<script src="/js/ui.js?v=1075"></script>
<script src="/js/app.js?v=1075"></script>
<script src="/js/worlds.js?v=1075"></script>
<!-- Feature-Seiten werden lazy geladen -->