/* Folgen eines neuen Arbeitsblatts. Kennt kein Appwrite: die Seite reicht die Schreibzugriffe herein. */ import { kundenartGesetzt } from './kundenFelder' export const KUNDENART_ZUGESAGT_HINWEIS = 'Das Arbeitsblatt ist gespeichert, der Lead wurde aber noch nicht zum festen Kunden gemacht: Die Kundenart fehlt. Lege sie beim Kunden unter „Rechnungsdaten“ fest und wähle dann „Zum festen Kunden machen“.' // 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 } // Ist die Kundenart des Kunden gesetzt? Fail-closed: nicht ladbar, null oder ohne getCustomer heisst "nicht gesetzt". async function kundenartDesKunden(getCustomer, customerId) { try { const doc = await getCustomer?.(customerId) return kundenartGesetzt(doc?.kundenart) } catch { return false } } /* 1. Arbeitsblatt anlegen. 2. Bei Erfolg den Ticket-Status nachziehen, wenn er abweicht. 3. Bei Akquise-Tickets den Kundenstatus setzen (Fehler werden verschluckt). "Zugesagt" stuft den Lead nur hoch, wenn seine Kundenart gesetzt ist; sonst bleiben Blatt und Ticketstatus, der Lead bleibt Lead und das Ergebnis traegt einen Hinweis. Rueckgabe ist das Ergebnis von createWorksheet (ggf. mit hinweis). */ export async function createWorksheetFlow({ ticket, worksheetData, user, createWorksheet, updateTicket, updateCustomer, getCustomer, 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 === 'customer' && !(await kundenartDesKunden(getCustomer, ticket.customerId))) { return { ...result, hinweis: KUNDENART_ZUGESAGT_HINWEIS } } if (customerStatus) { try { await updateCustomer(ticket.customerId, { customerStatus, updatedAt: now().toISOString() }) } catch { /* nicht kritisch */ } } return result }