v1.35: Mietvertragsmodul (Entwurf-PDF, Versand, Unterschrift, Mieteranlage)

This commit is contained in:
2026-10-04 19:39:22 +02:00
parent c82e399a29
commit 9e74813e22
12 changed files with 1334 additions and 2 deletions
+33
View File
@@ -189,6 +189,39 @@ tar -czf mp-dist.tar.gz -C dist .
## 8. Verlauf / offene Punkte
**Erledigt 04.10. (v1.35):** Mietvertragsmodul (Verwaltung, Navigation
„Mietverträge", Admin-only). Workflow: anlegen → Entwurf-PDF → Versand an
zukünftigen Mieter → Upload unterschriebenen Vertrag → manuell aktivieren
(Mieterkonto wird angelegt, Wohnung als vermietet geführt, Zugangsdaten
per E-Mail). DB (db.js): einstellungen (Schlüssel-Wert, Vermieterdaten:
vermieter_name/strasse/hausnummer/plz/ort/telefon/email/bankname/iban) +
mietvertraege (Status entwurf|versendet|unterschrieben|aktiv, Dokument-
und Benutzerbezüge als TEXT ohne harten FK, unit_id mit FK). Server:
server/src/vertrag.js (pdfkit-Mustervertrag: Parteien, §1 Mietobjekt aus
Bestand, §2 Mietzeit, §3 Miete/Nebenkosten/Zahlung, §4 Kaution ≤3 Nettokalt-
mieten, §5 Gebrauch/Instandhaltung/Schönheitsreparaturen/Rauchwarnmelder,
§6 Schlussbestimmungen, Unterschriftsfelder; erzeugeVertragsPdf legt/ersetzt
Dokument „Mietvertrag" der Wohnung). Endpunkte (alle adminOnly): CRUD
/api/mietvertraege[n], POST /:id/entwurf, /:id/versenden (PDF-Anhang via
mail.sendeMail + CC Verwaltung, Status→versendet), /:id/unterschrift
(multer single('file'), Dokument d-mvu-<id>, Status→unterschrieben),
/:id/aktivieren (Benutzername aus Vor-/Nachname [Umlaute→ae/oe/ue, unique
mit Zähler], Passwort sha256("0815"), users+einheit_id+telefon anlegen,
units.tenant/status setzen, Mail mit Zugangsdaten, Status→aktiv),
GET/PUT /api/einstellungen (Whitelist vermieter_*). Bootstrap liefert
mietvertraege + einstellungen (via vermieterDaten, kurze Keys).
DELETE /api/documents löst Verweise in mietvertraege; Wohnungs-Blockerliste
um mietvertraege erweitert. Frontend: types (Mietvertrag/MietvertragForm/
VermieterDaten), store (Bootstrap-Felder + 8 Aktionen, apiPut neu in
lib/api.ts), Seite src/pages/Mietvertraege.tsx (Listenansicht Standard +
Suche, Vermieterdaten-Dialog, Vertrags-Dialog mit Miet-Vorbefüllung aus
der Wohnung, Aktionen: Entwurf/PdfLightbox, Senden, Upload, Aktivieren
mit Confirm + Benutzername-Alert, Löschen; Warnbanner bei unvollständigen
Vermieterdaten), Anleitung neuer Abschnitt „Mietverträge".
E2E: Vertrag anlegen→Entwurf-PDF (Vorschau lädt)→versenden (CC-Verwaltung
in Mail-API-Log)→Unterschrift-Upload (Test-PDF)→aktivieren (Benutzer
vorhanden, Wohnung vermietet, Login mit 0815 möglich)→Aufräumen.
**Erledigt 04.10. (v1.34):** SparkReceipt-Zuordnung nutzt Mietobjekt-Adresse.
Problem: auf eingehenden Rechnungen steht als Adresse der Rechnungsempfänger
(Rott 250 = eigene Verwaltungsadresse, als Haus gepflegt) – die sekundäre