From b197660ac87632fbde153bf4b6c71b50da2152a9 Mon Sep 17 00:00:00 2001 From: Thomas Reitz Date: Fri, 13 Mar 2026 18:33:33 +0100 Subject: [PATCH] =?UTF-8?q?feat(crm):=20Dediziertes=20Projektanfrage-Formu?= =?UTF-8?q?lar=20+=20Button=20in=20Vorg=C3=A4nge-Liste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ProjectRequestFormModal: Eigenständiges Formular mit Projektdetails oben (Beschreibung, Auslastung/Start, Laufzeit/Vorort-Anteil, Stundensätze) und Standard-Vorgangsdaten darunter (Titel, Pipeline/Stage, Kontakt, etc.) Auto-Select bei genau einem isProjectType-Typ; Warnung wenn nicht konfiguriert - DealsPage: Neuer outlined Button "Neue Projektanfrage" neben "Neuer Vorgang" Co-Authored-By: Claude Sonnet 4.6 --- Summarize.md | 8 + packages/frontend/src/crm/deals/DealsPage.tsx | 24 + .../src/crm/deals/ProjectRequestFormModal.tsx | 623 ++++++++++++++++++ 3 files changed, 655 insertions(+) create mode 100644 packages/frontend/src/crm/deals/ProjectRequestFormModal.tsx diff --git a/Summarize.md b/Summarize.md index 0db2966..0767f26 100644 --- a/Summarize.md +++ b/Summarize.md @@ -6,6 +6,14 @@ --- +### Aenderungen 2026-03-13 (10): Dediziertes Projektanfrage-Formular + Button in Vorgänge-Liste + +#### Frontend +- `crm/deals/ProjectRequestFormModal.tsx` — Neues dediziertes Modal "Neue Projektanfrage": Projektdetails-Sektion oben (Beschreibung, Auslastung/Start, Laufzeit/Vorort-Anteil, Stundensätze), darunter Vorgangsdaten (Titel, Pipeline/Stage, Kontakt, Unternehmen, Volumen/Abschluss, Notizen); Auto-Select bei genau einem isProjectType-Typ; Warnung wenn kein Typ konfiguriert; Submit-Button disabled bei fehlendem Typ +- `crm/deals/DealsPage.tsx` — Zweiter Button "Neue Projektanfrage" (outlined, primary) neben "Neuer Vorgang"; `isProjectRequestOpen` State; `ProjectRequestFormModal` eingebunden + +--- + ### Aenderungen 2026-03-13 (9): Projektanfrage-Vorgangstyp (isProjectType + ProjectRequestDetails) #### Backend (crm-service) diff --git a/packages/frontend/src/crm/deals/DealsPage.tsx b/packages/frontend/src/crm/deals/DealsPage.tsx index ac3a682..cc82741 100644 --- a/packages/frontend/src/crm/deals/DealsPage.tsx +++ b/packages/frontend/src/crm/deals/DealsPage.tsx @@ -3,6 +3,7 @@ import { useNavigate } from 'react-router-dom'; import { Modal } from '../../components/Modal'; import { useDeals, useDeleteDeal, usePipelines } from '../hooks'; import { DealFormModal } from './DealFormModal'; +import { ProjectRequestFormModal } from './ProjectRequestFormModal'; import type { Deal, DealStatus, DealsQueryParams } from '../types'; import styles from './DealsPage.module.css'; @@ -47,6 +48,7 @@ export function DealsPage() { const [pipelineFilter, setPipelineFilter] = useState(''); const [stageFilter, setStageFilter] = useState(''); const [isCreateOpen, setCreateOpen] = useState(false); + const [isProjectRequestOpen, setProjectRequestOpen] = useState(false); const [editingDeal, setEditingDeal] = useState(null); const [deletingDeal, setDeletingDeal] = useState(null); @@ -118,6 +120,21 @@ export function DealsPage() { > {pagination?.total ?? 0} Vorgänge gesamt +