Gutschriften Phase 2b: Vertrags-UI + Beleg-Upload + Nummernkreis-Seite

Frontend:
- CreditNotesSection im Vertragsdetail (eigene Section wie Rechnungen):
  Liste + Anlegen/Bearbeiten (Modal). Geld/Sachwert mit passenden
  Feldern, USt-Block mit Live-Vorschau Netto/USt/Brutto, Datum, Ort,
  Unterschrift, 'Ware erhalten'. Loeschen mit Bestaetigung.
- Ueberweisungsbeleg-Upload/-Anzeige/-Entfernen (nur Geld-Gutschriften).
- Nummernkreis-Verwaltung als Settings-Seite mit Live-Vorschau der
  naechsten Nummer.
- Frontend-Typen (CreditNote etc.) + creditNoteApi.

Backend:
- Ueberweisungsbeleg-Upload-Route /upload/credit-notes/:id/receipt
  (+ DELETE), Portal geblockt, Ownership ueber Vertrag.
- fileDownload: Ownership-Aufloesung fuer credit-note-receipts +
  credit-notes (Vertrag) ergaenzt.

Als Section statt Tab-Balken, weil die Vertragsansicht kartenbasiert
ist (kein bestehender Tab-Balken); spaeter umbaubar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-06 13:15:02 +02:00
co-authored by Claude Opus 4.8
parent 3580c51cb1
commit 9e38cb32f0
10 changed files with 804 additions and 6 deletions
+11 -4
View File
@@ -121,10 +121,17 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
wird abgeleitet: Firmenkunde ohne USt-Befreiung → USt-relevant an, sonst
aus. Jede Gutschrift speichert ihren Snapshot → späterer Statuswechsel
ändert bestehende Gutschriften nicht. USt-Default „aus Kundentyp ableiten".
- **Offen:** Phase 2b (Vertrag-Tab „Gutschriften" + Beleg-Upload + Nummernkreis-UI),
Phase 3 (PDF + ZUGFeRD/PDF-A3, muss gegen ZUGFeRD-Validator geprüft
werden). USt-Einordnung (Vermittlung vs. Abschlussbonus) mit Steuerberater
klären Modell deckt beide über `vatRelevant` ab.
- **Phase 2b (erledigt):** `CreditNotesSection` im Vertragsdetail (eigene
Section wie Rechnungen die Vertragsansicht ist kartenbasiert, kein
echter Tab-Balken; ggf. später umbaubar): Liste + Anlegen/Bearbeiten
(Modal, Geld/Sachwert, USt-Block mit Live-Netto/USt/Brutto, Datum, Ort,
Unterschrift, „Ware erhalten"), Überweisungsbeleg-Upload (nur GELD, über
`/upload/credit-notes/:id/receipt`, fileDownload-Ownership ergänzt).
Nummernkreis-Verwaltung als Settings-Seite `/settings/credit-note-number-
range` mit Live-Vorschau. Frontend-Typen + `creditNoteApi`.
- **Offen:** Phase 3 (PDF + ZUGFeRD/PDF-A3, muss gegen ZUGFeRD-Validator
geprüft werden). USt-Einordnung (Vermittlung vs. Abschlussbonus) mit
Steuerberater klären Modell deckt beide über `vatRelevant` ab.
- [x] **📄➕ Vertrag kopieren (neuer eigenständiger Vertrag aus Vorlage)** (2026-08-03)
- „Kopieren"-Button in der Vertragsansicht (`contracts:create`) → öffnet das