@flowselections/layout-maker 1.69.19 → 1.69.23

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 (83) hide show
  1. package/dist-lib/components/FormaatOrientatieBar.d.ts.map +1 -1
  2. package/dist-lib/components/FormaatOrientatieBar.js +10 -7
  3. package/dist-lib/components/GeladenEtiketTab.d.ts.map +1 -1
  4. package/dist-lib/components/GeladenEtiketTab.js +3 -1
  5. package/dist-lib/components/InstelOverzichtKaart.d.ts +12 -0
  6. package/dist-lib/components/InstelOverzichtKaart.d.ts.map +1 -0
  7. package/dist-lib/components/InstelOverzichtKaart.js +78 -0
  8. package/dist-lib/components/KlaarOmTePrintenBlok.d.ts.map +1 -1
  9. package/dist-lib/components/KlaarOmTePrintenBlok.js +2 -1
  10. package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
  11. package/dist-lib/components/LayoutsPage.js +29 -5
  12. package/dist-lib/components/PakbonBuilderPage.d.ts.map +1 -1
  13. package/dist-lib/components/PakbonBuilderPage.js +9 -1
  14. package/dist-lib/components/PrintersPage.d.ts.map +1 -1
  15. package/dist-lib/components/PrintersPage.js +3 -2
  16. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
  17. package/dist-lib/components/PrintplekDetailPage.js +5 -9
  18. package/dist-lib/components/RolKeuze.d.ts +9 -0
  19. package/dist-lib/components/RolKeuze.d.ts.map +1 -0
  20. package/dist-lib/components/RolKeuze.js +91 -0
  21. package/dist-lib/components/StickerOntwerpPage.d.ts +4 -0
  22. package/dist-lib/components/StickerOntwerpPage.d.ts.map +1 -0
  23. package/dist-lib/components/StickerOntwerpPage.js +77 -0
  24. package/dist-lib/components/SysteemLayoutMelding.d.ts +1 -1
  25. package/dist-lib/components/SysteemLayoutMelding.d.ts.map +1 -1
  26. package/dist-lib/components/WerkplekConfiguratiePage.d.ts.map +1 -1
  27. package/dist-lib/components/WerkplekConfiguratiePage.js +15 -7
  28. package/dist-lib/index.d.ts +5 -0
  29. package/dist-lib/index.d.ts.map +1 -1
  30. package/dist-lib/index.js +5 -0
  31. package/dist-lib/integrations/supabase/types.d.ts +621 -120
  32. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  33. package/dist-lib/lib/directPrint.d.ts.map +1 -1
  34. package/dist-lib/lib/directPrint.js +19 -0
  35. package/dist-lib/lib/etiketRollen.d.ts +41 -0
  36. package/dist-lib/lib/etiketRollen.d.ts.map +1 -0
  37. package/dist-lib/lib/etiketRollen.js +64 -0
  38. package/dist-lib/lib/formaatWeergave.d.ts +24 -0
  39. package/dist-lib/lib/formaatWeergave.d.ts.map +1 -0
  40. package/dist-lib/lib/formaatWeergave.js +24 -0
  41. package/dist-lib/lib/instelOverzicht.d.ts +45 -0
  42. package/dist-lib/lib/instelOverzicht.d.ts.map +1 -0
  43. package/dist-lib/lib/instelOverzicht.js +106 -0
  44. package/dist-lib/lib/ontwerpKeuze.d.ts +80 -0
  45. package/dist-lib/lib/ontwerpKeuze.d.ts.map +1 -0
  46. package/dist-lib/lib/ontwerpKeuze.js +193 -0
  47. package/dist-lib/lib/pakbonBuilder.d.ts +6 -0
  48. package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
  49. package/dist-lib/lib/pakbonBuilder.js +15 -0
  50. package/dist-lib/lib/pakbonContent.d.ts.map +1 -1
  51. package/dist-lib/lib/pakbonContent.js +2 -1
  52. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  53. package/dist-lib/lib/pakbonHtml.js +3 -1
  54. package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -1
  55. package/dist-lib/lib/pakbonPresentation.js +3 -0
  56. package/dist-lib/lib/printQueue.server.d.ts +4 -0
  57. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  58. package/dist-lib/lib/printQueue.server.js +274 -5
  59. package/dist-lib/lib/stickerOntwerp.d.ts +67 -0
  60. package/dist-lib/lib/stickerOntwerp.d.ts.map +1 -0
  61. package/dist-lib/lib/stickerOntwerp.js +109 -0
  62. package/dist-lib/lib/stickerRoute.d.ts +3 -0
  63. package/dist-lib/lib/stickerRoute.d.ts.map +1 -0
  64. package/dist-lib/lib/stickerRoute.js +5 -0
  65. package/dist-lib/lib/stickerUitwijk.d.ts +5 -0
  66. package/dist-lib/lib/stickerUitwijk.d.ts.map +1 -1
  67. package/dist-lib/lib/stickerUitwijk.js +12 -1
  68. package/dist-lib/lib/testpagina.d.ts +7 -1
  69. package/dist-lib/lib/testpagina.d.ts.map +1 -1
  70. package/dist-lib/lib/testpagina.js +39 -5
  71. package/dist-lib/lib/useNetwerkPrinters.d.ts +1 -0
  72. package/dist-lib/lib/useNetwerkPrinters.d.ts.map +1 -1
  73. package/dist-lib/lib/useNetwerkPrinters.js +11 -3
  74. package/dist-lib/lib/versie.generated.d.ts +1 -1
  75. package/dist-lib/lib/versie.generated.js +1 -1
  76. package/dist-lib/lib/voorbeeldPrint.d.ts.map +1 -1
  77. package/dist-lib/lib/voorbeeldPrint.js +53 -3
  78. package/dist-lib/lib/werkplekken.d.ts +5 -1
  79. package/dist-lib/lib/werkplekken.d.ts.map +1 -1
  80. package/dist-lib/lib/werkplekken.js +1 -1
  81. package/package.json +6 -1
  82. package/sql/print-schema.sql +320 -162
  83. package/sql/print-schema.verslag.md +5 -2
@@ -0,0 +1,109 @@
1
+ // ============================================================================
2
+ // src/lib/stickerOntwerp.ts — stickerontwerp met velden (config.fs_sticker),
3
+ // voor de standaardontwerpen van Flow Selections en de stickerontwerper
4
+ // (1.69.20). Puur: geen database. Lege velden blijven leeg.
5
+ // ============================================================================
6
+ import { code128BarsHtml } from "./code128.js";
7
+ export const STICKER_VELDEN = [
8
+ { veld: "logo", label: "Logo" },
9
+ { veld: "bedrijfsnaam", label: "Bedrijfsnaam" },
10
+ { veld: "klantnaam", label: "Klant" },
11
+ { veld: "ordernummer", label: "Order" },
12
+ { veld: "leverdatum", label: "Leverdatum" },
13
+ { veld: "afleverlocatie", label: "Afleverlocatie" },
14
+ { veld: "product", label: "Product" },
15
+ { veld: "planten_per_fust", label: "Planten per fust" },
16
+ { veld: "fust", label: "Fust x van y" },
17
+ { veld: "barcode", label: "Barcode (Code128)" },
18
+ ];
19
+ /** Velden per klasse (gelijk aan de standaardontwerpen in de database). */
20
+ export const VELDEN_PER_KLASSE = {
21
+ groot: ["logo", "bedrijfsnaam", "klantnaam", "ordernummer", "leverdatum", "afleverlocatie", "product", "planten_per_fust", "fust", "barcode"],
22
+ middel: ["klantnaam", "ordernummer", "leverdatum", "afleverlocatie", "product", "planten_per_fust", "fust", "barcode"],
23
+ klein: ["ordernummer", "klantnaam", "fust", "barcode"],
24
+ };
25
+ const obj = (v) => (v && typeof v === "object" && !Array.isArray(v) ? v : {});
26
+ const tekst = (v) => (v == null ? "" : String(v).trim());
27
+ const esc = (v) => tekst(v).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
28
+ /** Leest config.fs_sticker; null als het geen stickerontwerp is. */
29
+ export function leesStickerOntwerp(cfg) {
30
+ const c = obj(obj(cfg)["fs_sticker"]);
31
+ if (!Object.keys(c).length)
32
+ return null;
33
+ const bekend = new Set(STICKER_VELDEN.map((v) => v.veld));
34
+ const velden = (Array.isArray(c["velden"]) ? c["velden"] : []).map(String).filter((v) => bekend.has(v));
35
+ const k = tekst(c["klasse"]);
36
+ return { klasse: k === "groot" || k === "middel" || k === "klein" ? k : null, velden };
37
+ }
38
+ /** Gegevens uit de opdracht (en eventueel de order); lege velden blijven leeg. */
39
+ export function stickerGegevens(payload, order = null) {
40
+ const p = obj(payload);
41
+ const o = obj(order);
42
+ const ok = obj(o["klant"]);
43
+ const eerst = (...v) => v.map(tekst).find(Boolean) ?? "";
44
+ const tray = Array.isArray(p["tray_producten"]) ? obj(p["tray_producten"][0]) : {};
45
+ const ordernummer = eerst(p["order_number"], p["ordernummer"], o["ordernummer"], o["order_number"]);
46
+ const fustNummer = eerst(p["tray_nummer"], p["fust_nummer"], p["fust_volgnummer"]);
47
+ const fustTotaal = eerst(p["tray_totaal"], p["fust_totaal"], p["fusten_totaal"]);
48
+ return {
49
+ klantnaam: eerst(p["klantnaam"], p["customer_name"], ok["naam"], o["klantnaam"]),
50
+ ordernummer,
51
+ leverdatum: eerst(p["leverdatum"], p["delivery_date"], o["leverdatum"], o["delivery_date"]),
52
+ afleverlocatie: eerst(p["afleverlocatie"], p["delivery_location"], o["afleverlocatie"]),
53
+ product: eerst(p["productnaam"], p["artikelnaam"], p["product"], tray["naam"], tray["productnaam"]),
54
+ planten_per_fust: eerst(p["planten_per_fust"], p["aantal_per_fust"], tray["aantal"]),
55
+ fust_nummer: fustNummer,
56
+ fust_totaal: fustTotaal,
57
+ barcode: eerst(p["barcode"], ordernummer && fustNummer ? `${ordernummer}-T${fustNummer}` : ordernummer),
58
+ };
59
+ }
60
+ /** Voorbeeldgegevens: geen echte order, geen echte namen. */
61
+ export const VOORBEELD_STICKER = {
62
+ klantnaam: "Voorbeeldklant",
63
+ ordernummer: "VOORBEELD-0001",
64
+ leverdatum: "01-01-2027",
65
+ afleverlocatie: "Voorbeeldlocatie",
66
+ product: "Voorbeeldplant 12 cm",
67
+ planten_per_fust: "10",
68
+ fust_nummer: "1",
69
+ fust_totaal: "2",
70
+ barcode: "VOORBEELD-0001-T1",
71
+ };
72
+ /**
73
+ * HTML van een stickerontwerp op een vaste maat (mm). Lettergrootte en
74
+ * barcodehoogte volgen de maat van het etiket; nooit buiten het etiket.
75
+ */
76
+ export function stickerOntwerpHtml(g, velden, maat, bedrijf = {}) {
77
+ const aan = new Set(velden);
78
+ const b = maat.breedte_mm;
79
+ const h = maat.hoogte_mm;
80
+ const kort = Math.min(b, h);
81
+ const pt = kort <= 30 ? 6.5 : kort <= 40 ? 7.5 : kort <= 70 ? 8 : 10;
82
+ const bcHoogte = Math.max(5, Math.min(14, h * 0.28));
83
+ const regel = (label, w) => (w ? `<div class="r"><b>${label}</b> ${esc(w)}</div>` : "");
84
+ const delen = [];
85
+ const kop = [];
86
+ if (aan.has("logo") && bedrijf.logoSrc)
87
+ kop.push(`<img class="logo" src="${bedrijf.logoSrc}" alt="">`);
88
+ if (aan.has("bedrijfsnaam") && bedrijf.naam)
89
+ kop.push(`<span class="bn">${esc(bedrijf.naam)}</span>`);
90
+ if (kop.length)
91
+ delen.push(`<div class="kop">${kop.join("")}</div>`);
92
+ if (aan.has("ordernummer"))
93
+ delen.push(regel("Order", g.ordernummer));
94
+ if (aan.has("klantnaam"))
95
+ delen.push(regel("Klant", g.klantnaam));
96
+ if (aan.has("leverdatum"))
97
+ delen.push(regel("Levering", g.leverdatum));
98
+ if (aan.has("afleverlocatie"))
99
+ delen.push(regel("Locatie", g.afleverlocatie));
100
+ if (aan.has("product"))
101
+ delen.push(regel("Product", g.product));
102
+ if (aan.has("planten_per_fust"))
103
+ delen.push(regel("Per fust", g.planten_per_fust));
104
+ if (aan.has("fust") && (g.fust_nummer || g.fust_totaal))
105
+ delen.push(`<div class="fust">Fust ${esc(g.fust_nummer)} van ${esc(g.fust_totaal)}</div>`);
106
+ if (aan.has("barcode") && g.barcode)
107
+ delen.push(`<div class="bc">${code128BarsHtml(g.barcode)}</div><div class="bct">${esc(g.barcode)}</div>`);
108
+ return `<!doctype html><html><head><meta charset="utf-8"><style>@page{size:${b}mm ${h}mm;margin:0}html,body{margin:0;padding:0}body{width:${b}mm;height:${h}mm;box-sizing:border-box;padding:1.5mm 2mm;font:${pt}pt Arial,sans-serif;overflow:hidden;display:flex;flex-direction:column}.kop{display:flex;align-items:center;gap:2mm;margin-bottom:1mm}.logo{max-height:${Math.min(12, h * 0.12)}mm;max-width:35mm}.bn{font-weight:bold}.r{line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fust{font-weight:bold;font-size:${pt + 2}pt;margin:0.5mm 0}.bc{display:flex;height:${bcHoogte}mm;margin-top:auto}.bct{text-align:center;font-size:${Math.max(5, pt - 1.5)}pt}</style></head><body>${delen.join("")}</body></html>`;
109
+ }
@@ -0,0 +1,3 @@
1
+ export declare const STICKER_ONTWERP_SOORTEN: readonly ["sticker", "traysticker", "eigen_sticker", "verzendlabel"];
2
+ export declare function isStickerOntwerpSoort(documenttype: string | null | undefined): boolean;
3
+ //# sourceMappingURL=stickerRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickerRoute.d.ts","sourceRoot":"","sources":["../../src/lib/stickerRoute.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,uBAAuB,sEAAuE,CAAC;AAE5G,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEtF"}
@@ -0,0 +1,5 @@
1
+ // src/lib/stickerRoute.ts — welke documentsoorten in de stickerontwerper openen (1.69.20).
2
+ export const STICKER_ONTWERP_SOORTEN = ["sticker", "traysticker", "eigen_sticker", "verzendlabel"];
3
+ export function isStickerOntwerpSoort(documenttype) {
4
+ return STICKER_ONTWERP_SOORTEN.includes(String(documenttype ?? ""));
5
+ }
@@ -86,6 +86,11 @@ export interface UitwijkUitkomst {
86
86
  }
87
87
  /** Tolerantie bij het herkennen van een papiermaat van de printer. */
88
88
  export declare const PAPIER_TOLERANTIE_MM = 1;
89
+ /** 1.69.20: nooit verkleinen onder 95 % (barcode-leesbaarheid), ook niet bij een lagere opgeslagen waarde. */
90
+ export declare const MIN_VERKLEIN_PCT = 95;
91
+ export declare function effectieveOndergrens(opgeslagen: number): number;
92
+ /** Waarschuwing voor een opgeslagen waarde onder 95 % (de instelling zelf blijft ongewijzigd). */
93
+ export declare function ondergrensWaarschuwing(label: string, opgeslagen: number): string | null;
89
94
  /** Papiernaam op afmeting (±1 mm, ook gedraaid) uit de PrintNode-lijst; null als er geen is. */
90
95
  export declare function papierOpMaat(formaten: PrinterFormaten | null | undefined, b: number, h: number): string | null;
91
96
  /** Nominale smalste streep van een Code128/veilingbarcode op ware grootte. */
@@ -1 +1 @@
1
- {"version":3,"file":"stickerUitwijk.d.ts","sourceRoot":"","sources":["../../src/lib/stickerUitwijk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stickerUitwijk.d.ts","sourceRoot":"","sources":["../../src/lib/stickerUitwijk.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,17 @@ export function velindelingVoor(b, h) {
104
104
  }
105
105
  /** Tolerantie bij het herkennen van een papiermaat van de printer. */
106
106
  export const PAPIER_TOLERANTIE_MM = 1;
107
+ /** 1.69.20: nooit verkleinen onder 95 % (barcode-leesbaarheid), ook niet bij een lagere opgeslagen waarde. */
108
+ export const MIN_VERKLEIN_PCT = 95;
109
+ export function effectieveOndergrens(opgeslagen) {
110
+ return Math.max(Number(opgeslagen) || 0, MIN_VERKLEIN_PCT);
111
+ }
112
+ /** Waarschuwing voor een opgeslagen waarde onder 95 % (de instelling zelf blijft ongewijzigd). */
113
+ export function ondergrensWaarschuwing(label, opgeslagen) {
114
+ return Number(opgeslagen) < MIN_VERKLEIN_PCT
115
+ ? `${label} staat op ${Math.round(Number(opgeslagen))} %, wordt ${MIN_VERKLEIN_PCT} % (barcode-leesbaarheid)`
116
+ : null;
117
+ }
107
118
  /** Papiernaam op afmeting (±1 mm, ook gedraaid) uit de PrintNode-lijst; null als er geen is. */
108
119
  export function papierOpMaat(formaten, b, h) {
109
120
  if (!formaten || typeof formaten !== "object" || Array.isArray(formaten))
@@ -190,7 +201,7 @@ export function kiesUitwijkroute(input) {
190
201
  // 3b. verkleinen, verhouding gelijk, nooit uitrekken
191
202
  const schaal = Math.min(eb / b, eh / h, 1);
192
203
  const pct = Math.round(schaal * 100);
193
- if (schaal * 100 >= input.instelling.ondergrens_pct - 1e-9 && (input.heeftBarcode === false || barcodeLeesbaar(schaal, e.dpi))) {
204
+ if (schaal * 100 >= effectieveOndergrens(input.instelling.ondergrens_pct) - 1e-9 && (input.heeftBarcode === false || barcodeLeesbaar(schaal, e.dpi))) {
194
205
  kleiner.push({ afwijking: 1 - schaal, u: uit(e, "verkleind", Math.round(schaal * 100) / 100, rot, `Geprint op ${maat(e.breedte_mm, e.hoogte_mm)} in plaats van ${st}, verkleind tot ${pct}%`) });
195
206
  }
196
207
  }
@@ -1,2 +1,8 @@
1
- export declare function drukTestpaginaAf(printerId: string, naam: string): Promise<void>;
1
+ /** HTML van de testpagina op een rol van b × h mm (puur, voor tests). */
2
+ export declare function testpaginaRolHtml(printerNaam: string, rol: {
3
+ naam: string;
4
+ breedte_mm: number;
5
+ hoogte_mm: number;
6
+ }, datum: string): string;
7
+ export declare function drukTestpaginaAf(printerId: string, naam: string): Promise<boolean>;
2
8
  //# sourceMappingURL=testpagina.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testpagina.d.ts","sourceRoot":"","sources":["../../src/lib/testpagina.ts"],"names":[],"mappings":"AASA,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBA0BrE"}
1
+ {"version":3,"file":"testpagina.d.ts","sourceRoot":"","sources":["../../src/lib/testpagina.ts"],"names":[],"mappings":"AAkBA,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1I;AAED,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0CxF"}
@@ -2,23 +2,55 @@
2
2
  // src/lib/testpagina.ts — een testpagina naar een printer sturen.
3
3
  // Loopt via de printwachtrij, net als echte documenten, zodat ook het
4
4
  // papierformaat en de stand worden getest.
5
+ // 1.69.20: op een labelprinter met ingestelde rol is de testpagina zo groot
6
+ // als de rol (printernaam, rol, datum, randkader, Code128-testbarcode). Zonder
7
+ // rol: A4 (gewone printer).
5
8
  // ============================================================================
6
9
  import { toast } from "@flowselections/core";
7
10
  import { printHtml, volgJobStatus } from "./printApi.js";
11
+ import { supabase } from "./supabaseClient.js";
12
+ import { code128BarsHtml } from "./code128.js";
13
+ import { leesGeladenEtiket } from "./etiketControle.js";
14
+ const esc = (v) => v.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
15
+ const nl = (n) => String(Math.round(n * 10) / 10).replace(".", ",");
16
+ /** HTML van de testpagina op een rol van b × h mm (puur, voor tests). */
17
+ export function testpaginaRolHtml(printerNaam, rol, datum) {
18
+ const b = rol.breedte_mm;
19
+ const h = rol.hoogte_mm;
20
+ const kort = Math.min(b, h);
21
+ const pt = kort <= 30 ? 6 : kort <= 45 ? 7 : 9;
22
+ const bc = Math.max(4, Math.min(12, h * 0.3));
23
+ return `<!doctype html><html><head><meta charset="utf-8"><style>@page{size:${b}mm ${h}mm;margin:0}html,body{margin:0;padding:0}body{width:${b}mm;height:${h}mm;box-sizing:border-box;border:0.4mm solid #000;padding:1mm 1.5mm;font:${pt}pt Arial,sans-serif;overflow:hidden;display:flex;flex-direction:column}.t{font-weight:bold}.bc{display:flex;height:${bc}mm;margin-top:auto}</style></head><body><div class="t">Testpagina · ${esc(printerNaam)}</div><div>Rol: ${esc(rol.naam)} (${nl(b)} × ${nl(h)} mm)</div><div>${esc(datum)}</div><div class="bc">${code128BarsHtml("TEST-128")}</div></body></html>`;
24
+ }
8
25
  export async function drukTestpaginaAf(printerId, naam) {
9
- const html = `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
26
+ let rol = null;
27
+ try {
28
+ const { data } = await supabase.from("printers").select("geladen_etiket").eq("id", printerId).maybeSingle();
29
+ rol = leesGeladenEtiket(data?.geladen_etiket);
30
+ }
31
+ catch {
32
+ rol = null;
33
+ }
34
+ const datum = new Date().toLocaleString("nl-NL");
35
+ const html = rol
36
+ ? testpaginaRolHtml(naam, rol, datum)
37
+ : `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
10
38
  <h1 style="font-size:20pt;margin:0 0 6mm">Testpagina</h1>
11
- <p style="margin:0 0 3mm">Deze pagina hoort uit: <strong>${naam}</strong></p>
12
- <p style="margin:0">${new Date().toLocaleString("nl-NL")}</p></div>`;
39
+ <p style="margin:0 0 3mm">Deze pagina hoort uit: <strong>${esc(naam)}</strong></p>
40
+ <p style="margin:0">${datum}</p></div>`;
13
41
  try {
14
42
  const { jobId } = await printHtml({
15
43
  documenttype: "vrij",
16
44
  documentnaam: "Testpagina",
17
45
  html,
18
46
  printerId,
19
- payload: { is_testpagina: true, test_id: `testpagina-${Date.now()}` },
47
+ payload: {
48
+ is_testpagina: true,
49
+ test_id: `testpagina-${Date.now()}`,
50
+ ...(rol ? { voorbeeld_formaat: { breedte_mm: rol.breedte_mm, hoogte_mm: rol.hoogte_mm, orientatie: "portrait", marge_boven: 0 } } : {}),
51
+ },
20
52
  });
21
- toast.success(`Testpagina verstuurd naar ${naam}`);
53
+ toast.success(`Testpagina in de wachtrij gezet voor ${naam}${rol ? ` (rol ${nl(rol.breedte_mm)} × ${nl(rol.hoogte_mm)} mm)` : " (A4)"}`);
22
54
  const stop = volgJobStatus(jobId, (st) => {
23
55
  if (st.status === "mislukt") {
24
56
  toast.error(st.foutmelding ?? `De testpagina op ${naam} is mislukt`);
@@ -29,8 +61,10 @@ export async function drukTestpaginaAf(printerId, naam) {
29
61
  }
30
62
  });
31
63
  setTimeout(() => stop(), 60000);
64
+ return true;
32
65
  }
33
66
  catch (e) {
34
67
  toast.error(e instanceof Error ? e.message : "De testpagina kon niet worden afgedrukt");
68
+ return false;
35
69
  }
36
70
  }
@@ -8,5 +8,6 @@ export declare function useNetwerkPrinters(): {
8
8
  gevonden: GevondenPrinter[];
9
9
  bezig: boolean;
10
10
  zoek: () => Promise<void>;
11
+ geladen: boolean;
11
12
  };
12
13
  //# sourceMappingURL=useNetwerkPrinters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNetwerkPrinters.d.ts","sourceRoot":"","sources":["../../src/lib/useNetwerkPrinters.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,kBAAkB;;;;EAqBjC"}
1
+ {"version":3,"file":"useNetwerkPrinters.d.ts","sourceRoot":"","sources":["../../src/lib/useNetwerkPrinters.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,kBAAkB;;;;;EA6BjC"}
@@ -6,14 +6,22 @@ import { netwerkPrinters } from "./printService.functions.js";
6
6
  export function useNetwerkPrinters() {
7
7
  const [gevonden, setGevonden] = useState([]);
8
8
  const [bezig, setBezig] = useState(false);
9
+ /** true zodra er één keer een lijst van PrintNode is gekomen. */
10
+ const [geladen, setGeladen] = useState(false);
11
+ // 1.69.20: een mislukte of lege tussentijdse ronde wist de vorige lijst niet
12
+ // meer. Anders sprong de werkplektelling tussen "0 ingesteld · 7 nog
13
+ // beschikbaar" (geen lijst) en "5 ingesteld · 2 nog beschikbaar".
9
14
  const zoek = useCallback(async () => {
10
15
  setBezig(true);
11
16
  try {
12
17
  const res = await netwerkPrinters({ data: undefined });
13
- setGevonden(res.ok && Array.isArray(res.printers) ? res.printers : []);
18
+ if (res.ok && Array.isArray(res.printers)) {
19
+ setGevonden(res.printers);
20
+ setGeladen(true);
21
+ }
14
22
  }
15
23
  catch {
16
- setGevonden([]);
24
+ // vorige lijst laten staan
17
25
  }
18
26
  finally {
19
27
  setBezig(false);
@@ -22,5 +30,5 @@ export function useNetwerkPrinters() {
22
30
  useEffect(() => {
23
31
  void zoek();
24
32
  }, [zoek]);
25
- return { gevonden, bezig, zoek };
33
+ return { gevonden, bezig, zoek, geladen };
26
34
  }
@@ -1,2 +1,2 @@
1
- export declare const PAKKET_VERSIE = "1.69.19";
1
+ export declare const PAKKET_VERSIE = "1.69.23";
2
2
  //# sourceMappingURL=versie.generated.d.ts.map
@@ -1,2 +1,2 @@
1
1
  // Gegenereerd door scripts/schrijf-versie.cjs uit package.json. Niet met de hand wijzigen.
2
- export const PAKKET_VERSIE = "1.69.19";
2
+ export const PAKKET_VERSIE = "1.69.23";
@@ -1 +1 @@
1
- {"version":3,"file":"voorbeeldPrint.d.ts","sourceRoot":"","sources":["../../src/lib/voorbeeldPrint.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCzF"}
1
+ {"version":3,"file":"voorbeeldPrint.d.ts","sourceRoot":"","sources":["../../src/lib/voorbeeldPrint.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFzF"}
@@ -6,6 +6,11 @@
6
6
  // ============================================================================
7
7
  import { toast } from "@flowselections/core";
8
8
  import { printHtml, printerVoorLayout, volgJobStatus, } from "./printApi.js";
9
+ import { supabase } from "./supabaseClient.js";
10
+ import { leesGeladenEtiket } from "./etiketControle.js";
11
+ import { afdrukMaat } from "./formaatWeergave.js";
12
+ import { kiesOntwerpEnPrinter, maatNl } from "./ontwerpKeuze.js";
13
+ const STICKER_ACHTIG = new Set(["sticker", "traysticker", "eigen_sticker", "verzendlabel"]);
9
14
  /** Pure opbouw van de opdracht, zodat printplekdoorgifte regressiegetest kan worden. */
10
15
  export function bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId) {
11
16
  const documenttype = String(layout.documenttype ?? "pakbon");
@@ -39,14 +44,59 @@ export function bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId) {
39
44
  export async function voorbeeldPrint(layout, html) {
40
45
  const documenttype = String(layout.documenttype ?? "pakbon");
41
46
  const naam = layout.naam ?? documenttype;
42
- const printerId = await printerVoorLayout(layout);
47
+ let printerId = await printerVoorLayout(layout);
48
+ // 1.69.20: een sticker-achtig ontwerp gaat naar een printer waarop het past
49
+ // (zelfde keuzeregel als de wachtrij). Past het nergens, dan zegt de melding dat.
50
+ if (STICKER_ACHTIG.has(documenttype)) {
51
+ const { data } = await supabase
52
+ .from("printers")
53
+ .select("id, naam, weergavenaam, actief, extern_printer_id, geladen_etiket")
54
+ .not("geladen_etiket", "is", null);
55
+ const rijen = (Array.isArray(data) ? data : []);
56
+ const printers = rijen
57
+ .filter((p) => p["actief"] !== false && p["extern_printer_id"])
58
+ .map((p) => {
59
+ const e = leesGeladenEtiket(p["geladen_etiket"]);
60
+ return { id: String(p["id"]), naam: String(p["weergavenaam"] || p["naam"] || "Printer"), breedte_mm: e?.breedte_mm ?? null, hoogte_mm: e?.hoogte_mm ?? null };
61
+ })
62
+ .sort((a, b) => (a.id === printerId ? -1 : b.id === printerId ? 1 : a.naam.localeCompare(b.naam)));
63
+ const m = afdrukMaat(layout);
64
+ const k = kiesOntwerpEnPrinter({
65
+ documentLabel: naam,
66
+ klant: { id: layout.id ?? null, naam, breedte_mm: m.breedte_mm, hoogte_mm: m.hoogte_mm, herkomst: "klant" },
67
+ kweker: [],
68
+ standaard: [],
69
+ printers,
70
+ a4Printer: null,
71
+ a4Terugval: false,
72
+ vastFormaat: true,
73
+ });
74
+ if (!k.printer) {
75
+ toast.error(`Voorbeeld niet geprint: ${naam} (${maatNl(m.breedte_mm, m.hoogte_mm)}) past op geen labelprinter. Rollen: ${printers.filter((p) => p.breedte_mm && p.hoogte_mm).map((p) => `${p.naam} (${maatNl(p.breedte_mm, p.hoogte_mm)})`).join(", ") || "geen ingesteld"}.`);
76
+ return;
77
+ }
78
+ printerId = k.printer.id;
79
+ }
43
80
  if (!printerId) {
44
81
  toast.error(`Nog geen printer gekoppeld aan ${naam} — stel dit in bij Printen > Standaardregels.`);
45
82
  return;
46
83
  }
47
84
  const printplekId = undefined;
48
- const { jobId } = await printHtml(bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId));
49
- toast.success("Voorbeeld naar de printer verstuurd");
85
+ let jobId;
86
+ try {
87
+ ({ jobId } = await printHtml(bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId)));
88
+ }
89
+ catch (e) {
90
+ toast.error(`Voorbeeld niet geprint: ${e instanceof Error ? e.message : "er is geen printopdracht gemaakt"}`);
91
+ return;
92
+ }
93
+ // Nooit "verstuurd" zonder opdracht: lees de opdracht terug.
94
+ const { data: rij } = await supabase.from("print_jobs").select("id").eq("id", jobId).maybeSingle();
95
+ if (!rij) {
96
+ toast.error("Voorbeeld niet geprint: er is geen printopdracht gemaakt. Probeer het opnieuw of kijk in de printwachtrij.");
97
+ return;
98
+ }
99
+ toast.success("Voorbeeld in de printwachtrij gezet");
50
100
  let afgerond = false;
51
101
  const stop = volgJobStatus(jobId, (s) => {
52
102
  if (s.status === "klaar" || s.status === "voltooid") {
@@ -27,6 +27,10 @@ export interface PrinterRij {
27
27
  ondersteunde_formaten: Record<string, number[]> | null;
28
28
  geladen_etiket: GeladenEtiket | null;
29
29
  soort?: string | null;
30
+ rol_id?: string | null;
31
+ rol_invoerrichting?: string | null;
32
+ rol_marge_mm?: number | null;
33
+ rol_doorlopend?: boolean | null;
30
34
  }
31
35
  export declare const isVirtuelePrinter: (naam: string | null | undefined) => boolean;
32
36
  /** De naam die we tonen: eigen naam van de beheerder, anders de technische. */
@@ -50,7 +54,7 @@ export declare function usePrinterLijst(): {
50
54
  printers: PrinterRij[];
51
55
  reload: () => Promise<void>;
52
56
  };
53
- export declare function zetPrinterVelden(id: string, velden: Partial<Pick<PrinterRij, "weergavenaam" | "verborgen" | "is_virtueel" | "geladen_etiket">>): Promise<void>;
57
+ export declare function zetPrinterVelden(id: string, velden: Partial<Pick<PrinterRij, "weergavenaam" | "verborgen" | "is_virtueel" | "geladen_etiket" | "rol_id" | "rol_invoerrichting" | "rol_marge_mm" | "rol_doorlopend">>): Promise<void>;
54
58
  /** Werkplek van de ingelogde gebruiker (Afhandeling, Facturen…); null = nog niet gekozen. */
55
59
  export declare function mijnWerkplekId(): Promise<string | null>;
56
60
  export declare function kiesMijnWerkplek(werkplek_id: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"werkplekken.d.ts","sourceRoot":"","sources":["../../src/lib/werkplekken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"werkplekken.d.ts","sourceRoot":"","sources":["../../src/lib/werkplekken.ts"],"names":[],"mappings":"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"}
@@ -87,7 +87,7 @@ export function usePrinterLijst() {
87
87
  const load = useCallback(async () => {
88
88
  const { data } = await db
89
89
  .from("printers")
90
- .select("id, naam, weergavenaam, systeemnaam, locatie, online, actief, verborgen, is_virtueel, extern_printer_id, ondersteunde_formaten, geladen_etiket, soort")
90
+ .select("id, naam, weergavenaam, systeemnaam, locatie, online, actief, verborgen, is_virtueel, extern_printer_id, ondersteunde_formaten, geladen_etiket, soort, rol_id, rol_invoerrichting, rol_marge_mm, rol_doorlopend")
91
91
  .order("naam");
92
92
  setPrinters(arr(data).map((p) => ({
93
93
  ...p,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/layout-maker",
3
- "version": "1.69.19",
3
+ "version": "1.69.23",
4
4
  "flowselections": {
5
5
  "moduleId": "layout-maker",
6
6
  "pages": [
@@ -34,6 +34,11 @@
34
34
  "route": "layouts-printers/pakbon/$layoutId",
35
35
  "title": "Pakbon opbouw"
36
36
  },
37
+ {
38
+ "export": "StickerOntwerpPage",
39
+ "route": "layouts-printers/sticker/$layoutId",
40
+ "title": "Stickerontwerp"
41
+ },
37
42
  {
38
43
  "export": "AfleverbriefBuilderPage",
39
44
  "route": "layouts-printers/afleverbrief/$layoutId",