@flowselections/layout-maker 1.8.3 → 1.13.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/README.md +139 -132
- package/dist-lib/components/ComputersLijst.d.ts +2 -1
- package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
- package/dist-lib/components/ComputersLijst.js +2 -2
- package/dist-lib/components/DocumentRouteringPage.d.ts +2 -0
- package/dist-lib/components/DocumentRouteringPage.d.ts.map +1 -0
- package/dist-lib/components/DocumentRouteringPage.js +115 -0
- package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
- package/dist-lib/components/LayoutsPage.js +13 -8
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +16 -1
- package/dist-lib/components/PrintStatusBanner.d.ts +8 -0
- package/dist-lib/components/PrintStatusBanner.d.ts.map +1 -0
- package/dist-lib/components/PrintStatusBanner.js +15 -0
- package/dist-lib/components/PrinterSetupWizard.js +1 -1
- package/dist-lib/components/PrintersPage.d.ts.map +1 -1
- package/dist-lib/components/PrintersPage.js +7 -23
- package/dist-lib/components/WerkplekConfiguratiePage.d.ts.map +1 -1
- package/dist-lib/components/WerkplekConfiguratiePage.js +35 -24
- package/dist-lib/components/WerkplekkenTabel.d.ts +2 -2
- package/dist-lib/components/WerkplekkenTabel.d.ts.map +1 -1
- package/dist-lib/components/WerkplekkenTabel.js +4 -3
- package/dist-lib/index.d.ts +8 -3
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +9 -5
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +491 -145
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +491 -145
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +505 -150
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/aiLayout.functions.d.ts +491 -145
- package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
- package/dist-lib/lib/aiLayout.server.js +9 -9
- package/dist-lib/lib/browserPrint.js +5 -5
- package/dist-lib/lib/documentBron.d.ts +35 -0
- package/dist-lib/lib/documentBron.d.ts.map +1 -0
- package/dist-lib/lib/documentBron.js +62 -0
- package/dist-lib/lib/documentRoutering.d.ts +23 -0
- package/dist-lib/lib/documentRoutering.d.ts.map +1 -0
- package/dist-lib/lib/documentRoutering.js +58 -0
- package/dist-lib/lib/documentTypes.d.ts +54 -0
- package/dist-lib/lib/documentTypes.d.ts.map +1 -1
- package/dist-lib/lib/documentTypes.js +56 -0
- package/dist-lib/lib/formaatPrinters.d.ts +5 -0
- package/dist-lib/lib/formaatPrinters.d.ts.map +1 -1
- package/dist-lib/lib/formaatPrinters.js +12 -0
- package/dist-lib/lib/layoutPreview.js +7 -7
- package/dist-lib/lib/pakbonHtml.js +50 -50
- package/dist-lib/lib/printApi.d.ts +20 -5
- package/dist-lib/lib/printApi.d.ts.map +1 -1
- package/dist-lib/lib/printApi.js +93 -32
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +72 -1
- package/dist-lib/lib/printService.functions.d.ts +1964 -580
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/printerTelling.d.ts +24 -0
- package/dist-lib/lib/printerTelling.d.ts.map +1 -0
- package/dist-lib/lib/printerTelling.js +41 -0
- package/dist-lib/lib/productiebonHtml.js +15 -15
- package/dist-lib/lib/profielHtml.js +18 -18
- package/dist-lib/lib/supabaseAdmin.server.d.ts +5 -5
- package/dist-lib/lib/supabaseAdmin.server.js +43 -43
- package/dist-lib/lib/testpagina.js +1 -1
- package/dist-lib/lib/useDocumentData.d.ts +4 -0
- package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
- package/dist-lib/lib/useDocumentData.js +106 -1
- package/package.json +6 -1
package/dist-lib/lib/printApi.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
// Andere modules gebruiken uitsluitend deze functies; zij hoeven de tabellen
|
|
5
5
|
// van deze module niet te kennen.
|
|
6
6
|
import { supabase } from "./supabaseClient.js";
|
|
7
|
+
import { printerVoorWerkplekDocument } from "./documentRoutering.js";
|
|
8
|
+
import { bronVoorDocument } from "./documentBron.js";
|
|
7
9
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
8
10
|
/** Zoekt de te gebruiken layout: expliciet, anders standaard, anders de nieuwste. */
|
|
9
11
|
async function bepaalLayout(documenttype, layoutId) {
|
|
@@ -25,16 +27,26 @@ async function bepaalLayout(documenttype, layoutId) {
|
|
|
25
27
|
.limit(1);
|
|
26
28
|
return arr(data)[0] ?? null;
|
|
27
29
|
}
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Kiest een printer: uitzondering voor de werkplek, anders koppeling op layout,
|
|
32
|
+
* anders koppeling op documentsoort + formaat.
|
|
33
|
+
*/
|
|
34
|
+
async function bepaalPrinter(documenttype, layoutId, papierformaat, werkplek) {
|
|
35
|
+
if (werkplek) {
|
|
36
|
+
const viaWerkplek = await printerVoorWerkplekDocument(documenttype, werkplek);
|
|
37
|
+
if (viaWerkplek)
|
|
38
|
+
return viaWerkplek;
|
|
39
|
+
}
|
|
40
|
+
if (layoutId) {
|
|
41
|
+
const { data: mappings } = await supabase
|
|
42
|
+
.from("printer_mappings")
|
|
43
|
+
.select("printer_id, prioriteit")
|
|
44
|
+
.eq("layout_id", layoutId)
|
|
45
|
+
.order("prioriteit");
|
|
46
|
+
const viaLayout = arr(mappings)[0]?.printer_id;
|
|
47
|
+
if (viaLayout)
|
|
48
|
+
return viaLayout;
|
|
49
|
+
}
|
|
38
50
|
if (papierformaat) {
|
|
39
51
|
const { data } = await supabase
|
|
40
52
|
.from("document_formaat_printers")
|
|
@@ -48,6 +60,29 @@ async function bepaalPrinter(documenttype, layoutId, papierformaat) {
|
|
|
48
60
|
}
|
|
49
61
|
return null;
|
|
50
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Kenmerk waarmee de wachtrij twee opdrachten van elkaar kan onderscheiden.
|
|
65
|
+
* Aanleverende modules horen altijd een order-kenmerk mee te geven
|
|
66
|
+
* (`queue_item_id`, `order_id` of `ordernummer` in de payload); zonder zo'n
|
|
67
|
+
* kenmerk valt de dubbelbescherming terug op het document zelf.
|
|
68
|
+
*/
|
|
69
|
+
function orderKenmerk(payload) {
|
|
70
|
+
const p = payload ?? {};
|
|
71
|
+
for (const sleutel of ["queue_item_id", "order_id", "ordernummer", "order_number", "orderId"]) {
|
|
72
|
+
const w = p[sleutel];
|
|
73
|
+
if (typeof w === "string" && w.trim())
|
|
74
|
+
return w.trim();
|
|
75
|
+
if (typeof w === "number" && Number.isFinite(w))
|
|
76
|
+
return String(w);
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
function waarschuwZonderKenmerk(documentnaam, payload) {
|
|
81
|
+
if (orderKenmerk(payload))
|
|
82
|
+
return;
|
|
83
|
+
console.warn(`[layout-maker] Printopdracht "${documentnaam}" heeft geen order-kenmerk in de payload ` +
|
|
84
|
+
`(queue_item_id / order_id / ordernummer). De dubbelbescherming valt terug op het document zelf.`);
|
|
85
|
+
}
|
|
51
86
|
/** Rij in de wachtrij zetten. Geeft null als de dubbelbeveiliging hem tegenhield. */
|
|
52
87
|
async function zetInWachtrij(rij) {
|
|
53
88
|
const { data, error } = await supabase
|
|
@@ -76,18 +111,26 @@ export class DubbeleAanvraagFout extends Error {
|
|
|
76
111
|
* modules binnen dezelfde shell en database.
|
|
77
112
|
*/
|
|
78
113
|
export async function printDocument(input) {
|
|
79
|
-
const
|
|
114
|
+
const regel = await bronVoorDocument(input.documenttype, input.herkomst);
|
|
115
|
+
const layoutKeuze = input.layoutId ?? (regel?.bron === "eigen_layout" ? (regel.layout_id ?? undefined) : undefined);
|
|
116
|
+
const layout = await bepaalLayout(input.documenttype, layoutKeuze);
|
|
80
117
|
if (!layout)
|
|
81
118
|
throw new Error(`Geen layout gevonden voor documenttype "${input.documenttype}"`);
|
|
82
119
|
const printerId = input.printerId ??
|
|
83
|
-
(await bepaalPrinter(input.documenttype, layout.id, layout.papierformaat ?? null));
|
|
120
|
+
(await bepaalPrinter(input.documenttype, layout.id, layout.papierformaat ?? null, input.werkplek ?? null));
|
|
121
|
+
waarschuwZonderKenmerk(input.documentnaam, input.payload);
|
|
84
122
|
const jobId = await zetInWachtrij({
|
|
85
123
|
layout_id: layout.id,
|
|
86
124
|
printer_id: printerId,
|
|
87
125
|
documenttype: input.documenttype,
|
|
88
126
|
documentnaam: input.documentnaam,
|
|
89
127
|
kopieen: input.kopieen ?? 1,
|
|
90
|
-
payload:
|
|
128
|
+
payload: {
|
|
129
|
+
...(input.payload ?? {}),
|
|
130
|
+
...(input.werkplek ? { werkplek: input.werkplek } : {}),
|
|
131
|
+
...(input.herkomst ? { herkomst: input.herkomst } : {}),
|
|
132
|
+
},
|
|
133
|
+
...(input.herkomst ? { herkomst: input.herkomst } : {}),
|
|
91
134
|
is_herprint: input.isHerprint ?? false,
|
|
92
135
|
});
|
|
93
136
|
if (!jobId)
|
|
@@ -95,24 +138,14 @@ export async function printDocument(input) {
|
|
|
95
138
|
return { jobId, layoutId: layout.id, printerId };
|
|
96
139
|
}
|
|
97
140
|
/**
|
|
98
|
-
* De printer die aan een documentsoort hangt: eerst de
|
|
99
|
-
*
|
|
100
|
-
* de koppeling op papierformaat. Geeft `null` als
|
|
141
|
+
* De printer die aan een documentsoort hangt: eerst de uitzondering voor de
|
|
142
|
+
* werkplek, dan de standaard (of nieuwste actieve) layout voor die soort met
|
|
143
|
+
* zijn printerkoppeling, anders de koppeling op papierformaat. Geeft `null` als
|
|
144
|
+
* er niets gekoppeld is.
|
|
101
145
|
*/
|
|
102
|
-
export async function printerVoorDocumenttype(documenttype, papierformaat) {
|
|
146
|
+
export async function printerVoorDocumenttype(documenttype, papierformaat, werkplek) {
|
|
103
147
|
const layout = await bepaalLayout(documenttype);
|
|
104
|
-
|
|
105
|
-
if (!papierformaat)
|
|
106
|
-
return null;
|
|
107
|
-
const { data } = await supabase
|
|
108
|
-
.from("document_formaat_printers")
|
|
109
|
-
.select("printer_id")
|
|
110
|
-
.eq("documenttype", documenttype)
|
|
111
|
-
.eq("formaat_code", papierformaat)
|
|
112
|
-
.maybeSingle();
|
|
113
|
-
return data?.printer_id ?? null;
|
|
114
|
-
}
|
|
115
|
-
return bepaalPrinter(documenttype, layout.id, papierformaat ?? layout.papierformaat ?? null);
|
|
148
|
+
return bepaalPrinter(documenttype, layout?.id ?? null, papierformaat ?? layout?.papierformaat ?? null, werkplek ?? null);
|
|
116
149
|
}
|
|
117
150
|
/**
|
|
118
151
|
* Print een kant-en-klare PDF (klantsticker, Floriday-document, factuur van een
|
|
@@ -123,18 +156,41 @@ export async function printPdf(input) {
|
|
|
123
156
|
const base64 = (input.pdfBase64 ?? "").replace(/^data:application\/pdf;base64,/i, "").trim();
|
|
124
157
|
if (!base64 && !input.pdfUrl)
|
|
125
158
|
throw new Error("Geef een PDF mee via pdfBase64 of pdfUrl.");
|
|
159
|
+
// Is ingesteld dat deze herkomst altijd een eigen ontwerp krijgt, dan wordt de
|
|
160
|
+
// meegestuurde PDF genegeerd en het document zelf opgemaakt.
|
|
161
|
+
const regel = await bronVoorDocument(input.documenttype, input.herkomst);
|
|
162
|
+
if (regel?.bron === "eigen_layout") {
|
|
163
|
+
const res = await printDocument({
|
|
164
|
+
documenttype: input.documenttype,
|
|
165
|
+
documentnaam: input.documentnaam,
|
|
166
|
+
layoutId: regel.layout_id ?? undefined,
|
|
167
|
+
printerId: input.printerId,
|
|
168
|
+
werkplek: input.werkplek,
|
|
169
|
+
kopieen: input.kopieen,
|
|
170
|
+
herkomst: input.herkomst,
|
|
171
|
+
payload: input.payload,
|
|
172
|
+
isHerprint: input.isHerprint,
|
|
173
|
+
});
|
|
174
|
+
return { jobId: res.jobId };
|
|
175
|
+
}
|
|
126
176
|
const printerId = input.printerId ??
|
|
127
|
-
(await printerVoorDocumenttype(input.documenttype, input.papierformaat));
|
|
177
|
+
(await printerVoorDocumenttype(input.documenttype, input.papierformaat, input.werkplek));
|
|
128
178
|
if (!printerId) {
|
|
129
179
|
throw new Error(`Geen printer gekoppeld voor ${input.documenttype} — stel dit in bij Layouts en printers.`);
|
|
130
180
|
}
|
|
181
|
+
waarschuwZonderKenmerk(input.documentnaam, input.payload);
|
|
131
182
|
const jobId = await zetInWachtrij({
|
|
132
183
|
layout_id: null,
|
|
133
184
|
printer_id: printerId,
|
|
134
185
|
documenttype: input.documenttype,
|
|
135
186
|
documentnaam: input.documentnaam,
|
|
136
187
|
kopieen: input.kopieen ?? 1,
|
|
137
|
-
payload:
|
|
188
|
+
payload: {
|
|
189
|
+
...(input.payload ?? {}),
|
|
190
|
+
...(input.werkplek ? { werkplek: input.werkplek } : {}),
|
|
191
|
+
...(input.herkomst ? { herkomst: input.herkomst } : {}),
|
|
192
|
+
},
|
|
193
|
+
...(input.herkomst ? { herkomst: input.herkomst } : {}),
|
|
138
194
|
is_herprint: input.isHerprint ?? false,
|
|
139
195
|
...(base64 ? { pdf_base64: base64 } : {}),
|
|
140
196
|
...(input.pdfUrl ? { pdf_url: input.pdfUrl } : {}),
|
|
@@ -152,13 +208,18 @@ export async function printHtml(input) {
|
|
|
152
208
|
throw new Error("Er is geen opmaak meegegeven.");
|
|
153
209
|
if (!input.printerId)
|
|
154
210
|
throw new Error("Kies een printer: een HTML-opdracht heeft geen layout.");
|
|
211
|
+
waarschuwZonderKenmerk(input.documentnaam, input.payload);
|
|
155
212
|
const jobId = await zetInWachtrij({
|
|
156
213
|
layout_id: null,
|
|
157
214
|
printer_id: input.printerId,
|
|
158
215
|
documenttype: input.documenttype,
|
|
159
216
|
documentnaam: input.documentnaam,
|
|
160
217
|
kopieen: input.kopieen ?? 1,
|
|
161
|
-
payload:
|
|
218
|
+
payload: {
|
|
219
|
+
...(input.payload ?? {}),
|
|
220
|
+
...(input.herkomst ? { herkomst: input.herkomst } : {}),
|
|
221
|
+
},
|
|
222
|
+
...(input.herkomst ? { herkomst: input.herkomst } : {}),
|
|
162
223
|
is_herprint: input.isHerprint ?? false,
|
|
163
224
|
render_html: input.html,
|
|
164
225
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAc5D,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;AAeD,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAc5D,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;AAeD,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AA8E9D;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BnF;AAmFD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoHzF;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AAyKD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wEAAwE;AACxE,wBAAsB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,SAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBtF"}
|
|
@@ -76,6 +76,46 @@ async function zoekLayout(db, job) {
|
|
|
76
76
|
.limit(1);
|
|
77
77
|
return { layout: (arr(data)[0] ?? null), expliciet: false };
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* De bronregel voor deze documentsoort en de herkomst van de order. Geeft
|
|
81
|
+
* `null` als er niets is ingesteld; dan geldt het standaardgedrag.
|
|
82
|
+
*/
|
|
83
|
+
async function zoekBronregel(db, job) {
|
|
84
|
+
const payload = (job.payload ?? {});
|
|
85
|
+
const herkomst = String(job.herkomst ?? payload?.["herkomst"] ?? "").trim();
|
|
86
|
+
if (!herkomst)
|
|
87
|
+
return null;
|
|
88
|
+
const { data } = await db
|
|
89
|
+
.from("document_bronregels")
|
|
90
|
+
.select("bron, layout_id")
|
|
91
|
+
.eq("documenttype", job.documenttype)
|
|
92
|
+
.eq("herkomst", herkomst)
|
|
93
|
+
.maybeSingle();
|
|
94
|
+
const regel = data;
|
|
95
|
+
if (!regel || regel.bron === "auto")
|
|
96
|
+
return null;
|
|
97
|
+
if (regel.bron === "eigen_layout" && regel.layout_id && !job.layout_id) {
|
|
98
|
+
job.layout_id = regel.layout_id;
|
|
99
|
+
}
|
|
100
|
+
return regel.bron;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Is aan deze opdracht een vaste Floriday-layout gekoppeld? Zulke layouts zijn
|
|
104
|
+
* geen ontwerp maar een verwijzing naar het document dat Floriday aanlevert.
|
|
105
|
+
*/
|
|
106
|
+
async function isFloridayLayoutKeuze(db, job) {
|
|
107
|
+
const payload = (job.payload ?? {});
|
|
108
|
+
const id = job.layout_id ?? payload?.["layoutId"] ?? payload?.["layout_id"] ?? null;
|
|
109
|
+
if (!id)
|
|
110
|
+
return false;
|
|
111
|
+
const { data } = await db
|
|
112
|
+
.from("document_layouts")
|
|
113
|
+
.select("systeem, bron")
|
|
114
|
+
.eq("id", id)
|
|
115
|
+
.maybeSingle();
|
|
116
|
+
const l = data;
|
|
117
|
+
return Boolean(l?.systeem) && String(l?.bron ?? "") === "floriday";
|
|
118
|
+
}
|
|
79
119
|
/**
|
|
80
120
|
* Haalt een kant-en-klare PDF van de opdracht op (klantstickers, standaard
|
|
81
121
|
* Floriday-documenten). Die gaat ongewijzigd naar de printer.
|
|
@@ -126,6 +166,19 @@ async function zoekPrinter(db, job, layout) {
|
|
|
126
166
|
let printer = await pak(job.printer_id);
|
|
127
167
|
if (printer)
|
|
128
168
|
return printer;
|
|
169
|
+
// Uitzondering voor de werkplek waar de opdracht vandaan komt.
|
|
170
|
+
const werkplek = String(job.payload?.werkplek ?? "").trim();
|
|
171
|
+
if (werkplek) {
|
|
172
|
+
const { data: wp } = await db
|
|
173
|
+
.from("document_werkplek_printers")
|
|
174
|
+
.select("printer_id")
|
|
175
|
+
.eq("documenttype", job.documenttype)
|
|
176
|
+
.eq("werkplek", werkplek)
|
|
177
|
+
.maybeSingle();
|
|
178
|
+
printer = await pak(wp?.printer_id);
|
|
179
|
+
if (printer)
|
|
180
|
+
return printer;
|
|
181
|
+
}
|
|
129
182
|
if (layout?.id) {
|
|
130
183
|
const { data } = await db
|
|
131
184
|
.from("printer_mappings")
|
|
@@ -344,8 +397,26 @@ async function verwerkJob(db, job) {
|
|
|
344
397
|
await log(db, job.id, "overgeslagen", "Stond al bij de printer.");
|
|
345
398
|
return "verstuurd";
|
|
346
399
|
}
|
|
347
|
-
// 1)
|
|
400
|
+
// 1) Bronregel: bepaalt of het meegestuurde document wordt gebruikt of dat
|
|
401
|
+
// er altijd een eigen ontwerp wordt opgemaakt.
|
|
402
|
+
let bron = await zoekBronregel(db, job);
|
|
403
|
+
// 1b) Is er een vaste Floriday-layout gekozen? Die staat alleen voor het
|
|
404
|
+
// kant-en-klare document uit Floriday: dat gaat 1-op-1 naar de printer.
|
|
405
|
+
if (await isFloridayLayoutKeuze(db, job)) {
|
|
406
|
+
bron = "extern_pdf";
|
|
407
|
+
job.layout_id = null;
|
|
408
|
+
}
|
|
409
|
+
if (bron === "eigen_layout") {
|
|
410
|
+
job.pdf_base64 = null;
|
|
411
|
+
job.pdf_url = null;
|
|
412
|
+
}
|
|
413
|
+
// 2) Kant-en-klare PDF (klantsticker, Floriday-document) gaat ongewijzigd door.
|
|
348
414
|
const klaar = await kantEnKlarePdf(db, job);
|
|
415
|
+
if (!klaar && bron === "extern_pdf") {
|
|
416
|
+
await mislukt(db, job, "Floriday-document ontbreekt: voor dit document is ingesteld dat het " +
|
|
417
|
+
"aangeleverde document wordt gebruikt, maar er is geen PDF meegestuurd.", true);
|
|
418
|
+
return "mislukt";
|
|
419
|
+
}
|
|
349
420
|
const keuze = klaar ? { layout: null, expliciet: false } : await zoekLayout(db, job);
|
|
350
421
|
const layout = keuze.layout;
|
|
351
422
|
const printer = await zoekPrinter(db, job, layout);
|