@flowselections/pick-schermen-kwekers 1.0.36 → 1.0.39
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 +3 -2
- package/dist-lib/components/pick/StickerState.d.ts +11 -0
- package/dist-lib/components/pick/StickerState.d.ts.map +1 -0
- package/dist-lib/components/pick/StickerState.js +45 -0
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +2 -0
- package/dist-lib/integrations/supabase/types.d.ts +897 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/pickStickers.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickStickers.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickStickers.test.js +25 -0
- package/dist-lib/lib/__tests__/pickStickers138.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickStickers138.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickStickers138.test.js +32 -0
- package/dist-lib/lib/pickRowState.d.ts +1 -1
- package/dist-lib/lib/pickRowState.d.ts.map +1 -1
- package/dist-lib/lib/pickRowState.js +1 -1
- package/dist-lib/lib/pickStickers.d.ts +41 -0
- package/dist-lib/lib/pickStickers.d.ts.map +1 -0
- package/dist-lib/lib/pickStickers.js +111 -0
- package/dist-lib/lib/pickTypes.js +2 -2
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickStickers.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/pickStickers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
vi.mock("@flowselections/core", () => ({ supabase: {} }));
|
|
3
|
+
import { parseCartStickerState, parseStickerMeldingen, stickerStatusLabel } from "../pickStickers";
|
|
4
|
+
import { parsePickCartPlan } from "../pickTypes";
|
|
5
|
+
describe("stickers (alleen lezen)", () => {
|
|
6
|
+
it("regels geen lijst: stand onbekend", () => {
|
|
7
|
+
expect(parseCartStickerState({ regels: "x" })).toBeNull();
|
|
8
|
+
expect(parseCartStickerState(null)).toBeNull();
|
|
9
|
+
});
|
|
10
|
+
it("stand per sticker letterlijk", () => {
|
|
11
|
+
const s = parseCartStickerState({ cartId: "c", totaal: 1, regels: [{ soort: "tray", status: "in_printwachtrij", reden: "r" }] });
|
|
12
|
+
expect(s.regels[0].reden).toBe("r");
|
|
13
|
+
expect(stickerStatusLabel("in_printwachtrij")).toMatch(/niet fysiek/);
|
|
14
|
+
expect(stickerStatusLabel("nieuw")).toBe("nieuw");
|
|
15
|
+
});
|
|
16
|
+
it("meldingen letterlijk, gesloten weg, onleesbaar = null", () => {
|
|
17
|
+
expect(parseStickerMeldingen([{ melding: "Let op X" }, { melding: "oud", status: "gesloten" }])).toEqual([{ id: null, tekst: "Let op X" }]);
|
|
18
|
+
expect(parseStickerMeldingen({ meldingen: [] })).toEqual([]);
|
|
19
|
+
expect(parseStickerMeldingen("x")).toBeNull();
|
|
20
|
+
});
|
|
21
|
+
it("cartSeq bepaalt Kar X", () => {
|
|
22
|
+
const p = parsePickCartPlan({ orderId: "o", cartTotal: 2, carts: [{ cartId: "a", cartSeq: 2, cartTotal: 2, items: [] }, { cartId: "b", cartSeq: 1, cartTotal: 2, items: [] }] });
|
|
23
|
+
expect(p.carts.map((c) => c.cartIndex).sort()).toEqual([1, 2]);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickStickers138.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/pickStickers138.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, expect, it, vi, beforeEach } from "vitest";
|
|
2
|
+
const rpc = vi.fn();
|
|
3
|
+
vi.mock("@flowselections/core", () => ({ supabase: { rpc: (...a) => rpc(...a) } }));
|
|
4
|
+
import { fetchCartStickerState, fetchOrderStickerMeldingen, parsePickstationCartSticker, parsePickstationMeldingen, stickerSummary, stickerStatusLabel } from "../pickStickers";
|
|
5
|
+
const stand = (o) => ({ cartId: "c", totaal: 2, inPrintwachtrij: 0, wachtend: 0, geblokkeerd: 0, regels: [], ...o });
|
|
6
|
+
describe("1.0.38 omhulsel", () => {
|
|
7
|
+
beforeEach(() => rpc.mockReset());
|
|
8
|
+
it("herkent omhulsel, anders onbekend", () => {
|
|
9
|
+
expect(parsePickstationCartSticker({ toegang: true, stand: stand({}) })?.totaal).toBe(2);
|
|
10
|
+
expect(parsePickstationCartSticker({ toegang: false, reden: "niet_in_wachtrij_station" })).toBeNull();
|
|
11
|
+
expect(parsePickstationCartSticker({ stand: stand({}) })).toBeNull();
|
|
12
|
+
expect(parsePickstationCartSticker(stand({}))).toBeNull();
|
|
13
|
+
expect(parsePickstationMeldingen({ toegang: false })).toBeNull();
|
|
14
|
+
expect(parsePickstationMeldingen({ toegang: true, meldingen: [] })).toEqual([]);
|
|
15
|
+
});
|
|
16
|
+
it("totaal 0 en nooit klaar", () => {
|
|
17
|
+
expect(stickerSummary(stand({ totaal: 0 }))).toBe("Geen stickers nodig voor deze kar");
|
|
18
|
+
expect(stickerSummary(stand({ inPrintwachtrij: 2 }))).toBe("Alle stickers naar de printer gestuurd");
|
|
19
|
+
expect(stickerStatusLabel("klaar")).toBe("klaar om te printen");
|
|
20
|
+
});
|
|
21
|
+
it("met slug geen terugval naar logistics_*", async () => {
|
|
22
|
+
rpc.mockResolvedValue({ data: null, error: { message: "x" } });
|
|
23
|
+
await expect(fetchCartStickerState("c", "s")).rejects.toThrow();
|
|
24
|
+
await expect(fetchOrderStickerMeldingen("o", "s")).rejects.toThrow();
|
|
25
|
+
expect(rpc.mock.calls.map((c) => c[0])).toEqual(["pickstation_cart_sticker_state", "pickstation_order_sticker_meldingen"]);
|
|
26
|
+
});
|
|
27
|
+
it("zonder slug logistics_*", async () => {
|
|
28
|
+
rpc.mockResolvedValue({ data: stand({ totaal: 0 }), error: null });
|
|
29
|
+
expect((await fetchCartStickerState("c", null))?.totaal).toBe(0);
|
|
30
|
+
expect(rpc.mock.calls[0][0]).toBe("logistics_cart_sticker_state");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PickPrintJob, PickQueueItem } from "./pickTypes";
|
|
2
|
-
export declare const ROW_GONE_MESSAGE = "Deze pickrij
|
|
2
|
+
export declare const ROW_GONE_MESSAGE = "Deze pickrij bestaat niet meer (vervangen of afgehandeld); ververs de pickwachtrij.";
|
|
3
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
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). */
|
|
@@ -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,
|
|
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,4 +1,4 @@
|
|
|
1
|
-
export const ROW_GONE_MESSAGE = "Deze pickrij
|
|
1
|
+
export const ROW_GONE_MESSAGE = "Deze pickrij bestaat niet meer (vervangen of afgehandeld); ververs de pickwachtrij.";
|
|
2
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
3
|
export const NO_ROW_IN_FILTER_MESSAGE = "Geen rij in het filter om te printen.";
|
|
4
4
|
/** Fout die betekent: deze rij of zijn kar bestaat niet meer (vervangen). */
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const STICKER_UNKNOWN = "Stickerstand onbekend";
|
|
2
|
+
export interface StickerLine {
|
|
3
|
+
soort: string | null;
|
|
4
|
+
stickerId: string | null;
|
|
5
|
+
kopieen: number | null;
|
|
6
|
+
status: string | null;
|
|
7
|
+
reden: string | null;
|
|
8
|
+
printJobId: string | null;
|
|
9
|
+
breedteMm: number | null;
|
|
10
|
+
hoogteMm: number | null;
|
|
11
|
+
}
|
|
12
|
+
export interface CartStickerState {
|
|
13
|
+
cartId: string | null;
|
|
14
|
+
totaal: number | null;
|
|
15
|
+
inPrintwachtrij: number | null;
|
|
16
|
+
wachtend: number | null;
|
|
17
|
+
geblokkeerd: number | null;
|
|
18
|
+
regels: StickerLine[];
|
|
19
|
+
}
|
|
20
|
+
export interface StickerMelding {
|
|
21
|
+
id: string | null;
|
|
22
|
+
tekst: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const STICKER_STATUS_LABEL: Record<string, string>;
|
|
25
|
+
export declare function stickerStatusLabel(s: string | null): string;
|
|
26
|
+
/** null = onleesbaar antwoord (stand onbekend). Leest de kale stand. */
|
|
27
|
+
export declare function parseCartStickerState(raw: unknown): CartStickerState | null;
|
|
28
|
+
/** Pickstation-omhulsel: alleen toegang === true met een geldige stand telt. */
|
|
29
|
+
export declare function parsePickstationCartSticker(raw: unknown): CartStickerState | null;
|
|
30
|
+
/** Meldingen letterlijk; null = onleesbaar. Gesloten meldingen tellen niet. */
|
|
31
|
+
export declare function parseStickerMeldingen(raw: unknown): StickerMelding[] | null;
|
|
32
|
+
export declare function parsePickstationMeldingen(raw: unknown): StickerMelding[] | null;
|
|
33
|
+
/** Samenvattende regel; nooit "Klaar" (de Engine heeft geen veld voor echt geprint). */
|
|
34
|
+
export declare function stickerSummary(s: CartStickerState): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* Met slug (openbaar pickstation): alleen pickstation_cart_sticker_state, geen terugval.
|
|
37
|
+
* Zonder slug (ingelogd scherm): logistics_cart_sticker_state. Fout of onbekende vorm: null.
|
|
38
|
+
*/
|
|
39
|
+
export declare function fetchCartStickerState(cartId: string, slug: string | null): Promise<CartStickerState | null>;
|
|
40
|
+
export declare function fetchOrderStickerMeldingen(orderId: string, slug: string | null): Promise<StickerMelding[] | null>;
|
|
41
|
+
//# sourceMappingURL=pickStickers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickStickers.d.ts","sourceRoot":"","sources":["../../src/lib/pickStickers.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AACD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AACD,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAOpE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQvD,CAAC;AACF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG3D;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAqB3E;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAIjF;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,EAAE,GAAG,IAAI,CAe3E;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,EAAE,GAAG,IAAI,CAI/E;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAIjE;AAQD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGjH;AAED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAGvH"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Stickerstand en stickermeldingen: alleen lezen uit de Engine. Deze module
|
|
2
|
+
// voert zelf nooit print.sticker/print.traysticker uit en haalt geen PDF op.
|
|
3
|
+
import { supabase } from "@flowselections/core";
|
|
4
|
+
const db = supabase;
|
|
5
|
+
export const STICKER_UNKNOWN = "Stickerstand onbekend";
|
|
6
|
+
const rec = (v) => v && typeof v === "object" && !Array.isArray(v) ? v : null;
|
|
7
|
+
const txt = (v) => (typeof v === "string" && v.trim() ? v : typeof v === "number" ? String(v) : null);
|
|
8
|
+
const num = (v) => (typeof v === "number" && Number.isFinite(v) ? v : null);
|
|
9
|
+
export const STICKER_STATUS_LABEL = {
|
|
10
|
+
wacht_op_moment: "wacht op moment",
|
|
11
|
+
klaar: "klaar om te printen",
|
|
12
|
+
in_printwachtrij: "in de printwachtrij (nog niet fysiek geprint)",
|
|
13
|
+
geblokkeerd: "geblokkeerd",
|
|
14
|
+
mislukt: "mislukt",
|
|
15
|
+
afgemeld: "afgemeld bij de printer (nog niet bevestigd geprint)",
|
|
16
|
+
niet_printen: "niet printen",
|
|
17
|
+
};
|
|
18
|
+
export function stickerStatusLabel(s) {
|
|
19
|
+
if (!s)
|
|
20
|
+
return "onbekend";
|
|
21
|
+
return STICKER_STATUS_LABEL[s] ?? s;
|
|
22
|
+
}
|
|
23
|
+
/** null = onleesbaar antwoord (stand onbekend). Leest de kale stand. */
|
|
24
|
+
export function parseCartStickerState(raw) {
|
|
25
|
+
const r = rec(raw);
|
|
26
|
+
if (!r || !Array.isArray(r["regels"]))
|
|
27
|
+
return null;
|
|
28
|
+
const totaal = num(r["totaal"]);
|
|
29
|
+
if (totaal == null)
|
|
30
|
+
return null;
|
|
31
|
+
return {
|
|
32
|
+
cartId: txt(r["cartId"]),
|
|
33
|
+
totaal,
|
|
34
|
+
inPrintwachtrij: num(r["inPrintwachtrij"]),
|
|
35
|
+
wachtend: num(r["wachtend"]),
|
|
36
|
+
geblokkeerd: num(r["geblokkeerd"]),
|
|
37
|
+
regels: r["regels"].flatMap((x) => {
|
|
38
|
+
const l = rec(x);
|
|
39
|
+
if (!l)
|
|
40
|
+
return [];
|
|
41
|
+
return [{
|
|
42
|
+
soort: txt(l["soort"]), stickerId: txt(l["stickerId"]), kopieen: num(l["kopieen"]),
|
|
43
|
+
status: txt(l["status"]), reden: txt(l["reden"]), printJobId: txt(l["printJobId"]),
|
|
44
|
+
breedteMm: num(l["breedteMm"]), hoogteMm: num(l["hoogteMm"]),
|
|
45
|
+
}];
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Pickstation-omhulsel: alleen toegang === true met een geldige stand telt. */
|
|
50
|
+
export function parsePickstationCartSticker(raw) {
|
|
51
|
+
const r = rec(raw);
|
|
52
|
+
if (!r || r["toegang"] !== true)
|
|
53
|
+
return null;
|
|
54
|
+
return parseCartStickerState(r["stand"]);
|
|
55
|
+
}
|
|
56
|
+
/** Meldingen letterlijk; null = onleesbaar. Gesloten meldingen tellen niet. */
|
|
57
|
+
export function parseStickerMeldingen(raw) {
|
|
58
|
+
const r = rec(raw);
|
|
59
|
+
const list = Array.isArray(raw) ? raw : Array.isArray(r?.["meldingen"]) ? r["meldingen"] : null;
|
|
60
|
+
if (!list)
|
|
61
|
+
return null;
|
|
62
|
+
return list.flatMap((x) => {
|
|
63
|
+
if (typeof x === "string")
|
|
64
|
+
return x.trim() ? [{ id: null, tekst: x }] : [];
|
|
65
|
+
const m = rec(x);
|
|
66
|
+
if (!m)
|
|
67
|
+
return [];
|
|
68
|
+
const status = txt(m["status"]);
|
|
69
|
+
if (m["gesloten"] === true || m["closed"] === true || status === "gesloten" || status === "closed")
|
|
70
|
+
return [];
|
|
71
|
+
const basis = txt(m["melding"] ?? m["tekst"] ?? m["message"]);
|
|
72
|
+
if (!basis)
|
|
73
|
+
return [];
|
|
74
|
+
const extra = [txt(m["plek"]), txt(m["sinds"])].filter(Boolean).join(" · ");
|
|
75
|
+
return [{ id: txt(m["id"]) ?? txt(m["stickerId"]), tekst: extra ? `${basis} (${extra})` : basis }];
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export function parsePickstationMeldingen(raw) {
|
|
79
|
+
const r = rec(raw);
|
|
80
|
+
if (!r || r["toegang"] !== true || !Array.isArray(r["meldingen"]))
|
|
81
|
+
return null;
|
|
82
|
+
return parseStickerMeldingen(r["meldingen"]);
|
|
83
|
+
}
|
|
84
|
+
/** Samenvattende regel; nooit "Klaar" (de Engine heeft geen veld voor echt geprint). */
|
|
85
|
+
export function stickerSummary(s) {
|
|
86
|
+
if (s.totaal === 0)
|
|
87
|
+
return "Geen stickers nodig voor deze kar";
|
|
88
|
+
if (s.wachtend === 0 && s.geblokkeerd === 0 && (s.inPrintwachtrij ?? 0) > 0)
|
|
89
|
+
return "Alle stickers naar de printer gestuurd";
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
async function call(fn, args) {
|
|
93
|
+
const { data, error } = await db.rpc(fn, args);
|
|
94
|
+
if (error)
|
|
95
|
+
throw new Error(error.message);
|
|
96
|
+
return data;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Met slug (openbaar pickstation): alleen pickstation_cart_sticker_state, geen terugval.
|
|
100
|
+
* Zonder slug (ingelogd scherm): logistics_cart_sticker_state. Fout of onbekende vorm: null.
|
|
101
|
+
*/
|
|
102
|
+
export async function fetchCartStickerState(cartId, slug) {
|
|
103
|
+
if (slug)
|
|
104
|
+
return parsePickstationCartSticker(await call("pickstation_cart_sticker_state", { p_slug: slug, p_cart_id: cartId }));
|
|
105
|
+
return parseCartStickerState(await call("logistics_cart_sticker_state", { p_cart_id: cartId }));
|
|
106
|
+
}
|
|
107
|
+
export async function fetchOrderStickerMeldingen(orderId, slug) {
|
|
108
|
+
if (slug)
|
|
109
|
+
return parsePickstationMeldingen(await call("pickstation_order_sticker_meldingen", { p_slug: slug, p_order_id: orderId }));
|
|
110
|
+
return parseStickerMeldingen(await call("logistics_order_sticker_meldingen", { p_order_id: orderId }));
|
|
111
|
+
}
|
|
@@ -58,7 +58,7 @@ export function parsePickCartPlan(value) {
|
|
|
58
58
|
const carts = rawCarts.flatMap((rawCart) => {
|
|
59
59
|
const cart = recordOf(rawCart);
|
|
60
60
|
const cartId = textOf(cart?.["cartId"] ?? cart?.["cart_id"]);
|
|
61
|
-
const cartNumber = numberOf(cart?.["cartNumber"] ?? cart?.["cart_number"]);
|
|
61
|
+
const cartNumber = numberOf(cart?.["cartSeq"] ?? cart?.["cart_seq"] ?? cart?.["cartNumber"] ?? cart?.["cart_number"]);
|
|
62
62
|
const cartTotal = numberOf(cart?.["cartTotal"] ?? cart?.["cart_total"]);
|
|
63
63
|
const isShared = cart?.["isShared"] === true;
|
|
64
64
|
if (!cartId
|
|
@@ -194,7 +194,7 @@ export function cartRowOf(item) {
|
|
|
194
194
|
return null;
|
|
195
195
|
return {
|
|
196
196
|
cartId: textOf(p["cartId"] ?? p["cart_id"]),
|
|
197
|
-
cartIndex: numberOf(p["cartNumber"] ?? p["cart_number"] ?? p["cartIndex"]),
|
|
197
|
+
cartIndex: numberOf(p["cartSeq"] ?? p["cart_seq"] ?? p["cartNumber"] ?? p["cart_number"] ?? p["cartIndex"]),
|
|
198
198
|
cartTotal: numberOf(p["cartTotal"] ?? p["cart_total"]),
|
|
199
199
|
};
|
|
200
200
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/pick-schermen-kwekers",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.39",
|
|
4
4
|
"flowselections": {
|
|
5
5
|
"moduleId": "pick-schermen",
|
|
6
6
|
"pages": [
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"@cloudflare/vite-plugin": "^1.25.5",
|
|
66
66
|
"@eslint/js": "^9.32.0",
|
|
67
67
|
"@flowselections/core": "1.0.29",
|
|
68
|
-
"@lovable.dev/vite-tanstack-config": "2.
|
|
68
|
+
"@lovable.dev/vite-tanstack-config": "2.26.5",
|
|
69
69
|
"@rsbuild/core": "^1.0.0",
|
|
70
70
|
"@tailwindcss/vite": "^4.2.1",
|
|
71
71
|
"@tanstack/react-query": "^5.83.0",
|