interface EmailDetails { orderNumber: string formattedDate: string customerCompanyName: string totalDetailsText: string totalDetailsHtml: string itemsDetailsText?: string itemsDetailsHtml?: string partnerCompanyName?: string partnerUserName?: string partnerUserEmail?: string } export function getOrderEmailTemplate( details: EmailDetails, siteUrl: string, isUpdate: boolean = false, primaryColor: string = '#2563eb' ) { const title = isUpdate ? 'Anfrage geändert' : 'Anfrage erhalten' const intro = isUpdate ? `Deine Anfrage ${details.orderNumber} wurde aktualisiert.` : `Deine Anfrage ${details.orderNumber} ist bei uns eingegangen und wird bearbeitet.` let partnerText = '' let partnerHtml = '' if (details.partnerCompanyName || details.partnerUserName || details.partnerUserEmail) { partnerText = `\nPartner-Informationen:` if (details.partnerCompanyName) partnerText += `\n- Firma: ${details.partnerCompanyName}` if (details.partnerUserName) partnerText += `\n- Benutzer: ${details.partnerUserName}` if (details.partnerUserEmail) partnerText += `\n- E-Mail: ${details.partnerUserEmail}` partnerText += `\n` partnerHtml = ` Partner-Informationen: ` if (details.partnerCompanyName) { partnerHtml += ` Firma: ${details.partnerCompanyName} ` } if (details.partnerUserName) { partnerHtml += ` Benutzer: ${details.partnerUserName} ` } if (details.partnerUserEmail) { partnerHtml += ` E-Mail: ${details.partnerUserEmail} ` } } const text = `Hallo,\n\n${isUpdate ? 'Deine Anfrage wurde aktualisiert.' : 'Deine Anfrage ist bei uns eingegangen.'}\n\nDetails:\n- Nummer: ${details.orderNumber}\n- Datum: ${details.formattedDate}\n- Kunde: ${details.customerCompanyName}\n${partnerText}${details.itemsDetailsText || ''}\n${details.totalDetailsText}\n\nDeine Anfragebestätigung findest du im Anhang als PDF.\n\nPDF-Link: ${siteUrl}/api/orders/${details.orderNumber}/download\n\nViele Grüße,\nDein CASPOS Team` const html = `

${title}

Hallo,

${intro}

Details

${partnerHtml} ${details.itemsDetailsHtml || ''} ${details.totalDetailsHtml}
Nummer: ${details.orderNumber}
Datum: ${details.formattedDate}
Kunde: ${details.customerCompanyName}

Die Bestätigung liegt als PDF im Anhang.

Anfragebestätigung PDF herunterladen

Viele Grüße,
Dein CASPOS Team

` return { text, html } } export function getStatusEmailTemplate(orderNumber: string, oldLabel: string, newLabel: string, primaryColor: string = '#2563eb') { const text = `Hallo,\n\nder Status deiner Anfrage ${orderNumber} hat sich geändert.\n\nStatus: ${newLabel} (vorher: ${oldLabel})\n\nViele Grüße,\nDein CASPOS Team` const html = `

Statusänderung

Hallo,

der Status deiner Anfrage ${orderNumber} wurde aktualisiert.

Nummer: ${orderNumber}
Vorher: ${oldLabel}
Aktuell: ${newLabel}

Viele Grüße,
Dein CASPOS Team

` return { text, html } } export function buildEmailItemsSection(items: any[]) { const groupedItems: { [key: string]: any[] } = {} items.forEach((item: any) => { const devName = item.device_name || 'Kasse 1' if (!groupedItems[devName]) { groupedItems[devName] = [] } groupedItems[devName].push(item) }) let itemsDetailsText = '\nKassen-Konfigurationen:' let itemsDetailsHtml = ` Kassen-Konfigurationen: ` Object.entries(groupedItems).forEach(([deviceName, devItems]) => { itemsDetailsText += `\n- Kasse: ${deviceName}` itemsDetailsHtml += ` Kasse: ${deviceName} ` devItems.forEach((item: any) => { itemsDetailsText += `\n * ${item.product_name} (${item.category_name}): ${item.base_price.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })} ${item.billing_interval === 'one_time' ? 'einmalig' : 'mtl.'}` itemsDetailsHtml += ` ${item.product_name} (${item.category_name}) ${item.base_price.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })} ${item.billing_interval === 'one_time' ? 'einmalig' : 'mtl.'} ` item.selected_modules?.forEach((mod: any) => { const qty = mod.quantity || 1 const price = mod.total_price ?? (mod.price * qty) itemsDetailsText += `\n + ${mod.module_name} ${qty > 1 ? `(x${qty})` : ''}: +${price.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })} mtl.` itemsDetailsHtml += ` + ${mod.module_name} ${qty > 1 ? `(x${qty})` : ''} +${price.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })} mtl. ` }) }) }) return { text: itemsDetailsText + '\n', html: itemsDetailsHtml } }