@flowselections/pick-schermen-kwekers 1.0.41 → 1.0.46

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 (56) hide show
  1. package/dist-lib/components/PickstationsPage.js +1 -1
  2. package/dist-lib/components/pick/PickScherm.d.ts.map +1 -1
  3. package/dist-lib/components/pick/PickScherm.js +194 -37
  4. package/dist-lib/components/pick/QueueTable.d.ts +10 -1
  5. package/dist-lib/components/pick/QueueTable.d.ts.map +1 -1
  6. package/dist-lib/components/pick/QueueTable.js +57 -16
  7. package/dist-lib/components/pick/ReferentiedataBanner.js +1 -1
  8. package/dist-lib/index.d.ts +1 -0
  9. package/dist-lib/index.d.ts.map +1 -1
  10. package/dist-lib/index.js +1 -0
  11. package/dist-lib/integrations/supabase/previewAuthStorage.d.ts.map +1 -1
  12. package/dist-lib/integrations/supabase/previewAuthStorage.js +22 -4
  13. package/dist-lib/integrations/supabase/types.d.ts +725 -0
  14. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  15. package/dist-lib/lib/__tests__/pick142.test.d.ts +2 -0
  16. package/dist-lib/lib/__tests__/pick142.test.d.ts.map +1 -0
  17. package/dist-lib/lib/__tests__/pick142.test.js +80 -0
  18. package/dist-lib/lib/__tests__/pick143.test.d.ts +2 -0
  19. package/dist-lib/lib/__tests__/pick143.test.d.ts.map +1 -0
  20. package/dist-lib/lib/__tests__/pick143.test.js +61 -0
  21. package/dist-lib/lib/__tests__/pick144.test.d.ts +2 -0
  22. package/dist-lib/lib/__tests__/pick144.test.d.ts.map +1 -0
  23. package/dist-lib/lib/__tests__/pick144.test.js +23 -0
  24. package/dist-lib/lib/__tests__/pick145.test.d.ts +2 -0
  25. package/dist-lib/lib/__tests__/pick145.test.d.ts.map +1 -0
  26. package/dist-lib/lib/__tests__/pick145.test.js +35 -0
  27. package/dist-lib/lib/pick142.d.ts +58 -0
  28. package/dist-lib/lib/pick142.d.ts.map +1 -0
  29. package/dist-lib/lib/pick142.js +235 -0
  30. package/dist-lib/lib/pick143.d.ts +31 -0
  31. package/dist-lib/lib/pick143.d.ts.map +1 -0
  32. package/dist-lib/lib/pick143.js +93 -0
  33. package/dist-lib/lib/pick144.d.ts +17 -0
  34. package/dist-lib/lib/pick144.d.ts.map +1 -0
  35. package/dist-lib/lib/pick144.js +53 -0
  36. package/dist-lib/lib/pick145.d.ts +23 -0
  37. package/dist-lib/lib/pick145.d.ts.map +1 -0
  38. package/dist-lib/lib/pick145.js +88 -0
  39. package/dist-lib/lib/pickApi.d.ts +17 -0
  40. package/dist-lib/lib/pickApi.d.ts.map +1 -1
  41. package/dist-lib/lib/pickApi.js +37 -6
  42. package/dist-lib/lib/pickCartResults.d.ts +1 -1
  43. package/dist-lib/lib/pickCartResults.d.ts.map +1 -1
  44. package/dist-lib/lib/pickCartResults.js +2 -2
  45. package/dist-lib/lib/pickI18n.js +6 -6
  46. package/dist-lib/lib/pickPrintJobText.js +2 -2
  47. package/dist-lib/lib/pickRowState.d.ts +1 -1
  48. package/dist-lib/lib/pickRowState.d.ts.map +1 -1
  49. package/dist-lib/lib/pickRowState.js +6 -2
  50. package/dist-lib/lib/pickTypes.d.ts +31 -1
  51. package/dist-lib/lib/pickTypes.d.ts.map +1 -1
  52. package/dist-lib/lib/pickTypes.js +42 -8
  53. package/dist-lib/lib/pickUiText.d.ts.map +1 -1
  54. package/dist-lib/lib/pickUiText.js +10 -0
  55. package/dist-lib/lib/shippingNoteStatus.js +2 -2
  56. package/package.json +1 -1
@@ -0,0 +1,93 @@
1
+ // Pickschermen 1.0.43: wachtende deelkar (printbaar/wachtTot op regel- en
2
+ // karplanniveau), afgesloten regels, vaste foutcodes van de printfuncties en
3
+ // geprinte, nog niet gescande karren van eerdere pickdagen.
4
+ import { formatSiteTime } from "./pick142";
5
+ function recordOf(value) {
6
+ return value && typeof value === "object" && !Array.isArray(value)
7
+ ? value
8
+ : null;
9
+ }
10
+ function textOf(value) {
11
+ return typeof value === "string" && value.trim() ? value : null;
12
+ }
13
+ /** Leest printbaar/wachtTot/wachtReden uit een payload of de karplanroot. */
14
+ export function rowWaitOf(source) {
15
+ const r = recordOf(source) ?? {};
16
+ const raw = r["printbaar"];
17
+ const until = textOf(r["wachtTot"] ?? r["wacht_tot"]);
18
+ return {
19
+ printable: !(raw === false || raw === "false"),
20
+ until: until && !Number.isNaN(new Date(until).getTime()) ? until : null,
21
+ reason: textOf(r["wachtReden"] ?? r["wacht_reden"]),
22
+ };
23
+ }
24
+ /** Afgesloten regel (gescand/afgemeld of vervallen). */
25
+ export function isRowClosed(item) {
26
+ return !!item.cancelled_at || !!item.completed_at;
27
+ }
28
+ /** Mag deze regel geclaimd/geprint worden? Nooit bij printbaar = false of afgesloten. */
29
+ export function isRowPrintable(item) {
30
+ if (isRowClosed(item))
31
+ return false;
32
+ return rowWaitOf(item.payload).printable;
33
+ }
34
+ export const WAIT_ROW_GENERIC = "Deelkar wacht op mogelijke aanvulling";
35
+ /** Grijze regeltekst voor een wachtende deelkar. */
36
+ export function rowWaitMessage(wait, timeZone) {
37
+ return wait.until
38
+ ? `Deelkar wacht tot ${formatSiteTime(wait.until, timeZone)} op mogelijke aanvulling`
39
+ : WAIT_ROW_GENERIC;
40
+ }
41
+ /** Melding als een printactie lokaal al geweigerd wordt; null = mag. */
42
+ export function printBlockMessage(item, timeZone) {
43
+ if (item.completed_at)
44
+ return CLOSED_ROW_MESSAGE;
45
+ const wait = rowWaitOf(item.payload);
46
+ if (!wait.printable)
47
+ return waitRefusalMessage(wait.until, timeZone);
48
+ return null;
49
+ }
50
+ /* ---------- Vaste foutcodes van de databasefuncties ---------- */
51
+ export const CLOSED_ROW_MESSAGE = "Deze kar is al gescand en afgemeld.";
52
+ export function waitRefusalMessage(until, timeZone) {
53
+ return until
54
+ ? `Deze kar wacht nog tot ${formatSiteTime(until, timeZone)} op mogelijke aanvulling en kan nog niet geprint worden.`
55
+ : "Deze kar wacht nog op mogelijke aanvulling en kan nog niet geprint worden.";
56
+ }
57
+ let knownZone = null;
58
+ /** Door het scherm gezet zodra de tijdzone van de vestiging bekend is. */
59
+ export function setKnownSiteZone(tz) {
60
+ knownZone = tz;
61
+ }
62
+ /** PICK_DEELKAR_WACHT / PICK_REGEL_AFGESLOTEN → gewone zin; anders null. */
63
+ export function pickRefusalText(raw, timeZone = knownZone) {
64
+ if (!raw)
65
+ return null;
66
+ if (raw.includes("PICK_REGEL_AFGESLOTEN"))
67
+ return CLOSED_ROW_MESSAGE;
68
+ const m = /PICK_DEELKAR_WACHT:\s*(\S+)/.exec(raw);
69
+ if (m || raw.includes("PICK_DEELKAR_WACHT")) {
70
+ const iso = m && m[1] !== "-" && !Number.isNaN(new Date(m[1]).getTime()) ? m[1] : null;
71
+ return waitRefusalMessage(iso, timeZone);
72
+ }
73
+ return null;
74
+ }
75
+ /* ---------- pickMode is nu een object ---------- */
76
+ export function pickModeValue(raw) {
77
+ if (typeof raw === "string")
78
+ return raw.trim() ? raw : null;
79
+ const r = recordOf(raw);
80
+ return r ? textOf(r["pickMode"] ?? r["pick_mode"]) : null;
81
+ }
82
+ /* ---------- Eerdere pickdagen ---------- */
83
+ /** "ma 19 okt" voor een pickdag (YYYY-MM-DD). */
84
+ export function pickDayShortLabel(iso) {
85
+ if (!iso || !/^\d{4}-\d{2}-\d{2}$/.test(iso))
86
+ return "onbekende dag";
87
+ const d = new Date(`${iso}T12:00:00Z`);
88
+ const s = d.toLocaleDateString("nl-NL", { weekday: "short", day: "numeric", month: "short", timeZone: "UTC" });
89
+ return s.replace(/\./g, "");
90
+ }
91
+ export function pickDayOf(item) {
92
+ return textOf(recordOf(item.payload)?.["pickDate"]);
93
+ }
@@ -0,0 +1,17 @@
1
+ import type { PickQueueItem } from "./pickTypes";
2
+ export interface PlanStatusExtra {
3
+ reasonCode: string | null;
4
+ pickStartsAt: string | null;
5
+ }
6
+ export declare function planStatusExtraOf(row: unknown): PlanStatusExtra;
7
+ /** Pickvenster nog niet begonnen? Code eerst, bestaande tekst als terugval. */
8
+ export declare function isPickWindowNotStarted(status: {
9
+ reason?: string | null;
10
+ reasonCode?: string | null;
11
+ } | null | undefined): boolean;
12
+ export declare function notStartedMessage(pickStartsAt: string | null, timeZone: string | null): string;
13
+ /** Fust van deze kar; zonder cartCrates alleen bij een losse order met één kar. */
14
+ export declare function cartCratesOf(item: PickQueueItem): number | null;
15
+ export declare function departureOf(item: PickQueueItem): string | null;
16
+ export declare const MARK_PRINTED_CONFIRM = "Is deze pakbon echt geprint? Hij wordt dan niet meer automatisch geprint.";
17
+ //# sourceMappingURL=pick144.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick144.d.ts","sourceRoot":"","sources":["../../src/lib/pick144.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASjD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAM/D;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIjI;AASD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG9F;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAS/D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED,eAAO,MAAM,oBAAoB,8EAC4C,CAAC"}
@@ -0,0 +1,53 @@
1
+ // Pickschermen 1.0.44: reden bij niet vrijgegeven, fust en vertrek per kar
2
+ // (Engine 1.0.153: pickStartsAt, reasonCode, cartCrates, departureAt).
3
+ import { formatSiteTime } from "./pick142";
4
+ import { pickDayShortLabel } from "./pick143";
5
+ function recordOf(v) {
6
+ return v && typeof v === "object" && !Array.isArray(v) ? v : null;
7
+ }
8
+ function isoOf(v) {
9
+ return typeof v === "string" && v.trim() && !Number.isNaN(new Date(v).getTime()) ? v : null;
10
+ }
11
+ export function planStatusExtraOf(row) {
12
+ const r = recordOf(row) ?? {};
13
+ return {
14
+ reasonCode: typeof r["reasonCode"] === "string" ? r["reasonCode"] : null,
15
+ pickStartsAt: isoOf(r["pickStartsAt"]),
16
+ };
17
+ }
18
+ /** Pickvenster nog niet begonnen? Code eerst, bestaande tekst als terugval. */
19
+ export function isPickWindowNotStarted(status) {
20
+ if (!status)
21
+ return false;
22
+ if (status.reasonCode)
23
+ return status.reasonCode === "pick_window_not_started";
24
+ return /pickvenster.*nog niet begonnen/i.test(status.reason ?? "");
25
+ }
26
+ function siteDayIso(iso, timeZone) {
27
+ const parts = new Intl.DateTimeFormat("en-CA", {
28
+ timeZone: timeZone ?? "UTC", year: "numeric", month: "2-digit", day: "2-digit",
29
+ }).format(new Date(iso));
30
+ return parts;
31
+ }
32
+ export function notStartedMessage(pickStartsAt, timeZone) {
33
+ if (!pickStartsAt)
34
+ return "Nog niet vrijgegeven: het picken is nog niet begonnen.";
35
+ return `Nog niet vrijgegeven: het picken begint ${pickDayShortLabel(siteDayIso(pickStartsAt, timeZone))} om ${formatSiteTime(pickStartsAt, timeZone)}`;
36
+ }
37
+ /** Fust van deze kar; zonder cartCrates alleen bij een losse order met één kar. */
38
+ export function cartCratesOf(item) {
39
+ const p = recordOf(item.payload) ?? {};
40
+ const own = Number(p["cartCrates"]);
41
+ if (p["cartCrates"] != null && Number.isFinite(own) && own > 0)
42
+ return own;
43
+ const total = Number(p["cartTotal"] ?? p["totalCarts"] ?? 1);
44
+ const isBuffer = !!p["bufferId"] || (Array.isArray(p["orderIds"]) && p["orderIds"].length > 1);
45
+ if (isBuffer || (Number.isFinite(total) && total > 1))
46
+ return null;
47
+ const crates = Number(p["crates"]);
48
+ return Number.isFinite(crates) && crates > 0 ? crates : null;
49
+ }
50
+ export function departureOf(item) {
51
+ return isoOf(recordOf(item.payload)?.["departureAt"]);
52
+ }
53
+ export const MARK_PRINTED_CONFIRM = "Is deze pakbon echt geprint? Hij wordt dan niet meer automatisch geprint.";
@@ -0,0 +1,23 @@
1
+ import type { PickQueueItem } from "./pickTypes";
2
+ /** Kalenderdag (YYYY-MM-DD) in de tijdzone van de vestiging; zonder zone null. */
3
+ export declare function siteDayOf(iso: string, timeZone: string | null): string | null;
4
+ /** "21 fust van 50" of "21 fust"; null als er geen eigen kargetal is. */
5
+ export declare function crateLabelOf(item: PickQueueItem): string | null;
6
+ /** "Vertrek ma 19 okt 06:00", of zonder dag als die gelijk is aan de pickdag. */
7
+ export declare function departureLabel(iso: string | null, pickDay: string | null, timeZone: string | null): string | null;
8
+ export interface ReleaseInfo {
9
+ releaseAt: string | null;
10
+ releaseReason: string | null;
11
+ }
12
+ /** Vrijgavemoment: releaseAt (karplan) → pickStartsAt (kar/payload) → pickStartsAt (status). */
13
+ export declare function releaseInfoOf(rawPlan: unknown, cartId: string | null, item: PickQueueItem | null, status: {
14
+ pickStartsAt?: string | null;
15
+ } | null | undefined): ReleaseInfo;
16
+ export declare function releaseMessage(info: ReleaseInfo, timeZone: string | null): string;
17
+ /** Regel bewust vooruit gemaakt voor deze dag? */
18
+ export declare function isForcedFor(item: PickQueueItem, day: string | null): boolean;
19
+ /** lateSignup van de eigen kar (match op cartId), anders van de payload. */
20
+ export declare function lateSignupOf(item: PickQueueItem, rawPlan?: unknown): boolean;
21
+ /** Fouttekst van pick_sync_pick_day (bijv. niet-werkdag), of null. */
22
+ export declare function syncPickDayError(data: unknown): string | null;
23
+ //# sourceMappingURL=pick145.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick145.d.ts","sourceRoot":"","sources":["../../src/lib/pick145.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAiBjD,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAO7E;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAMjH;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,gGAAgG;AAChG,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,MAAM,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC1D,WAAW,CAcb;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIjF;AAED,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAG5E;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAO5E;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE7D"}
@@ -0,0 +1,88 @@
1
+ // Pickschermen 1.0.45 (Engine 1.0.153, koppelprompt 47): fust "van x",
2
+ // vrijgavemoment, vertrekdag, vooruit printen en "Te laat aangemeld".
3
+ // Alles komt uit de Engine; ontbrekende waarde = niets tonen.
4
+ import { formatSiteTime } from "./pick142";
5
+ import { pickDayShortLabel } from "./pick143";
6
+ import { cartCratesOf } from "./pick144";
7
+ function recordOf(v) {
8
+ return v && typeof v === "object" && !Array.isArray(v) ? v : null;
9
+ }
10
+ function isoOf(v) {
11
+ return typeof v === "string" && v.trim() && !Number.isNaN(new Date(v).getTime()) ? v : null;
12
+ }
13
+ function textOf(v) {
14
+ return typeof v === "string" && v.trim() ? v : null;
15
+ }
16
+ function posNumber(v) {
17
+ if (v === null || v === undefined || v === "")
18
+ return null;
19
+ const n = Number(v);
20
+ return Number.isFinite(n) && n > 0 ? n : null;
21
+ }
22
+ /** Kalenderdag (YYYY-MM-DD) in de tijdzone van de vestiging; zonder zone null. */
23
+ export function siteDayOf(iso, timeZone) {
24
+ if (!timeZone)
25
+ return null;
26
+ try {
27
+ return new Intl.DateTimeFormat("en-CA", { timeZone, year: "numeric", month: "2-digit", day: "2-digit" }).format(new Date(iso));
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ /** "21 fust van 50" of "21 fust"; null als er geen eigen kargetal is. */
34
+ export function crateLabelOf(item) {
35
+ const own = cartCratesOf(item);
36
+ if (own === null)
37
+ return null;
38
+ const total = posNumber(recordOf(item.payload)?.["bufferCrates"]);
39
+ return total !== null && total > own ? `${own} fust van ${total}` : `${own} fust`;
40
+ }
41
+ /** "Vertrek ma 19 okt 06:00", of zonder dag als die gelijk is aan de pickdag. */
42
+ export function departureLabel(iso, pickDay, timeZone) {
43
+ if (!isoOf(iso))
44
+ return null;
45
+ const day = siteDayOf(iso, timeZone);
46
+ const time = formatSiteTime(iso, timeZone);
47
+ if (!day || day === pickDay)
48
+ return `Vertrek ${time}`;
49
+ return `Vertrek ${pickDayShortLabel(day)} ${time}`;
50
+ }
51
+ /** Vrijgavemoment: releaseAt (karplan) → pickStartsAt (kar/payload) → pickStartsAt (status). */
52
+ export function releaseInfoOf(rawPlan, cartId, item, status) {
53
+ const root = recordOf(rawPlan);
54
+ const carts = Array.isArray(root?.["carts"]) ? root["carts"] : [];
55
+ const cart = recordOf(carts.find((c) => cartId && recordOf(c)?.["cartId"] === cartId) ?? (carts.length === 1 ? carts[0] : null));
56
+ const payload = recordOf(item?.payload);
57
+ return {
58
+ releaseAt: isoOf(cart?.["releaseAt"]) ?? isoOf(root?.["releaseAt"])
59
+ ?? isoOf(cart?.["pickStartsAt"]) ?? isoOf(root?.["pickStartsAt"])
60
+ ?? isoOf(payload?.["pickStartsAt"]) ?? isoOf(status?.pickStartsAt) ?? null,
61
+ releaseReason: textOf(cart?.["releaseReason"]) ?? textOf(root?.["releaseReason"]),
62
+ };
63
+ }
64
+ export function releaseMessage(info, timeZone) {
65
+ if (!info.releaseAt)
66
+ return info.releaseReason ?? "Nog niet vrijgegeven.";
67
+ const day = siteDayOf(info.releaseAt, timeZone);
68
+ return `Wordt vrijgegeven ${day ? pickDayShortLabel(day) + " " : ""}om ${formatSiteTime(info.releaseAt, timeZone)}`;
69
+ }
70
+ /** Regel bewust vooruit gemaakt voor deze dag? */
71
+ export function isForcedFor(item, day) {
72
+ const forced = textOf(recordOf(item.payload)?.["forcedPickDay"]);
73
+ return !!forced && !!day && forced.slice(0, 10) === day;
74
+ }
75
+ /** lateSignup van de eigen kar (match op cartId), anders van de payload. */
76
+ export function lateSignupOf(item, rawPlan) {
77
+ const p = recordOf(item.payload) ?? {};
78
+ const cartId = textOf(p["cartId"] ?? p["cart_id"]);
79
+ const carts = Array.isArray(recordOf(rawPlan)?.["carts"]) ? recordOf(rawPlan)["carts"] : [];
80
+ const own = recordOf(carts.find((c) => cartId && recordOf(c)?.["cartId"] === cartId));
81
+ if (own && typeof own["lateSignup"] === "boolean")
82
+ return own["lateSignup"];
83
+ return p["lateSignup"] === true;
84
+ }
85
+ /** Fouttekst van pick_sync_pick_day (bijv. niet-werkdag), of null. */
86
+ export function syncPickDayError(data) {
87
+ return textOf(recordOf(data)?.["error"]);
88
+ }
@@ -1,5 +1,6 @@
1
1
  import { supabase } from "@flowselections/core";
2
2
  import type { PickCartPlan, PickCountry, PickDashboardRow, PickDocumentType, PickLock, PickActivePrinter, PickPrintJob, PickPrintPlek, PickStationPrintPlek, PickStationPrintPlekRow, PickPrinter, PickQueueItem, PickScreen, PickSortRule, PickStation, PickStationType, PickStatus, PickTask } from "./pickTypes";
3
+ import { type CartPlanMismatch } from "./pickTypes";
3
4
  type PickDbClient = {
4
5
  from: (t: string) => any;
5
6
  rpc: (fn: string, args?: Record<string, unknown>) => Promise<{
@@ -17,10 +18,14 @@ export { db as pickDb };
17
18
  export interface VerifiedRow {
18
19
  id: string;
19
20
  plan: PickCartPlan | null;
21
+ /** Karren met een totaal dat niet bij het plan past; leeg = in orde. */
22
+ mismatches?: CartPlanMismatch[];
20
23
  status: {
21
24
  ready: boolean;
22
25
  released: boolean;
23
26
  reason: string | null;
27
+ reasonCode?: string | null;
28
+ pickStartsAt?: string | null;
24
29
  } | null;
25
30
  error: string | null;
26
31
  }
@@ -140,6 +145,11 @@ export declare const pickApi: {
140
145
  }>;
141
146
  /** Zoekt één wachtrijregel op barcode, documentnummer of ordernummer (voor de scanner). */
142
147
  findByCode(code: string, stationId?: string): Promise<PickQueueItem | null>;
148
+ /** Geprint, nog niet gescand, van een pickdag vóór de gekozen dag (Engine 1.0.152). */
149
+ unscannedEarlier(args: {
150
+ stationId?: string;
151
+ beforeDay: string;
152
+ }): Promise<PickQueueItem[]>;
143
153
  claimNext(args: {
144
154
  stationId: string | null;
145
155
  screenId: string | null;
@@ -197,6 +207,8 @@ export declare const pickApi: {
197
207
  ready: boolean;
198
208
  released: boolean;
199
209
  reason: string | null;
210
+ reasonCode: string | null;
211
+ pickStartsAt: string | null;
200
212
  }>;
201
213
  /** Alleen lezen: is de order volgens de Engine vrijgegeven om te picken? Onbekend → null. */
202
214
  orderReleased(orderRef: string | null | undefined): Promise<boolean | null>;
@@ -210,6 +222,11 @@ export declare const pickApi: {
210
222
  ref: string | null;
211
223
  }[]): Promise<VerifiedRow[]>;
212
224
  queueCartPlan(queueItemId: string): Promise<PickCartPlan | null>;
225
+ /** Karplan plus de karren waarvan de nummers niet kloppen (alleen vaststellen). */
226
+ queueCartPlanChecked(queueItemId: string): Promise<{
227
+ plan: PickCartPlan | null;
228
+ mismatches: CartPlanMismatch[];
229
+ }>;
213
230
  /** Zet één kar in de printopdracht en rondt alleen deze kar af. */
214
231
  completePrintCart(itemId: string, sessionId: string, cartId: string): Promise<PickQueueItem>;
215
232
  /** Zet alle gekozen karren transactioneel en in één netwerkronde in de printwachtrij. */
@@ -1 +1 @@
1
- {"version":3,"file":"pickApi.d.ts","sourceRoot":"","sources":["../../src/lib/pickApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pickApi.d.ts","sourceRoot":"","sources":["../../src/lib/pickApi.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { planStatusExtraOf } from "./pick144";
1
2
  import { supabase } from "@flowselections/core";
2
- import { parsePickCartPlan } from "./pickTypes";
3
+ import { cartPlanMismatchesOf, parsePickCartPlan } from "./pickTypes";
3
4
  import { safeArray } from "./pickTypes";
4
5
  import { withRetry } from "./pickRetry";
5
6
  const raw = supabase;
@@ -25,6 +26,7 @@ function parsePlanStatus(data) {
25
26
  ready: row["ready"] === true,
26
27
  released: row["released"] === true,
27
28
  reason: typeof row["reason"] === "string" ? row["reason"] : null,
29
+ ...planStatusExtraOf(row),
28
30
  };
29
31
  }
30
32
  /** Eén aanroep per blok van max. 200 regels i.p.v. twee per regel. */
@@ -39,6 +41,7 @@ export async function verifyRowsWith(client, rows) {
39
41
  out.push({
40
42
  id: String(r["id"]),
41
43
  plan: parsePickCartPlan(r["plan"]),
44
+ mismatches: cartPlanMismatchesOf(r["plan"]),
42
45
  status: parsePlanStatus(r["status"]),
43
46
  error: typeof r["error"] === "string" ? r["error"] : null,
44
47
  });
@@ -68,7 +71,7 @@ export function parseSentElsewhere(raw) {
68
71
  }
69
72
  function parseBatchPrintResult(value) {
70
73
  if (!value || typeof value !== "object")
71
- throw new Error("De batchprint gaf geen resultaat terug.");
74
+ throw new Error("Het printen van meerdere karren is niet gelukt. Probeer het opnieuw.");
72
75
  const record = value;
73
76
  const item = record["item"];
74
77
  const rawJobs = safeArray(record["jobs"]);
@@ -193,9 +196,14 @@ export const pickApi = {
193
196
  },
194
197
  /** Zet de orders van een gekozen pickdag alvast in het pickstation. */
195
198
  async syncPickDay(day) {
196
- const { error } = await db.rpc("pick_sync_pick_day", { _day: day });
199
+ const { data, error } = await db.rpc("pick_sync_pick_day", { _day: day });
197
200
  if (error)
198
201
  throw new Error(error.message);
202
+ // Engine 1.0.153: niet-werkdag geeft { error: '…' } als gewoon antwoord.
203
+ const engineError = data && typeof data === "object" && !Array.isArray(data)
204
+ ? data["error"] : null;
205
+ if (typeof engineError === "string" && engineError.trim())
206
+ throw new Error(engineError);
199
207
  },
200
208
  /**
201
209
  * Laat de Logistiek Engine de wachtrij bijwerken naar de actuele pickdag.
@@ -238,6 +246,7 @@ export const pickApi = {
238
246
  .select("country_code")
239
247
  .is("printed_at", null)
240
248
  .is("cancelled_at", null)
249
+ .is("completed_at", null)
241
250
  .limit(5000);
242
251
  if (args.screenId)
243
252
  q = q.eq("screen_id", args.screenId);
@@ -268,7 +277,7 @@ export const pickApi = {
268
277
  q = q.eq("is_urgent", true);
269
278
  if (params.pickDay)
270
279
  q = q.eq("payload->>pickDate", params.pickDay);
271
- q = q.is("cancelled_at", null);
280
+ q = q.is("cancelled_at", null).is("completed_at", null);
272
281
  if (!params.includeDone)
273
282
  q = q.is("printed_at", null);
274
283
  if (params.search) {
@@ -317,6 +326,21 @@ export const pickApi = {
317
326
  const rows = unwrap(await q);
318
327
  return rows[0] ?? null;
319
328
  },
329
+ /** Geprint, nog niet gescand, van een pickdag vóór de gekozen dag (Engine 1.0.152). */
330
+ async unscannedEarlier(args) {
331
+ let q = db
332
+ .from("pick_queue")
333
+ .select("*")
334
+ .not("printed_at", "is", null)
335
+ .is("cancelled_at", null)
336
+ .is("completed_at", null)
337
+ .lt("payload->>pickDate", args.beforeDay)
338
+ .order("printed_at", { ascending: true })
339
+ .limit(200);
340
+ if (args.stationId)
341
+ q = q.eq("station_id", args.stationId);
342
+ return unwrap(await q);
343
+ },
320
344
  async claimNext(args) {
321
345
  const { data, error } = await db.rpc("pick_claim_next_document", {
322
346
  _station_id: args.stationId,
@@ -395,8 +419,10 @@ export const pickApi = {
395
419
  const rawCount = row["cartsPerPrint"] ?? row["carts_per_print"];
396
420
  const count = Number(rawCount);
397
421
  const rawMode = row["pickMode"] ?? row["pick_mode"];
422
+ const modeObj = rawMode && typeof rawMode === "object" ? rawMode : null;
423
+ const modeText = modeObj ? modeObj["pickMode"] : rawMode;
398
424
  return {
399
- pickMode: typeof rawMode === "string" && rawMode.trim() ? rawMode : null,
425
+ pickMode: typeof modeText === "string" && modeText.trim() ? modeText : null,
400
426
  showCartControl: (row["showCartControl"] ?? row["show_cart_control"]) === true,
401
427
  cartsPerPrint: Number.isFinite(count) && count >= 1 ? Math.round(count) : null,
402
428
  };
@@ -414,6 +440,7 @@ export const pickApi = {
414
440
  ready: row["ready"] === true,
415
441
  released: row["released"] === true,
416
442
  reason: typeof row["reason"] === "string" ? row["reason"] : null,
443
+ ...planStatusExtraOf(row),
417
444
  };
418
445
  },
419
446
  /** Alleen lezen: is de order volgens de Engine vrijgegeven om te picken? Onbekend → null. */
@@ -434,10 +461,14 @@ export const pickApi = {
434
461
  return verifyRowsWith(db, rows);
435
462
  },
436
463
  async queueCartPlan(queueItemId) {
464
+ return (await pickApi.queueCartPlanChecked(queueItemId)).plan;
465
+ },
466
+ /** Karplan plus de karren waarvan de nummers niet kloppen (alleen vaststellen). */
467
+ async queueCartPlanChecked(queueItemId) {
437
468
  const { data, error } = await db.rpc("pick_queue_cart_plan", { _queue_item_id: queueItemId });
438
469
  if (error)
439
470
  throw new Error(error.message);
440
- return parsePickCartPlan(data);
471
+ return { plan: parsePickCartPlan(data), mismatches: cartPlanMismatchesOf(data) };
441
472
  },
442
473
  /** Zet één kar in de printopdracht en rondt alleen deze kar af. */
443
474
  async completePrintCart(itemId, sessionId, cartId) {
@@ -14,7 +14,7 @@ export interface CartPrintResult {
14
14
  }
15
15
  /** "Pakbon al verstuurd vanuit <herkomst> naar <printer> om <tijd>" (tijd in lokale tijd). */
16
16
  export declare function sentElsewhereMessage(e: SentElsewhere): string;
17
- export declare const CART_MISSING_MESSAGE = "De kar van deze rij bestaat niet meer in het karplan; ververs de pickwachtrij";
17
+ export declare const CART_MISSING_MESSAGE = "Deze kar is intussen gewijzigd. Klik op \u2018Wachtrij verversen\u2019.";
18
18
  export declare class CartMissingError extends Error {
19
19
  constructor();
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pickCartResults.d.ts","sourceRoot":"","sources":["../../src/lib/pickCartResults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pickCartResults.d.ts","sourceRoot":"","sources":["../../src/lib/pickCartResults.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export function sentElsewhereMessage(e) {
10
10
  ? `${base} (let op: andere kar-barcode ${e.barcode ?? "?"} dan ${e.ownBarcode ?? "?"})`
11
11
  : base;
12
12
  }
13
- export const CART_MISSING_MESSAGE = "De kar van deze rij bestaat niet meer in het karplan; ververs de pickwachtrij";
13
+ export const CART_MISSING_MESSAGE = "Deze kar is intussen gewijzigd. Klik op ‘Wachtrij verversen’.";
14
14
  export class CartMissingError extends Error {
15
15
  constructor() {
16
16
  super(CART_MISSING_MESSAGE);
@@ -56,7 +56,7 @@ export async function reprintCartsIndividually(carts, reprint) {
56
56
  outcome: jobId ? "created" : "not_created",
57
57
  jobId: jobId ?? null,
58
58
  reprint: true,
59
- reason: jobId ? null : "De database maakte geen nieuwe opdracht aan.",
59
+ reason: jobId ? null : "De printopdracht is niet aangemaakt. Probeer het opnieuw.",
60
60
  });
61
61
  }
62
62
  catch (e) {
@@ -16,13 +16,13 @@ export const PICK_LANGUAGES = [
16
16
  ];
17
17
  const nl = {
18
18
  statusToPrint: "Nog printen",
19
- statusPrinted: "Geprint",
20
- chooseLanguage: "Kies uw taal",
21
- chooseLanguageHint: "Kies uw taal · Choose your language · Wählen Sie Ihre Sprache",
19
+ statusPrinted: "Naar printer gestuurd",
20
+ chooseLanguage: "Kies je taal",
21
+ chooseLanguageHint: "Kies je taal · Choose your language · Wählen Sie Ihre Sprache",
22
22
  back: "Terug",
23
23
  changeLanguage: "Taal wijzigen",
24
24
  refresh: "Vernieuwen",
25
- printNext: "Volgende uitprinten",
25
+ printNext: "Volgende printen",
26
26
  offline: "Offline",
27
27
  queueCount: "documenten in wachtrij",
28
28
  loadingQueue: "Wachtrij laden...",
@@ -51,7 +51,7 @@ const nl = {
51
51
  noDocument: "Geen document beschikbaar.",
52
52
  notAvailable: "Dit document is niet meer beschikbaar.",
53
53
  confirmPrintTitle: "Opdracht bevestigen",
54
- confirmPrintBody: "Wilt u deze opdracht printen?",
54
+ confirmPrintBody: "Wil je deze opdracht printen?",
55
55
  confirm: "Bevestigen en printen",
56
56
  cancel: "Annuleren",
57
57
  };
@@ -59,7 +59,7 @@ const en = {
59
59
  statusToPrint: "To print",
60
60
  statusPrinted: "Printed",
61
61
  chooseLanguage: "Choose your language",
62
- chooseLanguageHint: "Kies uw taal · Choose your language · Wählen Sie Ihre Sprache",
62
+ chooseLanguageHint: "Kies je taal · Choose your language · Wählen Sie Ihre Sprache",
63
63
  back: "Back",
64
64
  changeLanguage: "Change language",
65
65
  refresh: "Refresh",
@@ -4,8 +4,8 @@ const nl = {
4
4
  jobTitle: "Printopdracht",
5
5
  queued: "Naar printer gestuurd",
6
6
  running: "Bezig met printen",
7
- done: "Geprint",
8
- failed: "Printen mislukt",
7
+ done: "Bij printer aangekomen",
8
+ failed: "Niet geprint",
9
9
  cancelled: "Printopdracht geannuleerd",
10
10
  unknown: "Status onbekend",
11
11
  retry: "Opnieuw printen",
@@ -4,7 +4,7 @@ export declare const RELEASE_PENDING_MESSAGE = "Het pickvenster voor deze order
4
4
  export declare const NO_ROW_IN_FILTER_MESSAGE = "Geen rij in het filter om te printen.";
5
5
  /** Fout die betekent: deze rij of zijn kar bestaat niet meer (vervangen). */
6
6
  export declare function isRowGoneError(e: unknown): boolean;
7
- /** Fout van "Volgende uitprinten" als de wachtrij volgens de database leeg is. */
7
+ /** Fout van "Volgende printen" als de wachtrij volgens de database leeg is. */
8
8
  export declare function isNoDocumentError(e: unknown): boolean;
9
9
  /** De bovenste zichtbare rij die nog geprint moet worden (volgorde van de lijst). */
10
10
  export declare function firstVisibleTarget(items: PickQueueItem[], lockedIds?: Set<string>): PickQueueItem | null;
@@ -1 +1 @@
1
- {"version":3,"file":"pickRowState.d.ts","sourceRoot":"","sources":["../../src/lib/pickRowState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,eAAO,MAAM,gBAAgB,wFAAwF,CAAC;AACtH,eAAO,MAAM,uBAAuB,8GACyE,CAAC;AAC9G,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAEhF,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAQlD;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAGrD;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,IAAI,CAGxG;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAQ3F;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE3E;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUtH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"pickRowState.d.ts","sourceRoot":"","sources":["../../src/lib/pickRowState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,eAAO,MAAM,gBAAgB,wFAAwF,CAAC;AACtH,eAAO,MAAM,uBAAuB,8GACyE,CAAC;AAC9G,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAEhF,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAQlD;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAGrD;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,IAAI,CAYxG;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAQ3F;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE3E;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUtH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -9,7 +9,7 @@ export function isRowGoneError(e) {
9
9
  msg.includes("bestaat niet meer") ||
10
10
  msg.includes("vervangen"));
11
11
  }
12
- /** Fout van "Volgende uitprinten" als de wachtrij volgens de database leeg is. */
12
+ /** Fout van "Volgende printen" als de wachtrij volgens de database leeg is. */
13
13
  export function isNoDocumentError(e) {
14
14
  const msg = (e instanceof Error ? e.message : String(e ?? "")).toLowerCase();
15
15
  return msg.includes("geen documenten beschikbaar") || msg.includes("geen document beschikbaar");
@@ -17,7 +17,11 @@ export function isNoDocumentError(e) {
17
17
  /** De bovenste zichtbare rij die nog geprint moet worden (volgorde van de lijst). */
18
18
  export function firstVisibleTarget(items, lockedIds) {
19
19
  const list = Array.isArray(items) ? items : [];
20
- return list.find((item) => !item.printed_at && !item.cancelled_at && !lockedIds?.has(item.id)) ?? null;
20
+ return (list.find((item) => !item.printed_at
21
+ && !item.cancelled_at
22
+ && !item.completed_at
23
+ && !(item.payload && item.payload["printbaar"] === false)
24
+ && !lockedIds?.has(item.id)) ?? null);
21
25
  }
22
26
  /** Kenmerk "kar xxxxxx" als meer rijen dezelfde documentnaam hebben. */
23
27
  export function duplicateNameTag(items, item) {