Produktion+neuauftrag: Neu generieren, Einzelfelder, Formate je Produkt + getrennt aktivierbar
- orders: /regenerate (Schriftstueck+Kuvert neu generieren). - produktion: 'Neu generieren'-Button im Empfaenger-Dialog + Massenauswahl. - neuauftrag: Adressmodus 'Einzelfelder' (Vorname..Land) inkl. Excel-Import; Formate nach gewaehltem Produkt gefiltert + nur show_manual. - bootstrap: formats.show_manual (getrennt von active=Konfigurator). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1584,6 +1584,35 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
// Legt intern einen Auftrag an (keine Zahlung, keine Datei-Eingabe), erzeugt
|
||||
// die SVGs (Vorschau 1:1) und stellt ihn als „eingegangen" ins Board. Nutzt
|
||||
// dieselben Bausteine wie die öffentliche Anlage – keine Doppellogik.
|
||||
// Schriftstück(e) + Kuvert(e) eines/mehrerer Aufträge neu generieren (Operator).
|
||||
router.post('/regenerate', async (req, res) => {
|
||||
const acc = req.accountability;
|
||||
if (!acc || !acc.user || !(acc.admin || acc.app)) return res.status(403).json({ error: 'Kein Zugriff.' });
|
||||
const body = req.body || {};
|
||||
const ids = Array.isArray(body.orders) ? body.orders : (body.order != null ? [body.order] : []);
|
||||
if (!ids.length) return res.status(400).json({ error: 'Keine Auftrags-ID.' });
|
||||
try {
|
||||
const schema = await getSchema();
|
||||
const svc = (c) => new ItemsService(c, { schema, accountability: null });
|
||||
let ok = 0;
|
||||
for (const id of ids) {
|
||||
// Vorschau-Session lösen → frisch rendern (nicht 1:1 aus der alten Vorschau kopieren).
|
||||
try { await svc('orders').updateOne(id, { preview_session: null }); } catch { /* egal */ }
|
||||
try {
|
||||
const r = await fetch(`${BACKEND_URL}/api/order/from-directus`, {
|
||||
method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Token': BACKEND_TOKEN },
|
||||
body: JSON.stringify({ orderId: id }),
|
||||
});
|
||||
if (r.ok) ok += 1;
|
||||
} catch (e) { logger.warn(`[skrift-orders] regenerate ${id}: ${e.message}`); }
|
||||
}
|
||||
return res.json({ ok: true, regeneriert: ok, gesamt: ids.length });
|
||||
} catch (err) {
|
||||
logger.error(`[skrift-orders] regenerate: ${err.stack || err.message}`);
|
||||
return res.status(500).json({ error: 'Neu-Generierung fehlgeschlagen.' });
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/manual-order', async (req, res) => {
|
||||
const acc = req.accountability;
|
||||
if (!acc || !acc.user || !(acc.admin || acc.app)) return res.status(403).json({ error: 'Kein Zugriff.' });
|
||||
|
||||
Reference in New Issue
Block a user