@flowselections/pick-schermen-kwekers 1.0.89 → 1.0.93

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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=productiebon.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productiebon.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/productiebon.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,105 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ vi.mock("@flowselections/core", () => ({ supabase: { rpc: vi.fn() } }));
3
+ import { herprint, isProductieBon, parseBon, parseOnderdelen, printEnVerwerk } from "../productiebon.js";
4
+ function deps(over = {}) {
5
+ const statuses = [...(over.statuses ?? ["geprint"])];
6
+ let t = 0;
7
+ const d = {
8
+ print: vi.fn(async () => ({ ok: true, jobId: "job-new" })),
9
+ status: vi.fn(async () => ({ status: (statuses.length > 1 ? statuses.shift() : statuses[0]), reden: null })),
10
+ verwerk: vi.fn(async () => ({ status: "verwerkt", waarschuwingen: [] })),
11
+ newKey: vi.fn(() => `k${Math.random()}`),
12
+ sleep: vi.fn(async (ms) => { t += ms; }),
13
+ now: () => t,
14
+ ...over,
15
+ };
16
+ return d;
17
+ }
18
+ describe("productiebon", () => {
19
+ it("herkent een productiebon aan productie_order_id", () => {
20
+ expect(isProductieBon({ documentType: "productiebon", productie_order_id: "x" })).toBe(true);
21
+ expect(isProductieBon({ documentType: "pakbon", orderId: "x" })).toBe(false);
22
+ });
23
+ it("onderdelen: totaal 80 bij 40 stuks is 2 per stuk", () => {
24
+ expect(parseOnderdelen([{ naam: "Pot", aantal: 80 }], 40)).toEqual([{ naam: "Pot", perStuk: 2, totaal: 80 }]);
25
+ });
26
+ it("wacht op goedkeuring zolang requiresApproval zonder approvedAt", () => {
27
+ const b = parseBon({ queue_id: "q", payload: { productie_order_id: "p", requiresApproval: true, approvedAt: null } });
28
+ expect(b?.wachtOpGoedkeuring).toBe(true);
29
+ });
30
+ it("print, wacht op geprint, verwerkt daarna", async () => {
31
+ const d = deps({ statuses: ["bezig", "geprint"] });
32
+ const u = await printEnVerwerk({ laatsteJob: null }, d);
33
+ expect(u.kind).toBe("verwerkt");
34
+ expect(d.print).toHaveBeenCalledTimes(1);
35
+ expect(d.verwerk).toHaveBeenCalledTimes(1);
36
+ });
37
+ it("mislukte print: niet verwerken", async () => {
38
+ const d = deps({ statuses: ["mislukt"] });
39
+ const u = await printEnVerwerk({ laatsteJob: null }, d);
40
+ expect(u.kind).toBe("print_mislukt");
41
+ expect(d.verwerk).not.toHaveBeenCalled();
42
+ });
43
+ it("na 2 minuten zonder geprint: time-out, niet verwerken", async () => {
44
+ const d = deps({ statuses: ["bezig"] });
45
+ const u = await printEnVerwerk({ laatsteJob: null }, d);
46
+ expect(u.kind).toBe("timeout");
47
+ expect(d.verwerk).not.toHaveBeenCalled();
48
+ });
49
+ it("vorige job alsnog geprint: verwerken zonder opnieuw printen", async () => {
50
+ const d = deps({ statuses: ["geprint"] });
51
+ const u = await printEnVerwerk({ laatsteJob: { jobId: "old", key: "k1", soort: "print" } }, d);
52
+ expect(u.kind).toBe("verwerkt");
53
+ expect(d.print).not.toHaveBeenCalled();
54
+ });
55
+ it("vorige job bezig: verder wachten, geen nieuwe print", async () => {
56
+ const d = deps({ statuses: ["bezig", "geprint"] });
57
+ await printEnVerwerk({ laatsteJob: { jobId: "old", key: "k1", soort: "print" } }, d);
58
+ expect(d.print).not.toHaveBeenCalled();
59
+ });
60
+ it("vorige job mislukt: nieuwe print met nieuwe sleutel", async () => {
61
+ const d = deps({ statuses: ["mislukt", "geprint"] });
62
+ await printEnVerwerk({ laatsteJob: { jobId: "old", key: "k1", soort: "print" } }, d);
63
+ expect(d.print).toHaveBeenCalledTimes(1);
64
+ expect(d.print.mock.calls[0][0]).not.toBe("k1");
65
+ });
66
+ it("al_verwerkt boekt niets opnieuw", async () => {
67
+ const d = deps({ verwerk: vi.fn(async () => ({ status: "al_verwerkt" })) });
68
+ expect((await printEnVerwerk({ laatsteJob: null }, d)).kind).toBe("al_verwerkt");
69
+ });
70
+ it("geen printplek: melding, geen verwerken", async () => {
71
+ const d = deps({ print: vi.fn(async () => ({ ok: false, foutcode: "GEEN_PRINTPLEK", reden: "x" })) });
72
+ expect((await printEnVerwerk({ laatsteJob: null }, d)).kind).toBe("geen_printplek");
73
+ expect(d.verwerk).not.toHaveBeenCalled();
74
+ });
75
+ it("geen recht om te verwerken (42501): regel blijft, duidelijke uitkomst", async () => {
76
+ const err = Object.assign(new Error("Je hebt geen rechten om voorraad te wijzigen."), { code: "42501" });
77
+ const d = deps({ verwerk: vi.fn(async () => { throw err; }) });
78
+ const u = await printEnVerwerk({ laatsteJob: null }, d);
79
+ expect(u).toMatchObject({ kind: "verwerken_mislukt", geenRecht: true });
80
+ });
81
+ it("opnieuw printen gebruikt een nieuwe sleutel en verwerkt nooit", async () => {
82
+ const d = deps();
83
+ const u = await herprint(d);
84
+ expect(u.kind).toBe("geprint");
85
+ expect(d.newKey).toHaveBeenCalledTimes(1);
86
+ expect(d.verwerk).not.toHaveBeenCalled();
87
+ });
88
+ });
89
+ import { parseVerwerkRes as pvr191, parseProductieStation as pps191 } from "../productiebon.js";
90
+ describe("1.0.91 Voorraad-stationverwerking en productiestation", () => {
91
+ it("geweigerd door Voorraad wordt niet als verwerkt gezien", () => {
92
+ expect(pvr191({ status: "geweigerd", tekst: "Stationgegevens ontbreken; de productieorder is niet verwerkt." }))
93
+ .toEqual({ status: "geweigerd", tekst: "Stationgegevens ontbreken; de productieorder is niet verwerkt." });
94
+ });
95
+ it("verwerkt met waarschuwingen blijft verwerkt", () => {
96
+ expect(pvr191({ status: "verwerkt", nummer: "PO-1", waarschuwingen: ["Onderdeel X negatief"] }))
97
+ .toEqual({ status: "verwerkt", waarschuwingen: ["Onderdeel X negatief"] });
98
+ });
99
+ it("alleen productiestation=true toont het productiescherm", () => {
100
+ expect(pps191({ ingesteld: true, productiestation: true }).productiestation).toBe(true);
101
+ expect(pps191({ ingesteld: true, productiestation: false }).productiestation).toBe(false);
102
+ expect(pps191({}).productiestation).toBe(false);
103
+ expect(pps191(null).productiestation).toBe(false);
104
+ });
105
+ });
@@ -80,6 +80,8 @@ export interface PickStation {
80
80
  lock_timeout_seconds: number;
81
81
  require_country_selection: boolean;
82
82
  active: boolean;
83
+ /** Vaste code van een standaardstation ('productie' / 'orders'); leeg bij eigen stations. */
84
+ system_code?: string | null;
83
85
  }
84
86
  export interface PickSortRule {
85
87
  field: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pickTypes.d.ts","sourceRoot":"","sources":["../../src/lib/pickTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pickTypes.d.ts","sourceRoot":"","sources":["../../src/lib/pickTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ export declare const PRINT_TIMEOUT_MS = 120000;
2
+ export type Onderdeel = {
3
+ naam: string;
4
+ perStuk: number | null;
5
+ totaal: number | null;
6
+ };
7
+ export type LaatsteJob = {
8
+ jobId: string;
9
+ key: string;
10
+ soort: "print" | "herprint";
11
+ };
12
+ export type ProductieBon = {
13
+ queueId: string;
14
+ productieOrderId: string;
15
+ nummer: string;
16
+ samenstelling: string;
17
+ foto: string | null;
18
+ aantal: number | null;
19
+ onderdelen: Onderdeel[];
20
+ opmerking: string | null;
21
+ aangemaaktOp: string | null;
22
+ wachtOpGoedkeuring: boolean;
23
+ afgerond: boolean;
24
+ laatsteJob: LaatsteJob | null;
25
+ };
26
+ export type ProductieLijst = {
27
+ items: ProductieBon[];
28
+ totaal: number;
29
+ printPlekId: string | null;
30
+ };
31
+ /** Herkennen volgens het Engine-koppelstuk: documentType productiebon én productie_order_id gevuld. */
32
+ export declare function isProductieBon(payload: unknown): boolean;
33
+ /** Onderdelen per stuk en totaal. Voorraad levert totalen; per stuk = totaal / aantal. */
34
+ export declare function parseOnderdelen(raw: unknown, aantal: number | null): Onderdeel[];
35
+ export declare function parseBon(raw: unknown): ProductieBon | null;
36
+ export declare function parseLijst(raw: unknown): ProductieLijst;
37
+ export type JobStatus = {
38
+ status: "wachtend" | "bezig" | "geprint" | "mislukt";
39
+ reden: string | null;
40
+ };
41
+ export declare function parseJobStatus(raw: unknown): JobStatus;
42
+ export type PrintRes = {
43
+ ok: true;
44
+ jobId: string;
45
+ } | {
46
+ ok: false;
47
+ foutcode: string | null;
48
+ reden: string;
49
+ };
50
+ export declare function parsePrintRes(raw: unknown): PrintRes;
51
+ export type VerwerkRes = {
52
+ status: "verwerkt";
53
+ waarschuwingen: string[];
54
+ } | {
55
+ status: "al_verwerkt";
56
+ } | {
57
+ status: "geweigerd";
58
+ tekst: string;
59
+ };
60
+ /** Antwoord van Voorraad (productie_order_verwerken_station), ongewijzigd doorgegeven door de wrapper. */
61
+ export declare function parseVerwerkRes(raw: unknown): VerwerkRes | null;
62
+ export declare function parseProductieStation(raw: unknown): {
63
+ ingesteld: boolean;
64
+ productiestation: boolean;
65
+ };
66
+ /** Melding op een gewoon pickstation als daar toch een productiebon in de wachtrij staat. */
67
+ export declare const PRODUCTIEBON_ELDERS = "Deze productiebon hoort op het productiestation";
68
+ export declare function newKey(): string;
69
+ /** Uitkomst van "Bon printen en verwerken". */
70
+ export type Uitkomst = {
71
+ kind: "verwerkt";
72
+ waarschuwingen: string[];
73
+ } | {
74
+ kind: "al_verwerkt";
75
+ } | {
76
+ kind: "print_mislukt";
77
+ reden: string;
78
+ } | {
79
+ kind: "geen_printplek";
80
+ } | {
81
+ kind: "timeout";
82
+ } | {
83
+ kind: "verwerken_mislukt";
84
+ reden: string;
85
+ geenRecht: boolean;
86
+ } | {
87
+ kind: "geweigerd";
88
+ tekst: string;
89
+ };
90
+ export type Deps = {
91
+ print: (key: string) => Promise<PrintRes>;
92
+ status: (jobId: string) => Promise<JobStatus>;
93
+ verwerk: () => Promise<VerwerkRes>;
94
+ newKey: () => string;
95
+ sleep: (ms: number) => Promise<void>;
96
+ now: () => number;
97
+ onJob?: (job: LaatsteJob) => void;
98
+ };
99
+ /** Wacht tot de opdracht geprint of mislukt is, maximaal timeoutMs. */
100
+ export declare function waitForJob(jobId: string, deps: Pick<Deps, "status" | "sleep" | "now">, timeoutMs?: number): Promise<JobStatus | null>;
101
+ /**
102
+ * Printen en verwerken. Een bestaande job van een eerdere poging wordt eerst
103
+ * gecontroleerd: geprint → alleen verwerken; bezig → verder wachten;
104
+ * alleen bij mislukt (of geen job) een nieuwe print met een nieuwe sleutel.
105
+ */
106
+ export declare function printEnVerwerk(bon: Pick<ProductieBon, "laatsteJob">, deps: Deps, timeoutMs?: number): Promise<Uitkomst>;
107
+ /** Opnieuw printen: altijd een nieuwe sleutel, nooit verwerken. */
108
+ export declare function herprint(deps: Pick<Deps, "print" | "status" | "newKey" | "sleep" | "now">, timeoutMs?: number): Promise<Uitkomst | {
109
+ kind: "geprint";
110
+ }>;
111
+ /** Database-aanroepen; altijd via de pickstation-wrappers met apparaatsleutel. */
112
+ export declare const productieApi: {
113
+ lijst(slug: string, geprint: boolean, offset?: number, limit?: number): Promise<ProductieLijst>;
114
+ print(slug: string, poId: string, key: string, herprint?: boolean): Promise<PrintRes>;
115
+ status(slug: string, jobId: string): Promise<JobStatus>;
116
+ verwerk(slug: string, poId: string): Promise<VerwerkRes>;
117
+ /** Is dit gekoppelde station het productiestation volgens de Engine? */
118
+ station(slug: string): Promise<{
119
+ ingesteld: boolean;
120
+ productiestation: boolean;
121
+ }>;
122
+ goedkeuren(slug: string, queueId: string): Promise<{
123
+ ok: boolean;
124
+ melding: string | null;
125
+ }>;
126
+ };
127
+ /** Melding na afloop, in gewone taal. */
128
+ export declare function uitkomstTekst(u: Uitkomst | {
129
+ kind: "geprint";
130
+ }, aantal: number | null, samenstelling: string): string;
131
+ //# sourceMappingURL=productiebon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productiebon.d.ts","sourceRoot":"","sources":["../../src/lib/productiebon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,255 @@
1
+ // Pickschermen 1.0.90: productiebonnen op een eigen pickstation.
2
+ // De Engine zet de bonnen in de wachtrij; dit scherm print en verwerkt ze.
3
+ // Volgorde is altijd: printen → wachten tot "geprint" → pas dan verwerken.
4
+ import { supabase } from "@flowselections/core";
5
+ import { activeDeviceKey } from "./pick159.js";
6
+ const db = supabase;
7
+ const rec = (v) => v && typeof v === "object" && !Array.isArray(v) ? v : null;
8
+ const txt = (v) => (typeof v === "string" && v.trim() ? v.trim() : null);
9
+ const num = (v) => {
10
+ const n = typeof v === "number" ? v : typeof v === "string" && v.trim() ? Number(v) : NaN;
11
+ return Number.isFinite(n) ? n : null;
12
+ };
13
+ export const PRINT_TIMEOUT_MS = 120000;
14
+ /** Herkennen volgens het Engine-koppelstuk: documentType productiebon én productie_order_id gevuld. */
15
+ export function isProductieBon(payload) {
16
+ const p = rec(payload);
17
+ return !!p && !!txt(p["productie_order_id"]) && (p["documentType"] === undefined || p["documentType"] === "productiebon");
18
+ }
19
+ /** Onderdelen per stuk en totaal. Voorraad levert totalen; per stuk = totaal / aantal. */
20
+ export function parseOnderdelen(raw, aantal) {
21
+ if (!Array.isArray(raw))
22
+ return [];
23
+ const out = [];
24
+ for (const r of raw) {
25
+ const o = rec(r);
26
+ if (!o)
27
+ continue;
28
+ const naam = txt(o["naam"]) ?? txt(o["name"]) ?? txt(o["tradeItemKey"]) ?? txt(o["trade_item_key"]);
29
+ if (!naam)
30
+ continue;
31
+ const perStukExpl = num(o["per_stuk"] ?? o["perStuk"] ?? o["aantal_per_stuk"]);
32
+ let totaal = num(o["totaal"] ?? o["aantal"]);
33
+ let perStuk = perStukExpl;
34
+ if (perStuk === null && totaal !== null && aantal)
35
+ perStuk = Math.round((totaal / aantal) * 1000) / 1000;
36
+ if (totaal === null && perStuk !== null && aantal !== null)
37
+ totaal = perStuk * aantal;
38
+ out.push({ naam, perStuk, totaal });
39
+ }
40
+ return out;
41
+ }
42
+ export function parseBon(raw) {
43
+ const r = rec(raw);
44
+ const p = rec(r?.["payload"]) ?? {};
45
+ const po = rec(r?.["productie_order"]);
46
+ const id = txt(p["productie_order_id"]);
47
+ const queueId = txt(r?.["queue_id"]);
48
+ if (!r || !id || !queueId)
49
+ return null;
50
+ const aantal = num(p["aantal"]) ?? num(po?.["aantal"]);
51
+ const onderdelen = parseOnderdelen(po?.["onderdelen"], aantal);
52
+ const job = rec(r["laatste_job"]);
53
+ const jobId = txt(job?.["job_id"]);
54
+ const key = txt(job?.["idempotency_key"]);
55
+ return {
56
+ queueId,
57
+ productieOrderId: id,
58
+ nummer: txt(r["document_number"]) ?? txt(p["productieOrderNummer"]) ?? txt(po?.["nummer"]) ?? "",
59
+ samenstelling: txt(po?.["naam"]) ?? txt(p["tradeItemKey"]) ?? "",
60
+ foto: txt(r["foto"]),
61
+ aantal,
62
+ onderdelen: onderdelen.length ? onderdelen : parseOnderdelen(p["onderdelen"], aantal),
63
+ opmerking: txt(p["opmerking"]) ?? txt(po?.["opmerking"]),
64
+ aangemaaktOp: txt(po?.["aangemaakt_op"]) ?? txt(r["created_at"]),
65
+ wachtOpGoedkeuring: p["requiresApproval"] === true && !txt(p["approvedAt"]),
66
+ afgerond: !!txt(r["completed_at"]) || po?.["status"] === "verwerkt",
67
+ laatsteJob: jobId && key ? { jobId, key, soort: job?.["soort"] === "herprint" ? "herprint" : "print" } : null,
68
+ };
69
+ }
70
+ export function parseLijst(raw) {
71
+ const r = rec(raw);
72
+ const items = Array.isArray(r?.["items"]) ? r["items"] : [];
73
+ return {
74
+ items: items.map(parseBon).filter((b) => b !== null),
75
+ totaal: num(r?.["totaal"]) ?? 0,
76
+ printPlekId: txt(r?.["print_plek_id"]),
77
+ };
78
+ }
79
+ export function parseJobStatus(raw) {
80
+ const r = rec(raw);
81
+ const s = r?.["status"];
82
+ if (s === "wachtend" || s === "bezig" || s === "geprint" || s === "mislukt")
83
+ return { status: s, reden: txt(r?.["reden"]) };
84
+ return { status: "mislukt", reden: "De printstatus is onbekend." };
85
+ }
86
+ export function parsePrintRes(raw) {
87
+ const r = rec(raw);
88
+ const jobId = txt(r?.["job_id"]);
89
+ if (r?.["ok"] === true && jobId)
90
+ return { ok: true, jobId };
91
+ return { ok: false, foutcode: txt(r?.["foutcode"]), reden: txt(r?.["reden"]) ?? "Printen is niet gelukt." };
92
+ }
93
+ /** Antwoord van Voorraad (productie_order_verwerken_station), ongewijzigd doorgegeven door de wrapper. */
94
+ export function parseVerwerkRes(raw) {
95
+ const r = rec(raw);
96
+ if (r?.["status"] === "al_verwerkt")
97
+ return { status: "al_verwerkt" };
98
+ if (r?.["status"] === "geweigerd")
99
+ return { status: "geweigerd", tekst: txt(r["tekst"]) ?? "De productieorder is niet verwerkt." };
100
+ if (r?.["status"] === "verwerkt") {
101
+ const w = Array.isArray(r["waarschuwingen"]) ? r["waarschuwingen"] : [];
102
+ return {
103
+ status: "verwerkt",
104
+ waarschuwingen: w.map((x) => txt(x) ?? txt(rec(x)?.["melding"]) ?? txt(rec(x)?.["tekst"])).filter((x) => !!x),
105
+ };
106
+ }
107
+ return null;
108
+ }
109
+ export function parseProductieStation(raw) {
110
+ const r = rec(raw);
111
+ return { ingesteld: r?.["ingesteld"] === true, productiestation: r?.["productiestation"] === true };
112
+ }
113
+ /** Melding op een gewoon pickstation als daar toch een productiebon in de wachtrij staat. */
114
+ export const PRODUCTIEBON_ELDERS = "Deze productiebon hoort op het productiestation";
115
+ export function newKey() {
116
+ return `pickstation-${crypto.randomUUID()}`;
117
+ }
118
+ /** Wacht tot de opdracht geprint of mislukt is, maximaal timeoutMs. */
119
+ export async function waitForJob(jobId, deps, timeoutMs = PRINT_TIMEOUT_MS) {
120
+ const start = deps.now();
121
+ let wait = 1000;
122
+ for (;;) {
123
+ const st = await deps.status(jobId);
124
+ if (st.status === "geprint" || st.status === "mislukt")
125
+ return st;
126
+ if (deps.now() - start + wait > timeoutMs)
127
+ return null;
128
+ await deps.sleep(wait);
129
+ wait = Math.min(wait * 2, 5000);
130
+ }
131
+ }
132
+ /**
133
+ * Printen en verwerken. Een bestaande job van een eerdere poging wordt eerst
134
+ * gecontroleerd: geprint → alleen verwerken; bezig → verder wachten;
135
+ * alleen bij mislukt (of geen job) een nieuwe print met een nieuwe sleutel.
136
+ */
137
+ export async function printEnVerwerk(bon, deps, timeoutMs = PRINT_TIMEOUT_MS) {
138
+ let jobId = null;
139
+ const vorige = bon.laatsteJob && bon.laatsteJob.soort === "print" ? bon.laatsteJob : null;
140
+ if (vorige) {
141
+ const st = await deps.status(vorige.jobId);
142
+ if (st.status !== "mislukt")
143
+ jobId = vorige.jobId;
144
+ }
145
+ if (!jobId) {
146
+ const key = deps.newKey();
147
+ const res = await deps.print(key);
148
+ if (!res.ok) {
149
+ if (res.foutcode === "GEEN_PRINTPLEK")
150
+ return { kind: "geen_printplek" };
151
+ return { kind: "print_mislukt", reden: res.reden };
152
+ }
153
+ jobId = res.jobId;
154
+ deps.onJob?.({ jobId, key, soort: "print" });
155
+ }
156
+ const st = await waitForJob(jobId, deps, timeoutMs);
157
+ if (!st)
158
+ return { kind: "timeout" };
159
+ if (st.status === "mislukt")
160
+ return { kind: "print_mislukt", reden: st.reden ?? "Printen is niet gelukt." };
161
+ try {
162
+ const v = await deps.verwerk();
163
+ if (v.status === "al_verwerkt")
164
+ return { kind: "al_verwerkt" };
165
+ if (v.status === "geweigerd")
166
+ return { kind: "geweigerd", tekst: v.tekst };
167
+ return { kind: "verwerkt", waarschuwingen: v.waarschuwingen };
168
+ }
169
+ catch (e) {
170
+ const code = e?.code;
171
+ console.error("[productiebon] verwerken mislukt", e);
172
+ return { kind: "verwerken_mislukt", reden: e instanceof Error ? e.message : String(e), geenRecht: code === "42501" };
173
+ }
174
+ }
175
+ /** Opnieuw printen: altijd een nieuwe sleutel, nooit verwerken. */
176
+ export async function herprint(deps, timeoutMs = PRINT_TIMEOUT_MS) {
177
+ const res = await deps.print(deps.newKey());
178
+ if (!res.ok)
179
+ return res.foutcode === "GEEN_PRINTPLEK" ? { kind: "geen_printplek" } : { kind: "print_mislukt", reden: res.reden };
180
+ const st = await waitForJob(res.jobId, deps, timeoutMs);
181
+ if (!st)
182
+ return { kind: "timeout" };
183
+ return st.status === "geprint" ? { kind: "geprint" } : { kind: "print_mislukt", reden: st.reden ?? "Printen is niet gelukt." };
184
+ }
185
+ function fail(error) {
186
+ const e = new Error(error?.message ?? "Onbekende fout");
187
+ e.code = error?.code;
188
+ throw e;
189
+ }
190
+ /** Database-aanroepen; altijd via de pickstation-wrappers met apparaatsleutel. */
191
+ export const productieApi = {
192
+ async lijst(slug, geprint, offset = 0, limit = 25) {
193
+ const { data, error } = await db.rpc("pickstation_productiebonnen", {
194
+ p_device_key: activeDeviceKey(), p_slug: slug, p_geprint: geprint, p_offset: offset, p_limit: limit,
195
+ });
196
+ if (error)
197
+ fail(error);
198
+ return parseLijst(data);
199
+ },
200
+ async print(slug, poId, key, herprint = false) {
201
+ const { data, error } = await db.rpc("pickstation_productiebon_printen", {
202
+ p_device_key: activeDeviceKey(), p_slug: slug, p_productie_order_id: poId, p_idempotency_key: key, p_herprint: herprint,
203
+ });
204
+ if (error) {
205
+ console.error("[productiebon] printen", error);
206
+ return { ok: false, foutcode: error.code ?? null, reden: "Printen is niet gelukt." };
207
+ }
208
+ return parsePrintRes(data);
209
+ },
210
+ async status(slug, jobId) {
211
+ const { data, error } = await db.rpc("pickstation_printjob_status", { p_device_key: activeDeviceKey(), p_slug: slug, p_job_id: jobId });
212
+ if (error)
213
+ fail(error);
214
+ return parseJobStatus(data);
215
+ },
216
+ async verwerk(slug, poId) {
217
+ const { data, error } = await db.rpc("pickstation_productie_verwerken", { p_device_key: activeDeviceKey(), p_slug: slug, p_productie_order_id: poId });
218
+ if (error)
219
+ fail(error);
220
+ const v = parseVerwerkRes(data);
221
+ if (!v)
222
+ throw new Error("Onbekend antwoord bij verwerken.");
223
+ return v;
224
+ },
225
+ /** Is dit gekoppelde station het productiestation volgens de Engine? */
226
+ async station(slug) {
227
+ const { data, error } = await db.rpc("pickstation_productie_station", { p_device_key: activeDeviceKey(), p_slug: slug });
228
+ if (error)
229
+ fail(error);
230
+ return parseProductieStation(data);
231
+ },
232
+ async goedkeuren(slug, queueId) {
233
+ const { data, error } = await db.rpc("pickstation_productiebon_goedkeuren", { p_device_key: activeDeviceKey(), p_slug: slug, p_queue_id: queueId });
234
+ if (error)
235
+ fail(error);
236
+ const r = rec(data);
237
+ return { ok: r?.["ok"] === true, melding: txt(r?.["melding"]) };
238
+ },
239
+ };
240
+ /** Melding na afloop, in gewone taal. */
241
+ export function uitkomstTekst(u, aantal, samenstelling) {
242
+ switch (u.kind) {
243
+ case "verwerkt": return `Verwerkt: ${aantal ?? "?"} × ${samenstelling}`;
244
+ case "al_verwerkt": return "Deze productieorder was al verwerkt. Er is niets opnieuw geboekt.";
245
+ case "geprint": return "De bon is opnieuw geprint.";
246
+ case "print_mislukt": return `Printen is niet gelukt: ${u.reden} Controleer de printer en probeer het opnieuw.`;
247
+ case "geweigerd": return `De bon is geprint, maar niet verwerkt: ${u.tekst}`;
248
+ case "geen_printplek": return "Dit station heeft geen printer. Koppel een printplek in de stationinstellingen.";
249
+ case "timeout": return "Printen duurt te lang. Controleer de printer en druk daarna opnieuw; de bon wordt dan niet dubbel geprint.";
250
+ case "verwerken_mislukt":
251
+ return u.geenRecht
252
+ ? "De bon is geprint, maar verwerken lukt nog niet vanaf dit scherm. Neem contact op met de beheerder."
253
+ : "De bon is geprint, maar verwerken is niet gelukt. Probeer het opnieuw; de bon wordt niet opnieuw geprint.";
254
+ }
255
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/pick-schermen-kwekers",
3
- "version": "1.0.89",
3
+ "version": "1.0.93",
4
4
  "flowselections": {
5
5
  "moduleId": "pick-schermen",
6
6
  "schema": {