diff --git a/shop/lib/actions/email-templates.ts b/shop/lib/actions/email-templates.ts
index 209f167..0357beb 100644
--- a/shop/lib/actions/email-templates.ts
+++ b/shop/lib/actions/email-templates.ts
@@ -85,3 +85,66 @@ export function getStatusEmailTemplate(orderNumber: string, oldLabel: string, ne
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
+ }
+}
+
diff --git a/shop/lib/actions/orders.ts b/shop/lib/actions/orders.ts
index 55e7849..25aff1e 100644
--- a/shop/lib/actions/orders.ts
+++ b/shop/lib/actions/orders.ts
@@ -12,71 +12,10 @@ import { buildCustomerSnapshot, buildOrderSnapshot } from '@/lib/license-transfo
import type { Category, EndCustomer, Order, Product, Profile, WizardSelections } from '@/lib/types'
import { getProducts, getCategories } from '@/lib/actions/products'
import { validateWizardSelections } from '@/lib/actions/validation'
-import { getOrderEmailTemplate, getStatusEmailTemplate } from '@/lib/actions/email-templates'
+import { getOrderEmailTemplate, getStatusEmailTemplate, buildEmailItemsSection } from '@/lib/actions/email-templates'
// ─── Hilfsfunktionen ─────────────────────────────────────────────────────────
-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
- }
-}
/**