@flowselections/layout-maker 1.13.1 → 1.19.0

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 (86) hide show
  1. package/dist-lib/components/AfdrukKnop.d.ts +5 -0
  2. package/dist-lib/components/AfdrukKnop.d.ts.map +1 -1
  3. package/dist-lib/components/AfdrukKnop.js +5 -0
  4. package/dist-lib/components/DocumentRouteringPage.d.ts +3 -1
  5. package/dist-lib/components/DocumentRouteringPage.d.ts.map +1 -1
  6. package/dist-lib/components/DocumentRouteringPage.js +66 -64
  7. package/dist-lib/components/DocumentenPage.d.ts +4 -0
  8. package/dist-lib/components/DocumentenPage.d.ts.map +1 -0
  9. package/dist-lib/components/DocumentenPage.js +16 -0
  10. package/dist-lib/components/LayoutsPage.d.ts +3 -1
  11. package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
  12. package/dist-lib/components/LayoutsPage.js +3 -2
  13. package/dist-lib/components/LayoutsPrintersTabPage.d.ts +2 -0
  14. package/dist-lib/components/LayoutsPrintersTabPage.d.ts.map +1 -0
  15. package/dist-lib/components/LayoutsPrintersTabPage.js +32 -0
  16. package/dist-lib/components/LogosPage.d.ts +3 -1
  17. package/dist-lib/components/LogosPage.d.ts.map +1 -1
  18. package/dist-lib/components/LogosPage.js +3 -2
  19. package/dist-lib/components/ModuleTabs.d.ts +19 -0
  20. package/dist-lib/components/ModuleTabs.d.ts.map +1 -0
  21. package/dist-lib/components/ModuleTabs.js +17 -0
  22. package/dist-lib/components/PakbonBuilderPage.d.ts.map +1 -1
  23. package/dist-lib/components/PakbonBuilderPage.js +30 -4
  24. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  25. package/dist-lib/components/PrintQueuePage.js +15 -2
  26. package/dist-lib/components/PrintenPage.d.ts +4 -0
  27. package/dist-lib/components/PrintenPage.d.ts.map +1 -0
  28. package/dist-lib/components/PrintenPage.js +21 -0
  29. package/dist-lib/components/PrinterSetupWizard.js +3 -3
  30. package/dist-lib/components/PrintersPage.d.ts +3 -1
  31. package/dist-lib/components/PrintersPage.d.ts.map +1 -1
  32. package/dist-lib/components/PrintersPage.js +20 -38
  33. package/dist-lib/components/PrintersRedirectPage.d.ts +2 -0
  34. package/dist-lib/components/PrintersRedirectPage.d.ts.map +1 -0
  35. package/dist-lib/components/PrintersRedirectPage.js +14 -0
  36. package/dist-lib/components/PrintplekDetailPage.d.ts +2 -0
  37. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -0
  38. package/dist-lib/components/PrintplekDetailPage.js +81 -0
  39. package/dist-lib/components/PrintplekWizard.d.ts +8 -0
  40. package/dist-lib/components/PrintplekWizard.d.ts.map +1 -0
  41. package/dist-lib/components/PrintplekWizard.js +194 -0
  42. package/dist-lib/components/PrintplekkenPage.d.ts +4 -0
  43. package/dist-lib/components/PrintplekkenPage.d.ts.map +1 -0
  44. package/dist-lib/components/PrintplekkenPage.js +110 -0
  45. package/dist-lib/index.d.ts +15 -1
  46. package/dist-lib/index.d.ts.map +1 -1
  47. package/dist-lib/index.js +16 -7
  48. package/dist-lib/integrations/supabase/auth-middleware.d.ts +363 -0
  49. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  50. package/dist-lib/integrations/supabase/client.server.d.ts +363 -0
  51. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  52. package/dist-lib/integrations/supabase/types.d.ts +370 -0
  53. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  54. package/dist-lib/lib/aiLayout.functions.d.ts +363 -0
  55. package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
  56. package/dist-lib/lib/browserPrint.d.ts +4 -0
  57. package/dist-lib/lib/browserPrint.d.ts.map +1 -1
  58. package/dist-lib/lib/browserPrint.js +4 -0
  59. package/dist-lib/lib/documentTypes.d.ts +7 -0
  60. package/dist-lib/lib/documentTypes.d.ts.map +1 -1
  61. package/dist-lib/lib/documentTypes.js +8 -0
  62. package/dist-lib/lib/pakbonHtml.d.ts +5 -2
  63. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  64. package/dist-lib/lib/pakbonHtml.js +5 -2
  65. package/dist-lib/lib/printApi.d.ts +23 -7
  66. package/dist-lib/lib/printApi.d.ts.map +1 -1
  67. package/dist-lib/lib/printApi.js +51 -15
  68. package/dist-lib/lib/printQueue.d.ts +28 -0
  69. package/dist-lib/lib/printQueue.d.ts.map +1 -0
  70. package/dist-lib/lib/printQueue.js +70 -0
  71. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  72. package/dist-lib/lib/printQueue.server.js +141 -18
  73. package/dist-lib/lib/printService.functions.d.ts +1452 -0
  74. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  75. package/dist-lib/lib/printplekWizard.d.ts +57 -0
  76. package/dist-lib/lib/printplekWizard.d.ts.map +1 -0
  77. package/dist-lib/lib/printplekWizard.js +87 -0
  78. package/dist-lib/lib/printplekken.d.ts +75 -0
  79. package/dist-lib/lib/printplekken.d.ts.map +1 -0
  80. package/dist-lib/lib/printplekken.js +198 -0
  81. package/dist-lib/lib/testpagina.d.ts.map +1 -1
  82. package/dist-lib/lib/testpagina.js +5 -5
  83. package/dist-lib/lib/useDocumentData.d.ts +6 -0
  84. package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
  85. package/dist-lib/lib/useDocumentData.js +64 -9
  86. package/package.json +14 -14
@@ -158,6 +158,13 @@ export declare const STANDAARD_LAYOUTS: readonly [{
158
158
  readonly breedte_mm: 210;
159
159
  readonly hoogte_mm: 297;
160
160
  readonly omschrijving: "Verzendbrief voor eigen (niet-Floriday) orders. Volledig aanpasbaar.";
161
+ }, {
162
+ readonly naam: "Productiebon";
163
+ readonly documenttype: "productiebon";
164
+ readonly papierformaat: "A4";
165
+ readonly breedte_mm: 210;
166
+ readonly hoogte_mm: 297;
167
+ readonly omschrijving: "Standaard productiebon met de vaste blokindeling. Volledig aanpasbaar.";
161
168
  }];
162
169
  export interface LayoutVariabele {
163
170
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,14 @@ export const STANDAARD_LAYOUTS = [
89
89
  hoogte_mm: 297,
90
90
  omschrijving: "Verzendbrief voor eigen (niet-Floriday) orders. Volledig aanpasbaar.",
91
91
  },
92
+ {
93
+ naam: "Productiebon",
94
+ documenttype: "productiebon",
95
+ papierformaat: "A4",
96
+ breedte_mm: 210,
97
+ hoogte_mm: 297,
98
+ omschrijving: "Standaard productiebon met de vaste blokindeling. Volledig aanpasbaar.",
99
+ },
92
100
  ];
93
101
  export const ELEMENT_STANDAARD = {
94
102
  tekst: { label: "Tekst", breedte: 60, hoogte: 8, content: "Nieuwe tekst" },
@@ -35,11 +35,14 @@ export declare function renderPakbonDocument(config: PakbonConfig | unknown, ord
35
35
  /** Handig voor testen: het document met de voorbeeldgegevens. */
36
36
  export declare function voorbeeldPakbonOrder(): PakbonOrder;
37
37
  /**
38
- * Opent het printvenster met de pakbon. Andere modules hoeven hiervoor niets
39
- * zelf te bouwen: layoutconfiguratie + ordergegevens erin, afdruk eruit.
38
+ * Opent het printvenster met de pakbon.
39
+ *
40
+ * @deprecated Verouderd — gebruik `renderPakbonDocument()` samen met
41
+ * `printHtml()` uit `printApi`, zodat de afdruk via PrintNode loopt.
40
42
  */
41
43
  export declare function printPakbon(config: PakbonConfig | unknown, order: PakbonOrder, opties?: PakbonRenderOpties): void;
42
44
  /**
45
+ * @deprecated Verouderd — gebruik `renderPakbonDocument()` + `printHtml()`.
43
46
  * Zelfde als `printPakbon`, maar haalt de logo's zelf uit de centrale Logo
44
47
  * Bibliotheek en bedt ze in. Andere modules hoeven zo niets over logo's te
45
48
  * weten: het documentlogo verschijnt automatisch op de afdruk.
@@ -1 +1 @@
1
- {"version":3,"file":"pakbonHtml.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonHtml.ts"],"names":[],"mappings":"AAUA,OAAO,EAmBL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAGzB,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC;AAEpC,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;CACxB;AAWD,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKtC;AAQD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CA+D3D;AA4oBD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CA8BR;AAgBD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CA2DR;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,WAAW,CAElD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,IAAI,CAsCN;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAUf"}
1
+ {"version":3,"file":"pakbonHtml.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonHtml.ts"],"names":[],"mappings":"AAUA,OAAO,EAmBL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAGzB,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC;AAEpC,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;CACxB;AAWD,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKtC;AAQD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CA+D3D;AA4oBD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CA8BR;AAgBD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CA2DR;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"}
@@ -697,8 +697,10 @@ export function voorbeeldPakbonOrder() {
697
697
  return DEMO_ORDER;
698
698
  }
699
699
  /**
700
- * Opent het printvenster met de pakbon. Andere modules hoeven hiervoor niets
701
- * zelf te bouwen: layoutconfiguratie + ordergegevens erin, afdruk eruit.
700
+ * Opent het printvenster met de pakbon.
701
+ *
702
+ * @deprecated Verouderd — gebruik `renderPakbonDocument()` samen met
703
+ * `printHtml()` uit `printApi`, zodat de afdruk via PrintNode loopt.
702
704
  */
703
705
  export function printPakbon(config, order, opties = {}) {
704
706
  if (typeof window === "undefined")
@@ -736,6 +738,7 @@ export function printPakbon(config, order, opties = {}) {
736
738
  window.setTimeout(() => void wachtOpAfbeeldingen(), 200);
737
739
  }
738
740
  /**
741
+ * @deprecated Verouderd — gebruik `renderPakbonDocument()` + `printHtml()`.
739
742
  * Zelfde als `printPakbon`, maar haalt de logo's zelf uit de centrale Logo
740
743
  * Bibliotheek en bedt ze in. Andere modules hoeven zo niets over logo's te
741
744
  * weten: het documentlogo verschijnt automatisch op de afdruk.
@@ -8,6 +8,11 @@ export interface PrintDocumentInput {
8
8
  printerId?: string;
9
9
  /** Optioneel: naam van de werkplek/computer waar dit vandaan komt. */
10
10
  werkplek?: string;
11
+ /**
12
+ * Optioneel: de printplek (fysieke plek, bijv. een pickstation) waar dit
13
+ * document uit moet komen. Wint van `werkplek` bij de printerkeuze.
14
+ */
15
+ printplekId?: string;
11
16
  /** Naam zoals die in de wachtrij verschijnt. */
12
17
  documentnaam: string;
13
18
  kopieen?: number;
@@ -31,18 +36,23 @@ export declare class DubbeleAanvraagFout extends Error {
31
36
  name: string;
32
37
  constructor();
33
38
  }
39
+ /** Fout wanneer nergens een printer voor dit document is ingesteld. */
40
+ export declare class GeenPrinterFout extends Error {
41
+ name: string;
42
+ constructor(melding: string);
43
+ }
34
44
  /**
35
45
  * Zet een document in de printwachtrij. Bedoeld voor gebruik vanuit andere
36
46
  * modules binnen dezelfde shell en database.
37
47
  */
38
48
  export declare function printDocument(input: PrintDocumentInput): Promise<PrintDocumentResult>;
39
49
  /**
40
- * De printer die aan een documentsoort hangt: eerst de uitzondering voor de
41
- * werkplek, dan de standaard (of nieuwste actieve) layout voor die soort met
42
- * zijn printerkoppeling, anders de koppeling op papierformaat. Geeft `null` als
43
- * er niets gekoppeld is.
50
+ * De printer die aan een documentsoort hangt: eerst de regel van de printplek,
51
+ * dan de uitzondering voor de werkplek, dan de standaard (of nieuwste actieve)
52
+ * layout voor die soort met zijn printerkoppeling, anders de koppeling op
53
+ * papierformaat. Geeft `null` als er niets gekoppeld is.
44
54
  */
45
- export declare function printerVoorDocumenttype(documenttype: DocumentType | string, papierformaat?: string, werkplek?: string): Promise<string | null>;
55
+ export declare function printerVoorDocumenttype(documenttype: DocumentType | string, papierformaat?: string, werkplek?: string, printplekId?: string): Promise<string | null>;
46
56
  export interface PrintPdfInput {
47
57
  /** Documentsoort, alleen voor overzicht en printerkeuze. */
48
58
  documenttype: DocumentType | string;
@@ -57,6 +67,8 @@ export interface PrintPdfInput {
57
67
  printerId?: string;
58
68
  /** Optioneel: werkplek/computernaam; bepaalt mee welke printer wordt gekozen. */
59
69
  werkplek?: string;
70
+ /** Optioneel: printplek (bijv. een pickstation); wint van `werkplek`. */
71
+ printplekId?: string;
60
72
  kopieen?: number;
61
73
  papierformaat?: string;
62
74
  /** Optioneel: waar de order vandaan komt ("floriday" of "eigen"). */
@@ -77,8 +89,12 @@ export interface PrintHtmlInput {
77
89
  documentnaam: string;
78
90
  /** De opmaak die exact zo afgedrukt moet worden. */
79
91
  html: string;
80
- /** Verplicht: zonder layout kan de wachtrij zelf geen printer afleiden. */
81
- printerId: string;
92
+ /** Printer; mag weggelaten worden als er een printplek of werkplek is. */
93
+ printerId?: string;
94
+ /** Optioneel: printplek (bijv. een pickstation); bepaalt de printer. */
95
+ printplekId?: string;
96
+ /** Optioneel: werkplek/computernaam; bepaalt de printer. */
97
+ werkplek?: string;
82
98
  kopieen?: number;
83
99
  /** Optioneel: waar de order vandaan komt ("floriday" of "eigen"). */
84
100
  herkomst?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  // van deze module niet te kennen.
6
6
  import { supabase } from "./supabaseClient.js";
7
7
  import { printerVoorWerkplekDocument } from "./documentRoutering.js";
8
+ import { printerVoorPrintplek, printplekNaam, printplekVoorComputer } from "./printplekken.js";
8
9
  import { bronVoorDocument } from "./documentBron.js";
9
10
  const arr = (v) => (Array.isArray(v) ? v : []);
10
11
  /** Zoekt de te gebruiken layout: expliciet, anders standaard, anders de nieuwste. */
@@ -28,10 +29,18 @@ async function bepaalLayout(documenttype, layoutId) {
28
29
  return arr(data)[0] ?? null;
29
30
  }
30
31
  /**
31
- * Kiest een printer: uitzondering voor de werkplek, anders koppeling op layout,
32
- * anders koppeling op documentsoort + formaat.
32
+ * Kiest een printer, in vaste volgorde:
33
+ * 1. regel van de printplek, 2. uitzondering voor de werkplek,
34
+ * 3. koppeling op layout, 4. koppeling op documentsoort + formaat.
33
35
  */
34
- async function bepaalPrinter(documenttype, layoutId, papierformaat, werkplek) {
36
+ async function bepaalPrinter(documenttype, layoutId, papierformaat, werkplek, printplekId) {
37
+ // Geen printplek meegegeven? Dan kijken we of de werkplek er bij een hoort.
38
+ const plek = printplekId ?? (werkplek ? await printplekVoorComputer(werkplek) : null);
39
+ if (plek) {
40
+ const viaPlek = await printerVoorPrintplek(plek, documenttype);
41
+ if (viaPlek)
42
+ return viaPlek;
43
+ }
35
44
  if (werkplek) {
36
45
  const viaWerkplek = await printerVoorWerkplekDocument(documenttype, werkplek);
37
46
  if (viaWerkplek)
@@ -106,6 +115,25 @@ export class DubbeleAanvraagFout extends Error {
106
115
  this.name = "DubbeleAanvraagFout";
107
116
  }
108
117
  }
118
+ /** Fout wanneer nergens een printer voor dit document is ingesteld. */
119
+ export class GeenPrinterFout extends Error {
120
+ constructor(melding) {
121
+ super(melding);
122
+ this.name = "GeenPrinterFout";
123
+ }
124
+ }
125
+ /** Nette, actiegerichte melding als er geen printer gevonden is. */
126
+ async function geenPrinterMelding(documenttype, printplekId, werkplek) {
127
+ const plek = printplekId ?? (werkplek ? await printplekVoorComputer(werkplek) : null);
128
+ const naam = plek ? await printplekNaam(plek) : null;
129
+ if (naam) {
130
+ return `Geen printer voor ${documenttype} op ${naam} — stel dit in bij Printplekken.`;
131
+ }
132
+ if (werkplek) {
133
+ return `Geen printer voor ${documenttype} op werkplek ${werkplek} — koppel deze werkplek aan een printplek en kies daar een printer.`;
134
+ }
135
+ return `Geen printer voor ${documenttype} — stel dit in bij Layouts en printers → Routering.`;
136
+ }
109
137
  /**
110
138
  * Zet een document in de printwachtrij. Bedoeld voor gebruik vanuit andere
111
139
  * modules binnen dezelfde shell en database.
@@ -117,7 +145,7 @@ export async function printDocument(input) {
117
145
  if (!layout)
118
146
  throw new Error(`Geen layout gevonden voor documenttype "${input.documenttype}"`);
119
147
  const printerId = input.printerId ??
120
- (await bepaalPrinter(input.documenttype, layout.id, layout.papierformaat ?? null, input.werkplek ?? null));
148
+ (await bepaalPrinter(input.documenttype, layout.id, layout.papierformaat ?? null, input.werkplek ?? null, input.printplekId ?? null));
121
149
  waarschuwZonderKenmerk(input.documentnaam, input.payload);
122
150
  const jobId = await zetInWachtrij({
123
151
  layout_id: layout.id,
@@ -128,6 +156,7 @@ export async function printDocument(input) {
128
156
  payload: {
129
157
  ...(input.payload ?? {}),
130
158
  ...(input.werkplek ? { werkplek: input.werkplek } : {}),
159
+ ...(input.printplekId ? { print_plek_id: input.printplekId } : {}),
131
160
  ...(input.herkomst ? { herkomst: input.herkomst } : {}),
132
161
  },
133
162
  ...(input.herkomst ? { herkomst: input.herkomst } : {}),
@@ -138,14 +167,14 @@ export async function printDocument(input) {
138
167
  return { jobId, layoutId: layout.id, printerId };
139
168
  }
140
169
  /**
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.
170
+ * De printer die aan een documentsoort hangt: eerst de regel van de printplek,
171
+ * dan de uitzondering voor de werkplek, dan de standaard (of nieuwste actieve)
172
+ * layout voor die soort met zijn printerkoppeling, anders de koppeling op
173
+ * papierformaat. Geeft `null` als er niets gekoppeld is.
145
174
  */
146
- export async function printerVoorDocumenttype(documenttype, papierformaat, werkplek) {
175
+ export async function printerVoorDocumenttype(documenttype, papierformaat, werkplek, printplekId) {
147
176
  const layout = await bepaalLayout(documenttype);
148
- return bepaalPrinter(documenttype, layout?.id ?? null, papierformaat ?? layout?.papierformaat ?? null, werkplek ?? null);
177
+ return bepaalPrinter(documenttype, layout?.id ?? null, papierformaat ?? layout?.papierformaat ?? null, werkplek ?? null, printplekId ?? null);
149
178
  }
150
179
  /**
151
180
  * Print een kant-en-klare PDF (klantsticker, Floriday-document, factuur van een
@@ -166,6 +195,7 @@ export async function printPdf(input) {
166
195
  layoutId: regel.layout_id ?? undefined,
167
196
  printerId: input.printerId,
168
197
  werkplek: input.werkplek,
198
+ printplekId: input.printplekId,
169
199
  kopieen: input.kopieen,
170
200
  herkomst: input.herkomst,
171
201
  payload: input.payload,
@@ -174,9 +204,9 @@ export async function printPdf(input) {
174
204
  return { jobId: res.jobId };
175
205
  }
176
206
  const printerId = input.printerId ??
177
- (await printerVoorDocumenttype(input.documenttype, input.papierformaat, input.werkplek));
207
+ (await printerVoorDocumenttype(input.documenttype, input.papierformaat, input.werkplek, input.printplekId));
178
208
  if (!printerId) {
179
- throw new Error(`Geen printer gekoppeld voor ${input.documenttype} — stel dit in bij Layouts en printers.`);
209
+ throw new GeenPrinterFout(await geenPrinterMelding(String(input.documenttype), input.printplekId ?? null, input.werkplek ?? null));
180
210
  }
181
211
  waarschuwZonderKenmerk(input.documentnaam, input.payload);
182
212
  const jobId = await zetInWachtrij({
@@ -188,6 +218,7 @@ export async function printPdf(input) {
188
218
  payload: {
189
219
  ...(input.payload ?? {}),
190
220
  ...(input.werkplek ? { werkplek: input.werkplek } : {}),
221
+ ...(input.printplekId ? { print_plek_id: input.printplekId } : {}),
191
222
  ...(input.herkomst ? { herkomst: input.herkomst } : {}),
192
223
  },
193
224
  ...(input.herkomst ? { herkomst: input.herkomst } : {}),
@@ -206,17 +237,22 @@ export async function printPdf(input) {
206
237
  export async function printHtml(input) {
207
238
  if (!input.html || input.html.trim().length < 40)
208
239
  throw new Error("Er is geen opmaak meegegeven.");
209
- if (!input.printerId)
210
- throw new Error("Kies een printer: een HTML-opdracht heeft geen layout.");
240
+ const printerId = input.printerId ??
241
+ (await printerVoorDocumenttype(input.documenttype, undefined, input.werkplek, input.printplekId));
242
+ if (!printerId) {
243
+ throw new GeenPrinterFout(await geenPrinterMelding(String(input.documenttype), input.printplekId ?? null, input.werkplek ?? null));
244
+ }
211
245
  waarschuwZonderKenmerk(input.documentnaam, input.payload);
212
246
  const jobId = await zetInWachtrij({
213
247
  layout_id: null,
214
- printer_id: input.printerId,
248
+ printer_id: printerId,
215
249
  documenttype: input.documenttype,
216
250
  documentnaam: input.documentnaam,
217
251
  kopieen: input.kopieen ?? 1,
218
252
  payload: {
219
253
  ...(input.payload ?? {}),
254
+ ...(input.werkplek ? { werkplek: input.werkplek } : {}),
255
+ ...(input.printplekId ? { print_plek_id: input.printplekId } : {}),
220
256
  ...(input.herkomst ? { herkomst: input.herkomst } : {}),
221
257
  },
222
258
  ...(input.herkomst ? { herkomst: input.herkomst } : {}),
@@ -0,0 +1,28 @@
1
+ /** Het printplek-id van de opdracht, inclusief de aliassen van andere modules. */
2
+ export declare function jobPrintPlekId(job: {
3
+ print_plek_id?: unknown;
4
+ payload?: unknown;
5
+ }): string;
6
+ /** Het pickstation dat de opdracht meestuurde, als dat bekend is. */
7
+ export declare function jobPickstation(job: {
8
+ payload?: unknown;
9
+ }): string;
10
+ /** De computer/werkplek die de opdracht aanmaakte. */
11
+ export declare function jobWerkplek(job: {
12
+ payload?: unknown;
13
+ }): string;
14
+ export interface PlekNamen {
15
+ /** printplek-id → naam */
16
+ plekken: Map<string, string>;
17
+ /** bron_id (pickstation/computer) → printplek-id */
18
+ koppelingen: Map<string, string>;
19
+ }
20
+ /**
21
+ * Leesbare herkomst van een opdracht: naam van de printplek, anders het
22
+ * pickstation of de werkplek, anders leeg.
23
+ */
24
+ export declare function jobPlekLabel(job: {
25
+ print_plek_id?: unknown;
26
+ payload?: unknown;
27
+ }, namen: PlekNamen): string;
28
+ //# sourceMappingURL=printQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printQueue.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.ts"],"names":[],"mappings":"AAkBA,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAU1F;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAQjE;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,GAAG,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAM9D;AAED,MAAM,WAAW,SAAS;IACxB,0BAA0B;IAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,oDAAoD;IACpD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAkB1G"}
@@ -0,0 +1,70 @@
1
+ // ============================================================================
2
+ // src/lib/printQueue.ts — client-safe hulpjes om een printopdracht te duiden
3
+ // ============================================================================
4
+ // Deze helpers lezen dezelfde velden als `leesPrintPlekId` in
5
+ // printQueue.server.ts, zodat de wachtrij in beeld hetzelfde toont als wat de
6
+ // verwerking gebruikt. Geen server-imports: dit bestand mag in de browser.
7
+ const tekst = (v) => (typeof v === "string" || typeof v === "number" ? String(v).trim() : "");
8
+ function lagen(job) {
9
+ const p = (job.payload ?? {});
10
+ if (typeof p !== "object" || p === null)
11
+ return [{}];
12
+ const d = (p["data"] ?? {});
13
+ return [p, typeof d === "object" && d !== null ? d : {}];
14
+ }
15
+ /** Het printplek-id van de opdracht, inclusief de aliassen van andere modules. */
16
+ export function jobPrintPlekId(job) {
17
+ const direct = tekst(job["print_plek_id"]);
18
+ if (direct)
19
+ return direct;
20
+ for (const laag of lagen(job)) {
21
+ for (const k of ["print_plek_id", "printPlekId", "print_place_id", "printPlaceId"]) {
22
+ const v = tekst(laag[k]);
23
+ if (v)
24
+ return v;
25
+ }
26
+ }
27
+ return "";
28
+ }
29
+ /** Het pickstation dat de opdracht meestuurde, als dat bekend is. */
30
+ export function jobPickstation(job) {
31
+ for (const laag of lagen(job)) {
32
+ for (const k of ["pickstation", "pick_station"]) {
33
+ const v = tekst(laag[k]);
34
+ if (v)
35
+ return v;
36
+ }
37
+ }
38
+ return "";
39
+ }
40
+ /** De computer/werkplek die de opdracht aanmaakte. */
41
+ export function jobWerkplek(job) {
42
+ for (const laag of lagen(job)) {
43
+ const v = tekst(laag["werkplek"]);
44
+ if (v)
45
+ return v;
46
+ }
47
+ return "";
48
+ }
49
+ /**
50
+ * Leesbare herkomst van een opdracht: naam van de printplek, anders het
51
+ * pickstation of de werkplek, anders leeg.
52
+ */
53
+ export function jobPlekLabel(job, namen) {
54
+ const id = jobPrintPlekId(job);
55
+ if (id)
56
+ return namen.plekken.get(id) ?? "Onbekende printplek";
57
+ const station = jobPickstation(job);
58
+ if (station) {
59
+ const viaKoppeling = namen.koppelingen.get(station.toLowerCase());
60
+ const naam = viaKoppeling ? namen.plekken.get(viaKoppeling) : undefined;
61
+ return naam ?? station;
62
+ }
63
+ const werkplek = jobWerkplek(job);
64
+ if (werkplek) {
65
+ const viaKoppeling = namen.koppelingen.get(werkplek.toLowerCase());
66
+ const naam = viaKoppeling ? namen.plekken.get(viaKoppeling) : undefined;
67
+ return naam ?? werkplek;
68
+ }
69
+ return "";
70
+ }
@@ -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;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"}
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;AAqF9D;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BnF;AA2MD;;;;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;AAiLD,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"}
@@ -74,7 +74,12 @@ async function zoekLayout(db, job) {
74
74
  .order("is_standaard", { ascending: false })
75
75
  .order("updated_at", { ascending: false })
76
76
  .limit(1);
77
- return { layout: (arr(data)[0] ?? null), expliciet: false };
77
+ const gevonden = (arr(data)[0] ?? null);
78
+ if (!gevonden && !job.render_html) {
79
+ throw new GeenDocumentFout(`Geen layout gevonden voor documenttype '${String(job.documenttype)}'. ` +
80
+ "Maak een layout aan en zet die op actief.");
81
+ }
82
+ return { layout: gevonden, expliciet: false };
78
83
  }
79
84
  /**
80
85
  * De bronregel voor deze documentsoort en de herkomst van de order. Geeft
@@ -151,6 +156,83 @@ export async function kantEnKlarePdf(_db, job) {
151
156
  }
152
157
  return btoa(ruw);
153
158
  }
159
+ /**
160
+ * Het printplek-id van de opdracht. De Logistiek Engine stuurt dit mee als
161
+ * `print_plek_id` (bovenin de payload en in `payload.data`); andere modules
162
+ * gebruiken soms een Engelse of pickstation-variant. Alles telt mee.
163
+ */
164
+ function leesPrintPlekId(job) {
165
+ const p = (job.payload ?? {});
166
+ const d = (p.data ?? {});
167
+ const kandidaten = [
168
+ job.print_plek_id,
169
+ p.print_plek_id,
170
+ p.printPlekId,
171
+ p.print_place_id,
172
+ p.printPlaceId,
173
+ d.print_plek_id,
174
+ d.printPlekId,
175
+ d.print_place_id,
176
+ d.printPlaceId,
177
+ ];
178
+ for (const k of kandidaten) {
179
+ const v = String(k ?? "").trim();
180
+ if (v)
181
+ return v;
182
+ }
183
+ return "";
184
+ }
185
+ /** Het pickstation dat de opdracht meestuurt, als er geen printplek-id is. */
186
+ function leesPickstation(job) {
187
+ const p = (job.payload ?? {});
188
+ const d = (p.data ?? {});
189
+ for (const k of [p.pickstation, p.pick_station, d.pickstation, d.pick_station]) {
190
+ const v = String(k ?? "").trim();
191
+ if (v)
192
+ return v;
193
+ }
194
+ return "";
195
+ }
196
+ /**
197
+ * Zoekt de printplek van de opdracht: meegegeven id, anders via het
198
+ * pickstation (`print_plek_koppelingen`), anders via de computernaam.
199
+ */
200
+ async function zoekPrintPlekId(db, job) {
201
+ const direct = leesPrintPlekId(job);
202
+ if (direct)
203
+ return direct;
204
+ const pickstation = leesPickstation(job);
205
+ if (pickstation) {
206
+ const { data } = await db
207
+ .from("print_plek_koppelingen")
208
+ .select("print_plek_id")
209
+ .in("bron", ["pickstation", "pick_station"])
210
+ .eq("bron_id", pickstation)
211
+ .maybeSingle();
212
+ const id = String(data?.print_plek_id ?? "").trim();
213
+ if (id)
214
+ return id;
215
+ }
216
+ const werkplek = String(job.payload?.werkplek ?? "").trim();
217
+ if (werkplek) {
218
+ const { data } = await db
219
+ .from("print_plek_computers")
220
+ .select("print_plek_id")
221
+ .eq("computer_naam", werkplek)
222
+ .maybeSingle();
223
+ return String(data?.print_plek_id ?? "").trim();
224
+ }
225
+ return "";
226
+ }
227
+ /** Naam van de printplek waar deze opdracht bij hoort, voor nette meldingen. */
228
+ async function printplekNaamVoorJob(db, job) {
229
+ const werkplek = String(job.payload?.werkplek ?? "").trim();
230
+ const plekId = await zoekPrintPlekId(db, job);
231
+ if (!plekId)
232
+ return werkplek || null;
233
+ const { data } = await db.from("print_plekken").select("naam").eq("id", plekId).maybeSingle();
234
+ return String(data?.naam ?? "") || werkplek || null;
235
+ }
154
236
  /** Bepaalt op welke printer de opdracht moet uitkomen. */
155
237
  async function zoekPrinter(db, job, layout) {
156
238
  const pak = async (id) => {
@@ -163,21 +245,43 @@ async function zoekPrinter(db, job, layout) {
163
245
  .maybeSingle();
164
246
  return data && data.actief !== false ? data : null;
165
247
  };
248
+ const type = String(job.documenttype ?? "document");
249
+ // 1. Printer die expliciet op de opdracht staat (bijv. handmatig herprinten).
166
250
  let printer = await pak(job.printer_id);
167
251
  if (printer)
168
- return printer;
169
- // Uitzondering voor de werkplek waar de opdracht vandaan komt.
252
+ return { printer, reden: "" };
170
253
  const werkplek = String(job.payload?.werkplek ?? "").trim();
254
+ const pickstation = leesPickstation(job);
255
+ // 2. Regel van de printplek waar de opdracht vandaan komt.
256
+ const plekId = await zoekPrintPlekId(db, job);
257
+ if (plekId) {
258
+ const { data: pp } = await db
259
+ .from("document_printplek_printers")
260
+ .select("printer_id")
261
+ .eq("print_plek_id", plekId)
262
+ .eq("documenttype", type)
263
+ .maybeSingle();
264
+ printer = await pak(pp?.printer_id);
265
+ if (printer)
266
+ return { printer, reden: "" };
267
+ }
268
+ else if (pickstation) {
269
+ return {
270
+ printer: null,
271
+ reden: `Pickstation '${pickstation}' heeft geen printplek. Koppel dit station aan een printplek.`,
272
+ };
273
+ }
274
+ // 3. Uitzondering voor de werkplek waar de opdracht vandaan komt.
171
275
  if (werkplek) {
172
276
  const { data: wp } = await db
173
277
  .from("document_werkplek_printers")
174
278
  .select("printer_id")
175
- .eq("documenttype", job.documenttype)
279
+ .eq("documenttype", type)
176
280
  .eq("werkplek", werkplek)
177
281
  .maybeSingle();
178
282
  printer = await pak(wp?.printer_id);
179
283
  if (printer)
180
- return printer;
284
+ return { printer, reden: "" };
181
285
  }
182
286
  if (layout?.id) {
183
287
  const { data } = await db
@@ -188,26 +292,43 @@ async function zoekPrinter(db, job, layout) {
188
292
  .limit(1);
189
293
  printer = await pak(arr(data)[0]?.printer_id);
190
294
  if (printer)
191
- return printer;
295
+ return { printer, reden: "" };
192
296
  }
297
+ // 4. Bedrijfsbrede standaardregel: eerst op documenttype + papierformaat,
298
+ // daarna op documenttype alleen. Geen "pak de enige printer"-noodgreep
299
+ // meer: dan zou er stil op de verkeerde printer geprint kunnen worden.
193
300
  const formaat = layout?.papierformaat ?? "A4";
194
301
  const { data: fm } = await db
195
302
  .from("document_formaat_printers")
196
303
  .select("printer_id")
197
- .eq("documenttype", job.documenttype)
304
+ .eq("documenttype", type)
198
305
  .eq("formaat_code", formaat)
199
306
  .maybeSingle();
200
307
  printer = await pak(fm?.printer_id);
201
308
  if (printer)
202
- return printer;
203
- const { data: enige } = await db
204
- .from("printers")
205
- .select("id, naam, extern_printer_id, actief")
206
- .eq("actief", true)
207
- .not("extern_printer_id", "is", null)
208
- .limit(2);
209
- const kandidaten = arr(enige);
210
- return kandidaten.length === 1 ? kandidaten[0] : null;
309
+ return { printer, reden: "" };
310
+ const { data: alle } = await db
311
+ .from("document_formaat_printers")
312
+ .select("printer_id")
313
+ .eq("documenttype", type)
314
+ .not("printer_id", "is", null)
315
+ .limit(5);
316
+ for (const regel of arr(alle)) {
317
+ printer = await pak(regel.printer_id);
318
+ if (printer)
319
+ return { printer, reden: "" };
320
+ }
321
+ if (plekId) {
322
+ const naam = (await printplekNaamVoorJob(db, job)) ?? "onbekend";
323
+ return {
324
+ printer: null,
325
+ reden: `Printplek '${naam}' heeft geen printer voor documenttype '${type}', en er is geen bedrijfsbrede standaardprinter ingesteld.`,
326
+ };
327
+ }
328
+ return {
329
+ printer: null,
330
+ reden: `Documenttype '${type}' heeft geen standaardprinter. Stel dit in bij Printen > Standaardregels.`,
331
+ };
211
332
  }
212
333
  /** Haalt de logo's op die in de layout gebruikt worden, met tijdelijke URL. */
213
334
  async function logosVoor(db, layout) {
@@ -419,9 +540,11 @@ async function verwerkJob(db, job) {
419
540
  }
420
541
  const keuze = klaar ? { layout: null, expliciet: false } : await zoekLayout(db, job);
421
542
  const layout = keuze.layout;
422
- const printer = await zoekPrinter(db, job, layout);
543
+ const printerKeuze = await zoekPrinter(db, job, layout);
544
+ const printer = printerKeuze.printer;
423
545
  if (!printer?.extern_printer_id) {
424
- await mislukt(db, job, "Er is geen printer gekoppeld voor dit document.", true);
546
+ await mislukt(db, job, printerKeuze.reden ||
547
+ `Printer '${printer?.naam ?? "onbekend"}' is niet aan PrintNode gekoppeld.`, true);
425
548
  return "mislukt";
426
549
  }
427
550
  let pdfBase64 = klaar;