Rechnungsanalyse: Termin landet im Akquise-Ticket und damit im Planboard
Der im Gespraech vereinbarte Termin wird mit einem Klick am Akquise-Ticket
eingetragen (startDate/startTime/endTime/assignedTo/assignedName) - genau die
Felder, die das WOMS-Planboard liest. Kein zweiter Datensatz, damit Termin und
Ticket nicht auseinanderlaufen koennen.
- server/services/appointments.js: Ticket des Kunden finden, Termin schreiben,
belegte Zeiten lesen; Umrechnung ISO <-> "dd.mm.yyyy" und "hh:mm" <-> "hhmm"
- Routen GET /api/portal-admin/appointments und
POST /api/portal-admin/customers/:id/appointment
- Bereits vergebene Zeiten sind in der Terminauswahl gesperrt ("belegt"), der
eigene Termin bleibt waehlbar; steht am Ticket schon einer, ist er beim
Oeffnen vorausgewaehlt
- Zeiten, die jemand von Hand in WOMS gesetzt hat, tauchen mit auf
Sicherung gegen Datenverlust: bevorzugt wird das Akquise-Ticket. Gibt es keins,
kommt nur ein anderes offenes Ticket OHNE Datum in Frage - bei Webpage- und
Projekttickets bedeutet startDate den Projektstart, den wuerden wir sonst still
ueberschreiben. Die Rueckmeldung nennt immer Nummer und Art des Tickets.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -297,6 +297,16 @@ textarea.kal-input { min-height: 84px; }
|
||||
background: var(--color-neutral-100); color: var(--color-neutral-700);
|
||||
}
|
||||
.term-status.fixed { background: var(--color-accent-2-100); color: var(--color-accent-2-800); }
|
||||
.term-save { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 14px; }
|
||||
.term-save button:disabled { opacity: 0.45; cursor: not-allowed; }
|
||||
.term-save-hint { font-size: 13px; color: var(--color-neutral-600); flex: 1; min-width: 200px; text-wrap: pretty; }
|
||||
.term-save-hint.done { color: var(--color-accent-2-700); font-weight: 700; }
|
||||
.term-save-hint.error { color: var(--color-accent-800); font-weight: 700; }
|
||||
.slot:disabled { opacity: 0.4; cursor: not-allowed; text-decoration: line-through; }
|
||||
.slot.taken-own {
|
||||
border-color: var(--color-accent-2-500); background: var(--color-accent-2-100);
|
||||
color: var(--color-accent-2-800); text-decoration: none; opacity: 1;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ Kundenportal --- */
|
||||
.portal-box {
|
||||
|
||||
Reference in New Issue
Block a user