From 1f98aa41966e6eb7623338451635cdafbb838f0a Mon Sep 17 00:00:00 2001 From: s4luorth Date: Mon, 28 Sep 2026 10:31:58 +0200 Subject: [PATCH] Batch-Uebernahme: Auftraege wie API-Auftraege unter einer Charge gruppieren Uebernommene Uebermittlungen bekommen api_client gesetzt und werden im Board (renderGruppiert) wie API-Auftraege als Charge gruppiert (bildeChargen: Kunde+Produkt+Tag). Quelle bleibt 'operator' (keine Kundenmail). So liegen alle uebernommenen Auftraege eines Zugangs/Tages unter einer Charge und lassen sich dort wie gewohnt sammeldrucken. Co-Authored-By: Claude Opus 4.8 --- extensions/directus-extension-skrift-orders/dist/index.js | 4 +++- .../directus-extension-skrift-produktion/dist/index.js | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/extensions/directus-extension-skrift-orders/dist/index.js b/extensions/directus-extension-skrift-orders/dist/index.js index 502d45b..0115799 100644 --- a/extensions/directus-extension-skrift-orders/dist/index.js +++ b/extensions/directus-extension-skrift-orders/dist/index.js @@ -1409,7 +1409,7 @@ const handler = (router, { services, getSchema, logger }) => { const fmtA4 = (await svc('formats').readByQuery({ filter: { key: { _eq: 'a4' } }, limit: 1, fields: ['id'] }))?.[0]?.id ?? null; const subs = await svc('batch_submissions').readMany(ids, { - fields: ['id', 'firma', 'vorname', 'nachname', 'zeile1', 'zeile2', 'zeile3', 'plz', 'stadt', 'land', 'text', 'pdf_file', 'status', 'customer'], + fields: ['id', 'firma', 'vorname', 'nachname', 'zeile1', 'zeile2', 'zeile3', 'plz', 'stadt', 'land', 'text', 'pdf_file', 'status', 'customer', 'api_client'], }); const naechsteNummer = async () => { @@ -1430,6 +1430,8 @@ const handler = (router, { services, getSchema, logger }) => { .map((x) => String(x || '').trim()).filter(Boolean).slice(0, 5); const orderData = { customer: s.customer || null, + // Zugang mitführen → im Board wie API-Aufträge unter einer Charge gruppiert. + api_client: s.api_client || null, product: product.id, format: fmtA4, person_type: 'unternehmen', font: 'tilda', source: 'operator', status: 'in_queue', production_status: 'eingegangen', diff --git a/extensions/directus-extension-skrift-produktion/dist/index.js b/extensions/directus-extension-skrift-produktion/dist/index.js index 0c35f99..a9e99c8 100644 --- a/extensions/directus-extension-skrift-produktion/dist/index.js +++ b/extensions/directus-extension-skrift-produktion/dist/index.js @@ -1446,8 +1446,10 @@ const Board = defineComponent({ // gebündelt – in allen Status-Reitern gleich. function renderGruppiert(list, opts) { if (suche.value.trim()) return list.map((o) => orderCard(o, opts)); - const apiO = list.filter((o) => o.source === 'api'); - const restO = list.filter((o) => o.source !== 'api'); + // API-Aufträge UND aus Batch-Übermittlungen übernommene (haben api_client) + // werden als Charge gruppiert; der Rest als Einzelkarten. + const apiO = list.filter((o) => o.source === 'api' || o.api_client); + const restO = list.filter((o) => !(o.source === 'api' || o.api_client)); return [ ...bildeChargen(apiO).map((c) => chargeCard(c, opts)), ...restO.map((o) => orderCard(o, opts)),