@flowselections/layout-maker 1.69.8 → 1.69.13
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/A4StickervelKaart.d.ts +5 -0
- package/dist-lib/components/A4StickervelKaart.d.ts.map +1 -0
- package/dist-lib/components/A4StickervelKaart.js +123 -0
- package/dist-lib/components/KlaarOmTePrintenBlok.d.ts.map +1 -1
- package/dist-lib/components/KlaarOmTePrintenBlok.js +50 -7
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +2 -1
- package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekDetailPage.js +3 -1
- package/dist-lib/components/PrintplekkenPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekkenPage.js +2 -1
- package/dist-lib/components/StickerRouteTestKaart.d.ts +5 -0
- package/dist-lib/components/StickerRouteTestKaart.d.ts.map +1 -0
- package/dist-lib/components/StickerRouteTestKaart.js +75 -0
- package/dist-lib/components/UitwijkRegel.d.ts +5 -0
- package/dist-lib/components/UitwijkRegel.d.ts.map +1 -0
- package/dist-lib/components/UitwijkRegel.js +17 -0
- package/dist-lib/components/UitwijkTekening.d.ts +19 -0
- package/dist-lib/components/UitwijkTekening.d.ts.map +1 -0
- package/dist-lib/components/UitwijkTekening.js +21 -0
- package/dist-lib/index.d.ts +12 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +14 -0
- package/dist-lib/integrations/supabase/types.d.ts +3227 -22
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/belading.d.ts +10 -0
- package/dist-lib/lib/belading.d.ts.map +1 -0
- package/dist-lib/lib/belading.js +49 -0
- package/dist-lib/lib/documentProfiles.js +2 -2
- package/dist-lib/lib/eigenDocumenten.d.ts +2 -0
- package/dist-lib/lib/eigenDocumenten.d.ts.map +1 -1
- package/dist-lib/lib/eigenDocumenten.js +23 -0
- package/dist-lib/lib/fieldRegistry.js +3 -2
- package/dist-lib/lib/installCheck.d.ts +36 -0
- package/dist-lib/lib/installCheck.d.ts.map +1 -0
- package/dist-lib/lib/installCheck.js +65 -0
- package/dist-lib/lib/klaarOmTePrinten.d.ts +15 -1
- package/dist-lib/lib/klaarOmTePrinten.d.ts.map +1 -1
- package/dist-lib/lib/klaarOmTePrinten.js +19 -1
- package/dist-lib/lib/orderData.server.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.js +20 -17
- package/dist-lib/lib/pakbonBuilder.d.ts +6 -0
- package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
- package/dist-lib/lib/pakbonBuilder.js +22 -9
- package/dist-lib/lib/pakbonContent.d.ts.map +1 -1
- package/dist-lib/lib/pakbonContent.js +4 -1
- package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
- package/dist-lib/lib/pakbonHtml.js +5 -2
- package/dist-lib/lib/pakbonPresentation.d.ts +3 -1
- package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -1
- package/dist-lib/lib/pakbonPresentation.js +13 -6
- package/dist-lib/lib/printQueue.server.d.ts +24 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +239 -17
- package/dist-lib/lib/printService.server.d.ts.map +1 -1
- package/dist-lib/lib/printService.server.js +3 -2
- package/dist-lib/lib/profielHtml.d.ts.map +1 -1
- package/dist-lib/lib/profielHtml.js +2 -1
- package/dist-lib/lib/standaardLayouts.server.d.ts +6 -0
- package/dist-lib/lib/standaardLayouts.server.d.ts.map +1 -1
- package/dist-lib/lib/standaardLayouts.server.js +13 -0
- package/dist-lib/lib/stickerPlaatsing.d.ts +37 -0
- package/dist-lib/lib/stickerPlaatsing.d.ts.map +1 -0
- package/dist-lib/lib/stickerPlaatsing.js +122 -0
- package/dist-lib/lib/stickerUitwijk.d.ts +197 -0
- package/dist-lib/lib/stickerUitwijk.d.ts.map +1 -0
- package/dist-lib/lib/stickerUitwijk.js +311 -0
- package/dist-lib/lib/testprint.d.ts +13 -0
- package/dist-lib/lib/testprint.d.ts.map +1 -1
- package/dist-lib/lib/testprint.js +38 -0
- package/dist-lib/lib/useDocumentData.js +1 -1
- package/dist-lib/lib/versie.generated.d.ts +1 -1
- package/dist-lib/lib/versie.generated.d.ts.map +1 -1
- package/dist-lib/lib/versie.generated.js +1 -1
- package/dist-lib/lib/vervoerder.d.ts +27 -3
- package/dist-lib/lib/vervoerder.d.ts.map +1 -1
- package/dist-lib/lib/vervoerder.js +65 -10
- package/dist-lib/lib/vroegeWaarschuwing.d.ts +21 -0
- package/dist-lib/lib/vroegeWaarschuwing.d.ts.map +1 -0
- package/dist-lib/lib/vroegeWaarschuwing.js +15 -0
- package/package.json +2 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Deel (0–1) van één laag dat deze regel vult, of null als onbekend/onlogisch. */
|
|
2
|
+
export declare function laagDeel(item: Record<string, unknown>): number | null;
|
|
3
|
+
/** Aantal lagen dat een regel beslaat als de Engine dat meldt (veld lagen, of layer_fraction > 1). */
|
|
4
|
+
export declare function lagenVanRegel(item: Record<string, unknown>): number | null;
|
|
5
|
+
/**
|
|
6
|
+
* Tekst voor de laag: "33%" bij een bekende vulling 0–1; "24 lagen" als de
|
|
7
|
+
* regel meerdere lagen beslaat; anders leeg (geen percentage).
|
|
8
|
+
*/
|
|
9
|
+
export declare function beladingTekst(delen: (number | null)[], lagen?: (number | null)[]): string;
|
|
10
|
+
//# sourceMappingURL=belading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"belading.d.ts","sourceRoot":"","sources":["../../src/lib/belading.ts"],"names":[],"mappings":"AAeA,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CASrE;AAED,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAM1E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,GAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAO,GAAG,MAAM,CAO7F"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/belading.ts — belading per laag op de pakbon (1.69.12).
|
|
3
|
+
// Per laag altijd 0–100%: fusten op die laag ÷ fusten per laag. Een
|
|
4
|
+
// layer_fraction van de Engine telt alleen als hij tussen 0 en 1 ligt; een
|
|
5
|
+
// waarde daarboven (regel over meerdere lagen) wordt nooit als percentage
|
|
6
|
+
// getoond, maar als aantal lagen. Onbekend of onlogisch: geen percentage.
|
|
7
|
+
// Gelezen Engine-velden: crates_in_layer, crates, crates_per_layer,
|
|
8
|
+
// layer_fraction, lagen.
|
|
9
|
+
// ============================================================================
|
|
10
|
+
const getal = (v) => {
|
|
11
|
+
const n = Number(v);
|
|
12
|
+
return Number.isFinite(n) ? n : 0;
|
|
13
|
+
};
|
|
14
|
+
/** Deel (0–1) van één laag dat deze regel vult, of null als onbekend/onlogisch. */
|
|
15
|
+
export function laagDeel(item) {
|
|
16
|
+
const capaciteit = getal(item["crates_per_layer"]);
|
|
17
|
+
const opLaag = getal(item["crates_in_layer"]) || getal(item["crates"]);
|
|
18
|
+
if (capaciteit > 0 && opLaag > 0) {
|
|
19
|
+
const d = opLaag / capaciteit;
|
|
20
|
+
return d > 0 && d <= 1.0001 ? Math.min(d, 1) : null;
|
|
21
|
+
}
|
|
22
|
+
const lf = getal(item["layer_fraction"]);
|
|
23
|
+
return lf > 0 && lf <= 1 ? lf : null;
|
|
24
|
+
}
|
|
25
|
+
/** Aantal lagen dat een regel beslaat als de Engine dat meldt (veld lagen, of layer_fraction > 1). */
|
|
26
|
+
export function lagenVanRegel(item) {
|
|
27
|
+
const lagen = getal(item["lagen"]);
|
|
28
|
+
if (lagen >= 1)
|
|
29
|
+
return Math.round(lagen);
|
|
30
|
+
const lf = getal(item["layer_fraction"]);
|
|
31
|
+
if (lf > 1)
|
|
32
|
+
return Math.ceil(lf - 1e-9);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Tekst voor de laag: "33%" bij een bekende vulling 0–1; "24 lagen" als de
|
|
37
|
+
* regel meerdere lagen beslaat; anders leeg (geen percentage).
|
|
38
|
+
*/
|
|
39
|
+
export function beladingTekst(delen, lagen = []) {
|
|
40
|
+
const meer = lagen.find((l) => l !== null && l > 1);
|
|
41
|
+
if (meer)
|
|
42
|
+
return `${meer} lagen`;
|
|
43
|
+
if (!delen.length || delen.some((d) => d === null))
|
|
44
|
+
return "";
|
|
45
|
+
const som = delen.reduce((a, b) => a + b, 0);
|
|
46
|
+
if (!(som > 0) || som > 1.0001)
|
|
47
|
+
return "";
|
|
48
|
+
return `${Math.round(Math.min(som, 1) * 100)}%`;
|
|
49
|
+
}
|
|
@@ -131,7 +131,7 @@ const pakbon = {
|
|
|
131
131
|
["telefoon", "Telefoonnummer"],
|
|
132
132
|
["email", "E-mailadres"],
|
|
133
133
|
["referentie", "Referentie"],
|
|
134
|
-
["transporteur", "
|
|
134
|
+
["transporteur", "Vervoerder"],
|
|
135
135
|
["chauffeur", "Chauffeur"],
|
|
136
136
|
["route", "Route"],
|
|
137
137
|
["pickstation", "Pickstation"],
|
|
@@ -258,7 +258,7 @@ const verzendlabel = {
|
|
|
258
258
|
["land", "Land", true],
|
|
259
259
|
]),
|
|
260
260
|
vinkjes("verzending", "Verzending", [
|
|
261
|
-
["transporteur", "
|
|
261
|
+
["transporteur", "Vervoerder", true],
|
|
262
262
|
["verzendmethode", "Verzendmethode"],
|
|
263
263
|
["route", "Route"],
|
|
264
264
|
["track_trace", "Track & Trace", true],
|
|
@@ -23,6 +23,8 @@ export declare function eigenStickerId(payload: unknown): string | null;
|
|
|
23
23
|
export declare const TRAYSTICKER_VELDEN: readonly ["logo", "bedrijfsnaam", "klantnaam", "ordernummer", "leverdatum", "afleverlocatie", "tray", "producten", "barcode"];
|
|
24
24
|
export type TrayVeld = (typeof TRAYSTICKER_VELDEN)[number];
|
|
25
25
|
export declare const TRAYSTICKER_GEEN_INDELING = "Aantal fusten onbekend";
|
|
26
|
+
/** Voorbeeldgegevens voor een testprint (geen echte order, geen echte namen). */
|
|
27
|
+
export declare const VOORBEELD_TRAY_PAYLOAD: Record<string, unknown>;
|
|
26
28
|
export type TrayRegel = {
|
|
27
29
|
artikelnummer: string;
|
|
28
30
|
naam: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eigenDocumenten.d.ts","sourceRoot":"","sources":["../../src/lib/eigenDocumenten.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,2BAA2B,4IAC8F,CAAC;AAEvI,MAAM,MAAM,gBAAgB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAA;CAAE,CAAC;AAExH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,QAAQ,GAAE,OAAc,EACxB,OAAO,GAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,GAC/D,gBAAgB,GAAG,IAAI,CAmBzB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGtF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIhH;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI9D;AAGD,eAAO,MAAM,kBAAkB,+HAErB,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAOlE,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,GAAG,IAAI,CAOpE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAK1D;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC/C,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClD,MAAM,CAiCR;AAGD,eAAO,MAAM,sBAAsB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"eigenDocumenten.d.ts","sourceRoot":"","sources":["../../src/lib/eigenDocumenten.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,2BAA2B,4IAC8F,CAAC;AAEvI,MAAM,MAAM,gBAAgB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAA;CAAE,CAAC;AAExH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,QAAQ,GAAE,OAAc,EACxB,OAAO,GAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,GAC/D,gBAAgB,GAAG,IAAI,CAmBzB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGtF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIhH;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI9D;AAGD,eAAO,MAAM,kBAAkB,+HAErB,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAElE,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAoB1D,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAOlE,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,GAAG,IAAI,CAOpE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAK1D;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC/C,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClD,MAAM,CAiCR;AAGD,eAAO,MAAM,sBAAsB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAoBvF,CAAC;AAEF,eAAO,MAAM,gCAAgC,UAAuE,CAAC;AAarH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAK5D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAaxE"}
|
|
@@ -66,6 +66,28 @@ export const TRAYSTICKER_VELDEN = [
|
|
|
66
66
|
"logo", "bedrijfsnaam", "klantnaam", "ordernummer", "leverdatum", "afleverlocatie", "tray", "producten", "barcode",
|
|
67
67
|
];
|
|
68
68
|
export const TRAYSTICKER_GEEN_INDELING = "Aantal fusten onbekend";
|
|
69
|
+
/** Voorbeeldgegevens voor een testprint (geen echte order, geen echte namen). */
|
|
70
|
+
export const VOORBEELD_TRAY_PAYLOAD = {
|
|
71
|
+
voorbeeld: true,
|
|
72
|
+
order_number: "VOORBEELD-0001",
|
|
73
|
+
klantnaam: "Voorbeeldklant",
|
|
74
|
+
leverdatum: "01-01-2027",
|
|
75
|
+
afleverlocatie: "Voorbeeldlocatie",
|
|
76
|
+
tray_nummer: 1,
|
|
77
|
+
tray_totaal: 2,
|
|
78
|
+
tray_producten: [
|
|
79
|
+
{ artikelnummer: "VB-100", naam: "Voorbeeldplant 12 cm", aantal: "10" },
|
|
80
|
+
{
|
|
81
|
+
artikelnummer: "VB-200",
|
|
82
|
+
naam: "Voorbeeld samenstelling",
|
|
83
|
+
aantal: "4",
|
|
84
|
+
onderdelen: [
|
|
85
|
+
{ artikelnummer: "VB-201", naam: "Onderdeel A", aantal: "2" },
|
|
86
|
+
{ artikelnummer: "VB-202", naam: "Onderdeel B", aantal: "2" },
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
};
|
|
69
91
|
const trayRegel = (x) => {
|
|
70
92
|
const r = obj(x);
|
|
71
93
|
return { artikelnummer: tekst(r["artikelnummer"]), naam: tekst(r["naam"] ?? r["productnaam"]), aantal: tekst(r["aantal"]) };
|
|
@@ -137,6 +159,7 @@ export const CONTROLELIJST_KOLOMMEN = [
|
|
|
137
159
|
{ veld: "land", label: "Land", standaard: false },
|
|
138
160
|
{ veld: "klaarzetten_datum", label: "Klaarzetdatum", standaard: false },
|
|
139
161
|
{ veld: "klaarzetten_tijd", label: "Klaarzettijd", standaard: false },
|
|
162
|
+
{ veld: "carrier_label", label: "Vervoerder", standaard: false },
|
|
140
163
|
{ veld: "ophaal_datum", label: "Ophaaldatum", standaard: false },
|
|
141
164
|
{ veld: "ophaal_tijd", label: "Ophaaltijd", standaard: false },
|
|
142
165
|
{ veld: "leverdatum", label: "Leverdatum", standaard: false },
|
|
@@ -38,8 +38,9 @@ registreerEntiteit({
|
|
|
38
38
|
{ pad: "order.referentie", label: "Referentie", soort: "tekst", voorbeeld: "Inkoop 8891" },
|
|
39
39
|
{ pad: "order.verkoper", label: "Verkoper", soort: "tekst", voorbeeld: "Jan de Vries" },
|
|
40
40
|
{ pad: "order.opmerking", label: "Opmerking", soort: "tekst", voorbeeld: "Voor 10:00 leveren" },
|
|
41
|
-
{ pad: "order.
|
|
42
|
-
{ pad: "order.
|
|
41
|
+
{ pad: "order.carrier_label", label: "Vervoerder", soort: "tekst", voorbeeld: "Voorbeeld Transport BV" },
|
|
42
|
+
{ pad: "order.transporteur", label: "Transporteur", soort: "tekst", voorbeeld: "Voorbeeld Transport BV" },
|
|
43
|
+
{ pad: "order.track_trace", label: "Track & Trace", soort: "tekst", voorbeeld: "3SVB0099213" },
|
|
43
44
|
{ pad: "order.locatie", label: "Locatie", soort: "tekst", voorbeeld: "Magazijn 2" },
|
|
44
45
|
{ pad: "order.aantal_karren", label: "Aantal karren", soort: "getal", voorbeeld: 3 },
|
|
45
46
|
{ pad: "order.totaal", label: "Ordertotaal", soort: "bedrag", voorbeeld: "€ 1.284,50" },
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { PrinterFormaten } from "./papierFormaten.js";
|
|
2
|
+
import { type UitwijkUitkomst, type VerkleinInstelling, type Velindeling } from "./stickerUitwijk.js";
|
|
3
|
+
export type InstallMelding = {
|
|
4
|
+
niveau: "ok" | "waarschuwing";
|
|
5
|
+
printplek: string;
|
|
6
|
+
documenttype: string;
|
|
7
|
+
tekst: string;
|
|
8
|
+
};
|
|
9
|
+
/** Uitleg voor één sticker op één printplek, in gewone taal. */
|
|
10
|
+
export declare function stickerRegel(soortLabel: string, maat: {
|
|
11
|
+
breedte_mm: number;
|
|
12
|
+
hoogte_mm: number;
|
|
13
|
+
}, printerNaam: string | null, geladenEtiket: unknown, a4: {
|
|
14
|
+
naam: string;
|
|
15
|
+
} | null,
|
|
16
|
+
/** Velindeling van de printplek (a4VelVoor), of true/false voor de standaardlijst. */
|
|
17
|
+
a4Vel: boolean | Velindeling | null, instelling: VerkleinInstelling | null,
|
|
18
|
+
/** PrintNode-papiermaten van de labelprinter (1.69.12); weggelaten = niet gecontroleerd. */
|
|
19
|
+
formaten?: PrinterFormaten | null): {
|
|
20
|
+
niveau: "ok" | "waarschuwing";
|
|
21
|
+
tekst: string;
|
|
22
|
+
uitkomst: UitwijkUitkomst | null;
|
|
23
|
+
};
|
|
24
|
+
/** Alle gangbare maten voor één printplek (overzicht op Printplekken). */
|
|
25
|
+
export declare function matenPerPrintplek(printerNaam: string | null, geladenEtiket: unknown, a4: {
|
|
26
|
+
naam: string;
|
|
27
|
+
} | null, a4Vel: boolean, instelling: VerkleinInstelling | null, formaten?: PrinterFormaten | null): {
|
|
28
|
+
maat: string;
|
|
29
|
+
niveau: "ok" | "waarschuwing";
|
|
30
|
+
tekst: string;
|
|
31
|
+
}[];
|
|
32
|
+
/** Melding voor een document zonder printer (bijvoorbeeld Controlelijst karren). */
|
|
33
|
+
export declare function geenPrinterMelding(documentLabel: string, printplek: string | null): string;
|
|
34
|
+
/** Waarschuwing als de labelprinter geen papiermaat voor het geladen etiket kent (1.69.12). */
|
|
35
|
+
export declare function papierMelding(printerNaam: string, geladenEtiket: unknown, formaten: PrinterFormaten | null | undefined): string | null;
|
|
36
|
+
//# sourceMappingURL=installCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installCheck.d.ts","sourceRoot":"","sources":["../../src/lib/installCheck.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,IAAI,GAAG,cAAc,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,gEAAgE;AAChE,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,aAAa,EAAE,OAAO,EACtB,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI;AAC3B,sFAAsF;AACtF,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,EACnC,UAAU,EAAE,kBAAkB,GAAG,IAAI;AACrC,4FAA4F;AAC5F,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,GAChC;IAAE,MAAM,EAAE,IAAI,GAAG,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,CAcpF;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,aAAa,EAAE,OAAO,EACtB,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC3B,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,kBAAkB,GAAG,IAAI,EACrC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,GAAG,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAKlE;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI1F;AAUD,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAItI"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/installCheck.ts — install_check (1.69.11): alleen lezen, waarschuwt,
|
|
3
|
+
// blokkeert nooit. Per printplek: hoe gaan de stickermaten (precies, gedraaid,
|
|
4
|
+
// groter etiket, verkleind, via A4) en ontbreekt er een printer voor een
|
|
5
|
+
// document (bijvoorbeeld de Controlelijst karren).
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { leesGeladenEtiket } from "./etiketControle.js";
|
|
8
|
+
import { GANGBARE_ETIKETMATEN, kiesUitwijkroute, papierWaarschuwingen, } from "./stickerUitwijk.js";
|
|
9
|
+
const ROUTE_TEKST = {
|
|
10
|
+
precies: "past precies",
|
|
11
|
+
gedraaid: "past gedraaid",
|
|
12
|
+
groter_etiket: "1-op-1 op een groter etiket",
|
|
13
|
+
verkleind: "wordt verkleind",
|
|
14
|
+
a4_vel: "gaat via een A4-stickervel",
|
|
15
|
+
a4_snijlijnen: "gaat via gewoon A4 met snijlijnen",
|
|
16
|
+
};
|
|
17
|
+
/** Uitleg voor één sticker op één printplek, in gewone taal. */
|
|
18
|
+
export function stickerRegel(soortLabel, maat, printerNaam, geladenEtiket, a4,
|
|
19
|
+
/** Velindeling van de printplek (a4VelVoor), of true/false voor de standaardlijst. */
|
|
20
|
+
a4Vel, instelling,
|
|
21
|
+
/** PrintNode-papiermaten van de labelprinter (1.69.12); weggelaten = niet gecontroleerd. */
|
|
22
|
+
formaten) {
|
|
23
|
+
const e = leesGeladenEtiket(geladenEtiket);
|
|
24
|
+
const etiketten = e && printerNaam ? [{ printerNaam, paper: e.standaard ? "" : e.naam, breedte_mm: e.breedte_mm, hoogte_mm: e.hoogte_mm, formaten: formaten === undefined ? undefined : alleenPapier(formaten) }] : [];
|
|
25
|
+
const u = kiesUitwijkroute({ sticker: maat, etiketten, a4Printer: a4, a4VelIngesteld: !!a4Vel, a4VelIndeling: typeof a4Vel === "object" ? a4Vel : undefined, instelling });
|
|
26
|
+
const m = `${Math.round(maat.breedte_mm)} × ${Math.round(maat.hoogte_mm)} mm`;
|
|
27
|
+
if (!u) {
|
|
28
|
+
return { niveau: "waarschuwing", tekst: `${soortLabel} (${m}): geen labelprinter en geen A4-printer op deze printplek.`, uitkomst: null };
|
|
29
|
+
}
|
|
30
|
+
if (u.uitwijkroute === "precies" || u.uitwijkroute === "gedraaid") {
|
|
31
|
+
return { niveau: "ok", tekst: `${soortLabel} (${m}) ${ROUTE_TEKST[u.uitwijkroute]} op ${u.printerNaam}.`, uitkomst: u };
|
|
32
|
+
}
|
|
33
|
+
const kan = printerNaam && e ? `Printer ${printerNaam} kan de ${soortLabel.toLowerCase()} niet 1-op-1 printen (etiket ${Math.round(e.breedte_mm)} × ${Math.round(e.hoogte_mm)} mm). ` : "";
|
|
34
|
+
return { niveau: "waarschuwing", tekst: `${kan}${soortLabel} (${m}) ${ROUTE_TEKST[u.uitwijkroute]}: ${u.reden}.`, uitkomst: u };
|
|
35
|
+
}
|
|
36
|
+
/** Alle gangbare maten voor één printplek (overzicht op Printplekken). */
|
|
37
|
+
export function matenPerPrintplek(printerNaam, geladenEtiket, a4, a4Vel, instelling, formaten) {
|
|
38
|
+
return GANGBARE_ETIKETMATEN.map((m) => {
|
|
39
|
+
const r = stickerRegel("Sticker", m, printerNaam, geladenEtiket, a4, a4Vel, instelling, formaten);
|
|
40
|
+
return { maat: `${m.breedte_mm}×${m.hoogte_mm}`, niveau: r.niveau, tekst: r.uitkomst ? ROUTE_TEKST[r.uitkomst.uitwijkroute] + (r.uitkomst.uitwijkroute === "verkleind" ? ` (${Math.round(r.uitkomst.schaal * 100)}%)` : "") : "geen printer" };
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** Melding voor een document zonder printer (bijvoorbeeld Controlelijst karren). */
|
|
44
|
+
export function geenPrinterMelding(documentLabel, printplek) {
|
|
45
|
+
return printplek
|
|
46
|
+
? `${documentLabel} heeft geen printer op printplek ‘${printplek}’. Stel er een in bij Printen › Printplekken.`
|
|
47
|
+
: `${documentLabel} heeft geen printer. Stel er een in bij Printen › Printplekken.`;
|
|
48
|
+
}
|
|
49
|
+
/** Alleen de papierregels (naam -> [b, h]); andere velden zoals dpi tellen niet. */
|
|
50
|
+
function alleenPapier(f) {
|
|
51
|
+
if (!f || typeof f !== "object" || Array.isArray(f))
|
|
52
|
+
return null;
|
|
53
|
+
const uit = {};
|
|
54
|
+
for (const [k, v] of Object.entries(f))
|
|
55
|
+
if (Array.isArray(v) && v.length >= 2)
|
|
56
|
+
uit[k] = v;
|
|
57
|
+
return Object.keys(uit).length ? uit : null;
|
|
58
|
+
}
|
|
59
|
+
/** Waarschuwing als de labelprinter geen papiermaat voor het geladen etiket kent (1.69.12). */
|
|
60
|
+
export function papierMelding(printerNaam, geladenEtiket, formaten) {
|
|
61
|
+
const e = leesGeladenEtiket(geladenEtiket);
|
|
62
|
+
if (!e || formaten === undefined)
|
|
63
|
+
return null;
|
|
64
|
+
return papierWaarschuwingen([{ printerNaam, paper: "", breedte_mm: e.breedte_mm, hoogte_mm: e.hoogte_mm, formaten: alleenPapier(formaten ?? null) }])[0] ?? null;
|
|
65
|
+
}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
export declare const KLAAR_SOORTEN: readonly ["pakbon", "afleverbrief", "sticker", "traysticker", "veilingbrief", "factuur", "productiebon"];
|
|
1
|
+
export declare const KLAAR_SOORTEN: readonly ["pakbon", "afleverbrief", "sticker", "traysticker", "veilingbrief", "factuur", "productiebon", "controlelijst"];
|
|
2
|
+
/**
|
|
3
|
+
* Opgevraagde documenttypen die geen standaardlayout van deze module nodig
|
|
4
|
+
* hebben (1.69.12): factuur komt met de opmaak van Facturatie, etiket was een
|
|
5
|
+
* testopdracht.
|
|
6
|
+
*/
|
|
7
|
+
export declare const GEEN_STANDAARD_NODIG: ReadonlySet<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Types zonder standaard die echt in gebruik zijn: opgevraagd (aantal > 0),
|
|
10
|
+
* niet in de standaardlijst en niet in GEEN_STANDAARD_NODIG.
|
|
11
|
+
*/
|
|
12
|
+
export declare function opgevraagdZonderStandaard(opgevraagd: {
|
|
13
|
+
documenttype: string;
|
|
14
|
+
aantal: number;
|
|
15
|
+
}[], metStandaard: Iterable<string>): string[];
|
|
2
16
|
/** Soorten waarvoor de Engine een Floriday-systeemlayout opvraagt. */
|
|
3
17
|
export declare const FLORIDAY_VERWIJZING_SOORTEN: string[];
|
|
4
18
|
export interface LayoutRij {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"klaarOmTePrinten.d.ts","sourceRoot":"","sources":["../../src/lib/klaarOmTePrinten.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"klaarOmTePrinten.d.ts","sourceRoot":"","sources":["../../src/lib/klaarOmTePrinten.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,2HAEhB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAkC,CAAC;AAExF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAO1I;AAED,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,UAA6D,CAAC;AAEtG,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,4BAA4B,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAU3H,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAM9E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAWhH;AAED,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAc1G;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD"}
|
|
@@ -5,8 +5,26 @@
|
|
|
5
5
|
// ============================================================================
|
|
6
6
|
import { ETIKET_SOORTEN } from "./documentTypes.js";
|
|
7
7
|
export const KLAAR_SOORTEN = [
|
|
8
|
-
"pakbon", "afleverbrief", "sticker", "traysticker", "veilingbrief", "factuur", "productiebon",
|
|
8
|
+
"pakbon", "afleverbrief", "sticker", "traysticker", "veilingbrief", "factuur", "productiebon", "controlelijst",
|
|
9
9
|
];
|
|
10
|
+
/**
|
|
11
|
+
* Opgevraagde documenttypen die geen standaardlayout van deze module nodig
|
|
12
|
+
* hebben (1.69.12): factuur komt met de opmaak van Facturatie, etiket was een
|
|
13
|
+
* testopdracht.
|
|
14
|
+
*/
|
|
15
|
+
export const GEEN_STANDAARD_NODIG = new Set(["factuur", "etiket"]);
|
|
16
|
+
/**
|
|
17
|
+
* Types zonder standaard die echt in gebruik zijn: opgevraagd (aantal > 0),
|
|
18
|
+
* niet in de standaardlijst en niet in GEEN_STANDAARD_NODIG.
|
|
19
|
+
*/
|
|
20
|
+
export function opgevraagdZonderStandaard(opgevraagd, metStandaard) {
|
|
21
|
+
const std = new Set(metStandaard);
|
|
22
|
+
return opgevraagd
|
|
23
|
+
.filter((o) => o.aantal > 0 && !std.has(o.documenttype) && !GEEN_STANDAARD_NODIG.has(o.documenttype))
|
|
24
|
+
.map((o) => o.documenttype)
|
|
25
|
+
.filter((t, i, a) => a.indexOf(t) === i)
|
|
26
|
+
.sort();
|
|
27
|
+
}
|
|
10
28
|
/** Soorten waarvoor de Engine een Floriday-systeemlayout opvraagt. */
|
|
11
29
|
export const FLORIDAY_VERWIJZING_SOORTEN = ["afleverbrief", "veilingbrief", "sticker", "traysticker"];
|
|
12
30
|
/** Winnende layout: precies één actief, of precies één actief standaard. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAwBtD,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAgCA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;IAC7C,KAAK,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAMA;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7E,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CA0oBrB;AAkHD;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAGhG;AAcD,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAIzD"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// te weten welke scope actief was.
|
|
13
13
|
// Draait alleen op de server (printwachtrij).
|
|
14
14
|
// ============================================================================
|
|
15
|
+
import { beladingTekst, laagDeel, lagenVanRegel } from "./belading.js";
|
|
15
16
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
16
17
|
const num = (v) => (Number.isFinite(Number(v)) ? Number(v) : 0);
|
|
17
18
|
const uniek = (v) => Array.from(new Set(v.map((x) => (x ? String(x) : "")).filter(Boolean)));
|
|
@@ -499,27 +500,27 @@ export async function laadPakbonData(db, opties) {
|
|
|
499
500
|
extra["potmaat_cm"] ??
|
|
500
501
|
extra["maat"] ??
|
|
501
502
|
extra["__potmaat"] ??
|
|
502
|
-
"
|
|
503
|
+
""),
|
|
503
504
|
kleur: String(extra["kleur"] ??
|
|
504
505
|
extra["Kleur"] ??
|
|
505
506
|
extra["colour"] ??
|
|
506
507
|
extra["color"] ??
|
|
507
508
|
extra["__kleur"] ??
|
|
508
|
-
"
|
|
509
|
+
""),
|
|
509
510
|
aantal: aantalPlanten,
|
|
510
511
|
barcode: String(p["barcode"] ?? ""),
|
|
511
512
|
locatie: String(p["location"] ||
|
|
512
513
|
extra["locatie"] ||
|
|
513
514
|
extra["location"] ||
|
|
514
515
|
extra["warehouse_location"] ||
|
|
515
|
-
"
|
|
516
|
+
""),
|
|
516
517
|
gewicht: bron["weight_kg"] ? `${num(bron["weight_kg"]).toFixed(1)} kg` : "",
|
|
517
518
|
fust_aantal: fusten,
|
|
518
519
|
// "stuks" is een aantalseenheid, geen fustsoort — die slaan we over.
|
|
519
520
|
fustsoort: String(extra["fustsoort"] ??
|
|
520
521
|
extra["Fustsoort"] ??
|
|
521
522
|
extra["__fustsoort"] ??
|
|
522
|
-
(unit && unit.toLowerCase() !== "stuks" ? unit : "
|
|
523
|
+
(unit && unit.toLowerCase() !== "stuks" ? unit : "")),
|
|
523
524
|
planten_per_fust: perFust,
|
|
524
525
|
sticker: stickerWaarde(regelVan(bron), () => stickerVoor(orderVan(bron), p)),
|
|
525
526
|
onderdelen: onderdelenVoor(bron, p, aantalPlanten),
|
|
@@ -540,20 +541,21 @@ export async function laadPakbonData(db, opties) {
|
|
|
540
541
|
const fusten = num(item["crates"]);
|
|
541
542
|
const perFust = num(item["plants_per_crate"]);
|
|
542
543
|
const nummer = Math.max(1, num(item["layer_index"]) || 1);
|
|
543
|
-
const
|
|
544
|
-
const
|
|
545
|
-
const deel = capaciteit > 0 ? inLaag / capaciteit : num(item["layer_fraction"]) || 0;
|
|
544
|
+
const deelOfNull = laagDeel(item);
|
|
545
|
+
const deel = deelOfNull ?? 0;
|
|
546
546
|
let laag = perLaag.get(nummer);
|
|
547
547
|
if (!laag) {
|
|
548
|
-
laag = { producten: [], ruimte: 0 };
|
|
548
|
+
laag = { producten: [], ruimte: 0, delen: [], lagenRegel: [] };
|
|
549
549
|
perLaag.set(nummer, laag);
|
|
550
550
|
}
|
|
551
551
|
laag.producten.push(maakProduct(item, fusten * perFust, fusten, perFust, !(fusten > 0 && perFust > 0)));
|
|
552
552
|
laag.ruimte += deel;
|
|
553
|
+
laag.delen.push(deelOfNull);
|
|
554
|
+
laag.lagenRegel.push(lagenVanRegel(item));
|
|
553
555
|
}
|
|
554
556
|
const hoogste = Math.max(maxLagen, ...perLaag.keys());
|
|
555
557
|
for (let n = 1; n <= hoogste; n++) {
|
|
556
|
-
lagen.push(perLaag.get(n) ?? { producten: [], ruimte: 0 });
|
|
558
|
+
lagen.push(perLaag.get(n) ?? { producten: [], ruimte: 0, delen: [], lagenRegel: [] });
|
|
557
559
|
}
|
|
558
560
|
}
|
|
559
561
|
else {
|
|
@@ -561,22 +563,23 @@ export async function laadPakbonData(db, opties) {
|
|
|
561
563
|
for (const item of items) {
|
|
562
564
|
const fusten = num(item["crates"]);
|
|
563
565
|
const perFust = num(item["plants_per_crate"]);
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
1;
|
|
566
|
+
// Fusten / capaciteit van de laag is de rekenbare waarheid (1.69.12:
|
|
567
|
+
// altijd 0–1; daarbuiten geen percentage, zie belading.ts).
|
|
568
|
+
const deelOfNull = laagDeel(item);
|
|
569
|
+
const deel = deelOfNull ?? 1;
|
|
569
570
|
const product = maakProduct(item, fusten * perFust, fusten, perFust, !(fusten > 0 && perFust > 0));
|
|
570
571
|
if (!huidige || huidige.ruimte + deel > 1.0001) {
|
|
571
|
-
huidige = { producten: [], ruimte: 0 };
|
|
572
|
+
huidige = { producten: [], ruimte: 0, delen: [], lagenRegel: [] };
|
|
572
573
|
lagen.push(huidige);
|
|
573
574
|
}
|
|
574
575
|
huidige.producten.push(product);
|
|
575
576
|
huidige.ruimte += deel;
|
|
577
|
+
huidige.delen.push(deelOfNull);
|
|
578
|
+
huidige.lagenRegel.push(lagenVanRegel(item));
|
|
576
579
|
}
|
|
577
580
|
}
|
|
578
581
|
if (!lagen.length)
|
|
579
|
-
lagen.push({ producten: [], ruimte: 0 });
|
|
582
|
+
lagen.push({ producten: [], ruimte: 0, delen: [], lagenRegel: [] });
|
|
580
583
|
return {
|
|
581
584
|
// Nodig om een Engine-opdracht voor precies één kar te kunnen filteren.
|
|
582
585
|
// De waarde komt uit de gedeelde database en wordt nooit lokaal bedacht.
|
|
@@ -593,7 +596,7 @@ export async function laadPakbonData(db, opties) {
|
|
|
593
596
|
const potmaten = uniek(laag.producten.map((product) => product["potmaat"]));
|
|
594
597
|
return {
|
|
595
598
|
laagnummer: j + 1,
|
|
596
|
-
belading:
|
|
599
|
+
belading: beladingTekst(laag.delen, laag.lagenRegel),
|
|
597
600
|
potmaat: potmaten.length === 1 ? potmaten[0] : "",
|
|
598
601
|
producten: laag.producten,
|
|
599
602
|
fusten: vatFustenSamen(laag.producten),
|
|
@@ -294,6 +294,12 @@ export declare const DEMO_ORDER: {
|
|
|
294
294
|
};
|
|
295
295
|
export type DemoOrder = typeof DEMO_ORDER;
|
|
296
296
|
export declare function alleProducten(order: DemoOrder): DemoProduct[];
|
|
297
|
+
/** Kolommen die verdwijnen als ze voor alle regels leeg zijn. */
|
|
298
|
+
export declare const VERBERG_ALS_LEEG: Set<string>;
|
|
299
|
+
/** Haalt Potmaat/Locatie/Kleur/Fustsoort weg als geen enkele regel een waarde heeft. */
|
|
300
|
+
export declare function zonderLegeKolommen<P>(velden: string[], producten: P[], cel: (p: P, v: string) => unknown): string[];
|
|
301
|
+
/** "1 kar", "2 karren": enkelvoud alleen bij precies 1. */
|
|
302
|
+
export declare function telwoord(n: number, enkelvoud: string, meervoud: string): string;
|
|
297
303
|
export declare function totalen(order: DemoOrder): Record<string, string>;
|
|
298
304
|
export declare const CONDITIE_VELDEN: {
|
|
299
305
|
value: 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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"}
|
|
@@ -333,7 +333,8 @@ export const SECTIE_REGISTER = [
|
|
|
333
333
|
label: "Transportinformatie",
|
|
334
334
|
omschrijving: "Transporteur, route en chauffeur.",
|
|
335
335
|
opties: [
|
|
336
|
-
{ key: "toonTransporteur", label: "
|
|
336
|
+
{ key: "toonTransporteur", label: "Vervoerder (carrier_label uit de Engine)", type: "schakelaar", standaard: true },
|
|
337
|
+
{ key: "toonOphaalmoment", label: "Vertrektijd / ophaalmoment", type: "schakelaar", standaard: true },
|
|
337
338
|
{ key: "toonRoute", label: "Route", type: "schakelaar", standaard: true },
|
|
338
339
|
{ key: "toonChauffeur", label: "Chauffeur", type: "schakelaar", standaard: false },
|
|
339
340
|
{ key: "toonTrack", label: "Track & trace", type: "schakelaar", standaard: false },
|
|
@@ -508,6 +509,7 @@ export const SECTIE_REGISTER = [
|
|
|
508
509
|
{ value: "qrcode", label: "QR-code" },
|
|
509
510
|
{ value: "chauffeur", label: "Chauffeur" },
|
|
510
511
|
{ value: "route", label: "Route" },
|
|
512
|
+
{ value: "stickers", label: "Aantal stickers bij deze kar" },
|
|
511
513
|
],
|
|
512
514
|
},
|
|
513
515
|
{
|
|
@@ -943,7 +945,7 @@ export function onderdeelCellen(o, velden, gekozen) {
|
|
|
943
945
|
if (v === naamKolom) {
|
|
944
946
|
const delen = [];
|
|
945
947
|
const naam = gekozen.includes("artikelnaam") ? o.artikelnaam : "";
|
|
946
|
-
const kop =
|
|
948
|
+
const kop = `– ${o.per_stuk ? `${o.per_stuk}× ` : ""}${naam}`.trimEnd();
|
|
947
949
|
delen.push(kop);
|
|
948
950
|
for (const extra of zonderKolom) {
|
|
949
951
|
const w = waarde(extra);
|
|
@@ -1056,10 +1058,10 @@ export const DEMO_ORDER = {
|
|
|
1056
1058
|
land: "Nederland",
|
|
1057
1059
|
},
|
|
1058
1060
|
transport: {
|
|
1059
|
-
transporteur: "
|
|
1061
|
+
transporteur: "Voorbeeld Transport BV",
|
|
1060
1062
|
route: "Route Zuid",
|
|
1061
1063
|
chauffeur: "J. Bakker",
|
|
1062
|
-
track: "
|
|
1064
|
+
track: "3SVB8842190",
|
|
1063
1065
|
},
|
|
1064
1066
|
karren: [
|
|
1065
1067
|
{
|
|
@@ -1154,9 +1156,20 @@ export const DEMO_ORDER = {
|
|
|
1154
1156
|
export function alleProducten(order) {
|
|
1155
1157
|
return order.karren.flatMap((k) => k.lagen.flatMap((l) => l.producten));
|
|
1156
1158
|
}
|
|
1159
|
+
/** Kolommen die verdwijnen als ze voor alle regels leeg zijn. */
|
|
1160
|
+
export const VERBERG_ALS_LEEG = new Set(["potmaat", "locatie", "kleur", "fustsoort"]);
|
|
1161
|
+
/** Haalt Potmaat/Locatie/Kleur/Fustsoort weg als geen enkele regel een waarde heeft. */
|
|
1162
|
+
export function zonderLegeKolommen(velden, producten, cel) {
|
|
1163
|
+
return velden.filter((v) => !VERBERG_ALS_LEEG.has(v) || producten.some((p) => String(cel(p, v) ?? "").trim() !== ""));
|
|
1164
|
+
}
|
|
1165
|
+
/** "1 kar", "2 karren": enkelvoud alleen bij precies 1. */
|
|
1166
|
+
export function telwoord(n, enkelvoud, meervoud) {
|
|
1167
|
+
return `${n} ${n === 1 ? enkelvoud : meervoud}`;
|
|
1168
|
+
}
|
|
1157
1169
|
export function totalen(order) {
|
|
1158
1170
|
const producten = alleProducten(order);
|
|
1159
|
-
|
|
1171
|
+
// Alleen lagen met inhoud tellen; lege plekken op de kar zijn geen laag.
|
|
1172
|
+
const lagen = order.karren.reduce((n, k) => n + k.lagen.filter((l) => (l.producten?.length ?? 0) > 0 || (l.fusten?.length ?? 0) > 0).length, 0);
|
|
1160
1173
|
// Ontbreekt de fustlijst per laag, dan tellen we de fusten van de producten.
|
|
1161
1174
|
const fusten = order.karren.reduce((n, k) => n +
|
|
1162
1175
|
k.lagen.reduce((m, l) => {
|
|
@@ -1168,9 +1181,9 @@ export function totalen(order) {
|
|
|
1168
1181
|
const gewicht = producten.reduce((n, p2) => n + parseFloat(p2.gewicht), 0);
|
|
1169
1182
|
return {
|
|
1170
1183
|
producten: `${stuks} stuks`,
|
|
1171
|
-
lagen:
|
|
1172
|
-
fusten:
|
|
1173
|
-
karren:
|
|
1184
|
+
lagen: telwoord(lagen, "laag", "lagen"),
|
|
1185
|
+
fusten: telwoord(fusten, "fust", "fusten"),
|
|
1186
|
+
karren: telwoord(order.karren.length, "kar", "karren"),
|
|
1174
1187
|
gewicht: `${gewicht.toFixed(1)} kg`,
|
|
1175
1188
|
volume: `${(lagen * 0.42).toFixed(2)} m³`,
|
|
1176
1189
|
};
|
|
@@ -1181,7 +1194,7 @@ export const CONDITIE_VELDEN = [
|
|
|
1181
1194
|
{ value: "aantal_lagen", label: "Aantal lagen" },
|
|
1182
1195
|
{ value: "aantal_fusten", label: "Aantal fusten" },
|
|
1183
1196
|
{ value: "aantal_producten", label: "Aantal producten" },
|
|
1184
|
-
{ value: "transporteur", label: "
|
|
1197
|
+
{ value: "transporteur", label: "Vervoerder (carrier_label)" },
|
|
1185
1198
|
{ value: "documentsoort", label: "Documentsoort" },
|
|
1186
1199
|
{ value: "klant", label: "Klant" },
|
|
1187
1200
|
{ value: "route", label: "Route" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pakbonContent.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonContent.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"pakbonContent.d.ts","sourceRoot":"","sources":["../../src/lib/pakbonContent.ts"],"names":[],"mappings":"AASA,OAAO,EA0BL,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;AAmnBF,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, onderdeelCellen, onderdeelVelden, samenstellingTonen, voegProductSamen, totalen, vulVeldcodes, } from "./pakbonBuilder.js";
|
|
9
|
+
import { beperkTotDeelkar, conditieContext, deelkarVoorbeeldOrder, fustVerzamellijst, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karKopNummer, karBundelTekst, laagBundelTekst, leesPakbonConfig, pakbonLayoutVariant, pickMethode, productVeldBreedtes, sectieOnderdruktVoorVariant, sectieZichtbaar, sorteerProducten, onderdeelCellen, zonderLegeKolommen, 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 : []);
|
|
@@ -66,6 +66,9 @@ function sectitel(tekst, basis) {
|
|
|
66
66
|
function productTabel(velden, producten, toonKop, basis, onderdeelKolommen = null) {
|
|
67
67
|
if (!velden.length || !producten.length)
|
|
68
68
|
return null;
|
|
69
|
+
velden = zonderLegeKolommen(velden, producten, cel);
|
|
70
|
+
if (!velden.length)
|
|
71
|
+
return null;
|
|
69
72
|
const breedtes = productVeldBreedtes(velden);
|
|
70
73
|
const kolommen = velden.map((v, i) => ({
|
|
71
74
|
label: PRODUCT_LABELS[v] ?? v,
|