feat: vollständige Firmendaten (Adresse, Abrechnung) bei Firmenanlage

Bei Firmenanlage (Registrierung + Betreiber-Firmenanlage) müssen jetzt
Adresse (Straße, PLZ, Ort, Land) und Abrechnungsdaten (Rechnungsemail,
optional USt-IdNr.) erfasst werden, nicht nur der Firmenname (Migration
0023). USt-IdNr. bewusst optional - Kleinunternehmer nach §19 UStG
haben keine. Neue Seite /verwaltung/firma (admin-only) zum Einsehen/
Nachtragen für bestehende Firmen. store.CreateAccount nimmt jetzt ein
AccountInput statt nur einen Namen entgegen (Signaturänderung betrifft
~20 Testaufrufe, mechanisch umgestellt). register.html/
betreiber_account_neu.html auf form-card/form-grid umgestellt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
noroot
2026-09-01 11:36:05 +02:00
parent fa5e68c892
commit 7db4707bc5
24 changed files with 620 additions and 68 deletions

View File

@@ -679,6 +679,45 @@ Zeile mit dem aktuellen Stand, eine neu registrierte Firma ohne eigene
---
## Firmendaten: Adresse und Abrechnung (2026-09-01, Migration 0023)
Auf Nutzerwunsch: bei jeder Firmenanlage (öffentliche Registrierung
`POST /register` UND Betreiber-Firmenanlage `POST /betreiber/accounts`)
müssen jetzt vollständige Firmendaten erfasst werden, nicht nur der
Name. `account` bekommt sechs neue Spalten: `strasse`, `plz`, `ort`,
`land` (Adresse) sowie `ust_id`, `rechnungsemail` (Abrechnung).
Pflichtfelder bei Neuanlage: Name, Straße, PLZ, Ort, Land,
Rechnungsemail. **Bewusst optional:** USt-IdNr. — Kleinunternehmer nach
§19 UStG haben keine, eine Pflichtangabe wäre hier fachlich falsch.
`store.AccountInput` bündelt diese Felder für `CreateAccount` (Signatur
geändert von `(ctx, name string)` auf `(ctx, AccountInput)` — betrifft
~20 Testaufrufe, mechanisch auf `AccountInput{Name: "..."}` umgestellt)
und die neue Methode `UpdateAccountDetails` (Name + alle Firmendaten in
einem Aufruf, getrennt von der bestehenden `UpdateAccount`, die nur den
Namen ändert — z. B. für die schnelle Tippfehlerkorrektur durch den
Betreiber). Migrationsspalten sind `NOT NULL DEFAULT ''` statt einer
harten Pflicht ohne Default: bestehende, vor dieser Migration angelegte
Accounts haben diese Daten schlicht noch nicht, die Migration darf sie
nicht blockieren — die Pflicht gilt nur auf Anwendungsebene für NEUE
Firmen.
**Neue Seite für bestehende Firmen:** `GET/POST /verwaltung/firma`
(Ebene 4, admin-only, eigener Nav-Punkt "Firmendaten") — zum Einsehen
und Nachtragen/Korrigieren der eigenen Adress-/Abrechnungsdaten, auch
für Accounts, die vor dieser Migration entstanden sind und die Felder
sonst dauerhaft leer hätten. `register.html`/`betreiber_account_neu.html`
wurden dabei auf das `.form-card`/`.form-section`/`.form-grid`-Muster
umgestellt (vorher unstylte Rohformulare) — bei sieben-plus Feldern
sonst unübersichtlich.
Live end-to-end verifiziert: beide Anlage-Wege (Registrierung UND
Betreiber-Firmenanlage) speichern alle Felder korrekt, die neue
Firmendaten-Seite zeigt den aktuellen Stand vorausgefüllt und
Änderungen werden korrekt persistiert.
---
## Row-Level-Security (2026-09-01, Migration 0021)
**Ausgangslage:** RLS-Policies wirken nie bei Postgres-Superusern, und