Tickets: Arbeitsblatt-Folgen und Zeilen-Logik als getestete Lib (Akquise-Ergebnis, Summen, Abo-Regel)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
32746727ed
commit
9fec381056
4 files changed
+192
No files matched your search
@@ -0,0 +1,32 @@
|
||||
/* Folgen eines neuen Arbeitsblatts (bisher TicketCard.handleCreateWorksheet).
|
||||
Kennt kein Appwrite: die Seite reicht die Schreibzugriffe herein. */
|
||||
|
||||
// Akquise-Automatik: das Ergebnis im Arbeitsblatt steuert den Kundenstatus.
|
||||
// "customer" = Zugesagt, "lost" = Abgesagt, sonst keine Aenderung.
|
||||
export function acquisitionOutcome(ticket, newStatus) {
|
||||
if (ticket?.type !== 'Akquise' || !ticket.customerId) return null
|
||||
if (newStatus === 'Zugesagt') return 'customer'
|
||||
if (newStatus === 'Abgesagt') return 'lost'
|
||||
return null
|
||||
}
|
||||
|
||||
/* 1. Arbeitsblatt anlegen. 2. Bei Erfolg den Ticket-Status nachziehen, wenn er abweicht.
|
||||
3. Bei Akquise-Tickets den Kundenstatus setzen (Fehler werden verschluckt).
|
||||
Rueckgabe ist das Ergebnis von createWorksheet. */
|
||||
export async function createWorksheetFlow({ ticket, worksheetData, user, createWorksheet, updateTicket, updateCustomer, now = () => new Date() }) {
|
||||
const result = await createWorksheet(worksheetData, user)
|
||||
if (!result?.success) return result
|
||||
|
||||
const newStatus = worksheetData?.newStatus
|
||||
if (newStatus !== ticket.status) {
|
||||
await updateTicket(ticket.$id, { status: newStatus })
|
||||
}
|
||||
|
||||
const customerStatus = acquisitionOutcome(ticket, newStatus)
|
||||
if (customerStatus) {
|
||||
try {
|
||||
await updateCustomer(ticket.customerId, { customerStatus, updatedAt: now().toISOString() })
|
||||
} catch { /* nicht kritisch */ }
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in new issue
Block a user