@flowselections/layout-maker 1.57.2 → 1.59.1
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/ComputersLijst.d.ts +1 -0
- package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
- package/dist-lib/components/ComputersLijst.js +9 -5
- package/dist-lib/components/LayoutVerwijzingenKaart.js +3 -2
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +8 -5
- package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekDetailPage.js +4 -2
- package/dist-lib/components/PrintplekkenPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekkenPage.js +10 -2
- package/dist-lib/components/TestprintDialog.d.ts.map +1 -1
- package/dist-lib/components/TestprintDialog.js +5 -1
- package/dist-lib/components/WerkplekOmzettingStap.d.ts.map +1 -1
- package/dist-lib/components/WerkplekOmzettingStap.js +1 -1
- package/dist-lib/components/WerkplekkenTab.d.ts.map +1 -1
- package/dist-lib/components/WerkplekkenTab.js +4 -3
- package/dist-lib/integrations/supabase/types.d.ts +267 -2
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +1 -0
- package/dist-lib/lib/documentTypes.d.ts +4 -1
- package/dist-lib/lib/documentTypes.d.ts.map +1 -1
- package/dist-lib/lib/documentTypes.js +4 -0
- package/dist-lib/lib/layoutVerwijzingen.d.ts +20 -1
- package/dist-lib/lib/layoutVerwijzingen.d.ts.map +1 -1
- package/dist-lib/lib/layoutVerwijzingen.js +21 -3
- package/dist-lib/lib/orderData.server.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.js +26 -3
- package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
- package/dist-lib/lib/pakbonHtml.js +8 -1
- package/dist-lib/lib/printQueue.server.d.ts +6 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +37 -3
- package/dist-lib/lib/printRoutering.d.ts +3 -1
- package/dist-lib/lib/printRoutering.d.ts.map +1 -1
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/printService.functions.js +3 -1
- package/dist-lib/lib/printService.server.d.ts +3 -1
- package/dist-lib/lib/printService.server.d.ts.map +1 -1
- package/dist-lib/lib/printService.server.js +3 -1
- package/dist-lib/lib/printnodeStatus.d.ts.map +1 -1
- package/dist-lib/lib/printnodeStatus.js +4 -0
- package/dist-lib/lib/printnodeWebhook.d.ts +2 -0
- package/dist-lib/lib/printnodeWebhook.d.ts.map +1 -1
- package/dist-lib/lib/printnodeWebhook.js +31 -1
- package/dist-lib/lib/printnodeWebhookBeheer.server.d.ts +2 -0
- package/dist-lib/lib/printnodeWebhookBeheer.server.d.ts.map +1 -1
- package/dist-lib/lib/printnodeWebhookBeheer.server.js +12 -2
- package/dist-lib/lib/productiebonHtml.d.ts.map +1 -1
- package/dist-lib/lib/productiebonHtml.js +7 -1
- package/dist-lib/lib/testprint.d.ts +5 -1
- package/dist-lib/lib/testprint.d.ts.map +1 -1
- package/dist-lib/lib/testprint.js +55 -11
- package/dist-lib/lib/vervoerder.d.ts +13 -0
- package/dist-lib/lib/vervoerder.d.ts.map +1 -0
- package/dist-lib/lib/vervoerder.js +58 -0
- package/dist-lib/lib/waaromPrinter.d.ts +2 -0
- package/dist-lib/lib/waaromPrinter.d.ts.map +1 -1
- package/dist-lib/lib/waaromPrinter.js +13 -0
- package/dist-lib/lib/werkplekOmzetting.d.ts +2 -0
- package/dist-lib/lib/werkplekOmzetting.d.ts.map +1 -1
- package/dist-lib/lib/werkplekOmzetting.js +2 -1
- package/dist-lib/lib/werkplekken.js +2 -2
- package/package.json +5 -5
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export type DocumentType = "pakbon" | "sticker" | "productiebon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "veilingbon" | "afleverbrief" | "veilingbrief" | "vrij";
|
|
1
|
+
export type DocumentType = "pakbon" | "sticker" | "traysticker" | "productiebon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "veilingbon" | "afleverbrief" | "veilingbrief" | "vrij";
|
|
2
2
|
export declare const DOCUMENT_TYPES: {
|
|
3
3
|
value: DocumentType;
|
|
4
4
|
label: string;
|
|
5
5
|
}[];
|
|
6
|
+
/** Soorten die van nature een etiket zijn: altijd naar de labelprinter. */
|
|
7
|
+
export declare const ETIKET_SOORTEN: readonly string[];
|
|
8
|
+
export declare const isEtiketSoort: (t: string) => boolean;
|
|
6
9
|
export declare function documentTypeLabel(value: string): string;
|
|
7
10
|
export interface PapierFormaatDef {
|
|
8
11
|
code: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,SAAS,GACT,cAAc,GACd,SAAS,GACT,SAAS,GACT,kBAAkB,GAClB,QAAQ,GACR,cAAc,GACd,cAAc,GACd,eAAe,GACf,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,YAAY,GACZ,cAAc,GACd,cAAc,GACd,MAAM,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
export const DOCUMENT_TYPES = [
|
|
5
5
|
{ value: "pakbon", label: "Pakbon" },
|
|
6
6
|
{ value: "sticker", label: "Sticker" },
|
|
7
|
+
{ value: "traysticker", label: "Traysticker" },
|
|
7
8
|
{ value: "productiebon", label: "Productiebon" },
|
|
8
9
|
{ value: "factuur", label: "Factuur" },
|
|
9
10
|
{ value: "offerte", label: "Offerte" },
|
|
@@ -20,6 +21,9 @@ export const DOCUMENT_TYPES = [
|
|
|
20
21
|
{ value: "veilingbrief", label: "Veilingbrief" },
|
|
21
22
|
{ value: "vrij", label: "Vrij document" },
|
|
22
23
|
];
|
|
24
|
+
/** Soorten die van nature een etiket zijn: altijd naar de labelprinter. */
|
|
25
|
+
export const ETIKET_SOORTEN = ["sticker", "traysticker", "etiket", "verzendlabel", "productlabel", "barcode_label"];
|
|
26
|
+
export const isEtiketSoort = (t) => ETIKET_SOORTEN.includes(String(t));
|
|
23
27
|
export function documentTypeLabel(value) {
|
|
24
28
|
return DOCUMENT_TYPES.find((d) => d.value === value)?.label ?? value;
|
|
25
29
|
}
|
|
@@ -26,7 +26,26 @@ export interface VerwijzingPlek {
|
|
|
26
26
|
link: string | null;
|
|
27
27
|
bekend: boolean;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
/** Minimale vorm van wat de Shell per module kent (uit flowselections.pages). */
|
|
30
|
+
export interface ShellModulePaginas {
|
|
31
|
+
id: string;
|
|
32
|
+
registryKey?: string;
|
|
33
|
+
nav?: {
|
|
34
|
+
href?: string;
|
|
35
|
+
label?: string;
|
|
36
|
+
children?: {
|
|
37
|
+
href?: string;
|
|
38
|
+
label?: string;
|
|
39
|
+
}[];
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Link naar het scherm volgens de pagina's die de module opgeeft (route en
|
|
44
|
+
* titel). Staat het scherm niet in die lijst: de startpagina van de module.
|
|
45
|
+
* Niets verzonnen: zonder module in de Shell blijft het de startpagina-route.
|
|
46
|
+
*/
|
|
47
|
+
export declare function linkUitPaginas(moduleId: string, scherm: string | undefined, modules: ShellModulePaginas[] | null | undefined): string;
|
|
48
|
+
export declare function plekVanVerwijzing(v: Pick<LayoutVerwijzing, "tabel" | "kolom" | "pad">, modules?: ShellModulePaginas[] | null): VerwijzingPlek;
|
|
30
49
|
export interface SoortOverzicht {
|
|
31
50
|
documenttype: string;
|
|
32
51
|
layouts: (LayoutGebruik & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layoutVerwijzingen.d.ts","sourceRoot":"","sources":["../../src/lib/layoutVerwijzingen.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,eAAO,MAAM,cAAc,qEAAsE,CAAC;AAClG,eAAO,MAAM,iBAAiB,GAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,YACX,CAAC;AAyB1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"layoutVerwijzingen.d.ts","sourceRoot":"","sources":["../../src/lib/layoutVerwijzingen.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,eAAO,MAAM,cAAc,qEAAsE,CAAC;AAClG,eAAO,MAAM,iBAAiB,GAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,YACX,CAAC;AAyB1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;CACzF;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CASrI;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,EACpD,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,GACpC,cAAc,CAUhB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,aAAa,GAAG;QAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IACpF,2FAA2F;IAC3F,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,cAAc,EAAE,CAoB3F;AAED,wBAAgB,qBAAqB;;;;;EAiBpC;AAED,iFAAiF;AACjF,wBAAsB,eAAe,CAAC,CAAC,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM/F;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO7C,CAAC"}
|
|
@@ -30,14 +30,31 @@ const SCHERMEN = {
|
|
|
30
30
|
"print_rules:layout_id": "Printen › Printregels",
|
|
31
31
|
"document_bronregels:layout_id": "Documenten › Bronregels",
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
const eersteSegment = (href) => href.replace(/^\/+/, "").split("/")[0]?.replace(/_+$/, "") ?? "";
|
|
34
|
+
/**
|
|
35
|
+
* Link naar het scherm volgens de pagina's die de module opgeeft (route en
|
|
36
|
+
* titel). Staat het scherm niet in die lijst: de startpagina van de module.
|
|
37
|
+
* Niets verzonnen: zonder module in de Shell blijft het de startpagina-route.
|
|
38
|
+
*/
|
|
39
|
+
export function linkUitPaginas(moduleId, scherm, modules) {
|
|
40
|
+
const lijst = Array.isArray(modules) ? modules : [];
|
|
41
|
+
const mod = lijst.find((m) => m.registryKey === moduleId || m.id === moduleId || eersteSegment(String(m.nav?.href ?? "")) === moduleId);
|
|
42
|
+
const start = mod?.nav?.href ? String(mod.nav.href) : `/${moduleId}`;
|
|
43
|
+
if (!mod || !scherm)
|
|
44
|
+
return start;
|
|
45
|
+
const titel = scherm.split("›")[0]?.trim().toLowerCase();
|
|
46
|
+
const kinderen = Array.isArray(mod.nav?.children) ? mod.nav.children : [];
|
|
47
|
+
const hit = kinderen.find((c) => String(c.label ?? "").trim().toLowerCase() === titel && c.href);
|
|
48
|
+
return hit?.href ? String(hit.href) : start;
|
|
49
|
+
}
|
|
50
|
+
export function plekVanVerwijzing(v, modules) {
|
|
34
51
|
const info = MODULES.find((m) => v.tabel.startsWith(m.voorvoegsel))?.info ?? { module: "Andere module", moduleId: null };
|
|
35
52
|
const sleutel = `${v.tabel}:${v.pad.length ? v.pad.join(".") : v.kolom}`;
|
|
36
53
|
const scherm = SCHERMEN[sleutel];
|
|
37
54
|
return {
|
|
38
55
|
module: info.module,
|
|
39
56
|
scherm: scherm ?? `${v.tabel} › ${[v.kolom, ...v.pad].join(".")}`,
|
|
40
|
-
link: info.moduleId ?
|
|
57
|
+
link: info.moduleId ? linkUitPaginas(info.moduleId, scherm, modules) : null,
|
|
41
58
|
bekend: Boolean(scherm),
|
|
42
59
|
};
|
|
43
60
|
}
|
|
@@ -94,7 +111,8 @@ export async function zetVerwijzingOm(v, nieuwLayoutId) {
|
|
|
94
111
|
}
|
|
95
112
|
export const BRON_LABEL = {
|
|
96
113
|
eigen_layout: "eigen layout",
|
|
97
|
-
extern_pdf: "
|
|
114
|
+
extern_pdf: "aangeleverd document",
|
|
115
|
+
floriday_1op1: "Floriday-document (1-op-1)",
|
|
98
116
|
render_html: "aangeleverde opmaak",
|
|
99
117
|
klantlayout: "klantlayout",
|
|
100
118
|
onbekend: "onbekend",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAwBtD,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAgCA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;IAC7C,KAAK,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAMA;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7E,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CA+arB;
|
|
1
|
+
{"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAwBtD,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAgCA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;IAC7C,KAAK,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAMA;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7E,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CA+arB;AAkHD;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAGhG"}
|
|
@@ -437,15 +437,19 @@ async function vulKlantEnAdres(db, orders, kop) {
|
|
|
437
437
|
return;
|
|
438
438
|
const c = await veilig(() => db
|
|
439
439
|
.from("customers")
|
|
440
|
-
.select("customer_number, company_name, contact_person, phone, email, street, house_number, address, address_line1, postal_code, city, country")
|
|
440
|
+
.select("customer_number, company_name, commercial_name, contact_person, phone, email, street, house_number, address, address_line1, postal_code, city, country")
|
|
441
441
|
.eq("id", ids[0])
|
|
442
442
|
.maybeSingle());
|
|
443
|
+
await vulKlantReferentie(db, orders, kop);
|
|
443
444
|
if (!c)
|
|
444
445
|
return;
|
|
445
446
|
const t = (v) => (v == null ? "" : String(v).trim());
|
|
446
447
|
klant["nummer"] = t(c["customer_number"]);
|
|
447
|
-
|
|
448
|
-
|
|
448
|
+
// Op pakbon, afleverbrief en productiebon: de handelsnaam, met de
|
|
449
|
+
// bedrijfsnaam als terugval. (De factuur blijft de bedrijfsnaam gebruiken.)
|
|
450
|
+
const weergave = t(c["commercial_name"]) || t(c["company_name"]);
|
|
451
|
+
if (weergave)
|
|
452
|
+
klant["naam"] = weergave;
|
|
449
453
|
klant["contact"] = t(c["contact_person"]);
|
|
450
454
|
const straat = t(c["street"]) ? [t(c["street"]), t(c["house_number"])].filter(Boolean).join(" ") : t(c["address_line1"]) || t(c["address"]);
|
|
451
455
|
kop["afleveradres"] = {
|
|
@@ -455,6 +459,25 @@ async function vulKlantEnAdres(db, orders, kop) {
|
|
|
455
459
|
land: t(c["country"]),
|
|
456
460
|
};
|
|
457
461
|
}
|
|
462
|
+
/**
|
|
463
|
+
* Klantreferentie: `customerOrderId` van de Floriday-verkooporder (Suppliers
|
|
464
|
+
* API SalesOrder), gekoppeld op orders.floriday_sales_order_id. Geen
|
|
465
|
+
* referentie bekend: leeg, zodat de regel verdwijnt (nooit het ordernummer).
|
|
466
|
+
*/
|
|
467
|
+
async function vulKlantReferentie(db, orders, kop) {
|
|
468
|
+
const order = (kop["order"] ?? {});
|
|
469
|
+
const klant = (kop["klant"] ?? {});
|
|
470
|
+
order["referentie"] = "";
|
|
471
|
+
klant["referentie"] = "";
|
|
472
|
+
const fids = uniek(orders.map((o) => o["floriday_sales_order_id"]));
|
|
473
|
+
if (!fids.length)
|
|
474
|
+
return;
|
|
475
|
+
const rijen = await veilig(() => db.from("floriday_salesorders_cache").select("floriday_id, data").in("floriday_id", fids));
|
|
476
|
+
const refs = uniek((Array.isArray(rijen) ? rijen : []).map((r) => (r["data"] ?? {})["customerOrderId"]));
|
|
477
|
+
const tekst = refs.length > 4 ? `${refs.slice(0, 4).join(", ")} +${refs.length - 4}` : refs.join(", ");
|
|
478
|
+
order["referentie"] = tekst;
|
|
479
|
+
klant["referentie"] = tekst;
|
|
480
|
+
}
|
|
458
481
|
/**
|
|
459
482
|
* Kopsecties bij één of meerdere orders. Conservatief: bij meerdere orders
|
|
460
483
|
* tonen we de klant (als die gelijk is) en géén willekeurig ordernummer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pakbonHtml.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonHtml.ts"],"names":[],"mappings":"AAUA,OAAO,EAyBL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAMzB,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAWD,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKtC;AAyBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAqF3D;AA4ED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGlD;
|
|
1
|
+
{"version":3,"file":"pakbonHtml.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonHtml.ts"],"names":[],"mappings":"AAUA,OAAO,EAyBL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAMzB,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAWD,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKtC;AAyBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAqF3D;AA4ED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGlD;AAwoBD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CA8DR;AAgBD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CAkFR;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,WAAW,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,IAAI,CAsCN;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAUf"}
|
|
@@ -591,6 +591,8 @@ function sectieHtmlRuw(s, order, zoek, opties) {
|
|
|
591
591
|
return (titelHtml(s) +
|
|
592
592
|
`<div class="grid2">${[
|
|
593
593
|
opt(s, "toonTransporteur", true) ? rij("Transporteur", order.transport.transporteur) : "",
|
|
594
|
+
opt(s, "toonOphaalmoment", true) ? rij("Ophaalmoment", order.transport["ophaalmoment"] ?? "") : "",
|
|
595
|
+
opt(s, "toonOphaaladres", true) ? rij("Ophaaladres", order.transport["ophaaladres"] ?? "") : "",
|
|
594
596
|
opt(s, "toonRoute", true) ? rij("Route", order.transport.route) : "",
|
|
595
597
|
opt(s, "toonChauffeur", false) ? rij("Chauffeur", order.transport.chauffeur) : "",
|
|
596
598
|
opt(s, "toonTrack", false) ? rij("Track & trace", order.transport.track) : "",
|
|
@@ -707,7 +709,12 @@ export function renderPakbonBody(config, order, opties = {}) {
|
|
|
707
709
|
const variantKop = variant
|
|
708
710
|
? `<div class="pakbonvariant">${variant === "full_cart" ? "HELE KAR" : "DEELKAR"}</div>`
|
|
709
711
|
: "";
|
|
710
|
-
|
|
712
|
+
// Klantnaam (handelsnaam) groot bovenaan; leeg = niets tonen.
|
|
713
|
+
const klantNaam = zonderUuid(order.klant?.naam ?? "");
|
|
714
|
+
const klantKop = klantNaam
|
|
715
|
+
? `<div class="blok" style="font-size:16pt;font-weight:800;line-height:1.15">${esc(klantNaam)}</div>`
|
|
716
|
+
: "";
|
|
717
|
+
const kop = variantKop + klantKop + documentLogoHtml(cfg.logo, opts);
|
|
711
718
|
const totalenSectie = zoek("totalen");
|
|
712
719
|
const totalenElkePagina = !!totalenSectie && opt(totalenSectie, "elke_pagina", false) === true;
|
|
713
720
|
const inhoud = secties
|
|
@@ -79,6 +79,12 @@ export declare const MAX_WACHT_OP_LAYOUT = 3;
|
|
|
79
79
|
* eindeloos blijft rondgaan en onder de gewone opschoning valt.
|
|
80
80
|
*/
|
|
81
81
|
export declare function wachtOpLayout(db: PrintDb, job: Job, reden: string): Promise<"wachtend" | "mislukt">;
|
|
82
|
+
/**
|
|
83
|
+
* Blijvende weigering (formaat past niet, geen geladen etiket). Opnieuw
|
|
84
|
+
* proberen kan niet slagen, dus meteen een eindstatus: telt niet als wachtend
|
|
85
|
+
* en valt buiten "Alles annuleren". De foutcode bepaalt het label.
|
|
86
|
+
*/
|
|
87
|
+
export declare function geweigerd(db: PrintDb, job: Job, code: "FORMAAT_PAST_NIET" | "GEEN_GELADEN_ETIKET", bericht: string): Promise<void>;
|
|
82
88
|
/**
|
|
83
89
|
* Verwerkt één stabiele PrintNode-status (uit /states of de webhook) op een
|
|
84
90
|
* 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":"
|
|
1
|
+
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// Pakt wachtende opdrachten op, maakt er een PDF van en stuurt die stil naar
|
|
4
4
|
// de juiste printer. Draait alleen op de server (cron / interne aanroep).
|
|
5
5
|
// ============================================================================
|
|
6
|
+
import { metVervoerder } from "./vervoerder.js";
|
|
6
7
|
import { maakPakbonOrder, renderPakbonDocument, voorbeeldPakbonOrder, } from "./pakbonHtml.js";
|
|
7
8
|
import { bouwPakbonScanInhoud, bewaarPakbonScanInhoud } from "./pakbonScan.js";
|
|
8
9
|
import { bouwPakbonBarcodeVerzoek, geleverdeBarcodeVoorJob, vraagPakbonBarcodeAan, } from "./pakbonBarcodeVerzoek.js";
|
|
@@ -170,10 +171,13 @@ function isEngineOpdracht(job) {
|
|
|
170
171
|
const bron = String(p.bron_module ?? p.owner_module ?? p.source_module ?? "").toLowerCase();
|
|
171
172
|
return bron.includes("logistic") || bron.includes("engine");
|
|
172
173
|
}
|
|
174
|
+
/** Stickers: altijd kant-en-klare PDF op een labelprinter. */
|
|
175
|
+
const ETIKET_PDF_SOORTEN = new Set(["sticker", "traysticker"]);
|
|
173
176
|
/** Testprint: alleen de eigen testvlag telt (geen kar, geen barcode). */
|
|
174
177
|
export function isTestprintJob(job) {
|
|
175
178
|
const p = (job.payload ?? {});
|
|
176
|
-
|
|
179
|
+
// Alleen een echte JSON-boolean true telt; "true", "ja", 1 of false niet.
|
|
180
|
+
return p["is_testprint"] === true;
|
|
177
181
|
}
|
|
178
182
|
/** Verwijdert elke barcode (order en karren), zodat het barcode-element leeg blijft. */
|
|
179
183
|
export function zonderBarcodes(order) {
|
|
@@ -900,6 +904,8 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
|
|
|
900
904
|
});
|
|
901
905
|
if (isTestpakbon)
|
|
902
906
|
order = zonderBarcodes(order);
|
|
907
|
+
// Vervoerder/ophaalmoment alleen uit de printopdracht; ontbrekend = weglaten.
|
|
908
|
+
order = metVervoerder(order, p);
|
|
903
909
|
if (isEngineOpdracht(job) && !isTestpakbon) {
|
|
904
910
|
let barcode = String(engineBarcode ?? "").trim();
|
|
905
911
|
if (!barcode) {
|
|
@@ -1191,6 +1197,29 @@ export async function wachtOpLayout(db, job, reden) {
|
|
|
1191
1197
|
await log(db, job.id, "wacht_op_engine_layout", `${reden} (poging ${pogingen}/${MAX_WACHT_OP_LAYOUT})`);
|
|
1192
1198
|
return "wachtend";
|
|
1193
1199
|
}
|
|
1200
|
+
/**
|
|
1201
|
+
* Blijvende weigering (formaat past niet, geen geladen etiket). Opnieuw
|
|
1202
|
+
* proberen kan niet slagen, dus meteen een eindstatus: telt niet als wachtend
|
|
1203
|
+
* en valt buiten "Alles annuleren". De foutcode bepaalt het label.
|
|
1204
|
+
*/
|
|
1205
|
+
export async function geweigerd(db, job, code, bericht) {
|
|
1206
|
+
const nu = new Date().toISOString();
|
|
1207
|
+
await db
|
|
1208
|
+
.from("print_jobs")
|
|
1209
|
+
.update({
|
|
1210
|
+
status: "mislukt",
|
|
1211
|
+
verwerkingsfase: "mislukt",
|
|
1212
|
+
fase_voltooid_op: nu,
|
|
1213
|
+
foutcode: code,
|
|
1214
|
+
foutmelding: `${code}: ${bericht}`.slice(0, 500),
|
|
1215
|
+
volgende_poging: null,
|
|
1216
|
+
voltooid_op: nu,
|
|
1217
|
+
updated_at: nu,
|
|
1218
|
+
})
|
|
1219
|
+
.eq("id", job.id)
|
|
1220
|
+
.neq("status", "geannuleerd");
|
|
1221
|
+
await log(db, job.id, "geweigerd", `${code}: ${bericht}`);
|
|
1222
|
+
}
|
|
1194
1223
|
async function mislukt(db, job, reden, terugNaarWachtend) {
|
|
1195
1224
|
const pogingen = Number(job.pogingen ?? 0);
|
|
1196
1225
|
const opnieuw = terugNaarWachtend && pogingen < MAX_POGINGEN;
|
|
@@ -1338,6 +1367,10 @@ async function verwerkJob(db, job) {
|
|
|
1338
1367
|
}
|
|
1339
1368
|
// Labelprinter: het geladen etiket is leidend (punt "geladen etiket").
|
|
1340
1369
|
const label = await labelControleVoorbereiden(db, printer);
|
|
1370
|
+
if (!label && ETIKET_PDF_SOORTEN.has(String(job.documenttype ?? ""))) {
|
|
1371
|
+
await geweigerd(db, job, "GEEN_GELADEN_ETIKET", `${documentTypeLabelVoor(String(job.documenttype))} gaat alleen naar een labelprinter met een ingesteld geladen etiket; printer ${String(printer.naam ?? printer.id)} heeft er geen.`);
|
|
1372
|
+
return "mislukt";
|
|
1373
|
+
}
|
|
1341
1374
|
const isTest = (job.payload ?? {})["is_testprint"] === true;
|
|
1342
1375
|
if (label && isTest && label.etiket) {
|
|
1343
1376
|
// Een testprint gebruikt het formaat dat echt in de printer zit.
|
|
@@ -1387,7 +1420,7 @@ async function verwerkJob(db, job) {
|
|
|
1387
1420
|
const maat = (klaar ? pdfPaginaMm(pdfBase64) : null) ?? { breedte_mm: breedteMm, hoogte_mm: hoogteMm };
|
|
1388
1421
|
const uit = etiketPast({ ...maat, soortLabel: documentTypeLabelVoor(String(job.documenttype ?? "Document")) }, label.etiket, label.naam);
|
|
1389
1422
|
if (!uit.ok) {
|
|
1390
|
-
await
|
|
1423
|
+
await geweigerd(db, job, uit.code, uit.bericht);
|
|
1391
1424
|
return "mislukt";
|
|
1392
1425
|
}
|
|
1393
1426
|
papier = { paper: uit.paper, rotate: uit.rotate, uitleg: uit.uitleg };
|
|
@@ -1436,7 +1469,8 @@ async function verwerkJob(db, job) {
|
|
|
1436
1469
|
printer_id: printer.id,
|
|
1437
1470
|
// layout_id blijft de aangeleverde invoer en wordt bewust niet
|
|
1438
1471
|
// overschreven met de uitkomst.
|
|
1439
|
-
|
|
1472
|
+
// Bij Floriday 1-op-1 wordt de Floriday-layout vastgelegd (alleen nieuwe opdrachten).
|
|
1473
|
+
gebruikte_layout_id: uitkomst.bron === "extern_pdf" ? null : (layout?.id ?? null),
|
|
1440
1474
|
gebruikte_bron: uitkomst.bron,
|
|
1441
1475
|
extern_job_id: externJobId,
|
|
1442
1476
|
printnode_status: "new",
|
|
@@ -4,7 +4,7 @@ export interface OvergeslagenRegel {
|
|
|
4
4
|
bron: Exclude<RouteringBron, "geen">;
|
|
5
5
|
regel_id: string;
|
|
6
6
|
printer_id: string | null;
|
|
7
|
-
reden: "ontbreekt" | "inactief" | "niet_bruikbaar";
|
|
7
|
+
reden: "ontbreekt" | "inactief" | "niet_bruikbaar" | "geen_labelprinter";
|
|
8
8
|
}
|
|
9
9
|
export interface RouteringUitkomst {
|
|
10
10
|
bron: RouteringBron;
|
|
@@ -20,6 +20,8 @@ export interface RouteringUitkomst {
|
|
|
20
20
|
werkplek_naam?: string | null;
|
|
21
21
|
printer_rol?: "a4" | "label" | null;
|
|
22
22
|
formaat_klasse?: "a4" | "label" | null;
|
|
23
|
+
/** geen_etiketlayout | geen_labelprinter | meerdere_labelprinters */
|
|
24
|
+
melding?: string | null;
|
|
23
25
|
}
|
|
24
26
|
export interface RouteringInvoer {
|
|
25
27
|
documenttype: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printRoutering.d.ts","sourceRoot":"","sources":["../../src/lib/printRoutering.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,GACR,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"printRoutering.d.ts","sourceRoot":"","sources":["../../src/lib/printRoutering.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,GACR,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;CAC1E;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IACvC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAuBD,oFAAoF;AACpF,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,EAAE,GAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAwD,GACvF,OAAO,CAAC,iBAAiB,CAAC,CAW5B;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,EAAE;;;;EA+BpB;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,mFAAmF;AACnF,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GACrE,OAAO,CAAC,iBAAiB,CAAC,CAE5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printService.functions.d.ts","sourceRoot":"","sources":["../../src/lib/printService.functions.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;;;;;;;;;;;;GASxB,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;8CAER;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;GAmBC,CAAC;AAEL,eAAO,MAAM,WAAW;;;;8CAEE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAU7C,CAAC;AAEL,eAAO,MAAM,uBAAuB;;;;+CAET;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;;;;;GAqE5C,CAAC;AAEL,eAAO,MAAM,gBAAgB;;;;;;;;;;;;GAYzB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;GAUnC,CAAC;AAEL,oFAAoF;AACpF,eAAO,MAAM,cAAc;;;;
|
|
1
|
+
{"version":3,"file":"printService.functions.d.ts","sourceRoot":"","sources":["../../src/lib/printService.functions.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe;;;;;;;;;;;;GASxB,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;8CAER;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;GAmBC,CAAC;AAEL,eAAO,MAAM,WAAW;;;;8CAEE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAU7C,CAAC;AAEL,eAAO,MAAM,uBAAuB;;;;+CAET;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;;;;;GAqE5C,CAAC;AAEL,eAAO,MAAM,gBAAgB;;;;;;;;;;;;GAYzB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;GAUnC,CAAC;AAEL,oFAAoF;AACpF,eAAO,MAAM,cAAc;;;;iFAgBvB,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;8CAED;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAyDvC,CAAC;AAEL,qDAAqD;AACrD,eAAO,MAAM,aAAa;;;;;;sBAYJ,MAAM;qBAAe,MAAM;iBAAW,MAAM,EAAE;uBAAiB,MAAM,EAAE;kBAAY,MAAM;uBAAiB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;GAMpI,CAAC;AAEL,qEAAqE;AACrE,eAAO,MAAM,sBAAsB;;;;;;;;;;GAoB/B,CAAC"}
|
|
@@ -158,10 +158,12 @@ export const printTellingen = createServerFn({ method: "POST" })
|
|
|
158
158
|
const statussen = ["wachtend", "bezig", "voltooid", "mislukt", "geannuleerd"];
|
|
159
159
|
const uitkomst = {};
|
|
160
160
|
await Promise.all(statussen.map(async (s) => {
|
|
161
|
-
const { count } = await context.supabase
|
|
161
|
+
const { count, error } = await context.supabase
|
|
162
162
|
.from("print_jobs")
|
|
163
163
|
.select("id", { count: "exact", head: true })
|
|
164
164
|
.eq("status", s);
|
|
165
|
+
if (error)
|
|
166
|
+
throw new Error(`Tellen mislukt (${s}): ${error.message}`);
|
|
165
167
|
uitkomst[s] = count ?? 0;
|
|
166
168
|
}));
|
|
167
169
|
return uitkomst;
|
|
@@ -42,7 +42,9 @@ export declare function sourceVoorJob(jobId: string | null | undefined): string;
|
|
|
42
42
|
* instellingenscherm. Onbekende soorten: geen expireAfter (PrintNode-standaard).
|
|
43
43
|
*/
|
|
44
44
|
export declare const VERVALTIJD_PER_SOORT: Record<string, number>;
|
|
45
|
-
|
|
45
|
+
/** Elke opdracht krijgt een vervaltijd, zodat hij nooit eindeloos blijft hangen. */
|
|
46
|
+
export declare const STANDAARD_VERVALTIJD_S = 3600;
|
|
47
|
+
export declare function vervaltijdVoor(documenttype: string | null | undefined): number;
|
|
46
48
|
/** PrintNode-aanroep met dezelfde sleutel en child-account-koppen als bij printen. */
|
|
47
49
|
export declare function printnodeVraag<T>(pad: string, init?: RequestInit): Promise<T>;
|
|
48
50
|
/** Alle printers die via de printclients in het netwerk beschikbaar zijn. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printService.server.d.ts","sourceRoot":"","sources":["../../src/lib/printService.server.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1C,oDAAoD;IACpD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAWD,iFAAiF;AACjF,qBAAa,eAAgB,SAAQ,KAAK;;CAEzC;AAED,kFAAkF;AAClF,eAAO,MAAM,aAAa,gCAA2B,CAAC;AACtD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvD,CAAC;AACF,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"printService.server.d.ts","sourceRoot":"","sources":["../../src/lib/printService.server.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAC1C,oDAAoD;IACpD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAWD,iFAAiF;AACjF,qBAAa,eAAgB,SAAQ,KAAK;;CAEzC;AAED,kFAAkF;AAClF,eAAO,MAAM,aAAa,gCAA2B,CAAC;AACtD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvD,CAAC;AACF,oFAAoF;AACpF,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE9E;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAE7E;AA4CD,6EAA6E;AAC7E,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAmBrE;AAED,gFAAgF;AAChF,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CASzE;AAED,2FAA2F;AAC3F,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CpF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWjF;AAED,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AACtF,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAA0D,CAAC;AAEpH,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAM5D;AAED,0DAA0D;AAC1D,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CAUzE;AAED,8EAA8E;AAC9E,wBAAsB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF;AAGD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3E,uDAAuD;AACvD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAejF;AAED,yCAAyC;AACzC,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qDAAqD;AACrD,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAchE"}
|
|
@@ -40,8 +40,10 @@ export const VERVALTIJD_PER_SOORT = {
|
|
|
40
40
|
afleverbrief: 3600,
|
|
41
41
|
factuur: 86400,
|
|
42
42
|
};
|
|
43
|
+
/** Elke opdracht krijgt een vervaltijd, zodat hij nooit eindeloos blijft hangen. */
|
|
44
|
+
export const STANDAARD_VERVALTIJD_S = 3600;
|
|
43
45
|
export function vervaltijdVoor(documenttype) {
|
|
44
|
-
return VERVALTIJD_PER_SOORT[String(documenttype ?? "").toLowerCase()] ??
|
|
46
|
+
return VERVALTIJD_PER_SOORT[String(documenttype ?? "").toLowerCase()] ?? STANDAARD_VERVALTIJD_S;
|
|
45
47
|
}
|
|
46
48
|
/** PrintNode-aanroep met dezelfde sleutel en child-account-koppen als bij printen. */
|
|
47
49
|
export function printnodeVraag(pad, init) {
|
|
@@ -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;CAC1B;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;CAC1B;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAa5D;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"}
|
|
@@ -17,6 +17,10 @@ export function printnodeStatusLabel(j) {
|
|
|
17
17
|
return "Geannuleerd";
|
|
18
18
|
if (j.foutcode === "AANLEVERING_MISLUKT")
|
|
19
19
|
return "Mislukt — geen document";
|
|
20
|
+
if (j.foutcode === "FORMAAT_PAST_NIET")
|
|
21
|
+
return "Geweigerd – past niet";
|
|
22
|
+
if (j.foutcode === "GEEN_GELADEN_ETIKET")
|
|
23
|
+
return "Geweigerd – geen etiket geladen";
|
|
20
24
|
const pn = String(j.printnode_status ?? "").toLowerCase();
|
|
21
25
|
if (pn && PRINTNODE_STATUS_LABEL[pn])
|
|
22
26
|
return PRINTNODE_STATUS_LABEL[pn];
|
|
@@ -9,6 +9,8 @@ export declare function controleerSecret(request: Request, secret: string, _veld
|
|
|
9
9
|
};
|
|
10
10
|
/** @deprecated gebruik controleerSecret */
|
|
11
11
|
export declare function secretKlopt(request: Request, secret: string): boolean;
|
|
12
|
+
/** Details van een geweigerde aanroep. Bevat nooit (een deel van) het geheim. */
|
|
13
|
+
export declare function afwijzingDetails(request: Request): Promise<Record<string, unknown>>;
|
|
12
14
|
/**
|
|
13
15
|
* Afhandeling van een webhookaanroep. Het geheim komt uit de eigen
|
|
14
16
|
* koppelingstabel (servicerol). `secretVoorTest` alleen voor tests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printnodeWebhook.d.ts","sourceRoot":"","sources":["../../src/lib/printnodeWebhook.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAWxC,8EAA8E;AAC9E,eAAO,MAAM,UAAU,+BAA+B,CAAC;AAEvD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAGtC;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAErE;AA8BD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,EAAE,EACN,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"printnodeWebhook.d.ts","sourceRoot":"","sources":["../../src/lib/printnodeWebhook.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAWxC,8EAA8E;AAC9E,eAAO,MAAM,UAAU,+BAA+B,CAAC;AAEvD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAGtC;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAErE;AA8BD,iFAAiF;AACjF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASzF;AASD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,EAAE,EACN,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,QAAQ,CAAC,CAmFnB;AAED,2EAA2E;AAC3E,wBAAsB,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBrD"}
|
|
@@ -52,6 +52,29 @@ async function noteer(db, regel, bewaren) {
|
|
|
52
52
|
}
|
|
53
53
|
catch { /* vastleggen mag verwerking niet blokkeren */ }
|
|
54
54
|
}
|
|
55
|
+
/** Details van een geweigerde aanroep. Bevat nooit (een deel van) het geheim. */
|
|
56
|
+
export async function afwijzingDetails(request) {
|
|
57
|
+
let lengte = 0;
|
|
58
|
+
try {
|
|
59
|
+
lengte = (await request.clone().text()).length;
|
|
60
|
+
}
|
|
61
|
+
catch { /* onleesbaar */ }
|
|
62
|
+
return {
|
|
63
|
+
secret_kop_aanwezig: request.headers.has(SECRET_KOP),
|
|
64
|
+
inhoud_lengte: lengte,
|
|
65
|
+
user_agent: (request.headers.get("user-agent") ?? "").slice(0, 120) || null,
|
|
66
|
+
content_type: (request.headers.get("content-type") ?? "").slice(0, 60) || null,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async function soortenUit(request) {
|
|
70
|
+
try {
|
|
71
|
+
const b = JSON.parse(await request.clone().text());
|
|
72
|
+
return Array.isArray(b) ? [...new Set(b.map((x) => String(x?.type ?? "").toLowerCase()).filter(Boolean))].slice(0, 5) : [];
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
55
78
|
/**
|
|
56
79
|
* Afhandeling van een webhookaanroep. Het geheim komt uit de eigen
|
|
57
80
|
* koppelingstabel (servicerol). `secretVoorTest` alleen voor tests.
|
|
@@ -74,9 +97,16 @@ export async function behandelPrintNodeWebhook(request, db, secretVoorTest, opti
|
|
|
74
97
|
return Response.json({ ok: false, fout: "Live printstatus is niet gekoppeld." }, { status: 503 });
|
|
75
98
|
}
|
|
76
99
|
if (!controleerSecret(request, secret).ok) {
|
|
77
|
-
|
|
100
|
+
// Vastleggen wát er binnenkwam, zonder het geheim zelf: alleen of de kop er
|
|
101
|
+
// was, hoe lang de inhoud is en welke soort melding het was.
|
|
102
|
+
await noteer(db, { http_status: 401, soorten: await soortenUit(request), antwoord: { fout: "Ongeldig secret", details: await afwijzingDetails(request) } }, uitTabel);
|
|
78
103
|
return Response.json({ ok: false, fout: "Ongeldig secret" }, { status: 401 });
|
|
79
104
|
}
|
|
105
|
+
// Eigen zelftest (geheim klopt): 200 + OK-kop, maar geen bewijs van PrintNode.
|
|
106
|
+
if (request.headers.get("x-layouts-zelftest") === "1") {
|
|
107
|
+
await noteer(db, { http_status: 200, soorten: ["zelftest"], antwoord: { ok: true, zelftest: true } }, uitTabel);
|
|
108
|
+
return Response.json({ ok: true, zelftest: true }, { headers: OK_KOP });
|
|
109
|
+
}
|
|
80
110
|
if (uitTabel) {
|
|
81
111
|
try {
|
|
82
112
|
await db.from("printnode_webhook_koppeling").update({
|
|
@@ -46,6 +46,8 @@ export type ZelftestUitkomst = "ja" | "nee" | "onbekend";
|
|
|
46
46
|
* Beoordeelt het antwoord van de eigen webhookroute zonder geheim.
|
|
47
47
|
* JSON (401/503) = route bestaat. Alleen een echte 404 = niet bereikbaar.
|
|
48
48
|
*/
|
|
49
|
+
/** Kop waarmee de eigen zelftest zich herkenbaar maakt. */
|
|
50
|
+
export declare const ZELFTEST_KOP = "x-layouts-zelftest";
|
|
49
51
|
export declare function beoordeelZelftest(status: number, contentType: string | null): ZelftestUitkomst;
|
|
50
52
|
/** Leest counts uit GET /webhooks (successfulRequests, failedRequests, receivedEvents, droppedEvents). */
|
|
51
53
|
export declare function leesCounts(counts: unknown): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printnodeWebhookBeheer.server.d.ts","sourceRoot":"","sources":["../../src/lib/printnodeWebhookBeheer.server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAQxC,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAID,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAGrE;AAMD,4EAA4E;AAC5E,wBAAsB,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAInE;AAQD,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE;AAEnG,0DAA0D;AAC1D,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAAG,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"printnodeWebhookBeheer.server.d.ts","sourceRoot":"","sources":["../../src/lib/printnodeWebhookBeheer.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,9 +64,15 @@ export async function koppelWebhook(db, opties = {}) {
|
|
|
64
64
|
throw new Error("PrintNode gaf de nieuwe webhook niet terug.");
|
|
65
65
|
webhookId = Number(gevonden.webhookId);
|
|
66
66
|
}
|
|
67
|
+
// Een tweede webhook naar hetzelfde adres heeft een oud geheim en geeft dus
|
|
68
|
+
// telkens 401. Niet zelf verwijderen: alleen zichtbaar melden (op webhookId).
|
|
69
|
+
const dubbel = alle.filter((w) => w.url === oordeel.url && Number(w.webhookId) !== webhookId);
|
|
70
|
+
const dubbelMelding = dubbel.length
|
|
71
|
+
? `Let op: in PrintNode staan nog ${dubbel.length} andere webhook(s) naar dit adres (id ${dubbel.map((w) => Number(w.webhookId)).join(", ")}). Die hebben een oud geheim en krijgen 401. Verwijder ze in PrintNode.`
|
|
72
|
+
: null;
|
|
67
73
|
await schrijf(db, {
|
|
68
74
|
geheim, secret_veld: null, webhook_id: webhookId, url: oordeel.url, status: "aan",
|
|
69
|
-
fout: null, melding: opties.melding ?? null, gekoppeld_op: nu, laatste_poging_op: nu,
|
|
75
|
+
fout: null, melding: dubbelMelding ?? opties.melding ?? null, gekoppeld_op: nu, laatste_poging_op: nu,
|
|
70
76
|
});
|
|
71
77
|
await controleerBereikbaarheid(db);
|
|
72
78
|
return { ok: true, url: oordeel.url, bijgewerkt: !!bestaand };
|
|
@@ -113,6 +119,8 @@ const ZELFTEST_MS = 5000;
|
|
|
113
119
|
* Beoordeelt het antwoord van de eigen webhookroute zonder geheim.
|
|
114
120
|
* JSON (401/503) = route bestaat. Alleen een echte 404 = niet bereikbaar.
|
|
115
121
|
*/
|
|
122
|
+
/** Kop waarmee de eigen zelftest zich herkenbaar maakt. */
|
|
123
|
+
export const ZELFTEST_KOP = "x-layouts-zelftest";
|
|
116
124
|
export function beoordeelZelftest(status, contentType) {
|
|
117
125
|
const json = (contentType ?? "").toLowerCase().includes("application/json");
|
|
118
126
|
if (json)
|
|
@@ -145,7 +153,9 @@ export async function controleerBereikbaarheid(db) {
|
|
|
145
153
|
const t = setTimeout(() => ctl.abort(), ZELFTEST_MS);
|
|
146
154
|
const r = await fetch(k.url, {
|
|
147
155
|
method: "POST",
|
|
148
|
-
|
|
156
|
+
// Eigen zelftest mét het geheim (server-side) en een eigen kenmerk, zodat
|
|
157
|
+
// hij niet meer als "401 · leeg" tussen de PrintNode-meldingen staat.
|
|
158
|
+
headers: { "Content-Type": "application/json", ...(k.geheim ? { "X-PrintNode-Webhook-Secret": k.geheim } : {}), [ZELFTEST_KOP]: "1" },
|
|
149
159
|
body: "[]",
|
|
150
160
|
signal: ctl.signal,
|
|
151
161
|
}).finally(() => clearTimeout(t));
|