@flowselections/layout-maker 1.36.7 → 1.45.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 (123) 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/PaginaDocument.d.ts +4 -1
  14. package/dist-lib/components/PaginaDocument.d.ts.map +1 -1
  15. package/dist-lib/components/PaginaDocument.js +10 -5
  16. package/dist-lib/components/PakbonBuilderPage.d.ts.map +1 -1
  17. package/dist-lib/components/PakbonBuilderPage.js +34 -14
  18. package/dist-lib/components/PakbonPreview.d.ts +4 -2
  19. package/dist-lib/components/PakbonPreview.d.ts.map +1 -1
  20. package/dist-lib/components/PakbonPreview.js +74 -24
  21. package/dist-lib/components/PakbonSectiesPanel.d.ts +5 -3
  22. package/dist-lib/components/PakbonSectiesPanel.d.ts.map +1 -1
  23. package/dist-lib/components/PakbonSectiesPanel.js +8 -5
  24. package/dist-lib/components/PdfMapToestemmingBanner.d.ts +2 -1
  25. package/dist-lib/components/PdfMapToestemmingBanner.d.ts.map +1 -1
  26. package/dist-lib/components/PdfMapToestemmingBanner.js +73 -14
  27. package/dist-lib/components/PdfVoorbeeld.d.ts +20 -0
  28. package/dist-lib/components/PdfVoorbeeld.d.ts.map +1 -0
  29. package/dist-lib/components/PdfVoorbeeld.js +95 -0
  30. package/dist-lib/components/PrintProgrammaUitleg.d.ts.map +1 -1
  31. package/dist-lib/components/PrintProgrammaUitleg.js +1 -1
  32. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  33. package/dist-lib/components/PrintQueuePage.js +81 -43
  34. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
  35. package/dist-lib/components/PrintplekDetailPage.js +2 -2
  36. package/dist-lib/components/PrintplekWizard.d.ts.map +1 -1
  37. package/dist-lib/components/PrintplekWizard.js +6 -2
  38. package/dist-lib/components/ProductiebonBuilderPage.d.ts.map +1 -1
  39. package/dist-lib/components/ProductiebonBuilderPage.js +13 -7
  40. package/dist-lib/index.d.ts +16 -6
  41. package/dist-lib/index.d.ts.map +1 -1
  42. package/dist-lib/index.js +11 -5
  43. package/dist-lib/integrations/supabase/auth-middleware.d.ts +3585 -1267
  44. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  45. package/dist-lib/integrations/supabase/client.server.d.ts +3585 -1267
  46. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  47. package/dist-lib/integrations/supabase/moduleClient.d.ts +25898 -0
  48. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -0
  49. package/dist-lib/integrations/supabase/moduleClient.js +29 -0
  50. package/dist-lib/integrations/supabase/types.d.ts +3607 -1265
  51. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  52. package/dist-lib/integrations/supabase/types.js +1 -0
  53. package/dist-lib/lib/aiLayout.functions.d.ts +3585 -1267
  54. package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
  55. package/dist-lib/lib/code128.d.ts +5 -0
  56. package/dist-lib/lib/code128.d.ts.map +1 -0
  57. package/dist-lib/lib/code128.js +51 -0
  58. package/dist-lib/lib/documentVoorbeeld.functions.d.ts +23 -0
  59. package/dist-lib/lib/documentVoorbeeld.functions.d.ts.map +1 -0
  60. package/dist-lib/lib/documentVoorbeeld.functions.js +37 -0
  61. package/dist-lib/lib/fontMetrics.d.ts +15 -0
  62. package/dist-lib/lib/fontMetrics.d.ts.map +1 -0
  63. package/dist-lib/lib/fontMetrics.js +118 -0
  64. package/dist-lib/lib/htmlNaarPdf.server.d.ts +2 -2
  65. package/dist-lib/lib/htmlNaarPdf.server.d.ts.map +1 -1
  66. package/dist-lib/lib/htmlNaarPdf.server.js +2 -1
  67. package/dist-lib/lib/htmlPdf.server.d.ts +11 -0
  68. package/dist-lib/lib/htmlPdf.server.d.ts.map +1 -1
  69. package/dist-lib/lib/htmlPdf.server.js +170 -9
  70. package/dist-lib/lib/layoutPreview.d.ts.map +1 -1
  71. package/dist-lib/lib/layoutPreview.js +6 -3
  72. package/dist-lib/lib/orderData.server.d.ts.map +1 -1
  73. package/dist-lib/lib/orderData.server.js +49 -16
  74. package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts +39 -0
  75. package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts.map +1 -0
  76. package/dist-lib/lib/pakbonBarcodeVerzoek.js +80 -0
  77. package/dist-lib/lib/pakbonBuilder.d.ts +90 -5
  78. package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
  79. package/dist-lib/lib/pakbonBuilder.js +455 -58
  80. package/dist-lib/lib/pakbonContent.d.ts +41 -0
  81. package/dist-lib/lib/pakbonContent.d.ts.map +1 -0
  82. package/dist-lib/lib/pakbonContent.js +668 -0
  83. package/dist-lib/lib/pakbonDocument.d.ts +199 -0
  84. package/dist-lib/lib/pakbonDocument.d.ts.map +1 -0
  85. package/dist-lib/lib/pakbonDocument.js +735 -0
  86. package/dist-lib/lib/pakbonHtml.d.ts +21 -2
  87. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  88. package/dist-lib/lib/pakbonHtml.js +144 -36
  89. package/dist-lib/lib/pakbonPresentation.d.ts +8 -0
  90. package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -0
  91. package/dist-lib/lib/pakbonPresentation.js +31 -0
  92. package/dist-lib/lib/pakbonScan.d.ts +44 -0
  93. package/dist-lib/lib/pakbonScan.d.ts.map +1 -0
  94. package/dist-lib/lib/pakbonScan.js +87 -0
  95. package/dist-lib/lib/pdfJobSaver.d.ts +10 -6
  96. package/dist-lib/lib/pdfJobSaver.d.ts.map +1 -1
  97. package/dist-lib/lib/pdfJobSaver.js +302 -99
  98. package/dist-lib/lib/pdfMap.d.ts +37 -2
  99. package/dist-lib/lib/pdfMap.d.ts.map +1 -1
  100. package/dist-lib/lib/pdfMap.js +120 -7
  101. package/dist-lib/lib/pdfOpslagStatus.d.ts +23 -0
  102. package/dist-lib/lib/pdfOpslagStatus.d.ts.map +1 -0
  103. package/dist-lib/lib/pdfOpslagStatus.js +74 -0
  104. package/dist-lib/lib/printApi.d.ts +31 -0
  105. package/dist-lib/lib/printApi.d.ts.map +1 -1
  106. package/dist-lib/lib/printApi.js +62 -1
  107. package/dist-lib/lib/printQueue.server.d.ts +13 -0
  108. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  109. package/dist-lib/lib/printQueue.server.js +673 -96
  110. package/dist-lib/lib/printService.functions.d.ts +11840 -2568
  111. package/dist-lib/lib/printService.functions.d.ts.map +1 -1
  112. package/dist-lib/lib/profielHtml.d.ts.map +1 -1
  113. package/dist-lib/lib/profielHtml.js +8 -1
  114. package/dist-lib/lib/supabaseClient.d.ts +1 -3
  115. package/dist-lib/lib/supabaseClient.d.ts.map +1 -1
  116. package/dist-lib/lib/supabaseClient.js +4 -8
  117. package/dist-lib/lib/useDocumentData.d.ts +8 -0
  118. package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
  119. package/dist-lib/lib/useDocumentData.js +1 -1
  120. package/dist-lib/lib/voorbeeldPrint.d.ts +3 -0
  121. package/dist-lib/lib/voorbeeldPrint.d.ts.map +1 -1
  122. package/dist-lib/lib/voorbeeldPrint.js +65 -17
  123. package/package.json +9 -2
@@ -334,32 +334,65 @@ export async function laadPakbonData(db, opties) {
334
334
  const items = karItems.filter((i) => i["cart_id"] === kar["id"]);
335
335
  const maxLagen = Math.max(1, num(kar["max_layers"]) || 0) || 1;
336
336
  const lagen = [];
337
- let huidige = null;
338
- for (const item of items) {
339
- const fusten = num(item["crates"]);
340
- const perFust = num(item["plants_per_crate"]);
341
- const perLaag = num(item["crates_per_layer"]);
342
- const deel = num(item["layer_fraction"]) ||
343
- (perLaag > 0 ? fusten / perLaag : 0) ||
344
- (num(item["layer_share_pct"]) ? num(item["layer_share_pct"]) / 100 : 0) ||
345
- 1;
346
- const product = maakProduct(item, fusten * perFust || num(item["boxes"]), fusten, perFust);
347
- if (!huidige || huidige.ruimte + deel > 1.0001) {
348
- huidige = { producten: [], ruimte: 0 };
349
- lagen.push(huidige);
337
+ // De Logistiek Engine geeft per karregel het laagnummer door. Zodra dat
338
+ // aanwezig is volgen we die indeling exact — nooit zelf herverdelen.
339
+ const engineLagen = items.some((i) => num(i["layer_index"]) > 0);
340
+ if (engineLagen) {
341
+ const perLaag = new Map();
342
+ for (const item of items) {
343
+ const fusten = num(item["crates"]);
344
+ const perFust = num(item["plants_per_crate"]);
345
+ const nummer = Math.max(1, num(item["layer_index"]) || 1);
346
+ const capaciteit = num(item["crates_per_layer"]);
347
+ const inLaag = num(item["crates_in_layer"]) || fusten;
348
+ const deel = capaciteit > 0 ? inLaag / capaciteit : num(item["layer_fraction"]) || 0;
349
+ let laag = perLaag.get(nummer);
350
+ if (!laag) {
351
+ laag = { producten: [], ruimte: 0 };
352
+ perLaag.set(nummer, laag);
353
+ }
354
+ laag.producten.push(maakProduct(item, fusten * perFust || num(item["boxes"]), fusten, perFust));
355
+ laag.ruimte += deel;
356
+ }
357
+ const hoogste = Math.max(maxLagen, ...perLaag.keys());
358
+ for (let n = 1; n <= hoogste; n++) {
359
+ lagen.push(perLaag.get(n) ?? { producten: [], ruimte: 0 });
360
+ }
361
+ }
362
+ else {
363
+ let huidige = null;
364
+ for (const item of items) {
365
+ const fusten = num(item["crates"]);
366
+ const perFust = num(item["plants_per_crate"]);
367
+ const perLaag = num(item["crates_per_layer"]);
368
+ const deel = num(item["layer_fraction"]) ||
369
+ (perLaag > 0 ? fusten / perLaag : 0) ||
370
+ (num(item["layer_share_pct"]) ? num(item["layer_share_pct"]) / 100 : 0) ||
371
+ 1;
372
+ const product = maakProduct(item, fusten * perFust || num(item["boxes"]), fusten, perFust);
373
+ if (!huidige || huidige.ruimte + deel > 1.0001) {
374
+ huidige = { producten: [], ruimte: 0 };
375
+ lagen.push(huidige);
376
+ }
377
+ huidige.producten.push(product);
378
+ huidige.ruimte += deel;
350
379
  }
351
- huidige.producten.push(product);
352
- huidige.ruimte += deel;
353
380
  }
354
381
  if (!lagen.length)
355
382
  lagen.push({ producten: [], ruimte: 0 });
356
383
  return {
384
+ // Nodig om een Engine-opdracht voor precies één kar te kunnen filteren.
385
+ // De waarde komt uit de gedeelde database en wordt nooit lokaal bedacht.
386
+ cart_id: String(kar["id"] ?? "") || undefined,
387
+ cart_label: String(kar["cart_label"] ?? kar["label"] ?? "") || undefined,
388
+ cart_index: index + 1,
389
+ cart_total: karrenRijen.length,
357
390
  karnummer: num(kar["cart_number"]) || index + 1,
358
391
  route: String(kar["carrier_type"] ?? ""),
359
392
  gewicht: kar["weight_kg"] ? `${num(kar["weight_kg"]).toFixed(1)} kg` : "",
360
393
  gedeeld: kar["__gedeeld"] === true,
361
394
  opmerking: String(kar["notes"] ?? ""),
362
- lagen: lagen.slice(0, Math.max(maxLagen, lagen.length)).map((laag, j) => {
395
+ lagen: lagen.map((laag, j) => {
363
396
  const potmaten = uniek(laag.producten.map((product) => product["potmaat"]));
364
397
  return {
365
398
  laagnummer: j + 1,
@@ -0,0 +1,39 @@
1
+ export interface PakbonBarcodeVerzoek {
2
+ print_job_id: string;
3
+ documentnaam: string | null;
4
+ order_nummer: string | null;
5
+ order_ref: string | null;
6
+ klant_naam: string | null;
7
+ klant_nummer: string | null;
8
+ cart_id: string | null;
9
+ cart_label: string | null;
10
+ cart_index: number | null;
11
+ cart_total: number | null;
12
+ layout_variant: string | null;
13
+ layout_id: string | null;
14
+ is_herprint: boolean;
15
+ }
16
+ type Db = {
17
+ from: (tabel: string) => any;
18
+ };
19
+ /**
20
+ * Kijkt of de Engine inmiddels een barcode heeft geleverd voor deze opdracht.
21
+ * Geeft `null` terug zolang dat niet zo is. Er wordt nooit een waarde bedacht.
22
+ */
23
+ export declare function geleverdeBarcodeVoorJob(db: Db, printJobId: string): Promise<string | null>;
24
+ /**
25
+ * Legt (of ververst) het openstaande verzoek vast. Mislukt het wegschrijven,
26
+ * dan mag dat de wachtrij niet breken: de opdracht blijft gewoon wachten.
27
+ */
28
+ export declare function vraagPakbonBarcodeAan(db: Db, verzoek: PakbonBarcodeVerzoek): Promise<void>;
29
+ /** Bouwt het verzoek uit de order zoals die op de pakbon zou komen. */
30
+ export declare function bouwPakbonBarcodeVerzoek(order: unknown, opties: {
31
+ printJobId: string;
32
+ documentnaam?: unknown;
33
+ cart?: Record<string, any> | null;
34
+ layoutVariant?: string | null;
35
+ layoutId?: string | null;
36
+ isHerprint?: boolean;
37
+ }): PakbonBarcodeVerzoek;
38
+ export {};
39
+ //# sourceMappingURL=pakbonBarcodeVerzoek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pakbonBarcodeVerzoek.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonBarcodeVerzoek.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,KAAK,EAAE,GAAG;IAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;CAAE,CAAC;AAY3C;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAShG;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,uEAAuE;AACvE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GACA,oBAAoB,CAkBtB"}
@@ -0,0 +1,80 @@
1
+ // ============================================================================
2
+ // src/lib/pakbonBarcodeVerzoek.ts — vraagt de Logistics Engine om een barcode
3
+ // ----------------------------------------------------------------------------
4
+ // De Layout maker genereert NOOIT zelf een barcode. Ontbreekt de barcode op
5
+ // een Engine-printopdracht, dan blijft de opdracht wachten én zetten we een
6
+ // expliciet verzoek in de gedeelde tabel `pakbon_barcode_verzoeken`. Zo weet
7
+ // de Engine dat er iets ontbreekt in plaats van dat de opdracht stil blijft
8
+ // hangen. Levert de Engine de barcode aan (status "geleverd" + barcodewaarde),
9
+ // dan pakt de wachtrij die bij de volgende ronde vanzelf op.
10
+ // ============================================================================
11
+ function tekst(waarde) {
12
+ const s = waarde === undefined || waarde === null ? "" : String(waarde).trim();
13
+ return s || null;
14
+ }
15
+ function getal(waarde) {
16
+ const n = Number(waarde);
17
+ return Number.isFinite(n) && n !== 0 ? n : null;
18
+ }
19
+ /**
20
+ * Kijkt of de Engine inmiddels een barcode heeft geleverd voor deze opdracht.
21
+ * Geeft `null` terug zolang dat niet zo is. Er wordt nooit een waarde bedacht.
22
+ */
23
+ export async function geleverdeBarcodeVoorJob(db, printJobId) {
24
+ if (!printJobId)
25
+ return null;
26
+ const { data } = await db
27
+ .from("pakbon_barcode_verzoeken")
28
+ .select("barcode, status")
29
+ .eq("print_job_id", printJobId)
30
+ .maybeSingle();
31
+ const barcode = tekst(data?.barcode);
32
+ return barcode ?? null;
33
+ }
34
+ /**
35
+ * Legt (of ververst) het openstaande verzoek vast. Mislukt het wegschrijven,
36
+ * dan mag dat de wachtrij niet breken: de opdracht blijft gewoon wachten.
37
+ */
38
+ export async function vraagPakbonBarcodeAan(db, verzoek) {
39
+ if (!verzoek.print_job_id)
40
+ return;
41
+ const nu = new Date().toISOString();
42
+ await db.from("pakbon_barcode_verzoeken").upsert({
43
+ print_job_id: verzoek.print_job_id,
44
+ documentnaam: verzoek.documentnaam,
45
+ order_nummer: verzoek.order_nummer,
46
+ order_ref: verzoek.order_ref,
47
+ klant_naam: verzoek.klant_naam,
48
+ klant_nummer: verzoek.klant_nummer,
49
+ cart_id: verzoek.cart_id,
50
+ cart_label: verzoek.cart_label,
51
+ cart_index: verzoek.cart_index,
52
+ cart_total: verzoek.cart_total,
53
+ layout_variant: verzoek.layout_variant,
54
+ layout_id: verzoek.layout_id,
55
+ is_herprint: verzoek.is_herprint,
56
+ status: "open",
57
+ laatst_gevraagd_op: nu,
58
+ updated_at: nu,
59
+ }, { onConflict: "print_job_id" });
60
+ }
61
+ /** Bouwt het verzoek uit de order zoals die op de pakbon zou komen. */
62
+ export function bouwPakbonBarcodeVerzoek(order, opties) {
63
+ const o = (order && typeof order === "object" ? order : {});
64
+ const cart = (opties.cart && typeof opties.cart === "object" ? opties.cart : o["cart"]) ?? {};
65
+ return {
66
+ print_job_id: opties.printJobId,
67
+ documentnaam: tekst(opties.documentnaam),
68
+ order_nummer: tekst(o["order"]?.nummer),
69
+ order_ref: tekst(o["order"]?.referentie),
70
+ klant_naam: tekst(o["klant"]?.naam),
71
+ klant_nummer: tekst(o["klant"]?.nummer),
72
+ cart_id: tekst(cart["cart_id"]),
73
+ cart_label: tekst(cart["cart_label"]),
74
+ cart_index: getal(cart["cart_index"]),
75
+ cart_total: getal(cart["cart_total"]),
76
+ layout_variant: tekst(opties.layoutVariant),
77
+ layout_id: tekst(opties.layoutId),
78
+ is_herprint: opties.isHerprint === true,
79
+ };
80
+ }
@@ -1,5 +1,5 @@
1
1
  import type { InstellingDef } from "./documentProfiles.js";
2
- export type PakbonSectieType = "logo" | "bedrijfsgegevens" | "klantgegevens" | "afleveradres" | "factuuradres" | "orderinformatie" | "transportinformatie" | "opmerkingen" | "orderregels" | "pickmethode" | "karren" | "lagen" | "producten" | "fusten" | "totalen" | "handtekening" | "tekstblok" | "qrcode" | "barcode" | "afbeelding";
2
+ export type PakbonSectieType = "logo" | "bedrijfsgegevens" | "klantgegevens" | "afleveradres" | "factuuradres" | "orderinformatie" | "transportinformatie" | "opmerkingen" | "orderregels" | "fustregels" | "pickmethode" | "karren" | "lagen" | "producten" | "fusten" | "totalen" | "handtekening" | "tekstblok" | "qrcode" | "barcode" | "afbeelding";
3
3
  export interface PakbonKolom {
4
4
  key: string;
5
5
  label: string;
@@ -62,15 +62,76 @@ export declare const FUST_VELD_OPTIES: {
62
62
  value: string;
63
63
  label: string;
64
64
  }[];
65
+ /**
66
+ * Alle velden die op een fustregel van de afleverbrief kunnen staan. De
67
+ * afleverbrief beschrijft één kar, dus kar- en laagnummer horen er ook bij.
68
+ */
69
+ export declare const FUSTREGEL_VELD_OPTIES: {
70
+ value: string;
71
+ label: string;
72
+ }[];
73
+ /** Labels van de fustregelvelden, gedeeld door scherm en afdruk. */
74
+ export declare const FUSTREGEL_LABELS: Record<string, string>;
75
+ /** Velden die rechts uitgelijnd horen te staan. */
76
+ export declare const FUSTREGEL_RECHTS: Set<string>;
77
+ export interface FustRegel {
78
+ fustsoort: string;
79
+ fusthoogte: string;
80
+ belading: string;
81
+ karnummer: string;
82
+ laagnummer: string;
83
+ artikelnummer: string;
84
+ artikelnaam: string;
85
+ potmaat: string;
86
+ kleur: string;
87
+ productgroep: string;
88
+ locatie: string;
89
+ planten_per_fust: number;
90
+ fust_aantal: number;
91
+ aantal: number;
92
+ gewicht: string;
93
+ barcode: string;
94
+ }
95
+ /**
96
+ * Zet de karren van een levering om naar losse fustregels. Met `comprimeren`
97
+ * komen identieke fusten (zelfde fustsoort, artikel, potmaat, kleur en aantal
98
+ * planten per fust) op één regel te staan; het aantal fusten wordt opgeteld.
99
+ * Zonder `comprimeren` krijgt elke losse fust een eigen regel.
100
+ */
101
+ export declare function fustRegels(karren: unknown, opties?: {
102
+ comprimeren?: boolean;
103
+ sortering?: string;
104
+ }): FustRegel[];
65
105
  export declare const SECTIE_REGISTER: SectieDef[];
66
106
  export declare function sectieDef(type: PakbonSectieType): SectieDef;
67
107
  export declare function nieuweSectie(type: PakbonSectieType): PakbonSectie;
68
108
  export declare function standaardPakbonConfig(): PakbonConfig;
69
109
  export declare function leesPakbonConfig(config: unknown): PakbonConfig;
110
+ /** Standaardindeling van een afleverbrief: geen kar-, laag- of fustblokken. */
111
+ export declare function standaardAfleverbriefConfig(): PakbonConfig;
112
+ /**
113
+ * Blokken die op een afleverbrief thuishoren. Een afleverbrief beschrijft
114
+ * altijd precies één kar, dus kar-, laag- en pickmethodeblokken vervallen.
115
+ */
116
+ export declare const AFLEVERBRIEF_SECTIE_TYPES: PakbonSectieType[];
117
+ /** Leest de sectie-opbouw van een afleverbrief-layout. */
118
+ export declare function leesAfleverbriefConfig(config: unknown): PakbonConfig;
119
+ /** Manier waarop de order gepickt wordt. */
120
+ export type PickMethode = "kar" | "fusten" | "beide";
121
+ /** Variant die de Logistics Engine voor een gecombineerde pakbon kiest. */
122
+ export type PakbonLayoutVariant = "full_cart" | "partial_order";
123
+ /** Normaliseert alleen de twee varianten uit het gedeelde Engine-contract. */
124
+ export declare function pakbonLayoutVariant(value: unknown): PakbonLayoutVariant | null;
70
125
  /** Actieve pickmethode van een pakbonconfiguratie. */
71
- export declare function pickMethode(secties: PakbonSectie[] | undefined): "kar" | "fusten";
126
+ export declare function pickMethode(secties: PakbonSectie[] | undefined): PickMethode;
72
127
  /** Blokken die bij de gekozen pickmethode niet van toepassing zijn. */
73
- export declare function sectieOnderdrukt(type: PakbonSectieType, methode: "kar" | "fusten"): boolean;
128
+ export declare function sectieOnderdrukt(type: PakbonSectieType, methode: PickMethode): boolean;
129
+ /**
130
+ * Blokken die de Engine-variant weglaat. Zonder variant blijft de editor/het
131
+ * losse voorbeeld compleet; een echte Engine-opdracht wordt in de wachtrij
132
+ * geblokkeerd totdat de variant aanwezig is.
133
+ */
134
+ export declare function sectieOnderdruktVoorVariant(type: PakbonSectieType, methode: PickMethode, variant?: PakbonLayoutVariant | null): boolean;
74
135
  export interface DemoProduct {
75
136
  artikelnummer: string;
76
137
  artikelnaam: string;
@@ -107,6 +168,14 @@ export interface DemoKar {
107
168
  route: string;
108
169
  chauffeur: string;
109
170
  gewicht: string;
171
+ /** Gegevens die de Engine voor één volle of gedeeltelijke kar aanlevert. */
172
+ cart_label?: string;
173
+ cart_index?: number;
174
+ cart_total?: number;
175
+ cart_id?: string;
176
+ cart_items?: unknown[];
177
+ /** Bestaande Engine-barcode van deze kar; de Layout maker genereert deze nooit. */
178
+ barcode?: string;
110
179
  /** Kar bevat ook regels van een andere order (buffer-/gedeelde kar). */
111
180
  gedeeld?: boolean;
112
181
  lagen: DemoLaag[];
@@ -193,6 +262,7 @@ export interface FustVerzamelProduct {
193
262
  locatie: string;
194
263
  fustsoort: string;
195
264
  planten_per_fust: number;
265
+ fust_aantal: number;
196
266
  aantal: number;
197
267
  }
198
268
  export interface FustVerzamelGroep {
@@ -205,8 +275,23 @@ export interface FustVerzamelGroep {
205
275
  /**
206
276
  * Verzamellijst met alle fusten van een order, opgeteld per fusttype,
207
277
  * inclusief de producten die in dat fusttype gepickt moeten worden.
208
- * Gebruikt wanneer er per fust gepickt wordt en de gebruiker zelf de
209
- * karindeling maakt.
278
+ * Een product hoort uitsluitend bij zijn eigen fustsoort — nooit bij alle
279
+ * fustgroepen van de laag.
210
280
  */
211
281
  export declare function fustVerzamellijst(karren: unknown): FustVerzamelGroep[];
282
+ /**
283
+ * Voorbeeld van een deelkar (niet-volle kar): alleen een deel van de fusten,
284
+ * zonder karindeling. Uitsluitend bedoeld voor het voorbeeld in de builder —
285
+ * echte opdrachten krijgen hun gegevens van de Logistics Engine.
286
+ */
287
+ export declare function deelkarVoorbeeldOrder(order?: DemoOrder): DemoOrder;
288
+ /** Restregels zoals de Logistics Engine ze meestuurt onder `cart.cart_items`. */
289
+ export declare function deelkarRegels(order: unknown): Record<string, unknown>[];
290
+ /**
291
+ * Beperkt een order tot de restregels van één deelkar. Alleen wat de Engine
292
+ * als `cart.cart_items` meestuurt komt op de restpakbon te staan; nooit de
293
+ * volledige karinhoud. Wordt gedeeld door voorbeeld, PDF en print, zodat de
294
+ * drie weergaven niet uiteen kunnen lopen.
295
+ */
296
+ export declare function beperkTotDeelkar<T>(order: T): T;
212
297
  //# sourceMappingURL=pakbonBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pakbonBuilder.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pakbonBuilder.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonBuilder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,qBAAqB,GACrB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,aAAa,GACb,QAAQ,GACR,OAAO,GACP,WAAW,GACX,QAAQ,GACR,SAAS,GACT,cAAc,GACd,WAAW,GACX,QAAQ,GACR,SAAS,GACT,YAAY,CAAC;AAEjB,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,yEAAyE;AACzE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClC;AAID,eAAO,MAAM,oBAAoB,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAehE,CAAC;AAEF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAErC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAYpD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsB9D;AAMD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB;;;GAW5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;GAgBjC,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEnD,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,aAK3B,CAAC;AAEH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,EACf,MAAM,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,SAAS,EAAE,CAiGb;AA+BD,eAAO,MAAM,eAAe,EAAE,SAAS,EAmetC,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAE3D;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAcjE;AAED,wBAAgB,qBAAqB,IAAI,YAAY,CAmBpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAgB9D;AAED,+EAA+E;AAC/E,wBAAgB,2BAA2B,IAAI,YAAY,CAiB1D;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,EAgBvD,CAAC;AAGF,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAapE;AAiBD,4CAA4C;AAC5C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,CAAC;AAEhE,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAK9E;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,GAAG,WAAW,CAS5E;AAID,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACnC,OAAO,CAKT;AAKD,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnG;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AA2BD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAoGhB,OAAO,EAAE;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC;AAE1C,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,EAAE,CAE7D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GA2BjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAC5B;AAID,eAAO,MAAM,eAAe,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAS7D,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAuB1F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAIvF;AAID,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAOpE;AA8BD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,EAAE,CAenF;AAED,gDAAgD;AAChD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,SAAS,EAAE,CAenF;AAED,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAQD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAoFtE;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,SAAsB,GAAG,SAAS,CAe9E;AAID,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAKvE;AAKD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAgE/C"}