C4-Drucktemplate anlegen + Textmengencheck ohne Limit
- format_templates: kuvert_c4_v1 (+ A5/DIN-lang) werden per Nachruest-Schritt auch auf bestehenden Installationen angelegt (nur wenn Key fehlt); neue Templates tragen default_format (auto-Zuordnung im manuellen Druck). - orders /preview: check:true umgeht Kennung + Kontingent (Textmengencheck), liefert aber die SVGs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -696,8 +696,10 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
const nurPruefen = body.validate === true;
|
||||
// Angemeldete Admin/App-Nutzer (Produktions-Modul) umgehen Kennung + Kontingent.
|
||||
const istIntern = !!(req.accountability && (req.accountability.admin || req.accountability.app));
|
||||
// Textmengencheck (app.skrift.de/textmenge): unbegrenzt, ohne Kontingent-Verbrauch.
|
||||
const istCheck = body.check === true;
|
||||
const kennung = norm(body.email) || String(body.client_id || '').slice(0, 64);
|
||||
if (!kennung && !nurPruefen && !istIntern) return res.status(400).json({ error: 'E-Mail oder Kennung erforderlich.' });
|
||||
if (!kennung && !nurPruefen && !istIntern && !istCheck) return res.status(400).json({ error: 'E-Mail oder Kennung erforderlich.' });
|
||||
// Ohne Brieftext nur erlaubt, wenn Kuverts gewünscht sind (dann nur Kuvert-Vorschau).
|
||||
const willKuvertVorschau = !!(body.envelope_labeling && body.envelope_labeling !== 'keine');
|
||||
if ((!body.text || !String(body.text).trim()) && !willKuvertVorschau)
|
||||
@@ -708,11 +710,11 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
const svc = (c) => new ItemsService(c, { schema, accountability: null });
|
||||
const heute = new Date().toISOString().slice(0, 10);
|
||||
|
||||
const vorhanden = (nurPruefen || istIntern) ? null : (await svc('preview_usage').readByQuery({
|
||||
const vorhanden = (nurPruefen || istIntern || istCheck) ? null : (await svc('preview_usage').readByQuery({
|
||||
filter: { key: { _eq: kennung }, day: { _eq: heute } }, limit: 1, fields: ['id', 'count'],
|
||||
}))?.[0];
|
||||
const verbraucht = vorhanden?.count ?? 0;
|
||||
if (!nurPruefen && !istIntern && verbraucht >= PREVIEW_LIMIT) {
|
||||
if (!nurPruefen && !istIntern && !istCheck && verbraucht >= PREVIEW_LIMIT) {
|
||||
return res.status(429).json({
|
||||
error: `Vorschau-Kontingent für heute aufgebraucht (${PREVIEW_LIMIT}).`,
|
||||
remaining: 0, limit: PREVIEW_LIMIT,
|
||||
@@ -868,8 +870,8 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
}
|
||||
}
|
||||
|
||||
// Verbrauch erst nach Erfolg hochzählen – intern (Admin) zählt nicht.
|
||||
if (!istIntern && !nurPruefen && kennung) {
|
||||
// Verbrauch erst nach Erfolg hochzählen – intern (Admin) und Textmengencheck zählen nicht.
|
||||
if (!istIntern && !nurPruefen && !istCheck && kennung) {
|
||||
if (vorhanden) await svc('preview_usage').updateOne(vorhanden.id, { count: verbraucht + 1 });
|
||||
else await svc('preview_usage').createOne({ key: kennung, day: heute, count: 1 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user