Mailer: Versandbenachrichtigung bei Board-Versand (auch manuelle Aufträge)

Der Wechsel auf production_status='versendet' im Produktions-Board löst jetzt die
„versendet"-Vorlage (Versandbenachrichtigung) an den Kunden aus – für alle Aufträge
inkl. manuelle. Nur beim ersten Versand (Guard über versandt_am), keine Doppel-Mail.
Bestellbestätigung bleibt bei manuellen Aufträgen (source=operator) unterdrückt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
s4luorth
2026-09-18 12:30:33 +02:00
parent 71a5d882aa
commit 4d60a5d1da

View File

@@ -245,11 +245,18 @@ export default (register, { services, getSchema, logger }) => {
});
register.action('orders.items.update', async ({ keys, payload }) => {
if (!payload || payload.status === undefined) return;
const status = payload.status;
if (!payload) return;
// Kaufmännischer Status (bezahlt/versendet/…) → passende Vorlage.
// ODER Produktionsstatus „versendet" (Board) → Versandbenachrichtigung – auch
// für manuelle Aufträge; nur beim ERSTEN Versand (erkennbar am gleichzeitig
// gesetzten versandt_am), damit keine Doppel-Mail entsteht.
let mailKey = null;
if (payload.status !== undefined) mailKey = payload.status;
else if (payload.production_status === 'versendet' && payload.versandt_am) mailKey = 'versendet';
if (!mailKey) return;
for (const id of keys || []) {
try { await sendForOrder(id, status, { status: STATUS_LABEL[status] || status }); }
catch (e) { logger.warn(`[skrift-mailer] status ${status}: ${e.message}`); }
try { await sendForOrder(id, mailKey, { status: STATUS_LABEL[mailKey] || mailKey }); }
catch (e) { logger.warn(`[skrift-mailer] status ${mailKey}: ${e.message}`); }
}
});