@flowselections/logistiek-engine 1.0.239 → 1.0.240

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.
@@ -0,0 +1,7 @@
1
+ /** Schemaversie die deze moduleversie verwacht (gelijk aan logistics_schema_versie()). */
2
+ export declare const VERWACHTE_SCHEMA_VERSIE = "2026-11-10b";
3
+ /** True als de database ouder is dan de module (geen of oudere versiemarkering). */
4
+ export declare function schemaVersieOud(versie: string | null | undefined): boolean;
5
+ /** "X leeg (Pickmodule)" -> "X ontbreken: de Pickschermen-module moet worden bijgewerkt." */
6
+ export declare function meldingGewoneTaal(m: string): string;
7
+ //# sourceMappingURL=engineStatusTeksten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineStatusTeksten.d.ts","sourceRoot":"","sources":["../../src/lib/engineStatusTeksten.ts"],"names":[],"mappings":"AAEA,0FAA0F;AAC1F,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAErD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG1E;AAQD,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,22 @@
1
+ // Teksten voor de Engine-status in gewone taal.
2
+ /** Schemaversie die deze moduleversie verwacht (gelijk aan logistics_schema_versie()). */
3
+ export const VERWACHTE_SCHEMA_VERSIE = "2026-11-10b";
4
+ /** True als de database ouder is dan de module (geen of oudere versiemarkering). */
5
+ export function schemaVersieOud(versie) {
6
+ if (!versie)
7
+ return true;
8
+ return versie < VERWACHTE_SCHEMA_VERSIE;
9
+ }
10
+ const MODULE_NAAM = {
11
+ Pickmodule: "Pickschermen-module",
12
+ Verkoop: "Verkoop-module",
13
+ Voorraad: "Voorraad-module",
14
+ };
15
+ /** "X leeg (Pickmodule)" -> "X ontbreken: de Pickschermen-module moet worden bijgewerkt." */
16
+ export function meldingGewoneTaal(m) {
17
+ const r = /^(.*?)\s+leeg\s+\(([^)]+)\)\s*$/.exec(String(m ?? ""));
18
+ if (!r)
19
+ return m;
20
+ const module = MODULE_NAAM[r[2]] ?? `${r[2]}-module`;
21
+ return `${r[1]} ontbreken: de ${module} moet worden bijgewerkt.`;
22
+ }
@@ -204,20 +204,20 @@ export function buildFlowTree(settings, overrides) {
204
204
  }
205
205
  // ── Floriday: bestelregels eerst samenvoegen tot één bestelling ────────────
206
206
  const ovFields = (veilig["order_verwerking"]?.fields ?? {});
207
- const samenvoegenAan = ovFields["floriday_merge_lines"] !== false;
207
+ const samenvoegenAan = ovFields["floriday_merge_lines"] === true;
208
208
  add({
209
209
  id: "stap:bestelregels_samenvoegen",
210
210
  kind: "step",
211
211
  label: "Bestelregels samenvoegen",
212
212
  sublabel: samenvoegenAan
213
- ? "aan — regels van dezelfde klant en levermoment worden één bestelling"
213
+ ? "aan — orders van dezelfde klant, leverdag, afleverlocatie en ophaalmoment worden samen gepickt"
214
214
  : "uit — elke Floriday-regel blijft een eigen order",
215
215
  state: samenvoegenAan ? "active" : "disabled",
216
216
  storeId: "order_verwerking",
217
217
  fieldKeys: ["floriday_merge_lines"],
218
218
  lines: [
219
219
  samenvoegenAan
220
- ? "Samenvoegen: aan (zelfde klant, levermoment en afleverlocatie)"
220
+ ? "Samenvoegen: aan (zelfde klant, leverdag, afleverlocatie en ophaalmoment)"
221
221
  : "Samenvoegen: uit",
222
222
  "Laagste FO-nummer blijft het ordernummer",
223
223
  "Al ingedeelde, geprinte of gecontroleerde orders blijven ongewijzigd",
@@ -1,2 +1,2 @@
1
- export declare const MODULE_VERSION = "1.0.239";
1
+ export declare const MODULE_VERSION = "1.0.240";
2
2
  //# sourceMappingURL=moduleVersion.d.ts.map
@@ -1,2 +1,2 @@
1
1
  // Automatisch gegenereerd door prebuild:lib; niet handmatig aanpassen.
2
- export const MODULE_VERSION = "1.0.239";
2
+ export const MODULE_VERSION = "1.0.240";
@@ -39,8 +39,8 @@ export const RULE_STEPS = [
39
39
  key: "floriday_merge_lines",
40
40
  label: "Floriday-bestelregels samenvoegen tot \u00e9\u00e9n bestelling",
41
41
  type: "toggle",
42
- default: true,
43
- description: "Floriday levert elke bestelregel als een eigen verkooporder. Staat dit aan, dan worden regels van dezelfde klant, hetzelfde levermoment en dezelfde afleverlocatie samengevoegd tot \u00e9\u00e9n order met \u00e9\u00e9n ordernummer (het laagste FO-nummer). Orders die al zijn ingedeeld, geprint of gecontroleerd blijven ongewijzigd.",
42
+ default: false,
43
+ description: "Orders van dezelfde klant, leverdag, afleverlocatie en ophaalmoment worden samen gepickt.",
44
44
  },
45
45
  ],
46
46
  },
@@ -0,0 +1,7 @@
1
+ /** Interval in minuten voor gangbare cronschema's; null als onbekend. */
2
+ export declare function intervalMinuten(schema: string): number | null;
3
+ /** True als de taak langer dan 2x zijn interval niet draaide. */
4
+ export declare function taakTeLaat(laatsteStart: string | null, schema: string, nu?: number): boolean;
5
+ /** Foutmelding van een taak in gewone taal. */
6
+ export declare function taakFoutGewoneTaal(bericht: string | null): string | null;
7
+ //# sourceMappingURL=taakTeLaat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taakTeLaat.d.ts","sourceRoot":"","sources":["../../src/lib/taakTeLaat.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB7D;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAE,MAAmB,GAAG,OAAO,CAOxG;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAcxE"}
@@ -0,0 +1,62 @@
1
+ // Bewaking geplande taken: interval uit het cronschema en "te laat" (> 2x interval).
2
+ /** Interval in minuten voor gangbare cronschema's; null als onbekend. */
3
+ export function intervalMinuten(schema) {
4
+ const s = String(schema ?? "").trim();
5
+ const sec = /^(\d+)\s*seconds?$/i.exec(s);
6
+ if (sec)
7
+ return Math.max(1, Number(sec[1]) / 60);
8
+ const d = s.split(/\s+/);
9
+ if (d.length !== 5)
10
+ return null;
11
+ const [min, uur, dag, maand, wd] = d;
12
+ const rest = dag === "*" && maand === "*" && wd === "*";
13
+ if (!rest)
14
+ return null;
15
+ if (uur === "*") {
16
+ if (min === "*")
17
+ return 1;
18
+ const m = /^\*\/(\d+)$/.exec(min);
19
+ if (m)
20
+ return Number(m[1]);
21
+ if (/^\d+(,\d+)+$/.test(min))
22
+ return Math.ceil(60 / min.split(",").length);
23
+ if (/^\d+$/.test(min))
24
+ return 60;
25
+ return null;
26
+ }
27
+ const u = /^\*\/(\d+)$/.exec(uur);
28
+ if (u && /^\d+$/.test(min))
29
+ return Number(u[1]) * 60;
30
+ if (/^\d+$/.test(uur) && /^\d+$/.test(min))
31
+ return 24 * 60;
32
+ return null;
33
+ }
34
+ /** True als de taak langer dan 2x zijn interval niet draaide. */
35
+ export function taakTeLaat(laatsteStart, schema, nu = Date.now()) {
36
+ const iv = intervalMinuten(schema);
37
+ if (iv == null)
38
+ return false;
39
+ if (!laatsteStart)
40
+ return true;
41
+ const t = new Date(laatsteStart).getTime();
42
+ if (!Number.isFinite(t))
43
+ return false;
44
+ return nu - t > 2 * iv * 60000;
45
+ }
46
+ /** Foutmelding van een taak in gewone taal. */
47
+ export function taakFoutGewoneTaal(bericht) {
48
+ if (!bericht)
49
+ return null;
50
+ const b = bericht.toLowerCase();
51
+ if (b.includes("timeout") || b.includes("time-out") || b.includes("statement timeout") || b.includes("canceling statement"))
52
+ return "De taak duurde te lang en is afgebroken. De volgende keer probeert hij het opnieuw.";
53
+ if (b.includes("does not exist") || b.includes("bestaat niet"))
54
+ return "De taak gebruikt een onderdeel dat in deze database ontbreekt. Supabase bijwerken nodig.";
55
+ if (b.includes("permission denied") || b.includes("niet ingelogd") || b.includes("geen toegang"))
56
+ return "De taak had geen toestemming om zijn werk te doen. Neem contact op met de beheerder.";
57
+ if (b.includes("lock") || b.includes("deadlock"))
58
+ return "De taak moest wachten op ander werk en is gestopt. De volgende keer probeert hij het opnieuw.";
59
+ if (b.includes("connection") || b.includes("could not connect"))
60
+ return "De taak kon de shell niet bereiken. De volgende keer probeert hij het opnieuw.";
61
+ return "De taak is mislukt. Neem contact op met de beheerder als dit blijft gebeuren.";
62
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/logistiek-engine",
3
- "version": "1.0.239",
3
+ "version": "1.0.240",
4
4
  "flowselections": {
5
5
  "moduleId": "logistiek-engine",
6
6
  "pages": [