@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.
- package/dist-lib/components/AfleverbriefBuilderPage.d.ts +10 -0
- package/dist-lib/components/AfleverbriefBuilderPage.d.ts.map +1 -0
- package/dist-lib/components/AfleverbriefBuilderPage.js +101 -0
- package/dist-lib/components/BlokOntwerperPage.d.ts.map +1 -1
- package/dist-lib/components/BlokOntwerperPage.js +8 -3
- package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
- package/dist-lib/components/ComputersLijst.js +1 -1
- package/dist-lib/components/FustKolomVolgorde.d.ts +11 -0
- package/dist-lib/components/FustKolomVolgorde.d.ts.map +1 -0
- package/dist-lib/components/FustKolomVolgorde.js +52 -0
- package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
- package/dist-lib/components/LayoutsPage.js +10 -9
- package/dist-lib/components/PaginaDocument.d.ts +4 -1
- package/dist-lib/components/PaginaDocument.d.ts.map +1 -1
- package/dist-lib/components/PaginaDocument.js +10 -5
- package/dist-lib/components/PakbonBuilderPage.d.ts.map +1 -1
- package/dist-lib/components/PakbonBuilderPage.js +34 -14
- package/dist-lib/components/PakbonPreview.d.ts +4 -2
- package/dist-lib/components/PakbonPreview.d.ts.map +1 -1
- package/dist-lib/components/PakbonPreview.js +74 -24
- package/dist-lib/components/PakbonSectiesPanel.d.ts +5 -3
- package/dist-lib/components/PakbonSectiesPanel.d.ts.map +1 -1
- package/dist-lib/components/PakbonSectiesPanel.js +8 -5
- package/dist-lib/components/PdfMapToestemmingBanner.d.ts +2 -1
- package/dist-lib/components/PdfMapToestemmingBanner.d.ts.map +1 -1
- package/dist-lib/components/PdfMapToestemmingBanner.js +73 -14
- package/dist-lib/components/PdfVoorbeeld.d.ts +20 -0
- package/dist-lib/components/PdfVoorbeeld.d.ts.map +1 -0
- package/dist-lib/components/PdfVoorbeeld.js +95 -0
- package/dist-lib/components/PrintProgrammaUitleg.d.ts.map +1 -1
- package/dist-lib/components/PrintProgrammaUitleg.js +1 -1
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +81 -43
- package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekDetailPage.js +2 -2
- package/dist-lib/components/PrintplekWizard.d.ts.map +1 -1
- package/dist-lib/components/PrintplekWizard.js +6 -2
- package/dist-lib/components/ProductiebonBuilderPage.d.ts.map +1 -1
- package/dist-lib/components/ProductiebonBuilderPage.js +13 -7
- package/dist-lib/index.d.ts +16 -6
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +11 -5
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +3585 -1267
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +3585 -1267
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +25898 -0
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -0
- package/dist-lib/integrations/supabase/moduleClient.js +29 -0
- package/dist-lib/integrations/supabase/types.d.ts +3607 -1265
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +1 -0
- package/dist-lib/lib/aiLayout.functions.d.ts +3585 -1267
- package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
- package/dist-lib/lib/code128.d.ts +5 -0
- package/dist-lib/lib/code128.d.ts.map +1 -0
- package/dist-lib/lib/code128.js +51 -0
- package/dist-lib/lib/documentVoorbeeld.functions.d.ts +23 -0
- package/dist-lib/lib/documentVoorbeeld.functions.d.ts.map +1 -0
- package/dist-lib/lib/documentVoorbeeld.functions.js +37 -0
- package/dist-lib/lib/fontMetrics.d.ts +15 -0
- package/dist-lib/lib/fontMetrics.d.ts.map +1 -0
- package/dist-lib/lib/fontMetrics.js +118 -0
- package/dist-lib/lib/htmlNaarPdf.server.d.ts +2 -2
- package/dist-lib/lib/htmlNaarPdf.server.d.ts.map +1 -1
- package/dist-lib/lib/htmlNaarPdf.server.js +2 -1
- package/dist-lib/lib/htmlPdf.server.d.ts +11 -0
- package/dist-lib/lib/htmlPdf.server.d.ts.map +1 -1
- package/dist-lib/lib/htmlPdf.server.js +170 -9
- package/dist-lib/lib/layoutPreview.d.ts.map +1 -1
- package/dist-lib/lib/layoutPreview.js +6 -3
- package/dist-lib/lib/orderData.server.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.js +49 -16
- package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts +39 -0
- package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts.map +1 -0
- package/dist-lib/lib/pakbonBarcodeVerzoek.js +80 -0
- package/dist-lib/lib/pakbonBuilder.d.ts +90 -5
- package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
- package/dist-lib/lib/pakbonBuilder.js +455 -58
- package/dist-lib/lib/pakbonContent.d.ts +41 -0
- package/dist-lib/lib/pakbonContent.d.ts.map +1 -0
- package/dist-lib/lib/pakbonContent.js +668 -0
- package/dist-lib/lib/pakbonDocument.d.ts +199 -0
- package/dist-lib/lib/pakbonDocument.d.ts.map +1 -0
- package/dist-lib/lib/pakbonDocument.js +735 -0
- package/dist-lib/lib/pakbonHtml.d.ts +21 -2
- package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
- package/dist-lib/lib/pakbonHtml.js +144 -36
- package/dist-lib/lib/pakbonPresentation.d.ts +8 -0
- package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -0
- package/dist-lib/lib/pakbonPresentation.js +31 -0
- package/dist-lib/lib/pakbonScan.d.ts +44 -0
- package/dist-lib/lib/pakbonScan.d.ts.map +1 -0
- package/dist-lib/lib/pakbonScan.js +87 -0
- package/dist-lib/lib/pdfJobSaver.d.ts +10 -6
- package/dist-lib/lib/pdfJobSaver.d.ts.map +1 -1
- package/dist-lib/lib/pdfJobSaver.js +302 -99
- package/dist-lib/lib/pdfMap.d.ts +37 -2
- package/dist-lib/lib/pdfMap.d.ts.map +1 -1
- package/dist-lib/lib/pdfMap.js +120 -7
- package/dist-lib/lib/pdfOpslagStatus.d.ts +23 -0
- package/dist-lib/lib/pdfOpslagStatus.d.ts.map +1 -0
- package/dist-lib/lib/pdfOpslagStatus.js +74 -0
- package/dist-lib/lib/printApi.d.ts +31 -0
- package/dist-lib/lib/printApi.d.ts.map +1 -1
- package/dist-lib/lib/printApi.js +62 -1
- package/dist-lib/lib/printQueue.server.d.ts +13 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +673 -96
- package/dist-lib/lib/printService.functions.d.ts +11840 -2568
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/profielHtml.d.ts.map +1 -1
- package/dist-lib/lib/profielHtml.js +8 -1
- package/dist-lib/lib/supabaseClient.d.ts +1 -3
- package/dist-lib/lib/supabaseClient.d.ts.map +1 -1
- package/dist-lib/lib/supabaseClient.js +4 -8
- package/dist-lib/lib/useDocumentData.d.ts +8 -0
- package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
- package/dist-lib/lib/useDocumentData.js +1 -1
- package/dist-lib/lib/voorbeeldPrint.d.ts +3 -0
- package/dist-lib/lib/voorbeeldPrint.d.ts.map +1 -1
- package/dist-lib/lib/voorbeeldPrint.js +65 -17
- 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
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
const perLaag =
|
|
342
|
-
const
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
1;
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
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.
|
|
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):
|
|
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:
|
|
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
|
-
*
|
|
209
|
-
*
|
|
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":"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,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;;;
|
|
1
|
+
{"version":3,"file":"pakbonBuilder.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonBuilder.ts"],"names":[],"mappings":"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"}
|