# 📋 OpenCRM – Todo-Liste --- ## 🔜 Offen ### Email Log & System testen - Senden testen - Empfangen testen ### Security System testen ### Email → Vertragsdokumente Wenn eine Email einem Vertrag zugeordnet ist: - Anhänge auch in Vertragsdokumente speichern - Rechnungen wie Kündigungsdokumente behandeln ### Factory-Defaults: Export + Import von Lieferanten & Formularvorlagen **Ziel:** Einmal gepflegte Stammdaten (Anbieter, Tarife, Kündigungsfristen, Laufzeiten, PDF-Auftragsvorlagen) sollen sich exportieren und in andere Installationen oder als Factory-Default beim Initialisieren wieder einspielen lassen. **⚠️ Wichtig – Abgrenzung:** - **KEINE Kundendaten, Verträge, Dokumente, Emails, SMTP-Einstellungen o.ä.** - NUR reine Stammdaten-Kataloge ohne Bezug zu Kunden/Firma - Für komplette Backups (inkl. Kundendaten, Dokumente, Einstellungen) gibt es bereits den separaten Backup-Export **Konzept:** - Ordner: `backend/factory-defaults/` (gitignoriert für echte Firmen-Exports, aber mit `.gitkeep` und optional einem öffentlich teilbaren `seeds/`-Unterordner) Struktur: ``` backend/factory-defaults/ providers/ → providers.json (Anbieter + Tarife) contract-meta/ → cancellationPeriods.json, contractDurations.json, contractCategories.json pdf-templates/ → {templateName}.json + dazugehörige PDF-Datei ``` - **Export:** Button in Einstellungen → "Factory-Defaults exportieren" - Erstellt ZIP mit allen JSON-Dateien + PDF-Vorlagen - **Nur** Kataloge: Anbieter, Tarife, Kündigungsfristen, Laufzeiten, Vertragskategorien, PDF-Auftragsvorlagen (inkl. PDF-Dateien + Feldzuordnungen) - User entpackt das ZIP nach `backend/factory-defaults/` - **Import-Script:** `backend/scripts/seed-factory-defaults.ts` - Liest alle Dateien aus `backend/factory-defaults/` - Bei mehreren Dateien: automatisches Mergen (per unique name) - Nutzt Prisma `upsert` → idempotent, kann mehrfach ausgeführt werden - PDF-Dateien werden nach `uploads/` kopiert + Pfade in DB aktualisiert - Aufruf: `npm run seed:defaults` - **Init-DB Integration:** Script wird optional beim Setup mit ausgeführt wenn der Ordner existiert --- ## ✅ Erledigt - [x] **Geburtstag-Management-Modal in Kundenstammdaten** - Neuer Button (Cake-Icon) neben Geburtsdatum öffnet Modal - **Gruß zurücksetzen:** setzt `lastBirthdayGreetingYear` auf null zurück (fürs Debugging + Fallback) - **Gruß jetzt senden:** per Email (direkt), WhatsApp/Telegram/Signal (öffnet vorbefülltes Fenster) - Beide Aktionen mit Ja/Nein-Bestätigungsdialog (kein versehentliches Klicken) - Text respektiert Du/Sie-Einstellung des Kunden - Checkbox "Automatisch senden" mit Kanal-Dropdown (neue Felder am Customer) - Audit-Log für Reset + Send - [x] **Anrede-Verhältnis Du/Sie pro Kunde** - Neues Feld `useInformalAddress` in Stammdaten (auch bei Firmenkunden) - Default: Sie (formell) - Geburtstagsgruß im Portal nutzt die Anrede: "Du"-Kunden bekommen "Herzlichen Glückwunsch, Max!", "Sie"-Kunden "Herzlichen Glückwunsch, Herr Müller!" - Komplett konsistent auch bei nachträglichen Glückwünschen ("hattest" vs "hatten") - [x] **Geburtsdatum + Geburtsort auch bei Firmenkunden** - Felder werden jetzt unabhängig vom Kundentyp angezeigt - Ermöglicht z.B. Geburtstage für Ansprechpartner bei Firmen - [x] **Geburtstagskalender + Geburtstagsgruß-Modal** - Admin: Section im Vertrags-Cockpit mit Kunden, die in den nächsten 30 Tagen oder letzten 7 Tagen Geburtstag haben - Portal: Modal mit Gruß am Geburtstag (inkl. nachträglichem Glückwunsch bis 7 Tage danach) - Wird pro Jahr nur einmal angezeigt - [x] **Typspezifische Zusatzinfos in Vertragslisten** - Strom/Gas → "Lieferadresse: ..." - DSL/Glasfaser/Kabel → "Anschlussadresse: ..." - Mobilfunk → "Rufnummer: ..." - KFZ → "Kennzeichen: ..." - Sichtbar in Admin-Liste, Portal-Liste und Kunden-Tab - [x] **Datenschutzerklärung PDF ↔ Online-Einwilligungen synchronisieren** - PDF hochgeladen → alle 4 Consents auf GRANTED - Haken entfernt im Portal → PDF löschen + Tabs sperren - Entsperrung nur durch alle Haken oder neues PDF - [x] **Zweitarif-Zähler (HT/NT)** bei Strom + Verbrauchsberechnung - [x] **Datumsformate vereinheitlichen** (01.01.2026 statt 1.1.2026) - [x] **Audit-Log aussagekräftig** (Vorher/Nachher bei allen Änderungen) - [x] **Impressum + Website-Datenschutzerklärung** im Kundenportal - Editor in Einstellungen - Vorschlagstexte - [x] **Consent-Bestätigungs-Flow per Email** - Alle Hebel müssen gesetzt sein - Bestätigungsbutton + Bestätigungsemail - [x] **Vertragsdokumente-Upload** (Auftragsformular, Lieferbestätigung, Vertragsunterlagen als PDF/PNG) - [x] **Bug: Stressfrei-Email im Auftragsgenerator** (funktioniert jetzt im Vertrag) - [x] **PDF-Auftragsvorlagen-System** - Template-Editor in Einstellungen - PDF hochladen, Formularfelder automatisch auslesen - CRM-Felder zuordnen (visuell mit Vorschau) - Seitenweise Sortierung der Felder - Dynamische Rufnummern-Felder mit Vorwahl-Extraktion - Nicht zugeordnete Felder bleiben editierbar - Auftrag generieren aus Vertragsdaten (Button im Vertrags-Detail) - [x] **Eigentümer-Verwaltung** - An Adresse gehängt (Firma, Vorname, Nachname, Anschrift, Kontakt) - Fallback auf Kundendaten wenn leer - Nur bei Liefer-/Meldeadressen (nicht Rechnung) - Namens-Kombinationen (Firma + Vorname + Nachname etc.) - [x] **Gruppenauswahl Liefer-/Rechnungs-/Eigentümer-Adresse** im Auftragsgenerator - [x] **Objekttyp + Lage + Lage des Anschlusses** bei Festnetz-Verträgen (DSL/Glasfaser/Kabel) - [x] **Bankverbindung-Fallback** im PDF-Generator (neueste aktive Bankverbindung des Kunden)