@flowselections/layout-maker 1.46.1 → 1.51.2
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/ComputerVerwijderenDialog.d.ts +16 -0
- package/dist-lib/components/ComputerVerwijderenDialog.d.ts.map +1 -0
- package/dist-lib/components/ComputerVerwijderenDialog.js +38 -0
- package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
- package/dist-lib/components/ComputersLijst.js +5 -2
- package/dist-lib/components/LayoutPrinterSelect.d.ts +3 -5
- package/dist-lib/components/LayoutPrinterSelect.d.ts.map +1 -1
- package/dist-lib/components/LayoutPrinterSelect.js +40 -17
- package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
- package/dist-lib/components/LayoutsPage.js +28 -18
- package/dist-lib/components/PrinterSetupWizard.d.ts +3 -1
- package/dist-lib/components/PrinterSetupWizard.d.ts.map +1 -1
- package/dist-lib/components/PrinterSetupWizard.js +13 -4
- package/dist-lib/components/PrinterVervangenDialog.d.ts +14 -0
- package/dist-lib/components/PrinterVervangenDialog.d.ts.map +1 -0
- package/dist-lib/components/PrinterVervangenDialog.js +44 -0
- package/dist-lib/components/PrintersPage.d.ts.map +1 -1
- package/dist-lib/components/PrintersPage.js +2 -2
- package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekDetailPage.js +175 -48
- package/dist-lib/components/PrintplekVerwijderenDialog.d.ts +9 -0
- package/dist-lib/components/PrintplekVerwijderenDialog.d.ts.map +1 -0
- package/dist-lib/components/PrintplekVerwijderenDialog.js +34 -0
- package/dist-lib/components/PrintplekkenPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekkenPage.js +28 -6
- package/dist-lib/components/WerkplekConfiguratiePage.d.ts.map +1 -1
- package/dist-lib/components/WerkplekConfiguratiePage.js +67 -25
- package/dist-lib/index.d.ts +9 -4
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +7 -3
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +511 -6
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +511 -6
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +511 -6
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +527 -6
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/aiLayout.functions.d.ts +511 -6
- package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
- package/dist-lib/lib/documentRoutering.d.ts +2 -1
- package/dist-lib/lib/documentRoutering.d.ts.map +1 -1
- package/dist-lib/lib/documentRoutering.js +5 -8
- package/dist-lib/lib/foutTekst.d.ts +3 -0
- package/dist-lib/lib/foutTekst.d.ts.map +1 -0
- package/dist-lib/lib/foutTekst.js +25 -0
- package/dist-lib/lib/printApi.d.ts.map +1 -1
- package/dist-lib/lib/printApi.js +13 -39
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +19 -66
- package/dist-lib/lib/printRoutering.d.ts +34 -0
- package/dist-lib/lib/printRoutering.d.ts.map +1 -0
- package/dist-lib/lib/printRoutering.js +69 -0
- package/dist-lib/lib/printService.functions.d.ts +2555 -30
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/printplekken.d.ts +67 -2
- package/dist-lib/lib/printplekken.d.ts.map +1 -1
- package/dist-lib/lib/printplekken.js +141 -10
- package/dist-lib/lib/useDocumentData.d.ts +15 -10
- package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
- package/dist-lib/lib/useDocumentData.js +43 -34
- package/package.json +2 -2
|
@@ -17,7 +17,8 @@ export declare function zetWerkplekPrinter(documenttype: string, werkplek: strin
|
|
|
17
17
|
export declare function verwijderWerkplekPrinter(id: string): Promise<void>;
|
|
18
18
|
/**
|
|
19
19
|
* De printer die voor deze documentsoort op deze werkplek is ingesteld.
|
|
20
|
-
* Geeft `null` als er geen uitzondering bestaat.
|
|
20
|
+
* Geeft `null` als er geen (bruikbare) uitzondering bestaat. Berekend met de
|
|
21
|
+
* gedeelde routering, dus gelijk aan wat er bij het printen gebeurt.
|
|
21
22
|
*/
|
|
22
23
|
export declare function printerVoorWerkplekDocument(documenttype: string, werkplek: string): Promise<string | null>;
|
|
23
24
|
//# sourceMappingURL=documentRoutering.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentRoutering.d.ts","sourceRoot":"","sources":["../../src/lib/documentRoutering.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"documentRoutering.d.ts","sourceRoot":"","sources":["../../src/lib/documentRoutering.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAID,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM;;;;EAiBxD;AAED,6EAA6E;AAC7E,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,iBAY9B;AAED,4CAA4C;AAC5C,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,MAAM,iBAGxD;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKxB"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// ============================================================================
|
|
6
6
|
import { useCallback, useEffect, useState } from "react";
|
|
7
7
|
import { supabase } from "./supabaseClient.js";
|
|
8
|
+
import { routeringVoor } from "./printRoutering.js";
|
|
8
9
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
9
10
|
/** Alle werkplek-uitzonderingen, eventueel gefilterd op documentsoort. */
|
|
10
11
|
export function useWerkplekPrinters(documenttype) {
|
|
@@ -42,17 +43,13 @@ export async function verwijderWerkplekPrinter(id) {
|
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* De printer die voor deze documentsoort op deze werkplek is ingesteld.
|
|
45
|
-
* Geeft `null` als er geen uitzondering bestaat.
|
|
46
|
+
* Geeft `null` als er geen (bruikbare) uitzondering bestaat. Berekend met de
|
|
47
|
+
* gedeelde routering, dus gelijk aan wat er bij het printen gebeurt.
|
|
46
48
|
*/
|
|
47
49
|
export async function printerVoorWerkplekDocument(documenttype, werkplek) {
|
|
48
50
|
const naam = (werkplek ?? "").trim();
|
|
49
51
|
if (!naam)
|
|
50
52
|
return null;
|
|
51
|
-
const {
|
|
52
|
-
|
|
53
|
-
.select("printer_id")
|
|
54
|
-
.eq("documenttype", documenttype)
|
|
55
|
-
.eq("werkplek", naam)
|
|
56
|
-
.maybeSingle();
|
|
57
|
-
return data?.printer_id ?? null;
|
|
53
|
+
const u = await routeringVoor({ documenttype, werkplek: naam });
|
|
54
|
+
return u.bron === "werkplek" ? u.printer_id : null;
|
|
58
55
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foutTekst.d.ts","sourceRoot":"","sources":["../../src/lib/foutTekst.ts"],"names":[],"mappings":"AAIA,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,SAAoB,GAAG,MAAM,CAoB7E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/foutTekst.ts — databasefouten omzetten naar leesbare tekst.
|
|
3
|
+
// ============================================================================
|
|
4
|
+
/** Maakt van een (Supabase-)fout een zin die de gebruiker zelf kan herleiden. */
|
|
5
|
+
export function leesbareFout(err, prefix = "Opslaan mislukt") {
|
|
6
|
+
const e = (err ?? {});
|
|
7
|
+
const msg = String(e.message ?? (typeof err === "string" ? err : "")).trim();
|
|
8
|
+
if (msg.includes("PRINTER_NIET_OP_PLEK")) {
|
|
9
|
+
const m = msg.match(/werkplek\s+(.+?)\.?$/);
|
|
10
|
+
return `${prefix}: deze printer is niet gekoppeld aan de printplek${m ? ` van werkplek ${m[1]}` : ""}. Koppel hem eerst aan de printplek.`;
|
|
11
|
+
}
|
|
12
|
+
if (msg.includes("PRINTER_NIET_GEKOPPELD") || msg.includes("niet gekoppeld aan")) {
|
|
13
|
+
return `${prefix}: ${msg.replace(/^[A-Z_]+:\s*/, "")}`;
|
|
14
|
+
}
|
|
15
|
+
if (e.code === "42501" || /permission denied|row-level security/i.test(msg)) {
|
|
16
|
+
return `${prefix}: geen rechten om dit te wijzigen.`;
|
|
17
|
+
}
|
|
18
|
+
if (e.code === "23505")
|
|
19
|
+
return `${prefix}: deze regel bestaat al.`;
|
|
20
|
+
if (e.code === "23503")
|
|
21
|
+
return `${prefix}: de gekozen printer of plek bestaat niet (meer).`;
|
|
22
|
+
if (/failed to fetch|network/i.test(msg))
|
|
23
|
+
return `${prefix}: geen verbinding met de server.`;
|
|
24
|
+
return msg ? `${prefix}: ${msg.replace(/^[A-Z_]+:\s*/, "")}` : prefix;
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,YAAY,EAAE,YAAY,GAAG,MAAM,CAAC;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"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"}
|
package/dist-lib/lib/printApi.js
CHANGED
|
@@ -4,8 +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 {
|
|
8
|
-
import {
|
|
7
|
+
import { printplekNaam, printplekVoorComputer } from "./printplekken.js";
|
|
8
|
+
import { routeringVoor } from "./printRoutering.js";
|
|
9
9
|
import { bronVoorDocument } from "./documentBron.js";
|
|
10
10
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
11
11
|
/** Zoekt de te gebruiken layout: expliciet, anders standaard, anders de nieuwste. */
|
|
@@ -34,40 +34,15 @@ async function bepaalLayout(documenttype, layoutId) {
|
|
|
34
34
|
* 3. koppeling op layout, 4. koppeling op documentsoort + formaat.
|
|
35
35
|
*/
|
|
36
36
|
async function bepaalPrinter(documenttype, layoutId, papierformaat, werkplek, printplekId) {
|
|
37
|
-
//
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (viaWerkplek)
|
|
47
|
-
return viaWerkplek;
|
|
48
|
-
}
|
|
49
|
-
if (layoutId) {
|
|
50
|
-
const { data: mappings } = await supabase
|
|
51
|
-
.from("printer_mappings")
|
|
52
|
-
.select("printer_id, prioriteit")
|
|
53
|
-
.eq("layout_id", layoutId)
|
|
54
|
-
.order("prioriteit");
|
|
55
|
-
const viaLayout = arr(mappings)[0]?.printer_id;
|
|
56
|
-
if (viaLayout)
|
|
57
|
-
return viaLayout;
|
|
58
|
-
}
|
|
59
|
-
if (papierformaat) {
|
|
60
|
-
const { data } = await supabase
|
|
61
|
-
.from("document_formaat_printers")
|
|
62
|
-
.select("printer_id")
|
|
63
|
-
.eq("documenttype", documenttype)
|
|
64
|
-
.eq("formaat_code", papierformaat)
|
|
65
|
-
.maybeSingle();
|
|
66
|
-
const viaFormaat = data?.printer_id;
|
|
67
|
-
if (viaFormaat)
|
|
68
|
-
return viaFormaat;
|
|
69
|
-
}
|
|
70
|
-
return null;
|
|
37
|
+
// Eén gedeelde routering in de database: dezelfde als de printwachtrij.
|
|
38
|
+
const uitkomst = await routeringVoor({
|
|
39
|
+
documenttype,
|
|
40
|
+
layoutId,
|
|
41
|
+
papierformaat,
|
|
42
|
+
werkplek: werkplek ?? null,
|
|
43
|
+
printplekId: printplekId ?? null,
|
|
44
|
+
});
|
|
45
|
+
return uitkomst.printer_id;
|
|
71
46
|
}
|
|
72
47
|
/**
|
|
73
48
|
* Kenmerk waarmee de wachtrij twee opdrachten van elkaar kan onderscheiden.
|
|
@@ -381,9 +356,8 @@ export async function printVerzendbriefVoorKar(input) {
|
|
|
381
356
|
const documenttype = "afleverbrief";
|
|
382
357
|
const cart = (input.cart ?? {});
|
|
383
358
|
const karnaam = String(cart["cart_label"] ?? cart["cartLabel"] ?? cart["cart_id"] ?? cart["cartId"] ?? "").trim();
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
(await printerVoorDocumenttype(documenttype, input.papierformaat, input.werkplek, input.printplekId));
|
|
359
|
+
// Eén gedeelde routering: dezelfde als de wachtrij en het printplekoverzicht.
|
|
360
|
+
const printerId = await printerVoorDocumenttype(documenttype, input.papierformaat, input.werkplek, input.printplekId);
|
|
387
361
|
if (!printerId) {
|
|
388
362
|
throw new GeenPrinterFout(await geenPrinterMelding(documenttype, input.printplekId ?? null, input.werkplek ?? null));
|
|
389
363
|
}
|
|
@@ -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;AAkC5D,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;AAoDD,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,CAAC;AAE1F,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;AA2PD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BnF;
|
|
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;AAkC5D,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;AAoDD,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,CAAC;AAE1F,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;AA2PD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BnF;AAsRD;;;;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,CAuZjB;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;AAoZD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA2BD,oFAAoF;AACpF,wBAAsB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,SAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwFtF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,GACP,OAAO,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA4B1D"}
|
|
@@ -582,88 +582,41 @@ async function zoekPrinter(db, job, layout) {
|
|
|
582
582
|
const explicietePlek = leesPrintPlekId(job);
|
|
583
583
|
// Een Engine-printplek is een harde keuze. Nooit terugvallen op computer,
|
|
584
584
|
// layout of bedrijfsregels wanneer de Engine een print_plek_id meegaf.
|
|
585
|
+
// Alleen een printer die nog echt aan de plek gekoppeld én actief is telt.
|
|
586
|
+
const plekPrinter = async (plek) => {
|
|
587
|
+
const { data } = await db.rpc("printplek_printer", { _plek: plek, _documenttype: type });
|
|
588
|
+
return typeof data === "string" ? data : null;
|
|
589
|
+
};
|
|
585
590
|
if (explicietePlek) {
|
|
586
|
-
|
|
587
|
-
.from("document_printplek_printers")
|
|
588
|
-
.select("printer_id")
|
|
589
|
-
.eq("print_plek_id", explicietePlek)
|
|
590
|
-
.eq("documenttype", type)
|
|
591
|
-
.maybeSingle();
|
|
592
|
-
printer = await pak(pp?.printer_id);
|
|
591
|
+
printer = await pak(await plekPrinter(explicietePlek));
|
|
593
592
|
if (printer)
|
|
594
593
|
return { printer, reden: "" };
|
|
595
594
|
const { data: plek } = await db.from("print_plekken").select("naam").eq("id", explicietePlek).maybeSingle();
|
|
596
595
|
return {
|
|
597
596
|
printer: null,
|
|
598
|
-
reden: `
|
|
597
|
+
reden: `GEEN_PRINTER: printplek '${String(plek?.naam ?? explicietePlek)}' heeft geen gekoppelde printer voor documenttype '${type}'.`,
|
|
599
598
|
};
|
|
600
599
|
}
|
|
601
|
-
// 2.
|
|
600
|
+
// 2-5. Gedeelde routering (printplek → werkplek → layout → standaard),
|
|
601
|
+
// dezelfde databasefunctie die het overzicht en layout_print_document
|
|
602
|
+
// gebruiken.
|
|
602
603
|
const plekId = await zoekPrintPlekId(db, job);
|
|
603
|
-
if (plekId) {
|
|
604
|
-
const { data: pp } = await db
|
|
605
|
-
.from("document_printplek_printers")
|
|
606
|
-
.select("printer_id")
|
|
607
|
-
.eq("print_plek_id", plekId)
|
|
608
|
-
.eq("documenttype", type)
|
|
609
|
-
.maybeSingle();
|
|
610
|
-
printer = await pak(pp?.printer_id);
|
|
611
|
-
if (printer)
|
|
612
|
-
return { printer, reden: "" };
|
|
613
|
-
}
|
|
614
|
-
else if (pickstation) {
|
|
604
|
+
if (!plekId && pickstation) {
|
|
615
605
|
return {
|
|
616
606
|
printer: null,
|
|
617
607
|
reden: `Pickstation '${pickstation}' heeft geen printplek. Koppel dit station aan een printplek.`,
|
|
618
608
|
};
|
|
619
609
|
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
printer = await pak(wp?.printer_id);
|
|
629
|
-
if (printer)
|
|
630
|
-
return { printer, reden: "" };
|
|
631
|
-
}
|
|
632
|
-
if (layout?.id) {
|
|
633
|
-
const { data } = await db
|
|
634
|
-
.from("printer_mappings")
|
|
635
|
-
.select("printer_id")
|
|
636
|
-
.eq("layout_id", layout.id)
|
|
637
|
-
.order("prioriteit", { ascending: true })
|
|
638
|
-
.limit(1);
|
|
639
|
-
printer = await pak(arr(data)[0]?.printer_id);
|
|
640
|
-
if (printer)
|
|
641
|
-
return { printer, reden: "" };
|
|
642
|
-
}
|
|
643
|
-
// 4. Bedrijfsbrede standaardregel: eerst op documenttype + papierformaat,
|
|
644
|
-
// daarna op documenttype alleen. Geen "pak de enige printer"-noodgreep
|
|
645
|
-
// meer: dan zou er stil op de verkeerde printer geprint kunnen worden.
|
|
646
|
-
const formaat = layout?.papierformaat ?? "A4";
|
|
647
|
-
const { data: fm } = await db
|
|
648
|
-
.from("document_formaat_printers")
|
|
649
|
-
.select("printer_id")
|
|
650
|
-
.eq("documenttype", type)
|
|
651
|
-
.eq("formaat_code", formaat)
|
|
652
|
-
.maybeSingle();
|
|
653
|
-
printer = await pak(fm?.printer_id);
|
|
610
|
+
const { data: route } = await db.rpc("printer_routering", {
|
|
611
|
+
_documenttype: type,
|
|
612
|
+
_print_plek_id: plekId || null,
|
|
613
|
+
_werkplek: werkplek || null,
|
|
614
|
+
_layout_id: layout?.id ?? null,
|
|
615
|
+
_papierformaat: layout?.papierformaat ?? null,
|
|
616
|
+
});
|
|
617
|
+
printer = await pak(route?.printer_id);
|
|
654
618
|
if (printer)
|
|
655
619
|
return { printer, reden: "" };
|
|
656
|
-
const { data: alle } = await db
|
|
657
|
-
.from("document_formaat_printers")
|
|
658
|
-
.select("printer_id")
|
|
659
|
-
.eq("documenttype", type)
|
|
660
|
-
.not("printer_id", "is", null)
|
|
661
|
-
.limit(5);
|
|
662
|
-
for (const regel of arr(alle)) {
|
|
663
|
-
printer = await pak(regel.printer_id);
|
|
664
|
-
if (printer)
|
|
665
|
-
return { printer, reden: "" };
|
|
666
|
-
}
|
|
667
620
|
if (plekId) {
|
|
668
621
|
const naam = (await printplekNaamVoorJob(db, job)) ?? "onbekend";
|
|
669
622
|
return {
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
export type RouteringBron = "printplek" | "werkplek" | "layout" | "standaard" | "geen";
|
|
3
|
+
export interface OvergeslagenRegel {
|
|
4
|
+
bron: Exclude<RouteringBron, "geen">;
|
|
5
|
+
regel_id: string;
|
|
6
|
+
printer_id: string | null;
|
|
7
|
+
reden: "ontbreekt" | "inactief" | "niet_bruikbaar";
|
|
8
|
+
}
|
|
9
|
+
export interface RouteringUitkomst {
|
|
10
|
+
bron: RouteringBron;
|
|
11
|
+
printer_id: string | null;
|
|
12
|
+
regel_id: string | null;
|
|
13
|
+
print_plek_id: string | null;
|
|
14
|
+
werkplek: string | null;
|
|
15
|
+
layout_id: string | null;
|
|
16
|
+
papierformaat: string | null;
|
|
17
|
+
overgeslagen: OvergeslagenRegel[];
|
|
18
|
+
}
|
|
19
|
+
export interface RouteringInvoer {
|
|
20
|
+
documenttype: string;
|
|
21
|
+
printplekId?: string | null;
|
|
22
|
+
werkplek?: string | null;
|
|
23
|
+
layoutId?: string | null;
|
|
24
|
+
papierformaat?: string | null;
|
|
25
|
+
}
|
|
26
|
+
/** Roept de gedeelde routering aan; `db` mag de server-client van de shell zijn. */
|
|
27
|
+
export declare function routeringVoor(invoer: RouteringInvoer, db?: SupabaseClient<any, any, any>): Promise<RouteringUitkomst>;
|
|
28
|
+
/** Uitkomst per documentsoort × computer van een printplek (null = zonder computer). */
|
|
29
|
+
export declare function useRouteringOverzicht(printplekId: string, documenttypes: string[], computers: string[]): {
|
|
30
|
+
uitkomsten: Record<string, RouteringUitkomst>;
|
|
31
|
+
laden: boolean;
|
|
32
|
+
reload: () => Promise<void>;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=printRoutering.d.ts.map
|
|
@@ -0,0 +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,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEvF,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;CACpD;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;CACnC;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;CAC/B;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,CAU5B;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,EAAE;;;;EA+BpB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/printRoutering.ts — dunne laag over de gedeelde databasefunctie
|
|
3
|
+
// `printer_routering`. Dezelfde functie bepaalt de printer bij het echte
|
|
4
|
+
// printen (wachtrij, module-API en layout_print_document), dus wat het
|
|
5
|
+
// overzicht toont is precies wat er gebeurt.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { useCallback, useEffect, useState } from "react";
|
|
8
|
+
import { supabase } from "./supabaseClient.js";
|
|
9
|
+
const LEEG = {
|
|
10
|
+
bron: "geen",
|
|
11
|
+
printer_id: null,
|
|
12
|
+
regel_id: null,
|
|
13
|
+
print_plek_id: null,
|
|
14
|
+
werkplek: null,
|
|
15
|
+
layout_id: null,
|
|
16
|
+
papierformaat: null,
|
|
17
|
+
overgeslagen: [],
|
|
18
|
+
};
|
|
19
|
+
function normaliseer(data) {
|
|
20
|
+
if (!data || typeof data !== "object")
|
|
21
|
+
return LEEG;
|
|
22
|
+
const d = data;
|
|
23
|
+
return {
|
|
24
|
+
...LEEG,
|
|
25
|
+
...d,
|
|
26
|
+
overgeslagen: Array.isArray(d.overgeslagen) ? d.overgeslagen : [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Roept de gedeelde routering aan; `db` mag de server-client van de shell zijn. */
|
|
30
|
+
export async function routeringVoor(invoer, db = supabase) {
|
|
31
|
+
const { data, error } = await db.rpc("printer_routering", {
|
|
32
|
+
_documenttype: invoer.documenttype,
|
|
33
|
+
_print_plek_id: invoer.printplekId || null,
|
|
34
|
+
_werkplek: invoer.werkplek?.trim() || null,
|
|
35
|
+
_layout_id: invoer.layoutId || null,
|
|
36
|
+
_papierformaat: invoer.papierformaat || null,
|
|
37
|
+
});
|
|
38
|
+
if (error)
|
|
39
|
+
throw error;
|
|
40
|
+
return normaliseer(data);
|
|
41
|
+
}
|
|
42
|
+
/** Uitkomst per documentsoort × computer van een printplek (null = zonder computer). */
|
|
43
|
+
export function useRouteringOverzicht(printplekId, documenttypes, computers) {
|
|
44
|
+
const [uitkomsten, setUitkomsten] = useState({});
|
|
45
|
+
const [laden, setLaden] = useState(true);
|
|
46
|
+
const sleutelTypes = documenttypes.join("|");
|
|
47
|
+
const sleutelPcs = computers.join("|");
|
|
48
|
+
const load = useCallback(async () => {
|
|
49
|
+
if (!printplekId)
|
|
50
|
+
return;
|
|
51
|
+
const pcs = computers.length ? computers : [null];
|
|
52
|
+
const taken = [];
|
|
53
|
+
for (const t of documenttypes) {
|
|
54
|
+
for (const pc of pcs) {
|
|
55
|
+
taken.push(routeringVoor({ documenttype: t, printplekId, werkplek: pc })
|
|
56
|
+
.catch(() => LEEG)
|
|
57
|
+
.then((u) => [`${t}::${pc ?? ""}`, u]));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const res = await Promise.all(taken);
|
|
61
|
+
setUitkomsten(Object.fromEntries(res));
|
|
62
|
+
setLaden(false);
|
|
63
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
64
|
+
}, [printplekId, sleutelTypes, sleutelPcs]);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
void load();
|
|
67
|
+
}, [load]);
|
|
68
|
+
return { uitkomsten, laden, reload: load };
|
|
69
|
+
}
|