@flowselections/pick-schermen-kwekers 1.0.32 → 1.0.33
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/pick/PickScherm.d.ts.map +1 -1
- package/dist-lib/components/pick/PickScherm.js +115 -30
- package/dist-lib/components/pick/PreviewDialog.d.ts.map +1 -1
- package/dist-lib/components/pick/PreviewDialog.js +17 -1
- package/dist-lib/components/pick/QueueTable.d.ts +4 -1
- package/dist-lib/components/pick/QueueTable.d.ts.map +1 -1
- package/dist-lib/components/pick/QueueTable.js +16 -9
- package/dist-lib/integrations/supabase/types.d.ts +70 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/pickRowState.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickRowState.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickRowState.test.js +47 -0
- package/dist-lib/lib/pickApi.d.ts +2 -0
- package/dist-lib/lib/pickApi.d.ts.map +1 -1
- package/dist-lib/lib/pickApi.js +9 -0
- package/dist-lib/lib/pickRowState.d.ts +23 -0
- package/dist-lib/lib/pickRowState.d.ts.map +1 -0
- package/dist-lib/lib/pickRowState.js +68 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickRowState.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/pickRowState.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { duplicateNameTag, firstVisibleTarget, isRowGoneError, stuckMessage, stuckMinutesOf, } from "../pickRowState";
|
|
3
|
+
const row = (id, extra = {}) => ({ id, document_number: "PB-FO-2601402-K1", printed_at: null, cancelled_at: null, payload: {}, ...extra });
|
|
4
|
+
const job = (extra = {}) => ({ id: "j", status: "wachtend", printer_id: null, printer_naam: "Zebra hal 1", foutmelding: null, pogingen: 0, voltooid_op: null, ...extra });
|
|
5
|
+
describe("(3) vervangen rij herkennen", () => {
|
|
6
|
+
it("database- en voorbeeldfouten", () => {
|
|
7
|
+
expect(isRowGoneError(new Error("Dit document bestaat niet meer."))).toBe(true);
|
|
8
|
+
expect(isRowGoneError(new Error("De kar van deze rij bestaat niet meer in het karplan; ververs de pickwachtrij."))).toBe(true);
|
|
9
|
+
expect(isRowGoneError({ code: "P0002", message: "x" })).toBe(true);
|
|
10
|
+
expect(isRowGoneError("Deze rij is vervangen")).toBe(true);
|
|
11
|
+
expect(isRowGoneError(new Error("Failed to fetch"))).toBe(false);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
describe("(5)+(6) welke rij wordt geclaimd", () => {
|
|
15
|
+
it("de bovenste zichtbare, nog niet geprinte en niet vergrendelde rij", () => {
|
|
16
|
+
const items = [row("a", { printed_at: "2026-10-13" }), row("b"), row("c")];
|
|
17
|
+
expect(firstVisibleTarget(items, new Set())?.id).toBe("b");
|
|
18
|
+
expect(firstVisibleTarget(items, new Set(["b"]))?.id).toBe("c");
|
|
19
|
+
});
|
|
20
|
+
it("filter zonder zichtbare rij: niets", () => {
|
|
21
|
+
expect(firstVisibleTarget([], new Set())).toBeNull();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe("(7) dubbele documentnaam", () => {
|
|
25
|
+
it("kenmerk met de laatste 6 tekens van het kar-id, alleen bij dubbele namen", () => {
|
|
26
|
+
const a = row("a", { payload: { cartId: "20f76043-7cfb-4efe-b0dd-2133a2aace0e" } });
|
|
27
|
+
const b = row("b", { payload: { cartId: "0cc14d9a-3a39-444e-b5a5-b80c60eb24b7" } });
|
|
28
|
+
expect(duplicateNameTag([a, b], a)).toBe("kar aace0e");
|
|
29
|
+
expect(duplicateNameTag([a, b], b)).toBe("kar 60eb24b7".replace("60eb24b7", "eb24b7"));
|
|
30
|
+
expect(duplicateNameTag([a], a)).toBeNull();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("(8) printopdracht die blijft wachten", () => {
|
|
34
|
+
const sent = Date.parse("2026-10-13T12:00:00Z");
|
|
35
|
+
it("zonder drempel van de Engine: geen melding", () => {
|
|
36
|
+
expect(stuckMinutesOf(job(), sent, sent + 30 * 60000)).toBeNull();
|
|
37
|
+
});
|
|
38
|
+
it("boven de drempel: aantal minuten; eronder of voltooid: niets", () => {
|
|
39
|
+
expect(stuckMinutesOf(job({ stuck_minutes: 5 }), sent, sent + 7 * 60000)).toBe(7);
|
|
40
|
+
expect(stuckMinutesOf(job({ stuckMinutes: 5 }), sent, sent + 3 * 60000)).toBeNull();
|
|
41
|
+
expect(stuckMinutesOf(job({ stuckMinutes: 5, status: "voltooid" }), sent, sent + 60 * 60000)).toBeNull();
|
|
42
|
+
expect(stuckMessage(7)).toBe("Deze opdracht wacht al 7 minuten op de printer");
|
|
43
|
+
});
|
|
44
|
+
it("aanmaaktijd van de opdracht gaat voor het verzendmoment", () => {
|
|
45
|
+
expect(stuckMinutesOf(job({ stuckMinutes: 5, created_at: "2026-10-13T11:50:00Z" }), sent, sent + 60000)).toBe(11);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
@@ -186,6 +186,8 @@ export declare const pickApi: {
|
|
|
186
186
|
released: boolean;
|
|
187
187
|
reason: string | null;
|
|
188
188
|
}>;
|
|
189
|
+
/** Alleen lezen: is de order volgens de Engine vrijgegeven om te picken? Onbekend → null. */
|
|
190
|
+
orderReleased(orderRef: string | null | undefined): Promise<boolean | null>;
|
|
189
191
|
/**
|
|
190
192
|
* Karplan van de hele pick-eenheid: bij een bufferorder alle karren van alle
|
|
191
193
|
* orders in de buffer samen. Nummers en totalen komen uit de Engine.
|
|
@@ -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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"}
|
package/dist-lib/lib/pickApi.js
CHANGED
|
@@ -400,6 +400,15 @@ export const pickApi = {
|
|
|
400
400
|
reason: typeof row["reason"] === "string" ? row["reason"] : null,
|
|
401
401
|
};
|
|
402
402
|
},
|
|
403
|
+
/** Alleen lezen: is de order volgens de Engine vrijgegeven om te picken? Onbekend → null. */
|
|
404
|
+
async orderReleased(orderRef) {
|
|
405
|
+
if (!orderRef)
|
|
406
|
+
return null;
|
|
407
|
+
const { data, error } = await db.rpc("logistics_order_released", { p_order_ref: orderRef });
|
|
408
|
+
if (error)
|
|
409
|
+
return null;
|
|
410
|
+
return typeof data === "boolean" ? data : null;
|
|
411
|
+
},
|
|
403
412
|
/**
|
|
404
413
|
* Karplan van de hele pick-eenheid: bij een bufferorder alle karren van alle
|
|
405
414
|
* orders in de buffer samen. Nummers en totalen komen uit de Engine.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { PickPrintJob, PickQueueItem } from "./pickTypes";
|
|
2
|
+
export declare const ROW_GONE_MESSAGE = "Deze pickrij is vervangen, ververs de wachtrij";
|
|
3
|
+
export declare const RELEASE_PENDING_MESSAGE = "Het pickvenster voor deze order is nog niet begonnen; de pakbon kan nog niet worden opgebouwd of geprint.";
|
|
4
|
+
export declare const NO_ROW_IN_FILTER_MESSAGE = "Geen rij in het filter om te printen.";
|
|
5
|
+
/** Fout die betekent: deze rij of zijn kar bestaat niet meer (vervangen). */
|
|
6
|
+
export declare function isRowGoneError(e: unknown): boolean;
|
|
7
|
+
/** Fout van "Volgende uitprinten" als de wachtrij volgens de database leeg is. */
|
|
8
|
+
export declare function isNoDocumentError(e: unknown): boolean;
|
|
9
|
+
/** De bovenste zichtbare rij die nog geprint moet worden (volgorde van de lijst). */
|
|
10
|
+
export declare function firstVisibleTarget(items: PickQueueItem[], lockedIds?: Set<string>): PickQueueItem | null;
|
|
11
|
+
/** Kenmerk "kar xxxxxx" als meer rijen dezelfde documentnaam hebben. */
|
|
12
|
+
export declare function duplicateNameTag(items: PickQueueItem[], item: PickQueueItem): string | null;
|
|
13
|
+
export declare function isJobFinished(job: PickPrintJob | null | undefined): boolean;
|
|
14
|
+
/** Drempel uit het antwoord van de Engine; zonder drempel: null (geen eigen standaard). */
|
|
15
|
+
export declare function stuckThresholdOf(job: PickPrintJob | null | undefined): number | null;
|
|
16
|
+
/**
|
|
17
|
+
* Aantal minuten dat een niet-voltooide opdracht wacht, als dat boven de
|
|
18
|
+
* drempel van de Engine ligt; anders null. Begintijd: aanmaaktijd van de
|
|
19
|
+
* opdracht, of het moment waarop het scherm hem verstuurde.
|
|
20
|
+
*/
|
|
21
|
+
export declare function stuckMinutesOf(job: PickPrintJob | null | undefined, sentAt: number | null, now: number): number | null;
|
|
22
|
+
export declare function stuckMessage(minutes: number): string;
|
|
23
|
+
//# sourceMappingURL=pickRowState.d.ts.map
|
|
@@ -0,0 +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,mDAAmD,CAAC;AACjF,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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export const ROW_GONE_MESSAGE = "Deze pickrij is vervangen, ververs de wachtrij";
|
|
2
|
+
export const RELEASE_PENDING_MESSAGE = "Het pickvenster voor deze order is nog niet begonnen; de pakbon kan nog niet worden opgebouwd of geprint.";
|
|
3
|
+
export const NO_ROW_IN_FILTER_MESSAGE = "Geen rij in het filter om te printen.";
|
|
4
|
+
/** Fout die betekent: deze rij of zijn kar bestaat niet meer (vervangen). */
|
|
5
|
+
export function isRowGoneError(e) {
|
|
6
|
+
const rec = e && typeof e === "object" ? e : {};
|
|
7
|
+
const msg = (e instanceof Error ? e.message : typeof e === "string" ? e : String(rec["message"] ?? "")).toLowerCase();
|
|
8
|
+
return (rec["code"] === "P0002" ||
|
|
9
|
+
msg.includes("bestaat niet meer") ||
|
|
10
|
+
msg.includes("vervangen"));
|
|
11
|
+
}
|
|
12
|
+
/** Fout van "Volgende uitprinten" als de wachtrij volgens de database leeg is. */
|
|
13
|
+
export function isNoDocumentError(e) {
|
|
14
|
+
const msg = (e instanceof Error ? e.message : String(e ?? "")).toLowerCase();
|
|
15
|
+
return msg.includes("geen documenten beschikbaar") || msg.includes("geen document beschikbaar");
|
|
16
|
+
}
|
|
17
|
+
/** De bovenste zichtbare rij die nog geprint moet worden (volgorde van de lijst). */
|
|
18
|
+
export function firstVisibleTarget(items, lockedIds) {
|
|
19
|
+
const list = Array.isArray(items) ? items : [];
|
|
20
|
+
return list.find((item) => !item.printed_at && !item.cancelled_at && !lockedIds?.has(item.id)) ?? null;
|
|
21
|
+
}
|
|
22
|
+
/** Kenmerk "kar xxxxxx" als meer rijen dezelfde documentnaam hebben. */
|
|
23
|
+
export function duplicateNameTag(items, item) {
|
|
24
|
+
const list = Array.isArray(items) ? items : [];
|
|
25
|
+
const name = item.document_number;
|
|
26
|
+
if (!name)
|
|
27
|
+
return null;
|
|
28
|
+
if (list.filter((other) => other.document_number === name).length < 2)
|
|
29
|
+
return null;
|
|
30
|
+
const p = item.payload && typeof item.payload === "object" ? item.payload : {};
|
|
31
|
+
const ref = String(p["cartId"] ?? p["cart_id"] ?? item.reference ?? item.id);
|
|
32
|
+
return `kar ${ref.slice(-6)}`;
|
|
33
|
+
}
|
|
34
|
+
const DONE = new Set(["voltooid", "mislukt", "geannuleerd"]);
|
|
35
|
+
export function isJobFinished(job) {
|
|
36
|
+
return !!job && DONE.has(job.status);
|
|
37
|
+
}
|
|
38
|
+
/** Drempel uit het antwoord van de Engine; zonder drempel: null (geen eigen standaard). */
|
|
39
|
+
export function stuckThresholdOf(job) {
|
|
40
|
+
if (!job)
|
|
41
|
+
return null;
|
|
42
|
+
const r = job;
|
|
43
|
+
const raw = r["stuckMinutes"] ?? r["stuck_minutes"] ?? r["stuckAfterMinutes"] ?? r["stuck_after_minutes"];
|
|
44
|
+
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
45
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Aantal minuten dat een niet-voltooide opdracht wacht, als dat boven de
|
|
49
|
+
* drempel van de Engine ligt; anders null. Begintijd: aanmaaktijd van de
|
|
50
|
+
* opdracht, of het moment waarop het scherm hem verstuurde.
|
|
51
|
+
*/
|
|
52
|
+
export function stuckMinutesOf(job, sentAt, now) {
|
|
53
|
+
if (!job || isJobFinished(job))
|
|
54
|
+
return null;
|
|
55
|
+
const threshold = stuckThresholdOf(job);
|
|
56
|
+
if (threshold === null)
|
|
57
|
+
return null;
|
|
58
|
+
const r = job;
|
|
59
|
+
const created = Date.parse(String(r["created_at"] ?? r["aangemaakt_op"] ?? ""));
|
|
60
|
+
const start = Number.isFinite(created) ? created : sentAt;
|
|
61
|
+
if (start === null || !Number.isFinite(start))
|
|
62
|
+
return null;
|
|
63
|
+
const minutes = Math.floor((now - start) / 60000);
|
|
64
|
+
return minutes >= threshold ? minutes : null;
|
|
65
|
+
}
|
|
66
|
+
export function stuckMessage(minutes) {
|
|
67
|
+
return `Deze opdracht wacht al ${minutes} ${minutes === 1 ? "minuut" : "minuten"} op de printer`;
|
|
68
|
+
}
|