@flowselections/layout-maker 1.63.2 → 1.63.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +2 -1
- package/dist-lib/integrations/supabase/types.d.ts +239 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/etiketControle.js +1 -1
- package/dist-lib/lib/printQueue.server.d.ts +2 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +44 -3
- package/dist-lib/lib/printService.server.d.ts +2 -0
- package/dist-lib/lib/printService.server.d.ts.map +1 -1
- package/dist-lib/lib/printService.server.js +2 -1
- package/dist-lib/lib/printnodeStatus.d.ts +2 -0
- package/dist-lib/lib/printnodeStatus.d.ts.map +1 -1
- package/dist-lib/lib/printnodeStatus.js +10 -0
- package/dist-lib/lib/shellPoort.d.ts +1 -1
- package/dist-lib/lib/shellPoort.js +1 -1
- package/dist-lib/lib/stickerFormaat.d.ts +25 -0
- package/dist-lib/lib/stickerFormaat.d.ts.map +1 -1
- package/dist-lib/lib/stickerFormaat.js +57 -0
- package/package.json +1 -1
|
@@ -76,7 +76,7 @@ sticker = false) {
|
|
|
76
76
|
ok: false,
|
|
77
77
|
code: "FORMAAT_PAST_NIET",
|
|
78
78
|
bericht: sticker
|
|
79
|
-
?
|
|
79
|
+
? `${/sticker/i.test(doc.soortLabel) ? doc.soortLabel : "Klantsticker"} ${heel(b, h)} past niet op het etiket in ${printerNaam} (${heel(geladen.breedte_mm, geladen.hoogte_mm)}). ` +
|
|
80
80
|
`Leg etiketten van minimaal ${heel(b, h)} in of kies een andere printer.`
|
|
81
81
|
: `Past niet op het etiket in de printer (${heel(b, h)} op ${heel(geladen.breedte_mm, geladen.hoogte_mm)}).`,
|
|
82
82
|
};
|
|
@@ -85,6 +85,8 @@ export declare function wachtOpLayout(db: PrintDb, job: Job, reden: string): Pro
|
|
|
85
85
|
* en valt buiten "Alles annuleren". De foutcode bepaalt het label.
|
|
86
86
|
*/
|
|
87
87
|
export declare function geweigerd(db: PrintDb, job: Job, code: "FORMAAT_PAST_NIET" | "GEEN_GELADEN_ETIKET", bericht: string): Promise<void>;
|
|
88
|
+
/** Koper wil deze sticker niet: eindstatus zonder fout en zonder nieuwe poging. */
|
|
89
|
+
export declare function nietNodig(db: PrintDb, job: Job): Promise<void>;
|
|
88
90
|
/**
|
|
89
91
|
* Verwerkt één stabiele PrintNode-status (uit /states of de webhook) op een
|
|
90
92
|
* opdracht. Gedeeld door polling en webhook, zodat beide hetzelfde doen.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAwC5D,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,mFAAmF;AACnF,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW1E;AAiFD,2EAA2E;AAC3E,qBAAa,gBAAiB,SAAQ,KAAK;IAChC,IAAI,SAAsB;CACpC;AAED,+EAA+E;AAC/E,qBAAa,iBAAkB,SAAQ,KAAK;IACjC,IAAI,SAAuB;CACrC;AAED,oFAAoF;AACpF,qBAAa,kBAAmB,SAAQ,gBAAgB;IAC7C,IAAI,SAAwB;CACtC;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvE,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAE5G,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAcnD,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAI7D;AASD,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAQnD;AAkCD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAIlE;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAe7C;AA8ND;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQlH;AAWD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqClF;AA8SD;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,MAAM,CAAC,CAkajB;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AAqBD,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAsCzG;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,OAAO,EAAE,MAAM,iBAiBxH;
|
|
1
|
+
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { heeftOrderInhoud, laadOrderVanuitDatabase, laadPakbonData } from "./ord
|
|
|
13
13
|
import { profielHeeftInhoud, renderProfielDocument } from "./profielHtml.js";
|
|
14
14
|
import { bouwDocumentHtml, voorbeeldContext } from "./layoutPreview.js";
|
|
15
15
|
import { AfbeeldingInhoudFout, htmlNaarPdfServer, PdfRenderFout } from "./htmlNaarPdf.server.js";
|
|
16
|
-
import { bepaalStickerMaat, floridayStickerMaat, STICKER_MAAT_ONBEKEND, stickerFormaatCode } from "./stickerFormaat.js";
|
|
16
|
+
import { bepaalStickerMaat, floridayStickerMaat, STICKER_MAAT_ONBEKEND, stickerFormaatCode, stickerIdUitPayload, stickerInfoUitCache, stickerNietNodig, stickerTypeLabel, STICKER_NIET_NODIG, FASE_NIET_NODIG } from "./stickerFormaat.js";
|
|
17
17
|
import { OPMAAK_LIMIET_MS, OpmaakTeLangFout, metTijdslimiet } from "./opmaakLimiet.js";
|
|
18
18
|
import { stuurPdfNaarPrinter, opdrachtStatusDetail, vervaltijdVoor } from "./printService.server.js";
|
|
19
19
|
import { kiesPapier } from "./papierFormaten.js";
|
|
@@ -1251,6 +1251,25 @@ export async function geweigerd(db, job, code, bericht) {
|
|
|
1251
1251
|
.neq("status", "geannuleerd");
|
|
1252
1252
|
await log(db, job.id, "geweigerd", `${code}: ${bericht}`);
|
|
1253
1253
|
}
|
|
1254
|
+
/** Koper wil deze sticker niet: eindstatus zonder fout en zonder nieuwe poging. */
|
|
1255
|
+
export async function nietNodig(db, job) {
|
|
1256
|
+
const nu = new Date().toISOString();
|
|
1257
|
+
await db
|
|
1258
|
+
.from("print_jobs")
|
|
1259
|
+
.update({
|
|
1260
|
+
status: "geannuleerd",
|
|
1261
|
+
verwerkingsfase: FASE_NIET_NODIG,
|
|
1262
|
+
fase_voltooid_op: nu,
|
|
1263
|
+
foutcode: null,
|
|
1264
|
+
foutmelding: STICKER_NIET_NODIG,
|
|
1265
|
+
volgende_poging: null,
|
|
1266
|
+
voltooid_op: nu,
|
|
1267
|
+
updated_at: nu,
|
|
1268
|
+
})
|
|
1269
|
+
.eq("id", job.id)
|
|
1270
|
+
.neq("status", "geannuleerd");
|
|
1271
|
+
await log(db, job.id, FASE_NIET_NODIG, STICKER_NIET_NODIG);
|
|
1272
|
+
}
|
|
1254
1273
|
async function mislukt(db, job, reden, terugNaarWachtend) {
|
|
1255
1274
|
const pogingen = Number(job.pogingen ?? 0);
|
|
1256
1275
|
const opnieuw = terugNaarWachtend && pogingen < MAX_POGINGEN;
|
|
@@ -1386,8 +1405,29 @@ async function verwerkJob(db, job) {
|
|
|
1386
1405
|
// PDF). Onbekend = niet printen. De maat kiest ook de printer via de
|
|
1387
1406
|
// formaatregels, zodat een sticker op een etiket komt dat groot genoeg is.
|
|
1388
1407
|
let stickerMaat = null;
|
|
1408
|
+
let stickerCache = null;
|
|
1409
|
+
if (ETIKET_PDF_SOORTEN.has(String(job.documenttype ?? ""))) {
|
|
1410
|
+
const sid = stickerIdUitPayload(job.payload);
|
|
1411
|
+
if (sid) {
|
|
1412
|
+
const { data: rij } = await db
|
|
1413
|
+
.from("floriday_customer_stickers_cache")
|
|
1414
|
+
.select("sticker_width_mm, sticker_height_mm, sticker_type, should_be_printed")
|
|
1415
|
+
.eq("floriday_id", sid)
|
|
1416
|
+
.eq("is_deleted", false)
|
|
1417
|
+
.order("updated_at", { ascending: false })
|
|
1418
|
+
.limit(1)
|
|
1419
|
+
.maybeSingle();
|
|
1420
|
+
stickerCache = stickerInfoUitCache(rij);
|
|
1421
|
+
}
|
|
1422
|
+
if (stickerNietNodig(stickerCache, job.payload)) {
|
|
1423
|
+
await nietNodig(db, job);
|
|
1424
|
+
return "mislukt";
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1389
1427
|
if (klaar && ETIKET_PDF_SOORTEN.has(String(job.documenttype ?? ""))) {
|
|
1390
|
-
stickerMaat =
|
|
1428
|
+
stickerMaat = stickerCache?.maat
|
|
1429
|
+
? { ...stickerCache.maat, bron: "floriday" }
|
|
1430
|
+
: bepaalStickerMaat(floridayStickerMaat(job.payload), pdfPaginaMm(klaar));
|
|
1391
1431
|
if (!stickerMaat)
|
|
1392
1432
|
throw new GeenDocumentFout(STICKER_MAAT_ONBEKEND);
|
|
1393
1433
|
await faseLog(db, job.id, "sticker_maat", { bron: stickerMaat.bron, breedte_mm: stickerMaat.breedte_mm, hoogte_mm: stickerMaat.hoogte_mm });
|
|
@@ -1476,7 +1516,7 @@ async function verwerkJob(db, job) {
|
|
|
1476
1516
|
let papier = kiesPapier(formaten, breedteMm, hoogteMm);
|
|
1477
1517
|
if (label) {
|
|
1478
1518
|
const maat = stickerMaat ?? (klaar ? pdfPaginaMm(pdfBase64) : null) ?? { breedte_mm: breedteMm, hoogte_mm: hoogteMm };
|
|
1479
|
-
const uit = etiketPast({ ...maat, soortLabel: documentTypeLabelVoor(String(job.documenttype ?? "Document")) }, label.etiket, label.naam, !!stickerMaat);
|
|
1519
|
+
const uit = etiketPast({ ...maat, soortLabel: stickerCache?.sticker_type ? stickerTypeLabel(stickerCache.sticker_type) : documentTypeLabelVoor(String(job.documenttype ?? "Document")) }, label.etiket, label.naam, !!stickerMaat);
|
|
1480
1520
|
if (!uit.ok) {
|
|
1481
1521
|
await geweigerd(db, job, uit.code, uit.bericht);
|
|
1482
1522
|
return "mislukt";
|
|
@@ -1499,6 +1539,7 @@ async function verwerkJob(db, job) {
|
|
|
1499
1539
|
documentnaam: String(job.documentnaam ?? "Document"),
|
|
1500
1540
|
pdfBase64,
|
|
1501
1541
|
kopieen: Number(job.kopieen ?? 1),
|
|
1542
|
+
documenttype: String(job.documenttype ?? ""),
|
|
1502
1543
|
opties: { paper: papier.paper, rotate: papier.rotate, fitToPage: false },
|
|
1503
1544
|
});
|
|
1504
1545
|
if (i > 0) {
|
|
@@ -28,6 +28,8 @@ export interface PrintOpdrachtInput {
|
|
|
28
28
|
documentnaam: string;
|
|
29
29
|
pdfBase64: string;
|
|
30
30
|
kopieen?: number;
|
|
31
|
+
/** Documentsoort: bepaalt het maximum (sticker/traysticker 5000, anders 50). */
|
|
32
|
+
documenttype?: string | null;
|
|
31
33
|
opties?: PrintOpties;
|
|
32
34
|
}
|
|
33
35
|
/** Fout voor een 409 van PrintNode: deze idempotentiesleutel is al ontvangen. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printService.server.d.ts","sourceRoot":"","sources":["../../src/lib/printService.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"printService.server.d.ts","sourceRoot":"","sources":["../../src/lib/printService.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { kopieenVoorPrinter } from "./stickerFormaat.js";
|
|
1
2
|
// ============================================================================
|
|
2
3
|
// src/lib/printService.server.ts — communicatie met de externe printdienst.
|
|
3
4
|
// Alleen server-side. Fouten worden vertaald naar begrijpelijke meldingen.
|
|
@@ -128,7 +129,7 @@ export async function stuurPdfNaarPrinter(input) {
|
|
|
128
129
|
contentType: "pdf_base64",
|
|
129
130
|
content: input.pdfBase64,
|
|
130
131
|
source: sourceVoorJob(input.jobId),
|
|
131
|
-
qty:
|
|
132
|
+
qty: kopieenVoorPrinter(input.kopieen, input.documenttype),
|
|
132
133
|
options,
|
|
133
134
|
};
|
|
134
135
|
if (typeof input.expireAfter === "number" && input.expireAfter > 0) {
|
|
@@ -13,5 +13,7 @@ export declare const SCANBARE_SOORTEN: Set<string>;
|
|
|
13
13
|
export declare function opnieuwActie(j: JobVoorLabel): "opnieuw_proberen" | "opnieuw_printen" | null;
|
|
14
14
|
/** "gescand" alleen als de scan ná het printen van dit document was. */
|
|
15
15
|
export declare function scanLabel(scanTijd: number | string, printTijd: string | null | undefined): "gescand" | "eerder";
|
|
16
|
+
/** "Sticker × 480" voor sticker-opdrachten met meer dan één afdruk. */
|
|
17
|
+
export declare function aantalLabel(documenttype: string | null | undefined, kopieen: number | null | undefined): string | null;
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=printnodeStatus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printnodeStatus.d.ts","sourceRoot":"","sources":["../../src/lib/printnodeStatus.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMzD,CAAC;AAEF,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"printnodeStatus.d.ts","sourceRoot":"","sources":["../../src/lib/printnodeStatus.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMzD,CAAC;AAEF,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAiB5D;AAED,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,aAAsD,CAAC;AAEpF,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,IAAI,CAI3F;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAI/G;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKtH"}
|
|
@@ -13,6 +13,8 @@ export const PRINTNODE_STATUS_LABEL = {
|
|
|
13
13
|
};
|
|
14
14
|
/** Label voor de statuskolom van de wachtrij. */
|
|
15
15
|
export function printnodeStatusLabel(j) {
|
|
16
|
+
if (j.status === "geannuleerd" && j.verwerkingsfase === "niet_nodig")
|
|
17
|
+
return "Niet nodig – de koper wil geen sticker";
|
|
16
18
|
if (j.status === "geannuleerd")
|
|
17
19
|
return "Geannuleerd";
|
|
18
20
|
if (j.foutcode === "AANLEVERING_MISLUKT")
|
|
@@ -53,3 +55,11 @@ export function scanLabel(scanTijd, printTijd) {
|
|
|
53
55
|
const print = printTijd ? new Date(printTijd).getTime() : NaN;
|
|
54
56
|
return !Number.isNaN(print) && scan >= print ? "gescand" : "eerder";
|
|
55
57
|
}
|
|
58
|
+
/** "Sticker × 480" voor sticker-opdrachten met meer dan één afdruk. */
|
|
59
|
+
export function aantalLabel(documenttype, kopieen) {
|
|
60
|
+
const t = String(documenttype ?? "");
|
|
61
|
+
const n = Number(kopieen ?? 1);
|
|
62
|
+
if ((t !== "sticker" && t !== "traysticker") || !(n > 1))
|
|
63
|
+
return null;
|
|
64
|
+
return `${t === "traysticker" ? "Traysticker" : "Sticker"} × ${Math.floor(n)}`;
|
|
65
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Moduleversie van deze code. Gelijk houden aan package.json (test bewaakt dit). */
|
|
2
|
-
export declare const MODULE_VERSIE = "1.63.
|
|
2
|
+
export declare const MODULE_VERSIE = "1.63.4";
|
|
3
3
|
export declare function normaliseerAdres(u: unknown): string | null;
|
|
4
4
|
/** -1 als a < b, 0 als gelijk, 1 als a > b (alleen cijfers, punt-gescheiden). */
|
|
5
5
|
export declare function vergelijkVersie(a: string, b: string): number;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// database. Niets vast in code; ontbreekt het adres, dan wordt er niet geprint.
|
|
5
5
|
// ============================================================================
|
|
6
6
|
/** Moduleversie van deze code. Gelijk houden aan package.json (test bewaakt dit). */
|
|
7
|
-
export const MODULE_VERSIE = "1.63.
|
|
7
|
+
export const MODULE_VERSIE = "1.63.4";
|
|
8
8
|
export function normaliseerAdres(u) {
|
|
9
9
|
const s = String(u ?? "").trim().replace(/\/+$/, "").toLowerCase();
|
|
10
10
|
return s || null;
|
|
@@ -8,6 +8,10 @@ export declare function floridayStickerMaat(payload: unknown): {
|
|
|
8
8
|
breedte_mm: number;
|
|
9
9
|
hoogte_mm: number;
|
|
10
10
|
} | null;
|
|
11
|
+
/** Maximum afdrukken per opdracht: klantstickers per stuk tot 5000, de rest 50. */
|
|
12
|
+
export declare function maxKopieen(documenttype: string | null | undefined): number;
|
|
13
|
+
/** Aantal dat naar de printer gaat: binnen 1..max voor deze soort. */
|
|
14
|
+
export declare function kopieenVoorPrinter(kopieen: number | null | undefined, documenttype: string | null | undefined): number;
|
|
11
15
|
export declare function bepaalStickerMaat(floriday: {
|
|
12
16
|
breedte_mm: number;
|
|
13
17
|
hoogte_mm: number;
|
|
@@ -18,4 +22,25 @@ export declare function bepaalStickerMaat(floriday: {
|
|
|
18
22
|
export declare const STICKER_MAAT_ONBEKEND = "De maat van deze klantsticker is onbekend; er is niets geprint.";
|
|
19
23
|
/** Formaatcode voor de formaatregels: "48x48" (kleinste maat eerst, hele mm). */
|
|
20
24
|
export declare function stickerFormaatCode(b: number, h: number): string;
|
|
25
|
+
/** Floriday-stickernummer uit de payload (veld floriday_sticker_id; match op id, nooit op naam). */
|
|
26
|
+
export declare function stickerIdUitPayload(payload: unknown): string | null;
|
|
27
|
+
export type StickerCacheInfo = {
|
|
28
|
+
maat: {
|
|
29
|
+
breedte_mm: number;
|
|
30
|
+
hoogte_mm: number;
|
|
31
|
+
} | null;
|
|
32
|
+
sticker_type: string | null;
|
|
33
|
+
should_be_printed: boolean | null;
|
|
34
|
+
};
|
|
35
|
+
/** Leest een rij uit floriday_customer_stickers_cache (Floriday-authenticatie 1.0.87). */
|
|
36
|
+
export declare function stickerInfoUitCache(rij: unknown): StickerCacheInfo | null;
|
|
37
|
+
/** Koper wil geen sticker: cache of payload (shouldBePrinted) zegt expliciet false. */
|
|
38
|
+
export declare function stickerNietNodig(cache: StickerCacheInfo | null, payload: unknown): boolean;
|
|
39
|
+
/** "Potsticker 48 × 48 mm" — soort alleen als informatie, nooit voor het formaat. */
|
|
40
|
+
export declare function stickerTypeLabel(type: string | null | undefined, maat?: {
|
|
41
|
+
breedte_mm: number;
|
|
42
|
+
hoogte_mm: number;
|
|
43
|
+
} | null): string;
|
|
44
|
+
export declare const STICKER_NIET_NODIG = "De koper heeft aangegeven dat deze sticker niet geprint hoeft te worden.";
|
|
45
|
+
export declare const FASE_NIET_NODIG = "niet_nodig";
|
|
21
46
|
//# sourceMappingURL=stickerFormaat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stickerFormaat.d.ts","sourceRoot":"","sources":["../../src/lib/stickerFormaat.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,KAAK,CAAA;CAAE,CAAC;AAO9F,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"stickerFormaat.d.ts","sourceRoot":"","sources":["../../src/lib/stickerFormaat.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,KAAK,CAAA;CAAE,CAAC;AAO9F,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBtG;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG1E;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGtH;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC1D,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GACpD,WAAW,GAAG,IAAI,CAIpB;AAED,eAAO,MAAM,qBAAqB,oEAAoE,CAAC;AAEvG,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,oGAAoG;AACpG,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAInE;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAUzE;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAO1F;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,MAAM,CAIjI;AAED,eAAO,MAAM,kBAAkB,6EAA6E,CAAC;AAC7G,eAAO,MAAM,eAAe,eAAe,CAAC"}
|
|
@@ -22,8 +22,26 @@ export function floridayStickerMaat(payload) {
|
|
|
22
22
|
if (b && h)
|
|
23
23
|
return { breedte_mm: b, hoogte_mm: h };
|
|
24
24
|
}
|
|
25
|
+
// Engine 1.0.164: sticker_formaat_mm: { breedte, hoogte }
|
|
26
|
+
const f = p["sticker_formaat_mm"];
|
|
27
|
+
if (f && typeof f === "object") {
|
|
28
|
+
const b = getal(f["breedte"]);
|
|
29
|
+
const h = getal(f["hoogte"]);
|
|
30
|
+
if (b && h)
|
|
31
|
+
return { breedte_mm: b, hoogte_mm: h };
|
|
32
|
+
}
|
|
25
33
|
return null;
|
|
26
34
|
}
|
|
35
|
+
/** Maximum afdrukken per opdracht: klantstickers per stuk tot 5000, de rest 50. */
|
|
36
|
+
export function maxKopieen(documenttype) {
|
|
37
|
+
const t = String(documenttype ?? "").trim();
|
|
38
|
+
return t === "sticker" || t === "traysticker" ? 5000 : 50;
|
|
39
|
+
}
|
|
40
|
+
/** Aantal dat naar de printer gaat: binnen 1..max voor deze soort. */
|
|
41
|
+
export function kopieenVoorPrinter(kopieen, documenttype) {
|
|
42
|
+
const n = Math.floor(Number(kopieen ?? 1));
|
|
43
|
+
return Math.max(1, Math.min(maxKopieen(documenttype), Number.isFinite(n) ? n : 1));
|
|
44
|
+
}
|
|
27
45
|
export function bepaalStickerMaat(floriday, pdf) {
|
|
28
46
|
if (floriday)
|
|
29
47
|
return { ...floriday, bron: "floriday" };
|
|
@@ -37,3 +55,42 @@ export function stickerFormaatCode(b, h) {
|
|
|
37
55
|
const [x, y] = [Math.round(b), Math.round(h)].sort((p, q) => p - q);
|
|
38
56
|
return `${x}x${y}`;
|
|
39
57
|
}
|
|
58
|
+
/** Floriday-stickernummer uit de payload (veld floriday_sticker_id; match op id, nooit op naam). */
|
|
59
|
+
export function stickerIdUitPayload(payload) {
|
|
60
|
+
if (!payload || typeof payload !== "object")
|
|
61
|
+
return null;
|
|
62
|
+
const v = payload["floriday_sticker_id"];
|
|
63
|
+
return typeof v === "string" && v.trim() ? v.trim() : null;
|
|
64
|
+
}
|
|
65
|
+
/** Leest een rij uit floriday_customer_stickers_cache (Floriday-authenticatie 1.0.87). */
|
|
66
|
+
export function stickerInfoUitCache(rij) {
|
|
67
|
+
if (!rij || typeof rij !== "object")
|
|
68
|
+
return null;
|
|
69
|
+
const r = rij;
|
|
70
|
+
const b = getal(r["sticker_width_mm"]);
|
|
71
|
+
const h = getal(r["sticker_height_mm"]);
|
|
72
|
+
return {
|
|
73
|
+
maat: b && h ? { breedte_mm: b, hoogte_mm: h } : null,
|
|
74
|
+
sticker_type: typeof r["sticker_type"] === "string" && r["sticker_type"] ? r["sticker_type"] : null,
|
|
75
|
+
should_be_printed: typeof r["should_be_printed"] === "boolean" ? r["should_be_printed"] : null,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Koper wil geen sticker: cache of payload (shouldBePrinted) zegt expliciet false. */
|
|
79
|
+
export function stickerNietNodig(cache, payload) {
|
|
80
|
+
if (cache?.should_be_printed === false)
|
|
81
|
+
return true;
|
|
82
|
+
if (payload && typeof payload === "object") {
|
|
83
|
+
const p = payload;
|
|
84
|
+
if (p["shouldBePrinted"] === false || p["should_be_printed"] === false)
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
/** "Potsticker 48 × 48 mm" — soort alleen als informatie, nooit voor het formaat. */
|
|
90
|
+
export function stickerTypeLabel(type, maat) {
|
|
91
|
+
const t = String(type ?? "").trim().toUpperCase();
|
|
92
|
+
const soort = !t ? "Klantsticker" : t === "POT" ? "Potsticker" : `Klantsticker (${type})`;
|
|
93
|
+
return maat ? `${soort} ${Math.round(maat.breedte_mm)} × ${Math.round(maat.hoogte_mm)} mm` : soort;
|
|
94
|
+
}
|
|
95
|
+
export const STICKER_NIET_NODIG = "De koper heeft aangegeven dat deze sticker niet geprint hoeft te worden.";
|
|
96
|
+
export const FASE_NIET_NODIG = "niet_nodig";
|