From 81d84e7eb00002dd291c60411117ec07e8247f91 Mon Sep 17 00:00:00 2001 From: Thomas Reitz Date: Tue, 10 Mar 2026 22:21:50 +0100 Subject: [PATCH] docs(crm): document Lexware Office frontend integration Co-Authored-By: Claude Opus 4.6 --- docs/INSIGHT-CRM.md | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/docs/INSIGHT-CRM.md b/docs/INSIGHT-CRM.md index a89aab7..5b8e6f6 100644 --- a/docs/INSIGHT-CRM.md +++ b/docs/INSIGHT-CRM.md @@ -574,4 +574,53 @@ interface LexwareVoucher { --- +## 2026-03-10 | Frontend: Lexware Office Integration UI implementiert + +**Commit:** `2381409` (feature/crm-service) +**Status:** Deployed auf insight-dev-01 + +### Was wurde gemacht? + +Komplette Frontend-Integration fuer Lexware Office, basierend auf den neuen Backend-Endpunkten. + +### Neue Dateien + +| Datei | Beschreibung | +|-------|--------------| +| `src/crm/lexware/LexwareSection.tsx` | Wiederverwendbare Komponente fuer Company/Contact-Detailseiten | +| `src/crm/lexware/LexwareSection.module.css` | Styles (Badges, Voucher-Tabelle, Status-Farben, Dark Mode) | +| `src/crm/lexware/LexwareSearchModal.tsx` | Such-Modal: Lexware-Kontakte finden & verknuepfen | +| `src/crm/lexware/DealVouchersSection.tsx` | Belege-Sektion auf Deal-Detailseite mit Link/Unlink | + +### Geaenderte Dateien + +| Datei | Aenderung | +|-------|-----------| +| `src/crm/types.ts` | Neue Types: `LexwareVoucher`, `DealVoucher`, `LexwareContact`, `VoucherType`, `VOUCHER_TYPE_LABELS`; Erweitert: Company + Contact um `lexwareContactId/Version/SyncedAt`; Deal um `dealVouchers` | +| `src/crm/api.ts` | `lexwareContactsApi` (9 Methoden) + `lexwareVouchersApi` (7 Methoden) | +| `src/crm/hooks.ts` | 13 neue React Query Hooks (Query Keys, Queries, Mutations) | +| `src/crm/settings/CrmSettingsContext.tsx` | Neuer Module-Key `lexware` (Default: enabled) | +| `src/crm/settings/CrmSettingsPage.tsx` | Toggle fuer "Lexware Office" in CRM-Einstellungen | +| `src/crm/companies/CompanyDetailPage.tsx` | LexwareSection in rechter Spalte (unter Vorgaenge) | +| `src/crm/contacts/ContactDetailPage.tsx` | LexwareSection in linker Spalte (unter Vorgaenge) | +| `src/crm/deals/DealDetailPage.tsx` | DealVouchersSection nach Info-Card | + +### Features + +1. **Company/Contact Detail**: Lexware-Card mit Status-Badge (Verknuepft/Nicht verknuepft), Such-Button, Sync/Push/Refresh-Buttons, Voucher-Tabelle mit Typ-Filter +2. **Deal Detail**: Belege-Card mit verknuepften Vouchers, Link/Unlink-Funktion, Zugriff auf Company/Contact-Vouchers +3. **Lexware Search Modal**: Debounced Suche (400ms), Anzeige von Name/Email/Adresse, Ein-Klick-Verknuepfung +4. **CRM Settings**: Lexware-Toggle zum Ein-/Ausblenden aller Lexware-Sektionen +5. **Voucher-Tabelle**: Typ-Badges (farbig pro VoucherType), Status-Highlighting, Waehrungs-Formatierung, Deep-Link zu Lexware + +### Hinweise fuer Backend + +- Alle 16 Endpunkte sind im Frontend verdrahtet +- Bei `lexwareContactId === null` zeigt die UI den "Suchen & Verknuepfen"-Button +- Vouchers werden erst geladen wenn Entity verknuepft ist +- `VOUCHER_TYPE_LABELS`: QUOTATION=Angebot, ORDER_CONFIRMATION=Auftragsbestaetigung, INVOICE=Rechnung, CREDIT_NOTE=Gutschrift +- Die CRM-Einstellung "Lexware Office" kann die gesamte Integration per Toggle ausblenden + +--- + *Bitte neue Eintraege unten anfuegen. Format: `## YYYY-MM-DD | Absender: Betreff`*