@flowselections/pick-schermen-kwekers 1.0.6 → 1.0.8

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 (32) hide show
  1. package/README.md +24 -24
  2. package/dist-lib/components/TemplateModulePage.d.ts +2 -0
  3. package/dist-lib/components/TemplateModulePage.d.ts.map +1 -0
  4. package/dist-lib/components/TemplateModulePage.js +44 -0
  5. package/dist-lib/components/pick/PickScherm.d.ts.map +1 -1
  6. package/dist-lib/components/pick/PickScherm.js +70 -29
  7. package/dist-lib/hooks/usePrintJob.d.ts +22 -0
  8. package/dist-lib/hooks/usePrintJob.d.ts.map +1 -0
  9. package/dist-lib/hooks/usePrintJob.js +48 -0
  10. package/dist-lib/integrations/supabase/auth-middleware.d.ts +890 -21
  11. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  12. package/dist-lib/integrations/supabase/client.d.ts +890 -21
  13. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  14. package/dist-lib/integrations/supabase/client.server.d.ts +890 -21
  15. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  16. package/dist-lib/integrations/supabase/types.d.ts +891 -22
  17. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  18. package/dist-lib/integrations/supabase/types.js +12 -1
  19. package/dist-lib/lib/layoutMaker/pakbonHtml.js +49 -49
  20. package/dist-lib/lib/layoutRenderer.js +17 -17
  21. package/dist-lib/lib/pickApi.d.ts +11 -2
  22. package/dist-lib/lib/pickApi.d.ts.map +1 -1
  23. package/dist-lib/lib/pickApi.js +38 -2
  24. package/dist-lib/lib/pickPrint.d.ts +3 -15
  25. package/dist-lib/lib/pickPrint.d.ts.map +1 -1
  26. package/dist-lib/lib/pickPrint.js +9 -161
  27. package/dist-lib/lib/pickPrintJobText.d.ts +17 -0
  28. package/dist-lib/lib/pickPrintJobText.d.ts.map +1 -0
  29. package/dist-lib/lib/pickPrintJobText.js +49 -0
  30. package/dist-lib/lib/pickTypes.d.ts +17 -0
  31. package/dist-lib/lib/pickTypes.d.ts.map +1 -1
  32. package/package.json +2 -2
@@ -8,7 +8,18 @@ export const Constants = {
8
8
  "klaar",
9
9
  "mislukt",
10
10
  ],
11
- app_role: ["admin", "planner", "monteur", "administratie", "ai_admin"],
11
+ app_role: [
12
+ "admin",
13
+ "planner",
14
+ "monteur",
15
+ "administratie",
16
+ "ai_admin",
17
+ "manager",
18
+ "warehouse",
19
+ "sales",
20
+ "developer",
21
+ "receptie",
22
+ ],
12
23
  doc_layout_type: [
13
24
  "pakbon",
14
25
  "factuur",
@@ -590,55 +590,55 @@ export function renderPakbonDocument(config, order, opties = {}) {
590
590
  const font = opties.lettertype ?? 'Arial, Helvetica, "Segoe UI", sans-serif';
591
591
  const grootte = opties.lettergrootte ?? 8.5;
592
592
  const body = renderPakbonBody(config, order, opties);
593
- return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
594
- <title>${esc(opties.titel ?? "Pakbon")}</title>
595
- <style>
596
- @page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
597
- * { box-sizing: border-box; }
598
- html, body { margin: 0; padding: 0; }
599
- body { font-family: ${font}; font-size: ${grootte}pt; color: #111827; line-height: 1.35; }
600
- .blok { margin-bottom: 2mm; }
601
- .sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
602
- .vet { font-weight: 600; }
603
- .kv { display: flex; justify-content: space-between; gap: 3mm; }
604
- .kv .k { color: #6b7280; }
605
- .kv .v { font-weight: 500; }
606
- .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 6mm; }
607
- .kader { border: 0.25mm solid #d1d5db; border-radius: 1mm; padding: 1.5mm; }
608
- table.regels { width: 100%; border-collapse: collapse; table-layout: fixed; }
609
- table.regels th, table.regels td { overflow-wrap: anywhere; }
610
- table.regels th, table.regels td { padding: 0.7mm 1mm; vertical-align: top; }
611
- table.regels th { font-size: 90%; text-transform: uppercase; color: #6b7280; font-weight: 600; text-align: left; }
612
- .rand { border: 0.2mm solid #d1d5db; }
613
- .onder { border-bottom: 0.2mm solid #d1d5db; }
614
- table.regels.compact th, table.regels.compact td { padding: 0.3mm 0.8mm; }
615
- tr.zebra td { background: #f3f4f6; }
616
- .plijst { margin: 0; padding-left: 4mm; }
617
- .groep { margin-bottom: 1.5mm; }
618
- .regelrij { display: flex; gap: 2mm; }
619
- .tweekolom { display: grid; grid-template-columns: 1fr 1fr; gap: 3mm; }
620
- .karblok { margin-bottom: 2mm; }
621
- .karblok.omkaderd { border: 0.25mm solid #d1d5db; border-radius: 1mm; padding: 1.5mm; }
622
- .karkop { display: flex; justify-content: space-between; align-items: center; padding: 0.8mm 1.5mm; border-radius: 1mm; margin-bottom: 1mm; }
623
- .bundel { display: inline-block; border: 0.3mm dashed #6b7280; border-radius: 1mm; padding: 0.4mm 1.5mm; margin-bottom: 1mm; font-weight: 700; text-transform: uppercase; letter-spacing: 0.2mm; font-size: 90%; }
624
- .laag { margin-bottom: 1.5mm; }
625
- .laagkop { display: flex; justify-content: space-between; font-weight: 500; border-bottom: 0.2mm solid #d1d5db; padding-bottom: 0.4mm; margin-bottom: 0.6mm; }
626
- .laagkop.compact { border-bottom: none; }
627
- .meta { display: flex; gap: 3mm; font-size: 88%; font-weight: 400; color: #4b5563; }
628
- .totalen { display: flex; flex-wrap: wrap; gap: 5mm; border-top: 0.25mm solid #d1d5db; padding-top: 1.2mm; font-weight: 500; }
629
- .paginavoet { position: fixed; bottom: 0; left: 0; right: 0; background: #fff; }
630
- .handtekening { margin-top: 3mm; }
631
- .lijnveld { margin-top: 4mm; border-bottom: 0.25mm solid #6b7280; padding-bottom: 3mm; }
632
- .lijnveld.hoog { padding-bottom: 10mm; }
633
- .lijn { border-top: 0.25mm solid #d1d5db; margin: 1.5mm 0; }
634
- .balk { height: 1mm; background: #374151; margin: 1.5mm 0; }
635
- .qr { border: 0.25mm dashed #9ca3af; }
636
- .streepjes { width: 45mm; background: repeating-linear-gradient(to right, #111827 0 2px, transparent 2px 5px); }
637
- .klein { font-size: 85%; color: #6b7280; }
638
- .breekvoor { break-before: page; page-break-before: always; }
639
- .heelhouden { break-inside: avoid; page-break-inside: avoid; }
640
- img { max-width: 100%; }
641
- </style></head>
593
+ return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
594
+ <title>${esc(opties.titel ?? "Pakbon")}</title>
595
+ <style>
596
+ @page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
597
+ * { box-sizing: border-box; }
598
+ html, body { margin: 0; padding: 0; }
599
+ body { font-family: ${font}; font-size: ${grootte}pt; color: #111827; line-height: 1.35; }
600
+ .blok { margin-bottom: 2mm; }
601
+ .sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
602
+ .vet { font-weight: 600; }
603
+ .kv { display: flex; justify-content: space-between; gap: 3mm; }
604
+ .kv .k { color: #6b7280; }
605
+ .kv .v { font-weight: 500; }
606
+ .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 6mm; }
607
+ .kader { border: 0.25mm solid #d1d5db; border-radius: 1mm; padding: 1.5mm; }
608
+ table.regels { width: 100%; border-collapse: collapse; table-layout: fixed; }
609
+ table.regels th, table.regels td { overflow-wrap: anywhere; }
610
+ table.regels th, table.regels td { padding: 0.7mm 1mm; vertical-align: top; }
611
+ table.regels th { font-size: 90%; text-transform: uppercase; color: #6b7280; font-weight: 600; text-align: left; }
612
+ .rand { border: 0.2mm solid #d1d5db; }
613
+ .onder { border-bottom: 0.2mm solid #d1d5db; }
614
+ table.regels.compact th, table.regels.compact td { padding: 0.3mm 0.8mm; }
615
+ tr.zebra td { background: #f3f4f6; }
616
+ .plijst { margin: 0; padding-left: 4mm; }
617
+ .groep { margin-bottom: 1.5mm; }
618
+ .regelrij { display: flex; gap: 2mm; }
619
+ .tweekolom { display: grid; grid-template-columns: 1fr 1fr; gap: 3mm; }
620
+ .karblok { margin-bottom: 2mm; }
621
+ .karblok.omkaderd { border: 0.25mm solid #d1d5db; border-radius: 1mm; padding: 1.5mm; }
622
+ .karkop { display: flex; justify-content: space-between; align-items: center; padding: 0.8mm 1.5mm; border-radius: 1mm; margin-bottom: 1mm; }
623
+ .bundel { display: inline-block; border: 0.3mm dashed #6b7280; border-radius: 1mm; padding: 0.4mm 1.5mm; margin-bottom: 1mm; font-weight: 700; text-transform: uppercase; letter-spacing: 0.2mm; font-size: 90%; }
624
+ .laag { margin-bottom: 1.5mm; }
625
+ .laagkop { display: flex; justify-content: space-between; font-weight: 500; border-bottom: 0.2mm solid #d1d5db; padding-bottom: 0.4mm; margin-bottom: 0.6mm; }
626
+ .laagkop.compact { border-bottom: none; }
627
+ .meta { display: flex; gap: 3mm; font-size: 88%; font-weight: 400; color: #4b5563; }
628
+ .totalen { display: flex; flex-wrap: wrap; gap: 5mm; border-top: 0.25mm solid #d1d5db; padding-top: 1.2mm; font-weight: 500; }
629
+ .paginavoet { position: fixed; bottom: 0; left: 0; right: 0; background: #fff; }
630
+ .handtekening { margin-top: 3mm; }
631
+ .lijnveld { margin-top: 4mm; border-bottom: 0.25mm solid #6b7280; padding-bottom: 3mm; }
632
+ .lijnveld.hoog { padding-bottom: 10mm; }
633
+ .lijn { border-top: 0.25mm solid #d1d5db; margin: 1.5mm 0; }
634
+ .balk { height: 1mm; background: #374151; margin: 1.5mm 0; }
635
+ .qr { border: 0.25mm dashed #9ca3af; }
636
+ .streepjes { width: 45mm; background: repeating-linear-gradient(to right, #111827 0 2px, transparent 2px 5px); }
637
+ .klein { font-size: 85%; color: #6b7280; }
638
+ .breekvoor { break-before: page; page-break-before: always; }
639
+ .heelhouden { break-inside: avoid; page-break-inside: avoid; }
640
+ img { max-width: 100%; }
641
+ </style></head>
642
642
  <body>${body}</body></html>`;
643
643
  }
644
644
  /** Handig voor testen: het document met de voorbeeldgegevens. */
@@ -212,22 +212,22 @@ export function renderLayoutHtml(resolved, data, locale = "nl-NL") {
212
212
  const body = resolved.elements
213
213
  .map((el) => renderElement(el, resolved, data, locale))
214
214
  .join("\n");
215
- return `<!DOCTYPE html>
216
- <html lang="nl"><head><meta charset="utf-8" />
217
- <title>${esc(layout.naam)}</title>
218
- <style>
219
- @page { size: ${w}mm ${h}mm; margin: 0; }
220
- * { box-sizing: border-box; }
221
- html, body { margin: 0; padding: 0; }
222
- body { font-family: ${baseFont}; font-size: ${baseSize}pt; color: #000; }
223
- .page { position: relative; width: ${w}mm; height: ${h}mm; overflow: hidden; }
224
- .content { position: absolute; left: ${ml}mm; top: ${mt}mm; right: ${mr}mm; bottom: ${mb}mm; }
225
- .el { position: absolute; white-space: pre-wrap; }
226
- .lbl { font-weight: 600; }
227
- .lay-table { width: 100%; border-collapse: collapse; font-size: inherit; }
228
- .lay-table th, .lay-table td { padding: 1mm 1.5mm; border-bottom: 0.2mm solid #999; vertical-align: top; }
229
- .barcode { font-family: "Libre Barcode 39", monospace; font-size: 30pt; letter-spacing: 4px; line-height: 1; }
230
- .barcode-text { font-size: 8pt; letter-spacing: 2px; }
231
- </style></head>
215
+ return `<!DOCTYPE html>
216
+ <html lang="nl"><head><meta charset="utf-8" />
217
+ <title>${esc(layout.naam)}</title>
218
+ <style>
219
+ @page { size: ${w}mm ${h}mm; margin: 0; }
220
+ * { box-sizing: border-box; }
221
+ html, body { margin: 0; padding: 0; }
222
+ body { font-family: ${baseFont}; font-size: ${baseSize}pt; color: #000; }
223
+ .page { position: relative; width: ${w}mm; height: ${h}mm; overflow: hidden; }
224
+ .content { position: absolute; left: ${ml}mm; top: ${mt}mm; right: ${mr}mm; bottom: ${mb}mm; }
225
+ .el { position: absolute; white-space: pre-wrap; }
226
+ .lbl { font-weight: 600; }
227
+ .lay-table { width: 100%; border-collapse: collapse; font-size: inherit; }
228
+ .lay-table th, .lay-table td { padding: 1mm 1.5mm; border-bottom: 0.2mm solid #999; vertical-align: top; }
229
+ .barcode { font-family: "Libre Barcode 39", monospace; font-size: 30pt; letter-spacing: 4px; line-height: 1; }
230
+ .barcode-text { font-size: 8pt; letter-spacing: 2px; }
231
+ </style></head>
232
232
  <body><div class="page"><div class="content">${body}</div></div></body></html>`;
233
233
  }
@@ -1,5 +1,5 @@
1
1
  import { supabase } from "@flowselections/core";
2
- import type { PickCountry, PickDashboardRow, PickDocumentType, PickLock, PickPrinter, PickQueueItem, PickScreen, PickSortRule, PickStation, PickStationType, PickStatus, PickTask } from "./pickTypes";
2
+ import type { PickCountry, PickDashboardRow, PickDocumentType, PickLock, PickActivePrinter, PickPrintJob, PickPrinter, PickQueueItem, PickScreen, PickSortRule, PickStation, PickStationType, PickStatus, PickTask } from "./pickTypes";
3
3
  declare const db: {
4
4
  from: (t: string) => any;
5
5
  rpc: (fn: string, args?: Record<string, unknown>) => Promise<{
@@ -15,6 +15,8 @@ export declare const pickApi: {
15
15
  countries(): Promise<PickCountry[]>;
16
16
  statuses(): Promise<PickStatus[]>;
17
17
  printers(): Promise<PickPrinter[]>;
18
+ /** Actieve printers uit de printerlijst van de Layout maker. */
19
+ activePrinters(): Promise<PickActivePrinter[]>;
18
20
  documentTypes(): Promise<PickDocumentType[]>;
19
21
  stationTypes(): Promise<PickStationType[]>;
20
22
  tasks(): Promise<PickTask[]>;
@@ -81,7 +83,14 @@ export declare const pickApi: {
81
83
  sessionId: string;
82
84
  timeout: number;
83
85
  }): Promise<PickQueueItem>;
84
- completePrint(itemId: string, printerId: string | null, sessionId: string): Promise<PickQueueItem>;
86
+ /** Zet de printopdracht in de wachtrij. De printer komt uit de database. */
87
+ completePrint(itemId: string, sessionId: string): Promise<PickQueueItem>;
88
+ /** Zet een nieuwe printopdracht in de wachtrij voor een al geprint document. */
89
+ reprint(itemId: string, sessionId: string): Promise<string | null>;
90
+ /** Status van de printopdracht zoals de Layout maker die bijwerkt. */
91
+ printJobStatus(jobId: string): Promise<PickPrintJob | null>;
92
+ /** Zet een mislukte print terug, zodat het document weer in de wachtrij komt. */
93
+ resetPrint(itemId: string, sessionId: string): Promise<PickQueueItem>;
85
94
  releaseLock(itemId: string): Promise<void>;
86
95
  cancelItem(itemId: string): Promise<void>;
87
96
  log(entry: Record<string, unknown>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"pickApi.d.ts","sourceRoot":"","sources":["../../src/lib/pickApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pickApi.d.ts","sourceRoot":"","sources":["../../src/lib/pickApi.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,13 @@ export const pickApi = {
18
18
  async printers() {
19
19
  return unwrap(await db.from("pick_station_printers").select("*").order("name"));
20
20
  },
21
+ /** Actieve printers uit de printerlijst van de Layout maker. */
22
+ async activePrinters() {
23
+ const { data, error } = await db.rpc("pick_active_printers");
24
+ if (error)
25
+ throw new Error(error.message);
26
+ return safeArray(data);
27
+ },
21
28
  async documentTypes() {
22
29
  return unwrap(await db.from("pick_document_types").select("*").order("sort_order"));
23
30
  },
@@ -173,10 +180,39 @@ export const pickApi = {
173
180
  throw new Error(error.message);
174
181
  return data;
175
182
  },
176
- async completePrint(itemId, printerId, sessionId) {
183
+ /** Zet de printopdracht in de wachtrij. De printer komt uit de database. */
184
+ async completePrint(itemId, sessionId) {
177
185
  const { data, error } = await db.rpc("pick_complete_print", {
178
186
  _queue_item_id: itemId,
179
- _printer_id: printerId,
187
+ _printer_id: null,
188
+ _session_id: sessionId,
189
+ });
190
+ if (error)
191
+ throw new Error(error.message);
192
+ return data;
193
+ },
194
+ /** Zet een nieuwe printopdracht in de wachtrij voor een al geprint document. */
195
+ async reprint(itemId, sessionId) {
196
+ const { data, error } = await db.rpc("pick_enqueue_print_job", {
197
+ _queue_item_id: itemId,
198
+ _printer_id: null,
199
+ _session_id: sessionId,
200
+ });
201
+ if (error)
202
+ throw new Error(error.message);
203
+ return typeof data === "string" ? data : null;
204
+ },
205
+ /** Status van de printopdracht zoals de Layout maker die bijwerkt. */
206
+ async printJobStatus(jobId) {
207
+ const { data, error } = await db.rpc("pick_print_job_status", { _job_id: jobId });
208
+ if (error)
209
+ throw new Error(error.message);
210
+ return (data && typeof data === "object" ? data : null);
211
+ },
212
+ /** Zet een mislukte print terug, zodat het document weer in de wachtrij komt. */
213
+ async resetPrint(itemId, sessionId) {
214
+ const { data, error } = await db.rpc("pick_reset_print", {
215
+ _queue_item_id: itemId,
180
216
  _session_id: sessionId,
181
217
  });
182
218
  if (error)
@@ -1,18 +1,6 @@
1
- import { EmptyLayoutError, MissingLayoutError } from "./layoutTypes";
2
1
  import type { PickQueueItem } from "./pickTypes";
3
- export { EmptyLayoutError, MissingLayoutError };
4
- export interface PrintResult {
5
- layoutId: string;
6
- layoutName: string;
7
- layoutVersion: number | null;
8
- documentType: string;
9
- }
2
+ /** Documentsoort zoals de Logistiek Engine die op de wachtrijregel heeft gezet. */
10
3
  export declare function documentTypeOf(item: PickQueueItem): string;
11
- /**
12
- * Rendert het document met de layout uit de Layout maker en opent de
13
- * printdialoog. Gooit MissingLayoutError als er geen actieve layout is.
14
- */
15
- export declare function printQueueItem(item: PickQueueItem, locale?: string): Promise<PrintResult>;
16
- /** Meldt de taak af bij de Engine met de gebruikte layout in het resultaat. */
17
- export declare function completeLogisticsTaskForItem(item: PickQueueItem, print: PrintResult): Promise<void>;
4
+ /** Meldt de taak af bij de Engine met het printopdracht-nummer als resultaat. */
5
+ export declare function completeLogisticsTaskForItem(item: PickQueueItem, printJobId: string | null): Promise<void>;
18
6
  //# sourceMappingURL=pickPrint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pickPrint.d.ts","sourceRoot":"","sources":["../../src/lib/pickPrint.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAiB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AA0BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAE1D;AAkDD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,aAAa,EACnB,MAAM,SAAU,GACf,OAAO,CAAC,WAAW,CAAC,CA+CtB;AAED,+EAA+E;AAC/E,wBAAsB,4BAA4B,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,iBAgBzF"}
1
+ {"version":3,"file":"pickPrint.d.ts","sourceRoot":"","sources":["../../src/lib/pickPrint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAUjD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAI1D;AAED,iFAAiF;AACjF,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,GAAG,IAAI,iBAe1B"}
@@ -1,129 +1,20 @@
1
- // Printen gebeurt uitsluitend met de layout uit de Layout maker. Deze module
2
- // bevat geen enkel eigen documentsjabloon, ook niet als terugval.
3
- import { logosMetViewUrl, resolveLayout } from "./layoutApi";
4
- import { renderLayoutHtml } from "./layoutRenderer";
5
- import { EmptyLayoutError, layoutSecties, MissingLayoutError } from "./layoutTypes";
6
- import { fetchPakbonData } from "./orderContext";
7
- import { maakPakbonOrder, printPakbon } from "./layoutMaker/pakbonHtml";
8
- import { pakbonOrderInput } from "./pakbonOrderInput";
1
+ // Dit pickscherm print zelf niets. Eén klik zet een printopdracht in
2
+ // public.print_jobs; de printdienst kiest layout en printer en print fysiek.
9
3
  import { pickDb } from "./pickApi";
10
- export { EmptyLayoutError, MissingLayoutError };
11
4
  function obj(raw) {
12
5
  return raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {};
13
6
  }
14
7
  function payloadOf(item) {
15
8
  return obj(item.payload);
16
9
  }
17
- /** Alle plekken waar de Engine layoutgegevens kan meesturen, in volgorde van voorkeur. */
18
- function layoutSources(item) {
19
- const p = payloadOf(item);
20
- return [p, obj(p["layout"]), obj(p["data"]), obj(obj(p["data"])["layout"]), obj(p["document"])];
21
- }
22
- function pickField(item, keys) {
23
- for (const src of layoutSources(item)) {
24
- for (const key of keys) {
25
- const v = src[key];
26
- if (v !== undefined && v !== null && v !== "")
27
- return v;
28
- }
29
- }
30
- return undefined;
31
- }
10
+ /** Documentsoort zoals de Logistiek Engine die op de wachtrijregel heeft gezet. */
32
11
  export function documentTypeOf(item) {
33
- return String(pickField(item, ["documentType", "document_type", "documentsoort"]) ?? "pakbon");
34
- }
35
- /** Layoutreferentie zoals de Logistiek Engine die heeft meegegeven. */
36
- function engineLayoutRef(item) {
37
- const id = pickField(item, ["layoutId", "layout_id"]);
38
- const name = pickField(item, ["layoutName", "layout_name"]);
39
- const version = pickField(item, ["layoutVersion", "layout_version"]);
40
- return {
41
- layoutId: id ? String(id) : null,
42
- layoutName: name ? String(name) : null,
43
- layoutVersion: Number.isFinite(Number(version)) ? Number(version) : null,
44
- };
45
- }
46
- /**
47
- * Vraagt de taak bij de Engine op wanneer de wachtrijregel zelf geen layout
48
- * meestuurt. Zo blijft de Engine altijd bepalend voor de opmaak.
49
- */
50
- async function taskLayoutId(item) {
51
- const taskId = pickField(item, ["taskId", "task_id"]);
52
- if (!taskId)
53
- return null;
54
- const res = await pickDb.from("logistics_tasks").select("payload").eq("id", String(taskId)).limit(1);
55
- if (res.error)
56
- return null;
57
- const rows = Array.isArray(res.data) ? res.data : [];
58
- const payload = obj(rows[0]?.payload);
59
- const nested = { ...payload, ...obj(payload["layout"]), ...obj(payload["data"]) };
60
- const id = nested["layoutId"] ?? nested["layout_id"];
61
- return id ? String(id) : null;
62
- }
63
- /** Datacontext voor de layout: wat de Engine meestuurt, aangevuld met de wachtrijregel. */
64
- function buildData(item) {
65
12
  const p = payloadOf(item);
66
- const engineData = p["data"] && typeof p["data"] === "object" && !Array.isArray(p["data"])
67
- ? p["data"]
68
- : {};
69
- return {
70
- ...p,
71
- ...engineData,
72
- document: { ...item, ...engineData["document"] },
73
- ...item,
74
- printedAt: new Date().toISOString(),
75
- };
76
- }
77
- /**
78
- * Rendert het document met de layout uit de Layout maker en opent de
79
- * printdialoog. Gooit MissingLayoutError als er geen actieve layout is.
80
- */
81
- export async function printQueueItem(item, locale = "nl-NL") {
82
- const documentType = documentTypeOf(item);
83
- const engine = engineLayoutRef(item);
84
- const layoutId = engine.layoutId ?? (await taskLayoutId(item));
85
- const resolved = await resolveLayout({ documentType, layoutId });
86
- const secties = layoutSecties(resolved.layout);
87
- if (secties.length) {
88
- const orderId = pickField(item, ["orderId", "order_id"]);
89
- const data = await fetchPakbonData({
90
- orderId: orderId ? String(orderId) : null,
91
- orderNumber: item.order_number ?? null,
92
- });
93
- if (!data)
94
- throw new Error("Ordergegevens niet gevonden voor dit document");
95
- const layout = resolved.layout;
96
- const landscape = String(layout.orientatie ?? "").toLowerCase() === "landscape";
97
- const breedte = layout.breedte_mm ?? 210;
98
- const hoogte = layout.hoogte_mm ?? 297;
99
- const order = maakPakbonOrder(pakbonOrderInput(data));
100
- printPakbon(layout.config, order, {
101
- breedteMm: landscape ? hoogte : breedte,
102
- hoogteMm: landscape ? breedte : hoogte,
103
- margeMm: layout.marge_boven ?? undefined,
104
- titel: `Pakbon ${item.order_number ?? ""}`.trim(),
105
- logos: await logosMetViewUrl(resolved.logos),
106
- });
107
- return {
108
- layoutId: layout.id,
109
- layoutName: layout.naam,
110
- layoutVersion: layout.huidige_versie ?? null,
111
- documentType,
112
- };
113
- }
114
- if (!resolved.elements.length)
115
- throw new EmptyLayoutError(resolved.layout.naam);
116
- const html = renderLayoutHtml(resolved, buildData(item), locale);
117
- await openPrintDialog(html);
118
- return {
119
- layoutId: resolved.layout.id,
120
- layoutName: resolved.layout.naam,
121
- layoutVersion: resolved.layout.huidige_versie ?? null,
122
- documentType,
123
- };
13
+ const v = p["documentType"] ?? p["document_type"] ?? p["documentsoort"];
14
+ return v ? String(v) : "pakbon";
124
15
  }
125
- /** Meldt de taak af bij de Engine met de gebruikte layout in het resultaat. */
126
- export async function completeLogisticsTaskForItem(item, print) {
16
+ /** Meldt de taak af bij de Engine met het printopdracht-nummer als resultaat. */
17
+ export async function completeLogisticsTaskForItem(item, printJobId) {
127
18
  const p = payloadOf(item);
128
19
  const taskId = (p["taskId"] ?? p["task_id"] ?? null);
129
20
  if (!taskId)
@@ -133,52 +24,9 @@ export async function completeLogisticsTaskForItem(item, print) {
133
24
  p_result: {
134
25
  printed: true,
135
26
  queueItemId: item.id,
136
- documentType: print.documentType,
137
- layoutId: print.layoutId,
138
- layoutName: print.layoutName,
139
- layoutVersion: print.layoutVersion,
27
+ documentType: documentTypeOf(item),
28
+ printJobId,
140
29
  printedAt: new Date().toISOString(),
141
30
  },
142
31
  });
143
32
  }
144
- function openPrintDialog(html) {
145
- if (typeof window === "undefined" || typeof document === "undefined")
146
- return Promise.resolve();
147
- return new Promise((resolve) => {
148
- const iframe = document.createElement("iframe");
149
- iframe.setAttribute("aria-hidden", "true");
150
- iframe.style.position = "fixed";
151
- iframe.style.right = "0";
152
- iframe.style.bottom = "0";
153
- iframe.style.width = "0";
154
- iframe.style.height = "0";
155
- iframe.style.border = "0";
156
- document.body.appendChild(iframe);
157
- const cleanup = () => {
158
- window.setTimeout(() => {
159
- if (iframe.parentNode)
160
- iframe.parentNode.removeChild(iframe);
161
- }, 1000);
162
- resolve();
163
- };
164
- iframe.onload = () => {
165
- try {
166
- const win = iframe.contentWindow;
167
- if (!win)
168
- return cleanup();
169
- win.focus();
170
- win.print();
171
- }
172
- catch {
173
- // printen geblokkeerd of niet beschikbaar
174
- }
175
- cleanup();
176
- };
177
- const doc = iframe.contentDocument;
178
- if (!doc)
179
- return cleanup();
180
- doc.open();
181
- doc.write(html);
182
- doc.close();
183
- });
184
- }
@@ -0,0 +1,17 @@
1
+ interface JobTexts {
2
+ jobTitle: string;
3
+ queued: string;
4
+ running: string;
5
+ done: string;
6
+ failed: string;
7
+ cancelled: string;
8
+ unknown: string;
9
+ retry: string;
10
+ close: string;
11
+ printerLabel: string;
12
+ requeued: string;
13
+ }
14
+ export declare function getPrintJobTexts(lang: string): JobTexts;
15
+ export declare function printJobStatusLabel(status: string | null | undefined, lang: string): string;
16
+ export {};
17
+ //# sourceMappingURL=pickPrintJobText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickPrintJobText.d.ts","sourceRoot":"","sources":["../../src/lib/pickPrintJobText.ts"],"names":[],"mappings":"AAGA,UAAU,QAAQ;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgCD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAEvD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB3F"}
@@ -0,0 +1,49 @@
1
+ // Statusteksten voor printopdrachten. De statuswaarden zelf komen uit de
2
+ // database; hier staat alleen de weergave per taal (terugval: Nederlands).
3
+ const nl = {
4
+ jobTitle: "Printopdracht",
5
+ queued: "Naar printer gestuurd",
6
+ running: "Bezig met printen",
7
+ done: "Geprint",
8
+ failed: "Printen mislukt",
9
+ cancelled: "Printopdracht geannuleerd",
10
+ unknown: "Status onbekend",
11
+ retry: "Opnieuw printen",
12
+ close: "Sluiten",
13
+ printerLabel: "Printer",
14
+ requeued: "Document staat weer in de wachtrij.",
15
+ };
16
+ const en = {
17
+ jobTitle: "Print job",
18
+ queued: "Sent to printer",
19
+ running: "Printing",
20
+ done: "Printed",
21
+ failed: "Printing failed",
22
+ cancelled: "Print job cancelled",
23
+ unknown: "Status unknown",
24
+ retry: "Print again",
25
+ close: "Close",
26
+ printerLabel: "Printer",
27
+ requeued: "Document is back in the queue.",
28
+ };
29
+ const DICTS = { nl, en };
30
+ export function getPrintJobTexts(lang) {
31
+ return DICTS[lang] ?? nl;
32
+ }
33
+ export function printJobStatusLabel(status, lang) {
34
+ const texts = getPrintJobTexts(lang);
35
+ switch (status) {
36
+ case "wachtend":
37
+ return texts.queued;
38
+ case "bezig":
39
+ return texts.running;
40
+ case "voltooid":
41
+ return texts.done;
42
+ case "mislukt":
43
+ return texts.failed;
44
+ case "geannuleerd":
45
+ return texts.cancelled;
46
+ default:
47
+ return texts.unknown;
48
+ }
49
+ }
@@ -121,6 +121,7 @@ export interface PickQueueItem {
121
121
  assigned_user_id: string | null;
122
122
  printed_at: string | null;
123
123
  printer_id: string | null;
124
+ print_job_id: string | null;
124
125
  print_count: number;
125
126
  warnings: string[];
126
127
  cancelled_at: string | null;
@@ -136,6 +137,22 @@ export interface PickLock {
136
137
  locked_at: string;
137
138
  expires_at: string;
138
139
  }
140
+ /** Printopdracht zoals de Layout maker die uitvoert. Statussen komen uit de database. */
141
+ export interface PickPrintJob {
142
+ id: string;
143
+ status: string;
144
+ printer_id: string | null;
145
+ printer_naam: string | null;
146
+ foutmelding: string | null;
147
+ pogingen: number | null;
148
+ voltooid_op: string | null;
149
+ }
150
+ export interface PickActivePrinter {
151
+ id: string;
152
+ naam: string;
153
+ locatie: string | null;
154
+ online: boolean | null;
155
+ }
139
156
  export interface PickDashboardRow {
140
157
  station_id: string;
141
158
  station_name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pickTypes.d.ts","sourceRoot":"","sources":["../../src/lib/pickTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pickTypes.d.ts","sourceRoot":"","sources":["../../src/lib/pickTypes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/pick-schermen-kwekers",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "flowselections": {
5
5
  "moduleId": "pick-schermen",
6
6
  "pages": [
@@ -63,7 +63,7 @@
63
63
  "@cloudflare/vite-plugin": "^1.25.5",
64
64
  "@eslint/js": "^9.32.0",
65
65
  "@flowselections/core": "1.0.16",
66
- "@lovable.dev/vite-tanstack-config": "2.9.1",
66
+ "@lovable.dev/vite-tanstack-config": "2.13.1",
67
67
  "@rsbuild/core": "^1.0.0",
68
68
  "@tailwindcss/vite": "^4.2.1",
69
69
  "@tanstack/react-query": "^5.83.0",