@flowselections/layout-maker 1.8.2 → 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.
Files changed (58) hide show
  1. package/README.md +8 -1
  2. package/dist-lib/components/ComputersLijst.d.ts +2 -1
  3. package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
  4. package/dist-lib/components/ComputersLijst.js +2 -2
  5. package/dist-lib/components/DocumentRouteringPage.d.ts +2 -0
  6. package/dist-lib/components/DocumentRouteringPage.d.ts.map +1 -0
  7. package/dist-lib/components/DocumentRouteringPage.js +115 -0
  8. package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
  9. package/dist-lib/components/LayoutsPage.js +13 -8
  10. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  11. package/dist-lib/components/PrintQueuePage.js +16 -1
  12. package/dist-lib/components/PrintStatusBanner.d.ts +8 -0
  13. package/dist-lib/components/PrintStatusBanner.d.ts.map +1 -0
  14. package/dist-lib/components/PrintStatusBanner.js +15 -0
  15. package/dist-lib/components/PrintersPage.d.ts.map +1 -1
  16. package/dist-lib/components/PrintersPage.js +7 -23
  17. package/dist-lib/components/WerkplekConfiguratiePage.d.ts.map +1 -1
  18. package/dist-lib/components/WerkplekConfiguratiePage.js +35 -24
  19. package/dist-lib/components/WerkplekkenTabel.d.ts +2 -2
  20. package/dist-lib/components/WerkplekkenTabel.d.ts.map +1 -1
  21. package/dist-lib/components/WerkplekkenTabel.js +4 -3
  22. package/dist-lib/index.d.ts +8 -3
  23. package/dist-lib/index.d.ts.map +1 -1
  24. package/dist-lib/index.js +9 -5
  25. package/dist-lib/integrations/supabase/auth-middleware.d.ts +491 -145
  26. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  27. package/dist-lib/integrations/supabase/client.server.d.ts +491 -145
  28. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  29. package/dist-lib/integrations/supabase/types.d.ts +505 -150
  30. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  31. package/dist-lib/lib/aiLayout.functions.d.ts +491 -145
  32. package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
  33. package/dist-lib/lib/documentBron.d.ts +35 -0
  34. package/dist-lib/lib/documentBron.d.ts.map +1 -0
  35. package/dist-lib/lib/documentBron.js +62 -0
  36. package/dist-lib/lib/documentRoutering.d.ts +23 -0
  37. package/dist-lib/lib/documentRoutering.d.ts.map +1 -0
  38. package/dist-lib/lib/documentRoutering.js +58 -0
  39. package/dist-lib/lib/documentTypes.d.ts +54 -0
  40. package/dist-lib/lib/documentTypes.d.ts.map +1 -1
  41. package/dist-lib/lib/documentTypes.js +56 -0
  42. package/dist-lib/lib/formaatPrinters.d.ts +5 -0
  43. package/dist-lib/lib/formaatPrinters.d.ts.map +1 -1
  44. package/dist-lib/lib/formaatPrinters.js +12 -0
  45. package/dist-lib/lib/printApi.d.ts +20 -5
  46. package/dist-lib/lib/printApi.d.ts.map +1 -1
  47. package/dist-lib/lib/printApi.js +93 -32
  48. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  49. package/dist-lib/lib/printQueue.server.js +72 -1
  50. package/dist-lib/lib/printService.functions.d.ts +1964 -580
  51. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  52. package/dist-lib/lib/printerTelling.d.ts +24 -0
  53. package/dist-lib/lib/printerTelling.d.ts.map +1 -0
  54. package/dist-lib/lib/printerTelling.js +41 -0
  55. package/dist-lib/lib/useDocumentData.d.ts +4 -0
  56. package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
  57. package/dist-lib/lib/useDocumentData.js +106 -1
  58. package/package.json +7 -2
@@ -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) Kant-en-klare PDF (klantsticker, Floriday-document) gaat ongewijzigd door.
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);