@flowselections/layout-maker 1.63.5 → 1.66.1

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 (62) hide show
  1. package/README.md +10 -4
  2. package/dist-lib/components/BedrijfsgegevensKaart.d.ts +3 -0
  3. package/dist-lib/components/BedrijfsgegevensKaart.d.ts.map +1 -0
  4. package/dist-lib/components/BedrijfsgegevensKaart.js +58 -0
  5. package/dist-lib/components/KlaarOmTePrintenBlok.d.ts +3 -0
  6. package/dist-lib/components/KlaarOmTePrintenBlok.d.ts.map +1 -0
  7. package/dist-lib/components/KlaarOmTePrintenBlok.js +69 -0
  8. package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
  9. package/dist-lib/components/LayoutsPage.js +23 -3
  10. package/dist-lib/components/PakbonPreview.d.ts.map +1 -1
  11. package/dist-lib/components/PakbonPreview.js +10 -7
  12. package/dist-lib/components/PrintenPage.d.ts.map +1 -1
  13. package/dist-lib/components/PrintenPage.js +8 -2
  14. package/dist-lib/components/StandaardLayoutActies.d.ts +19 -0
  15. package/dist-lib/components/StandaardLayoutActies.d.ts.map +1 -0
  16. package/dist-lib/components/StandaardLayoutActies.js +105 -0
  17. package/dist-lib/index.d.ts +9 -2
  18. package/dist-lib/index.d.ts.map +1 -1
  19. package/dist-lib/index.js +10 -3
  20. package/dist-lib/integrations/supabase/types.d.ts +1078 -0
  21. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  22. package/dist-lib/lib/bedrijfsgegevens.d.ts +41 -0
  23. package/dist-lib/lib/bedrijfsgegevens.d.ts.map +1 -0
  24. package/dist-lib/lib/bedrijfsgegevens.functions.d.ts +41 -0
  25. package/dist-lib/lib/bedrijfsgegevens.functions.d.ts.map +1 -0
  26. package/dist-lib/lib/bedrijfsgegevens.functions.js +75 -0
  27. package/dist-lib/lib/bedrijfsgegevens.js +126 -0
  28. package/dist-lib/lib/documentTypes.d.ts +10 -0
  29. package/dist-lib/lib/documentTypes.d.ts.map +1 -1
  30. package/dist-lib/lib/documentTypes.js +8 -0
  31. package/dist-lib/lib/klaarOmTePrinten.d.ts +39 -0
  32. package/dist-lib/lib/klaarOmTePrinten.d.ts.map +1 -0
  33. package/dist-lib/lib/klaarOmTePrinten.js +65 -0
  34. package/dist-lib/lib/layoutStandaarden.d.ts +19 -0
  35. package/dist-lib/lib/layoutStandaarden.d.ts.map +1 -0
  36. package/dist-lib/lib/layoutStandaarden.js +23 -0
  37. package/dist-lib/lib/orderData.server.d.ts.map +1 -1
  38. package/dist-lib/lib/orderData.server.js +163 -0
  39. package/dist-lib/lib/pakbonBuilder.d.ts +30 -0
  40. package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
  41. package/dist-lib/lib/pakbonBuilder.js +90 -2
  42. package/dist-lib/lib/pakbonContent.d.ts.map +1 -1
  43. package/dist-lib/lib/pakbonContent.js +15 -8
  44. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  45. package/dist-lib/lib/pakbonHtml.js +24 -7
  46. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  47. package/dist-lib/lib/printQueue.server.js +33 -2
  48. package/dist-lib/lib/printService.functions.d.ts +1 -1
  49. package/dist-lib/lib/printnodeWebhookBeheer.server.d.ts +1 -1
  50. package/dist-lib/lib/shellPoort.d.ts +2 -2
  51. package/dist-lib/lib/shellPoort.d.ts.map +1 -1
  52. package/dist-lib/lib/shellPoort.js +3 -2
  53. package/dist-lib/lib/standaardLayouts.server.d.ts +7 -1
  54. package/dist-lib/lib/standaardLayouts.server.d.ts.map +1 -1
  55. package/dist-lib/lib/standaardLayouts.server.js +52 -54
  56. package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
  57. package/dist-lib/lib/useDocumentData.js +9 -5
  58. package/dist-lib/lib/versie.generated.d.ts +2 -0
  59. package/dist-lib/lib/versie.generated.d.ts.map +1 -0
  60. package/dist-lib/lib/versie.generated.js +2 -0
  61. package/package.json +9 -4
  62. package/sql/print-schema.sql +3205 -0
@@ -222,6 +222,129 @@ export async function laadPakbonData(db, opties) {
222
222
  stickerUrls.set(String(s["product_id"]), url);
223
223
  }
224
224
  }
225
+ // --- samenstelling (halffabricaten) ----------------------------------------
226
+ // Alleen lezen uit `product_bom_items`. Een ouder kan gekoppeld zijn op
227
+ // product-id of op Floriday-handelsartikel-id; beide vormen worden gelezen.
228
+ const floridayVan = (p) => {
229
+ if (!p)
230
+ return "";
231
+ const extra = (p["custom_fields"] ?? {});
232
+ return String(p["floriday_trade_item_id"] ?? p["trade_item_key"] ?? extra["floriday_id"] ?? "");
233
+ };
234
+ const ouderFloridayIds = uniek(Array.from(producten.values()).map((p) => floridayVan(p)));
235
+ const bomPerOuder = new Map(); // sleutel: "p:<id>" of "f:<floridayId>"
236
+ {
237
+ const rijen = [];
238
+ if (productIds.length)
239
+ rijen.push(...arr(await veilig(() => db.from("product_bom_items").select("*").in("parent_product_id", productIds))));
240
+ if (ouderFloridayIds.length)
241
+ rijen.push(...arr(await veilig(() => db
242
+ .from("product_bom_items")
243
+ .select("*")
244
+ .in("parent_trade_item_floriday_id", ouderFloridayIds))));
245
+ const gezien = new Set();
246
+ for (const r of rijen) {
247
+ const id = String(r["id"] ?? "");
248
+ if (gezien.has(id))
249
+ continue;
250
+ gezien.add(id);
251
+ const sleutel = r["parent_product_id"]
252
+ ? `p:${r["parent_product_id"]}`
253
+ : `f:${r["parent_trade_item_floriday_id"] ?? ""}`;
254
+ bomPerOuder.set(sleutel, [...(bomPerOuder.get(sleutel) ?? []), r]);
255
+ }
256
+ for (const lijstje of bomPerOuder.values())
257
+ lijstje.sort((a, b) => num(a["sort_order"]) - num(b["sort_order"]));
258
+ }
259
+ const alleBom = Array.from(bomPerOuder.values()).flat();
260
+ // Onderdelen ophalen als product, zodat kleur/potmaat dezelfde verrijking krijgen.
261
+ const onderdeelProductIds = uniek(alleBom.map((r) => r["component_product_id"])).filter((id) => !producten.has(id));
262
+ if (onderdeelProductIds.length) {
263
+ const data = await veilig(() => db
264
+ .from("products")
265
+ .select("id, product, article_number, custom_fields, floriday_trade_item_id, trade_item_key")
266
+ .in("id", onderdeelProductIds));
267
+ for (const p of arr(data))
268
+ producten.set(String(p["id"]), p);
269
+ }
270
+ const onderdeelFloridayIds = uniek(alleBom.filter((r) => !r["component_product_id"]).map((r) => r["component_trade_item_floriday_id"]));
271
+ const productOpFloriday = new Map();
272
+ if (onderdeelFloridayIds.length) {
273
+ const data = await veilig(() => db
274
+ .from("products")
275
+ .select("id, product, article_number, custom_fields, floriday_trade_item_id, trade_item_key")
276
+ .in("floriday_trade_item_id", onderdeelFloridayIds));
277
+ for (const p of arr(data)) {
278
+ producten.set(String(p["id"]), p);
279
+ productOpFloriday.set(String(p["floriday_trade_item_id"]), String(p["id"]));
280
+ }
281
+ // Onderdelen zonder eigen product: naam uit de Floriday-artikelcache.
282
+ const zonder = onderdeelFloridayIds.filter((fid) => !productOpFloriday.has(fid));
283
+ if (zonder.length) {
284
+ const items = arr(await veilig(() => db.from("floriday_trade_items_cache").select("floriday_id, data").in("floriday_id", zonder)));
285
+ for (const it of items) {
286
+ const d = (it["data"] ?? {});
287
+ const fid = String(it["floriday_id"]);
288
+ producten.set(`fl:${fid}`, {
289
+ id: `fl:${fid}`,
290
+ product: taalTekst(d["tradeItemName"]) || taalTekst(d["name"]) || "",
291
+ floriday_trade_item_id: fid,
292
+ custom_fields: {},
293
+ });
294
+ productOpFloriday.set(fid, `fl:${fid}`);
295
+ }
296
+ }
297
+ }
298
+ // --- stickerinformatie ----------------------------------------------------
299
+ // 1. Floriday-klantstickers van de order van de regel (match op
300
+ // verkooporder-id + handelsartikel-id; should_be_printed bepaalt Ja/Nee).
301
+ // 2. Anders `customer_product_stickers` (klant + handelsartikel) → Ja.
302
+ // 3. Anders onbekend ("–"). Nooit op naam matchen.
303
+ const orderPerId = new Map(orders.map((o) => [String(o["id"]), o]));
304
+ const floridayOrderIds = uniek(orders.map((o) => o["floriday_sales_order_id"]));
305
+ const floridayStickers = new Map(); // salesOrder → tradeItem → print
306
+ if (floridayOrderIds.length) {
307
+ const rijen = arr(await veilig(() => db
308
+ .from("floriday_customer_stickers_cache")
309
+ .select("sales_order_id, trade_item_id, should_be_printed, is_deleted")
310
+ .in("sales_order_id", floridayOrderIds)));
311
+ for (const r of rijen) {
312
+ if (r["is_deleted"] === true)
313
+ continue;
314
+ const so = String(r["sales_order_id"] ?? "");
315
+ const m = floridayStickers.get(so) ?? new Map();
316
+ const ti = String(r["trade_item_id"] ?? "");
317
+ m.set(ti, (m.get(ti) ?? false) || r["should_be_printed"] !== false);
318
+ floridayStickers.set(so, m);
319
+ }
320
+ }
321
+ const klantSleutels = uniek(orders.map((o) => o["customer_id"]));
322
+ const klantStickers = new Set(); // "<klant>|<artikel>"
323
+ if (klantSleutels.length) {
324
+ const rijen = arr(await veilig(() => db
325
+ .from("customer_product_stickers")
326
+ .select("customer_key, trade_item_key")
327
+ .in("customer_key", klantSleutels)));
328
+ for (const r of rijen)
329
+ klantStickers.add(`${r["customer_key"]}|${r["trade_item_key"]}`);
330
+ }
331
+ const stickerVoor = (orderId, p) => {
332
+ if (!p)
333
+ return "–";
334
+ const order = orderPerId.get(orderId);
335
+ const fid = floridayVan(p);
336
+ const so = String(order?.["floriday_sales_order_id"] ?? "");
337
+ const opOrder = so ? floridayStickers.get(so) : undefined;
338
+ if (opOrder && fid)
339
+ return opOrder.get(fid) === true ? "Ja" : "Nee";
340
+ const klant = String(order?.["customer_id"] ?? "");
341
+ if (klant) {
342
+ const sleutels = [fid, String(p["trade_item_key"] ?? ""), String(p["id"] ?? "")].filter(Boolean);
343
+ if (sleutels.some((k) => klantStickers.has(`${klant}|${k}`)))
344
+ return "Ja";
345
+ }
346
+ return "–";
347
+ };
225
348
  // --- verrijking vanuit Floriday-artikelcache ------------------------------
226
349
  // `products.unit` is vrijwel altijd "stuks" en zegt niets over het fust.
227
350
  // De echte fustsoort, potmaat en kleur staan in de Floriday-cache:
@@ -303,6 +426,44 @@ export async function laadPakbonData(db, opties) {
303
426
  p["custom_fields"] = extra;
304
427
  }
305
428
  }
429
+ const orderVan = (bron) => String(bron["order_id"] ??
430
+ regelPerId.get(String(bron["order_item_id"] ?? ""))?.["order_id"] ??
431
+ karrenRijen.find((k) => k["id"] === bron["cart_id"])?.["order_id"] ??
432
+ (orders.length === 1 ? orders[0]["id"] : ""));
433
+ const kenmerk = (extra, sleutels) => {
434
+ for (const k of sleutels) {
435
+ const w = extra[k];
436
+ if (w != null && String(w).trim())
437
+ return String(w);
438
+ }
439
+ return "";
440
+ };
441
+ const onderdelenVoor = (bron, p, aantal) => {
442
+ const id = String(bron["product_id"] ?? "");
443
+ const fid = floridayVan(p);
444
+ const rijen = bomPerOuder.get(`p:${id}`) ?? (fid ? bomPerOuder.get(`f:${fid}`) : undefined);
445
+ if (!rijen?.length)
446
+ return undefined;
447
+ const orderId = orderVan(bron);
448
+ return rijen.map((r) => {
449
+ const cid = r["component_product_id"]
450
+ ? String(r["component_product_id"])
451
+ : productOpFloriday.get(String(r["component_trade_item_floriday_id"] ?? "")) ?? "";
452
+ const c = producten.get(cid);
453
+ const extra = (c?.["custom_fields"] ?? {});
454
+ const perStuk = num(r["quantity"]);
455
+ return {
456
+ artikelnaam: taalTekst(c?.["product"]) || "",
457
+ kleur: kenmerk(extra, ["kleur", "Kleur", "colour", "color", "__kleur"]),
458
+ potmaat: kenmerk(extra, ["potmaat", "Potmaat", "pot_size", "potSize", "potmaat_cm", "maat", "__potmaat"]),
459
+ per_stuk: perStuk,
460
+ aantal: perStuk * (aantal || 0),
461
+ sticker: stickerVoor(orderId, c ?? (r["component_trade_item_floriday_id"]
462
+ ? { floriday_trade_item_id: r["component_trade_item_floriday_id"] }
463
+ : undefined)),
464
+ };
465
+ });
466
+ };
306
467
  const maakProduct = (bron, aantalPlanten, fusten, perFust) => {
307
468
  const p = producten.get(String(bron["product_id"] ?? "")) ?? {};
308
469
  const extra = (p["custom_fields"] ?? {});
@@ -340,6 +501,8 @@ export async function laadPakbonData(db, opties) {
340
501
  extra["__fustsoort"] ??
341
502
  (unit && unit.toLowerCase() !== "stuks" ? unit : "Niet ingesteld")),
342
503
  planten_per_fust: perFust,
504
+ sticker: stickerVoor(orderVan(bron), p),
505
+ onderdelen: onderdelenVoor(bron, p, aantalPlanten),
343
506
  };
344
507
  };
345
508
  // --- karren met lagen -----------------------------------------------------
@@ -42,6 +42,11 @@ export declare const BESCHIKBARE_KOLOMMEN: {
42
42
  key: string;
43
43
  label: string;
44
44
  }[];
45
+ export declare const ONDERDEEL_VELD_OPTIES: {
46
+ value: string;
47
+ label: string;
48
+ }[];
49
+ export declare const ONDERDEEL_VELDEN_STANDAARD: string[];
45
50
  export declare function kolomLabel(key: string): string;
46
51
  export declare function nieuweKolom(key: string): PakbonKolom;
47
52
  /**
@@ -147,7 +152,32 @@ export interface DemoProduct {
147
152
  fust_aantal: number;
148
153
  fustsoort: string;
149
154
  planten_per_fust: number;
155
+ /** "Ja", "Nee" of "–" (onbekend). */
156
+ sticker?: string;
157
+ /** Onderdelen (halffabricaten) van een samengesteld product. */
158
+ onderdelen?: DemoProductOnderdeel[];
159
+ }
160
+ export interface DemoProductOnderdeel {
161
+ artikelnaam: string;
162
+ kleur: string;
163
+ potmaat: string;
164
+ /** aantal per stuk van het samengestelde product */
165
+ per_stuk: number;
166
+ /** totaal voor deze regel (per_stuk × aantal hoofdproduct) */
167
+ aantal: number;
168
+ sticker: string;
150
169
  }
170
+ /** Staat de samenstelling aan voor deze productsectie? (standaard aan) */
171
+ export declare function samenstellingTonen(opties: Record<string, unknown> | undefined): boolean;
172
+ export declare function onderdeelVelden(opties: Record<string, unknown> | undefined): string[];
173
+ /**
174
+ * Cellen voor één onderdeelregel, uitgelijnd op de kolommen van de hoofdregel.
175
+ * Gekozen onderdeelgegevens zonder eigen kolom in de hoofdtabel worden achter
176
+ * de naam gezet, zodat niets wegvalt. Lege waarden blijven leeg.
177
+ */
178
+ export declare function onderdeelCellen(o: DemoProductOnderdeel, velden: string[], gekozen: string[]): string[];
179
+ /** Telt een product op bij een gelijk product (groeperen), incl. onderdelen. */
180
+ export declare function voegProductSamen(doel: DemoProduct, p: DemoProduct): void;
151
181
  export interface DemoLaag {
152
182
  laagnummer: number;
153
183
  belading: string;
@@ -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":"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"}
@@ -21,7 +21,16 @@ export const BESCHIKBARE_KOLOMMEN = [
21
21
  { key: "fust_aantal", label: "Aantal fusten" },
22
22
  { key: "fustsoort", label: "Fustsoort" },
23
23
  { key: "planten_per_fust", label: "Planten per fust" },
24
+ { key: "sticker", label: "Sticker" },
24
25
  ];
26
+ export const ONDERDEEL_VELD_OPTIES = [
27
+ { value: "artikelnaam", label: "Productnaam" },
28
+ { value: "kleur", label: "Kleur" },
29
+ { value: "potmaat", label: "Potmaat" },
30
+ { value: "aantal", label: "Aantal" },
31
+ { value: "sticker", label: "Sticker" },
32
+ ];
33
+ export const ONDERDEEL_VELDEN_STANDAARD = ["artikelnaam", "kleur", "potmaat", "aantal"];
25
34
  export function kolomLabel(key) {
26
35
  return BESCHIKBARE_KOLOMMEN.find((k) => k.key === key)?.label ?? key;
27
36
  }
@@ -58,6 +67,7 @@ export function productVeldBreedtes(velden) {
58
67
  fust_aantal: 10,
59
68
  fustsoort: 12,
60
69
  planten_per_fust: 11,
70
+ sticker: 8,
61
71
  foto: 9,
62
72
  qrcode: 9,
63
73
  };
@@ -547,6 +557,20 @@ export const SECTIE_REGISTER = [
547
557
  { value: "qrcode", label: "QR-code" },
548
558
  ]),
549
559
  },
560
+ {
561
+ key: "toonSamenstelling",
562
+ label: "Samenstelling tonen",
563
+ type: "schakelaar",
564
+ standaard: true,
565
+ hint: "Toont onder een samengesteld product uit welke onderdelen het bestaat.",
566
+ },
567
+ {
568
+ key: "onderdeelVelden",
569
+ label: "Gegevens per onderdeel (halffabricaat)",
570
+ type: "meerkeuze",
571
+ standaard: ONDERDEEL_VELDEN_STANDAARD,
572
+ opties: ONDERDEEL_VELD_OPTIES,
573
+ },
550
574
  { key: "groeperen", label: "Gelijke producten groeperen", type: "schakelaar", standaard: false },
551
575
  {
552
576
  key: "kop_eenmalig",
@@ -864,6 +888,59 @@ export function sectieOnderdruktVoorVariant(type, methode, variant) {
864
888
  return type === "pickmethode";
865
889
  return type === "pickmethode" ? false : [...KAR_SECTIES, "orderregels"].includes(type);
866
890
  }
891
+ /** Staat de samenstelling aan voor deze productsectie? (standaard aan) */
892
+ export function samenstellingTonen(opties) {
893
+ return opties?.["toonSamenstelling"] !== false;
894
+ }
895
+ export function onderdeelVelden(opties) {
896
+ const v = opties?.["onderdeelVelden"];
897
+ return Array.isArray(v) ? v.map(String) : ONDERDEEL_VELDEN_STANDAARD;
898
+ }
899
+ /**
900
+ * Cellen voor één onderdeelregel, uitgelijnd op de kolommen van de hoofdregel.
901
+ * Gekozen onderdeelgegevens zonder eigen kolom in de hoofdtabel worden achter
902
+ * de naam gezet, zodat niets wegvalt. Lege waarden blijven leeg.
903
+ */
904
+ export function onderdeelCellen(o, velden, gekozen) {
905
+ const waarde = (v) => {
906
+ if (!gekozen.includes(v))
907
+ return "";
908
+ if (v === "aantal")
909
+ return o.aantal ? String(o.aantal) : "";
910
+ return String(o[v] ?? "");
911
+ };
912
+ const naamKolom = velden.includes("artikelnaam")
913
+ ? "artikelnaam"
914
+ : velden.find((v) => v !== "foto" && v !== "qrcode") ?? velden[0];
915
+ const zonderKolom = gekozen.filter((v) => !velden.includes(v) && v !== "artikelnaam");
916
+ return velden.map((v) => {
917
+ if (v === naamKolom) {
918
+ const delen = [];
919
+ const naam = gekozen.includes("artikelnaam") ? o.artikelnaam : "";
920
+ const kop = `↳ ${o.per_stuk ? `${o.per_stuk}× ` : ""}${naam}`.trimEnd();
921
+ delen.push(kop);
922
+ for (const extra of zonderKolom) {
923
+ const w = waarde(extra);
924
+ if (!w)
925
+ continue;
926
+ delen.push(extra === "sticker" ? `Sticker: ${w}` : extra === "aantal" ? `${w} st` : w);
927
+ }
928
+ return delen.join(" · ");
929
+ }
930
+ return waarde(v);
931
+ });
932
+ }
933
+ /** Telt een product op bij een gelijk product (groeperen), incl. onderdelen. */
934
+ export function voegProductSamen(doel, p) {
935
+ doel.aantal += p.aantal;
936
+ doel.fust_aantal += p.fust_aantal;
937
+ if (doel.onderdelen && p.onderdelen) {
938
+ doel.onderdelen = doel.onderdelen.map((o, i) => {
939
+ const ander = p.onderdelen[i]?.artikelnaam === o.artikelnaam ? p.onderdelen[i] : undefined;
940
+ return ander ? { ...o, aantal: o.aantal + ander.aantal } : o;
941
+ });
942
+ }
943
+ }
867
944
  /**
868
945
  * Bepaalt de canonieke positie binnen de reeks volle karren. De Engine kan in
869
946
  * cartTotal ook een afsluitende deelkar meetellen en stuurde bij oudere K2-jobs
@@ -973,7 +1050,10 @@ export const DEMO_ORDER = {
973
1050
  gewicht: "48 kg",
974
1051
  opmerking: "Onderin plaatsen",
975
1052
  producten: [
976
- p("A1001", "Phalaenopsis wit 2-tak", "12 cm", 96, "A-03", "Orchidee", "Wit"),
1053
+ {
1054
+ ...p("A1001", "Phalaenopsis wit 2-tak", "12 cm", 96, "A-03", "Orchidee", "Wit"),
1055
+ sticker: "Ja",
1056
+ },
977
1057
  p("A1042", "Phalaenopsis roze 2-tak", "12 cm", 48, "A-04", "Orchidee", "Roze"),
978
1058
  ],
979
1059
  fusten: [
@@ -1009,7 +1089,15 @@ export const DEMO_ORDER = {
1009
1089
  gewicht: "38 kg",
1010
1090
  opmerking: "",
1011
1091
  producten: [
1012
- p("C3300", "Kalanchoë mix", "9 cm", 80, "C-02", "Bloeiend", "Mix"),
1092
+ {
1093
+ ...p("C3300", "Pernettya mix 12", "12 cm", 10, "C-02", "Bloeiend", "Mix"),
1094
+ sticker: "Nee",
1095
+ onderdelen: [
1096
+ { artikelnaam: "Pernettya wit", kleur: "Wit", potmaat: "9 cm", per_stuk: 2, aantal: 20, sticker: "Ja" },
1097
+ { artikelnaam: "Pernettya rood", kleur: "Rood", potmaat: "9 cm", per_stuk: 5, aantal: 50, sticker: "Ja" },
1098
+ { artikelnaam: "Pernettya roze", kleur: "Roze", potmaat: "9 cm", per_stuk: 5, aantal: 50, sticker: "Nee" },
1099
+ ],
1100
+ },
1013
1101
  p("C3311", "Succulenten mix", "9 cm", 80, "C-05", "Bloeiend", "Mix"),
1014
1102
  ],
1015
1103
  fusten: [
@@ -1 +1 @@
1
- {"version":3,"file":"pakbonContent.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonContent.ts"],"names":[],"mappings":"AASA,OAAO,EAqBL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAe,KAAK,IAAI,EAAmC,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,CAAC;AAomBF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,IAAI,EAAE,CAAC;IAClB,UAAU,EAAE,IAAI,EAAE,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CA+EvE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAmB9E"}
1
+ {"version":3,"file":"pakbonContent.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonContent.ts"],"names":[],"mappings":"AASA,OAAO,EAyBL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAe,KAAK,IAAI,EAAmC,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,CAAC;AAinBF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,IAAI,EAAE,CAAC;IAClB,UAAU,EAAE,IAAI,EAAE,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CA+EvE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAmB9E"}
@@ -6,7 +6,7 @@
6
6
  // layout-engine (pakbonDocument.ts) bepaalt WAAR het terechtkomt. Er is geen
7
7
  // tweede plek meer waar pakboninhoud wordt samengesteld.
8
8
  // ============================================================================
9
- import { beperkTotDeelkar, conditieContext, deelkarVoorbeeldOrder, fustVerzamellijst, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karKopNummer, karBundelTekst, laagBundelTekst, leesPakbonConfig, pakbonLayoutVariant, pickMethode, productVeldBreedtes, sectieOnderdruktVoorVariant, sectieZichtbaar, sorteerProducten, totalen, vulVeldcodes, } from "./pakbonBuilder.js";
9
+ import { beperkTotDeelkar, conditieContext, deelkarVoorbeeldOrder, fustVerzamellijst, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karKopNummer, karBundelTekst, laagBundelTekst, leesPakbonConfig, pakbonLayoutVariant, pickMethode, productVeldBreedtes, sectieOnderdruktVoorVariant, sectieZichtbaar, sorteerProducten, onderdeelCellen, onderdeelVelden, samenstellingTonen, voegProductSamen, totalen, vulVeldcodes, } from "./pakbonBuilder.js";
10
10
  import { karMetadata } from "./pakbonPresentation.js";
11
11
  import { KLEUR_GRIJS } from "./pakbonDocument.js";
12
12
  const arr = (v) => (Array.isArray(v) ? v : []);
@@ -33,6 +33,7 @@ const PRODUCT_LABELS = {
33
33
  fust_aantal: "Aantal fusten",
34
34
  fustsoort: "Fustsoort",
35
35
  planten_per_fust: "Planten per fust",
36
+ sticker: "Sticker",
36
37
  };
37
38
  const FUST_KOLOM_LABELS = {
38
39
  artikelnummer: "Artikel",
@@ -62,7 +63,7 @@ function sectitel(tekst, basis) {
62
63
  },
63
64
  ];
64
65
  }
65
- function productTabel(velden, producten, toonKop, basis) {
66
+ function productTabel(velden, producten, toonKop, basis, onderdeelKolommen = null) {
66
67
  if (!velden.length || !producten.length)
67
68
  return null;
68
69
  const breedtes = productVeldBreedtes(velden);
@@ -74,7 +75,12 @@ function productTabel(velden, producten, toonKop, basis) {
74
75
  return {
75
76
  kind: "tabel",
76
77
  kolommen,
77
- rijen: producten.map((p) => velden.map((v) => cel(p, v))),
78
+ rijen: producten.flatMap((p) => [
79
+ velden.map((v) => cel(p, v)),
80
+ ...(onderdeelKolommen && p.onderdelen?.length
81
+ ? p.onderdelen.map((o) => onderdeelCellen(o, velden, onderdeelKolommen))
82
+ : []),
83
+ ]),
78
84
  toonKop,
79
85
  groottePt: basis,
80
86
  randen: "onder",
@@ -193,10 +199,8 @@ function karBlokFlow(s, kar, lagen, zoek, omkaderd, aantal, basis) {
193
199
  const map = new Map();
194
200
  for (const p of producten) {
195
201
  const b = map.get(p.artikelnummer);
196
- if (b) {
197
- b.aantal += p.aantal;
198
- b.fust_aantal += p.fust_aantal;
199
- }
202
+ if (b)
203
+ voegProductSamen(b, p);
200
204
  else
201
205
  map.set(p.artikelnummer, { ...p });
202
206
  }
@@ -204,7 +208,10 @@ function karBlokFlow(s, kar, lagen, zoek, omkaderd, aantal, basis) {
204
208
  }
205
209
  const toonKop = opt(productSectie, "toonKoppen", true) !== false &&
206
210
  (index === 0 || opt(productSectie, "kop_eenmalig", true) === false);
207
- const tabel = productTabel(velden2, producten, toonKop, basis);
211
+ const sub = samenstellingTonen(productSectie.opties)
212
+ ? onderdeelVelden(productSectie.opties)
213
+ : null;
214
+ const tabel = productTabel(velden2, producten, toonKop, basis, sub);
208
215
  if (tabel)
209
216
  kinderen.push(tabel);
210
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pakbonHtml.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonHtml.ts"],"names":[],"mappings":"AAUA,OAAO,EAyBL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAMzB,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAWD,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKtC;AAyBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAqF3D;AA4ED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGlD;AAwoBD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CA8DR;AAgBD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CAkFR;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,WAAW,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,IAAI,CAsCN;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAUf"}
1
+ {"version":3,"file":"pakbonHtml.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonHtml.ts"],"names":[],"mappings":"AAUA,OAAO,EA6BL,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAMzB,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAWD,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKtC;AAyBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAqF3D;AAuFD,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGlD;AAwpBD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CA8DR;AAgBD,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,MAAM,CAkFR;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,WAAW,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,IAAI,CAsCN;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,GAAG,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -7,7 +7,7 @@
7
7
  // layoutconfiguratie en de echte ordergegevens. Zo tonen het live voorbeeld en
8
8
  // de afdruk altijd exact dezelfde secties — inclusief de orderregels.
9
9
  // ============================================================================
10
- import { DEMO_ORDER, deelkarVoorbeeldOrder, conditieContext, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, fustVerzamellijst, fustRegels, FUSTREGEL_LABELS, FUSTREGEL_RECHTS, pickMethode, pakbonLayoutVariant, productVeldBreedtes, sectieOnderdruktVoorVariant, karKopNummer, laagBundelTekst, leesPakbonConfig, sectieZichtbaar, sorteerProducten, totalen, vulVeldcodes, } from "./pakbonBuilder.js";
10
+ import { DEMO_ORDER, deelkarVoorbeeldOrder, conditieContext, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, fustVerzamellijst, fustRegels, FUSTREGEL_LABELS, FUSTREGEL_RECHTS, pickMethode, pakbonLayoutVariant, productVeldBreedtes, sectieOnderdruktVoorVariant, karKopNummer, laagBundelTekst, leesPakbonConfig, sectieZichtbaar, sorteerProducten, onderdeelCellen, onderdeelVelden, samenstellingTonen, voegProductSamen, totalen, vulVeldcodes, } from "./pakbonBuilder.js";
11
11
  import { haalPrintLogos } from "./logoLibrary.js";
12
12
  import { code128BarsHtml } from "./code128.js";
13
13
  import { karMetadata } from "./pakbonPresentation.js";
@@ -150,6 +150,17 @@ function normProduct(p) {
150
150
  fust_aantal: Number(p["fust_aantal"] ?? 0) || 0,
151
151
  fustsoort: String(p["fustsoort"] ?? ""),
152
152
  planten_per_fust: Number(p["planten_per_fust"] ?? 0) || 0,
153
+ sticker: p["sticker"] == null || p["sticker"] === "" ? "–" : String(p["sticker"]),
154
+ onderdelen: Array.isArray(p["onderdelen"])
155
+ ? p["onderdelen"].map((o) => ({
156
+ artikelnaam: String(o["artikelnaam"] ?? ""),
157
+ kleur: String(o["kleur"] ?? ""),
158
+ potmaat: String(o["potmaat"] ?? ""),
159
+ per_stuk: Number(o["per_stuk"] ?? 0) || 0,
160
+ aantal: Number(o["aantal"] ?? 0) || 0,
161
+ sticker: o["sticker"] == null || o["sticker"] === "" ? "–" : String(o["sticker"]),
162
+ }))
163
+ : undefined,
153
164
  };
154
165
  }
155
166
  // --- secties ----------------------------------------------------------------
@@ -304,10 +315,8 @@ function productenHtml(sectie, laag, toonKop = true) {
304
315
  const map = new Map();
305
316
  for (const p of producten) {
306
317
  const b = map.get(p.artikelnummer);
307
- if (b) {
308
- b.aantal += p.aantal;
309
- b.fust_aantal += p.fust_aantal;
310
- }
318
+ if (b)
319
+ voegProductSamen(b, p);
311
320
  else
312
321
  map.set(p.artikelnummer, { ...p });
313
322
  }
@@ -317,9 +326,13 @@ function productenHtml(sectie, laag, toonKop = true) {
317
326
  return "";
318
327
  const label = (v) => v === "foto" ? "Foto" : v === "qrcode" ? "QR-code" : PRODUCT_LABELS[v] ?? v;
319
328
  const weergave = optS(sectie, "weergave", "tabel");
329
+ const sub = samenstellingTonen(sectie.opties) ? onderdeelVelden(sectie.opties) : null;
330
+ const subRijen = (p) => sub && p.onderdelen?.length ? p.onderdelen.map((o) => onderdeelCellen(o, velden, sub)) : [];
320
331
  if (weergave === "lijst") {
321
332
  return `<ul class="plijst">${producten
322
- .map((p) => `<li>${velden.map((v) => esc(cel(p, v))).filter(Boolean).join(" · ")}</li>`)
333
+ .map((p) => `<li>${velden.map((v) => esc(cel(p, v))).filter(Boolean).join(" · ")}${subRijen(p)
334
+ .map((r) => `<div class="onderdeel">${esc(r.filter(Boolean).join(" · "))}</div>`)
335
+ .join("")}</li>`)
323
336
  .join("")}</ul>`;
324
337
  }
325
338
  const kop = toonKop && opt(sectie, "toonKoppen", true) !== false
@@ -330,7 +343,10 @@ function productenHtml(sectie, laag, toonKop = true) {
330
343
  .map((_, index) => `<col style="width:${(breedtes[index] ?? 0).toFixed(4)}%">`)
331
344
  .join("")}</colgroup>`;
332
345
  const rijen = producten
333
- .map((p) => `<tr>${velden.map((v) => `<td class="onder">${esc(cel(p, v))}</td>`).join("")}</tr>`)
346
+ .map((p) => `<tr>${velden.map((v) => `<td class="onder">${esc(cel(p, v))}</td>`).join("")}</tr>` +
347
+ subRijen(p)
348
+ .map((r) => `<tr class="onderdeel">${r.map((w) => `<td class="onder" style="font-size:.88em;color:#555">${esc(w)}</td>`).join("")}</tr>`)
349
+ .join(""))
334
350
  .join("");
335
351
  return `<table class="regels vast">${colgroup}${kop}${rijen}</table>`;
336
352
  }
@@ -349,6 +365,7 @@ const PRODUCT_LABELS = {
349
365
  fust_aantal: "Aantal fusten",
350
366
  fustsoort: "Fustsoort",
351
367
  planten_per_fust: "Planten per fust",
368
+ sticker: "Sticker",
352
369
  };
353
370
  function karKop(s, kar, velden, bundelTekst = "") {
354
371
  const scheiding = optS(s, "scheiding", "kop");
@@ -1 +1 @@
1
- {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
@@ -761,6 +761,30 @@ function verzamelLogoIds(waarde, uit, diepte = 0) {
761
761
  }
762
762
  }
763
763
  /** Haalt de logo's op die in de layout gebruikt worden, met tijdelijke URL. */
764
+ /** Eigen bedrijfsgegevens (app_settings) als terugval voor een lege payload.bedrijf. */
765
+ async function bedrijfsInstelling(db) {
766
+ const { BEDRIJFSGEGEVENS_SLEUTEL, leesBedrijfsgegevens } = await import("./bedrijfsgegevens.js");
767
+ const { data } = await db.from("app_settings").select("value").eq("key", BEDRIJFSGEGEVENS_SLEUTEL).maybeSingle();
768
+ return leesBedrijfsgegevens(data?.["value"] ?? null);
769
+ }
770
+ /** Vult order.bedrijf en (zonder eigen documentlogo) het logo uit de instelling. */
771
+ async function metBedrijfsTerugval(db, order, layout) {
772
+ try {
773
+ const { bedrijfMetTerugval, heeftBedrijfsgegevens } = await import("./bedrijfsgegevens.js");
774
+ if (heeftBedrijfsgegevens(order.bedrijf))
775
+ return { order, layout };
776
+ const inst = await bedrijfsInstelling(db);
777
+ const nieuweOrder = { ...order, bedrijf: bedrijfMetTerugval(order.bedrijf, inst) };
778
+ const cfg = (layout?.config ?? {});
779
+ if (inst.logoId && !cfg?.logo?.logoId) {
780
+ return { order: nieuweOrder, layout: { ...layout, config: { ...cfg, logo: { ...(cfg.logo ?? {}), logoId: inst.logoId } } } };
781
+ }
782
+ return { order: nieuweOrder, layout };
783
+ }
784
+ catch {
785
+ return { order, layout };
786
+ }
787
+ }
764
788
  async function logosVoor(db, layout) {
765
789
  const config = layout?.config ?? null;
766
790
  const ids = new Set();
@@ -794,7 +818,7 @@ async function logosVoor(db, layout) {
794
818
  * het documenttype. Zo werkt een bijgewerkte layout meteen door.
795
819
  */
796
820
  export async function bouwHtml(db, job, keuze, uitkomst) {
797
- const layout = keuze.layout;
821
+ let layout = keuze.layout;
798
822
  const noteer = (bron) => {
799
823
  if (uitkomst)
800
824
  uitkomst.bron = bron;
@@ -861,7 +885,9 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
861
885
  const gekozen = (cartId ? karren.find((k) => String(k?.cart_id ?? "").trim() === cartId) : null) ??
862
886
  karren[0] ??
863
887
  null;
864
- const order = { ...volledig, karren: gekozen ? [gekozen] : [] };
888
+ const metTerugval = await metBedrijfsTerugval(db, { ...volledig, karren: gekozen ? [gekozen] : [] }, layout);
889
+ const order = metTerugval.order;
890
+ layout = metTerugval.layout;
865
891
  return renderPakbonDocument(leesAfleverbriefConfig(layout.config), order, {
866
892
  breedteMm,
867
893
  hoogteMm,
@@ -1047,6 +1073,11 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
1047
1073
  };
1048
1074
  }
1049
1075
  }
1076
+ {
1077
+ const t = await metBedrijfsTerugval(db, order, layout);
1078
+ order = t.order;
1079
+ layout = t.layout;
1080
+ }
1050
1081
  const html = renderPakbonDocument(layout.config, order, {
1051
1082
  breedteMm,
1052
1083
  hoogteMm,
@@ -143,7 +143,7 @@ export declare const webhookStatus: import("@tanstack/start-client-core").Option
143
143
  niet_gematcht: string[];
144
144
  }[];
145
145
  aan: boolean;
146
- weergave: "aan" | "uit" | "onbekend";
146
+ weergave: "uit" | "aan" | "onbekend";
147
147
  nietBereikbaar: boolean;
148
148
  pnUrl: string | null;
149
149
  pnGeslaagd: number | null;