@flowselections/layout-maker 1.38.4 → 1.45.9

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 (110) hide show
  1. package/dist-lib/components/AfleverbriefBuilderPage.d.ts +10 -0
  2. package/dist-lib/components/AfleverbriefBuilderPage.d.ts.map +1 -0
  3. package/dist-lib/components/AfleverbriefBuilderPage.js +101 -0
  4. package/dist-lib/components/BlokOntwerperPage.d.ts.map +1 -1
  5. package/dist-lib/components/BlokOntwerperPage.js +8 -3
  6. package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
  7. package/dist-lib/components/ComputersLijst.js +1 -1
  8. package/dist-lib/components/FustKolomVolgorde.d.ts +11 -0
  9. package/dist-lib/components/FustKolomVolgorde.d.ts.map +1 -0
  10. package/dist-lib/components/FustKolomVolgorde.js +52 -0
  11. package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
  12. package/dist-lib/components/LayoutsPage.js +10 -9
  13. package/dist-lib/components/PakbonBuilderPage.d.ts.map +1 -1
  14. package/dist-lib/components/PakbonBuilderPage.js +32 -14
  15. package/dist-lib/components/PakbonPreview.d.ts.map +1 -1
  16. package/dist-lib/components/PakbonPreview.js +21 -14
  17. package/dist-lib/components/PakbonSectiesPanel.d.ts +4 -2
  18. package/dist-lib/components/PakbonSectiesPanel.d.ts.map +1 -1
  19. package/dist-lib/components/PakbonSectiesPanel.js +5 -3
  20. package/dist-lib/components/PdfMapToestemmingBanner.d.ts +2 -1
  21. package/dist-lib/components/PdfMapToestemmingBanner.d.ts.map +1 -1
  22. package/dist-lib/components/PdfMapToestemmingBanner.js +124 -18
  23. package/dist-lib/components/PdfVoorbeeld.d.ts +20 -0
  24. package/dist-lib/components/PdfVoorbeeld.d.ts.map +1 -0
  25. package/dist-lib/components/PdfVoorbeeld.js +95 -0
  26. package/dist-lib/components/PrintProgrammaUitleg.d.ts.map +1 -1
  27. package/dist-lib/components/PrintProgrammaUitleg.js +1 -1
  28. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  29. package/dist-lib/components/PrintQueuePage.js +81 -43
  30. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
  31. package/dist-lib/components/PrintplekDetailPage.js +2 -2
  32. package/dist-lib/components/PrintplekWizard.d.ts.map +1 -1
  33. package/dist-lib/components/PrintplekWizard.js +6 -2
  34. package/dist-lib/components/ProductiebonBuilderPage.d.ts.map +1 -1
  35. package/dist-lib/components/ProductiebonBuilderPage.js +13 -7
  36. package/dist-lib/index.d.ts +13 -5
  37. package/dist-lib/index.d.ts.map +1 -1
  38. package/dist-lib/index.js +10 -5
  39. package/dist-lib/integrations/supabase/auth-middleware.d.ts +2280 -198
  40. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  41. package/dist-lib/integrations/supabase/client.server.d.ts +2280 -198
  42. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  43. package/dist-lib/integrations/supabase/client.server.js +1 -1
  44. package/dist-lib/integrations/supabase/moduleClient.d.ts +2280 -198
  45. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
  46. package/dist-lib/integrations/supabase/types.d.ts +2306 -182
  47. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  48. package/dist-lib/integrations/supabase/types.js +1 -0
  49. package/dist-lib/lib/aiLayout.functions.d.ts +2280 -198
  50. package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
  51. package/dist-lib/lib/documentVoorbeeld.functions.d.ts +23 -0
  52. package/dist-lib/lib/documentVoorbeeld.functions.d.ts.map +1 -0
  53. package/dist-lib/lib/documentVoorbeeld.functions.js +37 -0
  54. package/dist-lib/lib/fontMetrics.d.ts +15 -0
  55. package/dist-lib/lib/fontMetrics.d.ts.map +1 -0
  56. package/dist-lib/lib/fontMetrics.js +118 -0
  57. package/dist-lib/lib/htmlNaarPdf.server.d.ts +2 -2
  58. package/dist-lib/lib/htmlNaarPdf.server.d.ts.map +1 -1
  59. package/dist-lib/lib/htmlNaarPdf.server.js +2 -1
  60. package/dist-lib/lib/htmlPdf.server.d.ts +11 -0
  61. package/dist-lib/lib/htmlPdf.server.d.ts.map +1 -1
  62. package/dist-lib/lib/htmlPdf.server.js +118 -15
  63. package/dist-lib/lib/orderData.server.d.ts.map +1 -1
  64. package/dist-lib/lib/orderData.server.js +43 -16
  65. package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts +39 -0
  66. package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts.map +1 -0
  67. package/dist-lib/lib/pakbonBarcodeVerzoek.js +80 -0
  68. package/dist-lib/lib/pakbonBuilder.d.ts +62 -3
  69. package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
  70. package/dist-lib/lib/pakbonBuilder.js +386 -50
  71. package/dist-lib/lib/pakbonContent.d.ts +41 -0
  72. package/dist-lib/lib/pakbonContent.d.ts.map +1 -0
  73. package/dist-lib/lib/pakbonContent.js +668 -0
  74. package/dist-lib/lib/pakbonDocument.d.ts +199 -0
  75. package/dist-lib/lib/pakbonDocument.d.ts.map +1 -0
  76. package/dist-lib/lib/pakbonDocument.js +735 -0
  77. package/dist-lib/lib/pakbonHtml.d.ts +7 -0
  78. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  79. package/dist-lib/lib/pakbonHtml.js +89 -73
  80. package/dist-lib/lib/pakbonPresentation.d.ts +8 -0
  81. package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -0
  82. package/dist-lib/lib/pakbonPresentation.js +31 -0
  83. package/dist-lib/lib/pakbonScan.d.ts.map +1 -1
  84. package/dist-lib/lib/pakbonScan.js +20 -38
  85. package/dist-lib/lib/pdfJobSaver.d.ts +10 -6
  86. package/dist-lib/lib/pdfJobSaver.d.ts.map +1 -1
  87. package/dist-lib/lib/pdfJobSaver.js +302 -99
  88. package/dist-lib/lib/pdfMap.d.ts +37 -2
  89. package/dist-lib/lib/pdfMap.d.ts.map +1 -1
  90. package/dist-lib/lib/pdfMap.js +120 -7
  91. package/dist-lib/lib/pdfOpslagStatus.d.ts +23 -0
  92. package/dist-lib/lib/pdfOpslagStatus.d.ts.map +1 -0
  93. package/dist-lib/lib/pdfOpslagStatus.js +74 -0
  94. package/dist-lib/lib/printApi.d.ts +31 -0
  95. package/dist-lib/lib/printApi.d.ts.map +1 -1
  96. package/dist-lib/lib/printApi.js +62 -1
  97. package/dist-lib/lib/printQueue.server.d.ts +6 -0
  98. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  99. package/dist-lib/lib/printQueue.server.js +450 -94
  100. package/dist-lib/lib/printService.functions.d.ts +8857 -529
  101. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  102. package/dist-lib/lib/profielHtml.d.ts.map +1 -1
  103. package/dist-lib/lib/profielHtml.js +8 -1
  104. package/dist-lib/lib/useDocumentData.d.ts +8 -0
  105. package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
  106. package/dist-lib/lib/useDocumentData.js +1 -1
  107. package/dist-lib/lib/voorbeeldPrint.d.ts +3 -0
  108. package/dist-lib/lib/voorbeeldPrint.d.ts.map +1 -1
  109. package/dist-lib/lib/voorbeeldPrint.js +65 -17
  110. package/package.json +9 -2
@@ -1,12 +1,15 @@
1
1
  // ============================================================================
2
2
  // src/lib/pdfMap.ts — keuze van de map op de eigen computer waarin PDF's van
3
3
  // de virtuele "Opslaan als PDF"-printer worden bewaard. De maphandle blijft
4
- // lokaal in IndexedDB staan (per printer); de servers zien alleen de naam.
4
+ // lokaal in IndexedDB staan. De browser bewaart daarnaast de printplek-id,
5
+ // zodat alleen de bedoelde werkplek opdrachten uit de gedeelde wachtrij claimt.
5
6
  // ============================================================================
6
7
  const DB_NAAM = "layout-maker-pdfmap";
7
8
  const STORE = "handles";
8
9
  const BEWAARD_SLEUTEL = "layout-maker-pdf-bewaard";
9
10
  const GLOBALE_HANDLE_SLEUTEL = "__gekozen_pdf_map__";
11
+ const PDF_PRINTPLEK_SLEUTEL = "__gekozen_pdf_printplek__";
12
+ const PDF_KOPPELING_SLEUTEL = "__pdf_map_koppeling_v1__";
10
13
  const PDF_MAP_GEWIJZIGD_EVENT = "layout-maker:pdf-map-gewijzigd";
11
14
  export function mapKiezenMogelijk() {
12
15
  return typeof window !== "undefined" && "showDirectoryPicker" in window;
@@ -22,7 +25,27 @@ function openDb() {
22
25
  req.onerror = () => reject(req.error);
23
26
  });
24
27
  }
25
- async function bewaarHandle(printerId, handle) {
28
+ async function vraagPersistenteOpslag() {
29
+ try {
30
+ if (!navigator.storage?.persist)
31
+ return null;
32
+ if (await navigator.storage.persisted?.())
33
+ return true;
34
+ return await navigator.storage.persist();
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ async function bewaarHandle(printerId, handle, printPlekId) {
41
+ const persistent = await vraagPersistenteOpslag();
42
+ const koppeling = {
43
+ versie: 1,
44
+ handle,
45
+ printPlekId: printPlekId?.trim() || null,
46
+ persistent,
47
+ bijgewerktOp: new Date().toISOString(),
48
+ };
26
49
  const db = await openDb();
27
50
  await new Promise((resolve, reject) => {
28
51
  const tx = db.transaction(STORE, "readwrite");
@@ -32,10 +55,93 @@ async function bewaarHandle(printerId, handle) {
32
55
  // dubbele virtuele PDF-printer de reeds goedgekeurde map onzichtbaar maakt.
33
56
  store.put(handle, GLOBALE_HANDLE_SLEUTEL);
34
57
  store.put(handle, printerId);
58
+ store.put(koppeling, PDF_KOPPELING_SLEUTEL);
59
+ if (koppeling.printPlekId)
60
+ store.put(koppeling.printPlekId, PDF_PRINTPLEK_SLEUTEL);
35
61
  tx.oncomplete = () => resolve();
36
62
  tx.onerror = () => reject(tx.error);
37
63
  });
38
64
  window.dispatchEvent(new CustomEvent(PDF_MAP_GEWIJZIGD_EVENT, { detail: { printerId } }));
65
+ return koppeling;
66
+ }
67
+ /** Koppelt deze browsermap aan de fysieke printplek die hij mag afhandelen. */
68
+ export async function koppelPdfMapAanPrintplek(printPlekId) {
69
+ const id = printPlekId.trim();
70
+ if (!id)
71
+ throw new Error("Kies eerst een printplek voor deze PDF-map.");
72
+ const bestaande = await pdfMapKoppeling();
73
+ const db = await openDb();
74
+ await new Promise((resolve, reject) => {
75
+ const tx = db.transaction(STORE, "readwrite");
76
+ const store = tx.objectStore(STORE);
77
+ store.put(id, PDF_PRINTPLEK_SLEUTEL);
78
+ if (bestaande?.handle) {
79
+ store.put({ ...bestaande, printPlekId: id, bijgewerktOp: new Date().toISOString() }, PDF_KOPPELING_SLEUTEL);
80
+ }
81
+ tx.oncomplete = () => resolve();
82
+ tx.onerror = () => reject(tx.error);
83
+ });
84
+ window.dispatchEvent(new CustomEvent(PDF_MAP_GEWIJZIGD_EVENT, { detail: { printPlekId: id } }));
85
+ }
86
+ /** De printplek waarvoor deze browser lokale PDF's mag schrijven. */
87
+ export async function lokalePdfPrintplek() {
88
+ try {
89
+ const koppeling = await pdfMapKoppeling();
90
+ if (koppeling?.printPlekId)
91
+ return koppeling.printPlekId;
92
+ const db = await openDb();
93
+ return await new Promise((resolve, reject) => {
94
+ const tx = db.transaction(STORE, "readonly");
95
+ const req = tx.objectStore(STORE).get(PDF_PRINTPLEK_SLEUTEL);
96
+ req.onsuccess = () => {
97
+ const waarde = typeof req.result === "string" ? req.result.trim() : "";
98
+ resolve(waarde || null);
99
+ };
100
+ req.onerror = () => reject(req.error);
101
+ });
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ }
107
+ /**
108
+ * Leest de samenhangende lokale map/printplek-koppeling. Oude losse sleutels
109
+ * worden eenmalig naar dit record gemigreerd zonder een geldige handle te wissen.
110
+ */
111
+ export async function pdfMapKoppeling() {
112
+ try {
113
+ const db = await openDb();
114
+ const lees = (sleutel) => new Promise((resolve, reject) => {
115
+ const tx = db.transaction(STORE, "readonly");
116
+ const req = tx.objectStore(STORE).get(sleutel);
117
+ req.onsuccess = () => resolve(req.result ?? null);
118
+ req.onerror = () => reject(req.error);
119
+ });
120
+ const bestaand = await lees(PDF_KOPPELING_SLEUTEL);
121
+ if (bestaand?.versie === 1 && bestaand.handle)
122
+ return bestaand;
123
+ const handle = await lees(GLOBALE_HANDLE_SLEUTEL);
124
+ if (!handle)
125
+ return null;
126
+ const printPlekId = await lees(PDF_PRINTPLEK_SLEUTEL);
127
+ const gemigreerd = {
128
+ versie: 1,
129
+ handle,
130
+ printPlekId: typeof printPlekId === "string" && printPlekId.trim() ? printPlekId.trim() : null,
131
+ persistent: await vraagPersistenteOpslag(),
132
+ bijgewerktOp: new Date().toISOString(),
133
+ };
134
+ await new Promise((resolve, reject) => {
135
+ const tx = db.transaction(STORE, "readwrite");
136
+ tx.objectStore(STORE).put(gemigreerd, PDF_KOPPELING_SLEUTEL);
137
+ tx.oncomplete = () => resolve();
138
+ tx.onerror = () => reject(tx.error);
139
+ });
140
+ return gemigreerd;
141
+ }
142
+ catch {
143
+ return null;
144
+ }
39
145
  }
40
146
  export function luisterNaarPdfMapWijziging(handler) {
41
147
  if (typeof window === "undefined")
@@ -52,6 +158,9 @@ async function leesHandle(printerId) {
52
158
  req.onsuccess = () => resolve(req.result ?? null);
53
159
  req.onerror = () => reject(req.error);
54
160
  });
161
+ const koppeling = await pdfMapKoppeling();
162
+ if (koppeling?.handle)
163
+ return koppeling.handle;
55
164
  const globaal = await lees(GLOBALE_HANDLE_SLEUTEL);
56
165
  if (globaal)
57
166
  return globaal;
@@ -101,15 +210,19 @@ export function draaitInIframe() {
101
210
  }
102
211
  }
103
212
  /** Opent de huidige pagina in een eigen tabblad (buiten het preview-iframe). */
104
- export function openInEigenTabblad() {
105
- window.open(window.location.href, "_blank", "noopener");
213
+ export function openInEigenTabblad(printPlekId) {
214
+ const url = new URL(window.location.href);
215
+ url.searchParams.set("pdf-map-instellen", "1");
216
+ if (printPlekId?.trim())
217
+ url.searchParams.set("pdf-printplek", printPlekId.trim());
218
+ window.open(url.toString(), "_blank", "noopener");
106
219
  }
107
220
  /**
108
221
  * Opent de mappenverkenner van het besturingssysteem zodat de gebruiker een
109
222
  * map kan selecteren. Start in Downloads zodat het pad snel te vinden is.
110
223
  * Geeft terug wat er is gebeurd zodat de aanroeper gericht kan reageren.
111
224
  */
112
- export async function kiesPdfMap(printerId) {
225
+ export async function kiesPdfMap(printerId, printPlekId) {
113
226
  if (!mapKiezenMogelijk())
114
227
  return { status: "niet-ondersteund" };
115
228
  try {
@@ -117,7 +230,7 @@ export async function kiesPdfMap(printerId) {
117
230
  mode: "readwrite",
118
231
  startIn: "downloads",
119
232
  }));
120
- await bewaarHandle(printerId, handle);
233
+ const koppeling = await bewaarHandle(printerId, handle, printPlekId);
121
234
  // Een nieuwe mapkeuze is ook een expliciete opdracht om reeds voltooide
122
235
  // PDF-jobs opnieuw naar deze map te schrijven.
123
236
  try {
@@ -126,7 +239,7 @@ export async function kiesPdfMap(printerId) {
126
239
  catch {
127
240
  // Lokale opslag kan door browserbeleid uitgeschakeld zijn.
128
241
  }
129
- return { status: "gekozen", naam: handle.name };
242
+ return { status: "gekozen", naam: handle.name, persistent: koppeling.persistent };
130
243
  }
131
244
  catch (fout) {
132
245
  // De gebruiker drukt op Annuleren in de verkenner → AbortError, geen fout.
@@ -0,0 +1,23 @@
1
+ /** Volledige set opslagstatussen die deze module schrijft. */
2
+ export declare const PDF_OPSLAG_STATUSSEN: readonly ["wachtend", "bezig", "gereed", "opgeslagen", "map_ontbreekt", "geen_rechten", "schrijffout", "timeout"];
3
+ export type PdfOpslagStatus = (typeof PDF_OPSLAG_STATUSSEN)[number];
4
+ /** Statussen waarbij opslaan (nog) niet is gelukt en herstel nodig is. */
5
+ export declare const PDF_OPSLAG_FOUTSTATUSSEN: readonly string[];
6
+ /** Statussen waarvoor de lokale service nog werk moet doen. */
7
+ export declare const PDF_OPSLAG_OPENSTAAND: readonly string[];
8
+ /** Korte, tonbare omschrijving per status (voor wachtrij en pickscherm). */
9
+ export declare const PDF_OPSLAG_LABEL: Record<string, string>;
10
+ /**
11
+ * Foutzinnen in gewone taal. Deze tekst wordt letterlijk in het pickscherm
12
+ * getoond, dus: één zin, met wie wat moet doen. Geen technische details.
13
+ */
14
+ export declare const PDF_OPSLAG_MELDING: Record<string, string>;
15
+ /**
16
+ * Leesbare status voor de wachtrij. Een PDF die gereed staat maar aan geen
17
+ * enkele plek hangt, wacht niet op een werkplek: er is er simpelweg geen
18
+ * gekoppeld. Dat verschil maken we hier zichtbaar.
19
+ */
20
+ export declare function pdfOpslagLabel(status?: string | null, heeftPlek?: boolean): string | null;
21
+ /** Is deze opdracht blijven steken op het opslaan? */
22
+ export declare function isOpslagFout(status?: string | null): boolean;
23
+ //# sourceMappingURL=pdfOpslagStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfOpslagStatus.d.ts","sourceRoot":"","sources":["../../src/lib/pdfOpslagStatus.ts"],"names":[],"mappings":"AAOA,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,mHASvB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAQrD,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAKlD,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASrD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMzF;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE5D"}
@@ -0,0 +1,74 @@
1
+ // ============================================================================
2
+ // src/lib/pdfOpslagStatus.ts — vaste, gedocumenteerde set statussen voor het
3
+ // lokaal opslaan van een PDF-printopdracht. De pickmodule leest deze waarden
4
+ // rechtstreeks uit `print_jobs.lokale_pdf_status`, dus waarden mogen alleen
5
+ // worden TOEGEVOEGD; nooit hernoemd of hergebruikt.
6
+ // ============================================================================
7
+ /** Volledige set opslagstatussen die deze module schrijft. */
8
+ export const PDF_OPSLAG_STATUSSEN = [
9
+ "wachtend", // opdracht aangemaakt, PDF nog niet opgemaakt
10
+ "bezig", // PDF wordt opgemaakt of weggeschreven
11
+ "gereed", // PDF staat klaar, wacht op de werkplek die de map beheert
12
+ "opgeslagen", // bestand staat in de gekozen map op de werkplek
13
+ "map_ontbreekt", // op deze werkplek is (nog) geen PDF-map gekozen
14
+ "geen_rechten", // de map bestaat, maar de werkplek heeft geen schrijfrecht meer
15
+ "schrijffout", // schrijven naar de map is mislukt
16
+ "timeout", // de PDF was niet op tijd gereed
17
+ ];
18
+ /** Statussen waarbij opslaan (nog) niet is gelukt en herstel nodig is. */
19
+ export const PDF_OPSLAG_FOUTSTATUSSEN = [
20
+ "map_ontbreekt",
21
+ "geen_rechten",
22
+ "schrijffout",
23
+ "timeout",
24
+ // Historische waarden; blijven leesbaar zodat oude opdrachten herstelbaar zijn.
25
+ "toestemming_nodig",
26
+ "fout",
27
+ ];
28
+ /** Statussen waarvoor de lokale service nog werk moet doen. */
29
+ export const PDF_OPSLAG_OPENSTAAND = [
30
+ "wachtend",
31
+ "bezig",
32
+ "gereed",
33
+ ...PDF_OPSLAG_FOUTSTATUSSEN,
34
+ ];
35
+ /** Korte, tonbare omschrijving per status (voor wachtrij en pickscherm). */
36
+ export const PDF_OPSLAG_LABEL = {
37
+ wachtend: "PDF nog niet opgemaakt",
38
+ bezig: "PDF wordt opgeslagen",
39
+ gereed: "PDF gereed — wacht op werkplek",
40
+ opgeslagen: "opgeslagen in de PDF-map",
41
+ map_ontbreekt: "PDF-map ontbreekt",
42
+ geen_rechten: "geen schrijfrecht op de PDF-map",
43
+ schrijffout: "opslaan in de map mislukt",
44
+ timeout: "wachten op de PDF verlopen",
45
+ toestemming_nodig: "geen schrijfrecht op de PDF-map",
46
+ fout: "opslaan mislukt",
47
+ };
48
+ /**
49
+ * Foutzinnen in gewone taal. Deze tekst wordt letterlijk in het pickscherm
50
+ * getoond, dus: één zin, met wie wat moet doen. Geen technische details.
51
+ */
52
+ export const PDF_OPSLAG_MELDING = {
53
+ map_ontbreekt: "Kies op deze werkplek eerst een PDF-map in Layout maker; daarna wordt dit document opnieuw opgeslagen.",
54
+ geen_rechten: "Geef op deze werkplek opnieuw toestemming voor de PDF-map; daarna wordt dit document opnieuw opgeslagen.",
55
+ schrijffout: "Het document kon niet in de PDF-map worden opgeslagen; controleer de map op deze werkplek en probeer opslaan opnieuw.",
56
+ timeout: "Het document was niet op tijd opgemaakt; print of sla dit document opnieuw op.",
57
+ };
58
+ /**
59
+ * Leesbare status voor de wachtrij. Een PDF die gereed staat maar aan geen
60
+ * enkele plek hangt, wacht niet op een werkplek: er is er simpelweg geen
61
+ * gekoppeld. Dat verschil maken we hier zichtbaar.
62
+ */
63
+ export function pdfOpslagLabel(status, heeftPlek) {
64
+ if (!status)
65
+ return null;
66
+ if (status === "gereed") {
67
+ return heeftPlek ? "PDF gereed — wordt opgehaald" : "geen computer gekoppeld";
68
+ }
69
+ return PDF_OPSLAG_LABEL[status] ?? null;
70
+ }
71
+ /** Is deze opdracht blijven steken op het opslaan? */
72
+ export function isOpslagFout(status) {
73
+ return !!status && PDF_OPSLAG_FOUTSTATUSSEN.includes(status);
74
+ }
@@ -63,6 +63,8 @@ export declare function printerVoorLayout(layout: {
63
63
  documenttype?: string | null;
64
64
  papierformaat?: string | null;
65
65
  }, werkplek?: string, printplekId?: string): Promise<string | null>;
66
+ /** Afdrukmethode van één printer, gebruikt voor PDF-specifieke voorcontroles. */
67
+ export declare function printerAfdrukmethode(printerId: string): Promise<string | null>;
66
68
  export interface PrintPdfInput {
67
69
  /** Documentsoort, alleen voor overzicht en printerkeuze. */
68
70
  documenttype: DocumentType | string;
@@ -129,6 +131,9 @@ export interface JobStatus {
129
131
  status: string;
130
132
  documentnaam: string;
131
133
  foutmelding: string | null;
134
+ lokale_pdf_status: string | null;
135
+ lokale_pdf_fout: string | null;
136
+ lokaal_opgeslagen_op: string | null;
132
137
  }
133
138
  /**
134
139
  * Volgt één printopdracht live. Geeft een functie terug om te stoppen.
@@ -154,4 +159,30 @@ export declare function beschikbarePrinters(): Promise<{
154
159
  online: boolean;
155
160
  actief: boolean;
156
161
  }[]>;
162
+ export interface VerzendbriefVoorKarInput {
163
+ /** Naam van de computer/werkplek van de scanner; bepaalt de printer. */
164
+ werkplek?: string;
165
+ /** Optioneel: de printplek van de scanner. Wint van `werkplek`. */
166
+ printplekId?: string;
167
+ /** Optioneel papierformaat voor werkplekken met meerdere printers. */
168
+ papierformaat?: string;
169
+ /** Kargegevens zoals bij de pakbon: cart_id, cart_label, barcode, ... */
170
+ cart: Record<string, unknown>;
171
+ /** Order-/klantgegevens zoals bij de pakbon. */
172
+ order?: Record<string, unknown>;
173
+ /** Optioneel: naam in de wachtrij. Standaard "Verzendbrief <kar>". */
174
+ documentnaam?: string;
175
+ herkomst?: string;
176
+ kopieen?: number;
177
+ /** Bewuste herprint: slaat de dubbelbeveiliging over. */
178
+ isHerprint?: boolean;
179
+ }
180
+ /**
181
+ * Print de verzendbrief van één kar. Bedoeld voor de scanmodule op het moment
182
+ * dat een medewerker op "kar compleet" klikt. De brief gaat naar de printer van
183
+ * dezelfde werkplek als de pakbon; is die er niet, dan naar de standaardprinter
184
+ * van dit documenttype. Zonder printer volgt een `GeenPrinterFout` — er wordt
185
+ * nooit stiekem in de browser geprint.
186
+ */
187
+ export declare function printVerzendbriefVoorKar(input: VerzendbriefVoorKarInput): Promise<PrintDocumentResult>;
157
188
  //# sourceMappingURL=printApi.d.ts.map
@@ -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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"}
@@ -85,6 +85,20 @@ function orderKenmerk(payload) {
85
85
  if (typeof w === "number" && Number.isFinite(w))
86
86
  return String(w);
87
87
  }
88
+ // Sommige aanleverende modules stoppen de order genest in `payload.order`
89
+ // (of `payload.data.order`) met velden als id / orderNumber / nummer.
90
+ for (const houder of [p.order, p.data?.order]) {
91
+ if (!houder || typeof houder !== "object")
92
+ continue;
93
+ const o = houder;
94
+ for (const sleutel of ["id", "order_id", "orderNumber", "ordernummer", "nummer"]) {
95
+ const w = o[sleutel];
96
+ if (typeof w === "string" && w.trim())
97
+ return w.trim();
98
+ if (typeof w === "number" && Number.isFinite(w))
99
+ return String(w);
100
+ }
101
+ }
88
102
  return null;
89
103
  }
90
104
  function waarschuwZonderKenmerk(documentnaam, payload) {
@@ -193,6 +207,20 @@ export async function printerVoorLayout(layout, werkplek, printplekId) {
193
207
  const documenttype = String(layout.documenttype ?? "");
194
208
  return bepaalPrinter(documenttype, layout.id ?? null, layout.papierformaat ?? null, werkplek ?? null, printplekId ?? null);
195
209
  }
210
+ /** Afdrukmethode van één printer, gebruikt voor PDF-specifieke voorcontroles. */
211
+ export async function printerAfdrukmethode(printerId) {
212
+ const id = printerId.trim();
213
+ if (!id)
214
+ return null;
215
+ const { data, error } = await supabase
216
+ .from("printers")
217
+ .select("afdrukmethode")
218
+ .eq("id", id)
219
+ .maybeSingle();
220
+ if (error)
221
+ throw error;
222
+ return data?.afdrukmethode ?? null;
223
+ }
196
224
  /**
197
225
  * Print een kant-en-klare PDF (klantsticker, Floriday-document, factuur van een
198
226
  * externe dienst). De PDF gaat ongewijzigd naar de printer; er wordt geen
@@ -314,7 +342,7 @@ export function volgJobStatus(jobId, cb) {
314
342
  const lees = async () => {
315
343
  const { data } = await supabase
316
344
  .from("print_jobs")
317
- .select("id, status, documentnaam, foutmelding")
345
+ .select("id, status, documentnaam, foutmelding, lokale_pdf_status, lokale_pdf_fout, lokaal_opgeslagen_op")
318
346
  .eq("id", jobId)
319
347
  .maybeSingle();
320
348
  if (data && !gestopt)
@@ -363,3 +391,36 @@ export async function beschikbarePrinters() {
363
391
  .order("naam");
364
392
  return arr(data);
365
393
  }
394
+ /**
395
+ * Print de verzendbrief van één kar. Bedoeld voor de scanmodule op het moment
396
+ * dat een medewerker op "kar compleet" klikt. De brief gaat naar de printer van
397
+ * dezelfde werkplek als de pakbon; is die er niet, dan naar de standaardprinter
398
+ * van dit documenttype. Zonder printer volgt een `GeenPrinterFout` — er wordt
399
+ * nooit stiekem in de browser geprint.
400
+ */
401
+ export async function printVerzendbriefVoorKar(input) {
402
+ const documenttype = "afleverbrief";
403
+ const cart = (input.cart ?? {});
404
+ const karnaam = String(cart["cart_label"] ?? cart["cartLabel"] ?? cart["cart_id"] ?? cart["cartId"] ?? "").trim();
405
+ const printerId = (input.printplekId ? await printerVoorPrintplek(input.printplekId, documenttype) : null) ??
406
+ (input.werkplek ? await printerVoorWerkplek(input.werkplek, input.papierformaat) : null) ??
407
+ (await printerVoorDocumenttype(documenttype, input.papierformaat, input.werkplek, input.printplekId));
408
+ if (!printerId) {
409
+ throw new GeenPrinterFout(await geenPrinterMelding(documenttype, input.printplekId ?? null, input.werkplek ?? null));
410
+ }
411
+ return printDocument({
412
+ documenttype,
413
+ printerId,
414
+ ...(input.werkplek ? { werkplek: input.werkplek } : {}),
415
+ ...(input.printplekId ? { printplekId: input.printplekId } : {}),
416
+ ...(input.herkomst ? { herkomst: input.herkomst } : {}),
417
+ documentnaam: input.documentnaam ?? (karnaam ? `Verzendbrief ${karnaam}` : "Verzendbrief"),
418
+ kopieen: input.kopieen ?? 1,
419
+ isHerprint: input.isHerprint ?? false,
420
+ payload: {
421
+ ...(input.order ?? {}),
422
+ cart,
423
+ aanleiding: "kar_compleet",
424
+ },
425
+ });
426
+ }
@@ -16,6 +16,10 @@ export declare class GeenDocumentFout extends Error {
16
16
  export declare class WachtOpLayoutFout extends Error {
17
17
  name: string;
18
18
  }
19
+ /** Blijvende contractfout: opnieuw proberen met dezelfde invoer kan niet slagen. */
20
+ export declare class EngineContractFout extends GeenDocumentFout {
21
+ name: string;
22
+ }
19
23
  /**
20
24
  * `ontwerpWint` = deze layout is een echt ontwerp van deze module (actief, geen
21
25
  * Floriday-systeemlayout) en gaat daarom vóór meegestuurde HTML. Er is bewust
@@ -58,6 +62,8 @@ export interface WachtrijResultaat {
58
62
  mislukt: number;
59
63
  wachtend: number;
60
64
  bijgewerkt: number;
65
+ /** Waarom deze ronde niets deed (bijvoorbeeld: een andere ronde draait al). */
66
+ overgeslagen?: string;
61
67
  }
62
68
  /** Eén ronde: vastgelopen opdrachten opruimen, afdrukken en statussen bijwerken. */
63
69
  export declare function verwerkWachtrij(db: PrintDb, max?: number): Promise<WachtrijResultaat>;
@@ -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;AAwB5D,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;AAUD,2EAA2E;AAC3E,qBAAa,gBAAiB,SAAQ,KAAK;IAChC,IAAI,SAAsB;CACpC;AAED,+EAA+E;AAC/E,qBAAa,iBAAkB,SAAQ,KAAK;IACjC,IAAI,SAAuB;CACrC;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;AA4LD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BnF;AA8RD;;;;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,CA2OjB;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AAuWD,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;CACpB;AAED,oFAAoF;AACpF,wBAAsB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,SAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2CtF;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"}
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;AA6B5D,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;AAUD,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;AAkUD;;;;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,CAiXjB;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AAicD,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"}