@flowselections/pick-schermen-kwekers 1.0.64 → 1.0.66
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 +4 -0
- package/dist-lib/components/pick/StickerReprintButton.d.ts.map +1 -1
- package/dist-lib/components/pick/StickerReprintButton.js +2 -1
- package/dist-lib/components/pick/StickerState.d.ts.map +1 -1
- package/dist-lib/components/pick/StickerState.js +7 -5
- package/dist-lib/hooks/useCartStickerStates.d.ts +8 -0
- package/dist-lib/hooks/useCartStickerStates.d.ts.map +1 -0
- package/dist-lib/hooks/useCartStickerStates.js +41 -0
- package/dist-lib/integrations/supabase/types.d.ts +81 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/pickStickerBundle.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickStickerBundle.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickStickerBundle.test.js +27 -0
- package/dist-lib/lib/pick159.js +1 -1
- package/dist-lib/lib/pickStickerBundle.d.ts +16 -0
- package/dist-lib/lib/pickStickerBundle.d.ts.map +1 -0
- package/dist-lib/lib/pickStickerBundle.js +36 -0
- package/package.json +7 -2
- package/schema/pickschermen.sql +5315 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickScherm.d.ts","sourceRoot":"","sources":["../../../src/components/pick/PickScherm.tsx"],"names":[],"mappings":"AA0DA,OAAO,EAaL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"PickScherm.d.ts","sourceRoot":"","sources":["../../../src/components/pick/PickScherm.tsx"],"names":[],"mappings":"AA0DA,OAAO,EAaL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AA8D7B,UAAU,KAAK;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAwBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,+BAgsEpD"}
|
|
@@ -22,6 +22,7 @@ import { friendlyPickError, getPickUiTexts } from "../../lib/pickUiText.js";
|
|
|
22
22
|
import { getPrintJobTexts } from "../../lib/pickPrintJobText.js";
|
|
23
23
|
import { defaultFilters, usePickDays, usePickHeartbeat, usePickQueue, } from "../../hooks/usePickQueue.js";
|
|
24
24
|
import { usePickPrintStatus } from "../../hooks/usePickPrintStatus.js";
|
|
25
|
+
import { useCartStickerStates } from "../../hooks/useCartStickerStates.js";
|
|
25
26
|
import { activeDeviceKey } from "../../lib/pick159.js";
|
|
26
27
|
import { usePickDocumentTypes, usePickStatuses, useStationPrintPlek, } from "../../hooks/usePickConfig.js";
|
|
27
28
|
import { usePrintBatch, usePrintJob } from "../../hooks/usePrintJob.js";
|
|
@@ -232,6 +233,9 @@ export function PickScherm({ station, onBack }) {
|
|
|
232
233
|
const { result: printStatus, loading: printStatusLoading, inPrint, } = usePickPrintStatus(printStatusIds, activeDeviceKey() ? station.slug ?? null : null, lang !== null);
|
|
233
234
|
const inPrintRef = useRef(inPrint);
|
|
234
235
|
inPrintRef.current = inPrint;
|
|
236
|
+
// 1.0.65: stickerstand van alle karren van de order in één aanroep (openbaar station).
|
|
237
|
+
const stickerCartIds = useMemo(() => (Array.isArray(cartPlan?.carts) ? cartPlan.carts.map((c) => c.cartId).filter((x) => !!x) : []), [cartPlan]);
|
|
238
|
+
useCartStickerStates(stickerCartIds, station.slug ?? null);
|
|
235
239
|
/** Geprint maar nog niet gescand, van een eerdere pickdag (blijft open tot de scan). */
|
|
236
240
|
const viewDay = chosenDay ?? pickDay ?? null;
|
|
237
241
|
const { data: earlierRaw, refetch: refetchEarlier } = useQuery({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickerReprintButton.d.ts","sourceRoot":"","sources":["../../../src/components/pick/StickerReprintButton.tsx"],"names":[],"mappings":"AAMA,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"StickerReprintButton.d.ts","sourceRoot":"","sources":["../../../src/components/pick/StickerReprintButton.tsx"],"names":[],"mappings":"AAMA,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAsE7F"}
|
|
@@ -17,7 +17,7 @@ export function StickerReprintButton({ cartId, slug }) {
|
|
|
17
17
|
refetchInterval: 15000,
|
|
18
18
|
placeholderData: (prev) => prev,
|
|
19
19
|
retry: 1,
|
|
20
|
-
enabled:
|
|
20
|
+
enabled: false, // gevuld door useCartStickerStates
|
|
21
21
|
});
|
|
22
22
|
if (!slug || !hasPrintedSticker(q.data))
|
|
23
23
|
return null;
|
|
@@ -41,6 +41,7 @@ export function StickerReprintButton({ cartId, slug }) {
|
|
|
41
41
|
finally {
|
|
42
42
|
setBusy(false);
|
|
43
43
|
qc.invalidateQueries({ queryKey: ["pick", "sticker-state", cartId] });
|
|
44
|
+
qc.invalidateQueries({ queryKey: ["pick", "sticker-bundle"] });
|
|
44
45
|
}
|
|
45
46
|
};
|
|
46
47
|
return (_jsxs("div", { className: "mt-3", children: [_jsx("button", { type: "button", onClick: () => setOpen(true), className: "rounded-md border bg-background px-3 py-2 text-sm font-medium text-foreground hover:bg-muted", children: "Stickers opnieuw printen" }), open && (_jsx("div", { role: "dialog", "aria-modal": "true", className: "fixed inset-0 z-50 flex items-center justify-center bg-foreground/40 p-4", children: _jsxs("div", { className: "w-full max-w-sm rounded-lg border bg-background p-4 shadow-lg", children: [_jsx("p", { className: "font-medium text-foreground", children: "Stickers van deze kar opnieuw printen?" }), _jsxs("label", { className: "mt-3 block text-sm text-muted-foreground", children: ["Reden (optioneel)", _jsx("input", { value: reden, onChange: (e) => setReden(e.target.value), disabled: busy, className: "mt-1 w-full rounded-md border bg-background px-2 py-1.5 text-sm text-foreground" })] }), detail && (_jsxs("details", { className: "mt-2 text-xs text-muted-foreground", children: [_jsx("summary", { className: "cursor-pointer", children: "Details voor beheer" }), _jsx("p", { children: detail })] })), _jsxs("div", { className: "mt-4 flex justify-end gap-2", children: [_jsx("button", { type: "button", disabled: busy, onClick: () => setOpen(false), className: "rounded-md border px-3 py-1.5 text-sm text-foreground", children: "Annuleren" }), _jsx("button", { type: "button", disabled: busy, onClick: run, className: "rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground disabled:opacity-60", children: busy ? "Bezig…" : "Opnieuw printen" })] })] }) }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickerState.d.ts","sourceRoot":"","sources":["../../../src/components/pick/StickerState.tsx"],"names":[],"mappings":"AAcA,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"StickerState.d.ts","sourceRoot":"","sources":["../../../src/components/pick/StickerState.tsx"],"names":[],"mappings":"AAcA,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAwC5F;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAoBvG;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCA+CzF;AAED,6HAA6H;AAC7H,wBAAgB,yBAAyB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAiBpF"}
|
|
@@ -10,11 +10,12 @@ export function StickerFitMeldingen({ cartId, slug }) {
|
|
|
10
10
|
const q = useQuery({
|
|
11
11
|
queryKey: ["pick", "sticker-fit", cartId, slug],
|
|
12
12
|
queryFn: () => fetchStickerFit(cartId, slug),
|
|
13
|
+
enabled: !slug, // openbaar station: gevuld door useCartStickerStates
|
|
13
14
|
refetchInterval: POLL,
|
|
14
15
|
placeholderData: (prev) => prev,
|
|
15
16
|
retry: 1,
|
|
16
17
|
});
|
|
17
|
-
if (q.
|
|
18
|
+
if (q.data === undefined && !q.isError)
|
|
18
19
|
return null;
|
|
19
20
|
if (q.isError || q.data == null) {
|
|
20
21
|
return _jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: STICKER_FIT_UNKNOWN });
|
|
@@ -37,12 +38,12 @@ export function OrderStickerMeldingen({ orderId, slug }) {
|
|
|
37
38
|
const q = useQuery({
|
|
38
39
|
queryKey: ["pick", "sticker-meldingen", orderId, slug],
|
|
39
40
|
queryFn: () => fetchOrderStickerMeldingen(orderId, slug),
|
|
40
|
-
enabled: !!orderId,
|
|
41
|
+
enabled: !!orderId && !slug,
|
|
41
42
|
refetchInterval: POLL,
|
|
42
43
|
placeholderData: (prev) => prev,
|
|
43
44
|
retry: 1,
|
|
44
45
|
});
|
|
45
|
-
if (!orderId || q.
|
|
46
|
+
if (!orderId || (q.data === undefined && !q.isError))
|
|
46
47
|
return null;
|
|
47
48
|
if (q.isError || q.data == null) {
|
|
48
49
|
return _jsxs("p", { className: "mb-3 text-xs text-muted-foreground", children: ["Stickermeldingen: ", STICKER_UNKNOWN] });
|
|
@@ -57,6 +58,7 @@ export function CartStickerState({ cartId, slug }) {
|
|
|
57
58
|
const q = useQuery({
|
|
58
59
|
queryKey: ["pick", "sticker-state", cartId, slug],
|
|
59
60
|
queryFn: () => fetchCartStickerState(cartId, slug),
|
|
61
|
+
enabled: !slug,
|
|
60
62
|
refetchInterval: POLL,
|
|
61
63
|
placeholderData: (prev) => prev,
|
|
62
64
|
retry: 1,
|
|
@@ -65,12 +67,12 @@ export function CartStickerState({ cartId, slug }) {
|
|
|
65
67
|
const u = useQuery({
|
|
66
68
|
queryKey: ["pick", "uitwijk", jobIds.join(",")],
|
|
67
69
|
queryFn: () => fetchUitwijk(jobIds),
|
|
68
|
-
enabled: jobIds.length > 0,
|
|
70
|
+
enabled: !slug && jobIds.length > 0,
|
|
69
71
|
refetchInterval: POLL,
|
|
70
72
|
placeholderData: (prev) => prev,
|
|
71
73
|
retry: 1,
|
|
72
74
|
});
|
|
73
|
-
if (q.
|
|
75
|
+
if (q.data === undefined && !q.isError)
|
|
74
76
|
return null;
|
|
75
77
|
if (q.isError || !q.data) {
|
|
76
78
|
return _jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: STICKER_UNKNOWN });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const STICKER_POLL = 15000;
|
|
2
|
+
/**
|
|
3
|
+
* Openbaar pickstation: stickerstand, controle, meldingen en uitwijk voor alle
|
|
4
|
+
* karren van de order in één aanroep. Vult de cache van de losse onderdelen,
|
|
5
|
+
* die met een slug zelf niet meer opvragen.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useCartStickerStates(cartIds: string[], slug: string | null): import("@tanstack/react-query").UseQueryResult<import("../lib/pickStickerBundle.js").CartStickerBundleItem[], Error>;
|
|
8
|
+
//# sourceMappingURL=useCartStickerStates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCartStickerStates.d.ts","sourceRoot":"","sources":["../../src/hooks/useCartStickerStates.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,QAAS,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,qHA0B1E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useEffect, useMemo } from "react";
|
|
2
|
+
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
3
|
+
import { supabase } from "@flowselections/core";
|
|
4
|
+
import { keyedRpc } from "../lib/pick159.js";
|
|
5
|
+
import { parseCartStickerBundle } from "../lib/pickStickerBundle.js";
|
|
6
|
+
import { pickMeasure } from "../lib/pickPerf.js";
|
|
7
|
+
const db = keyedRpc(supabase);
|
|
8
|
+
export const STICKER_POLL = 15000;
|
|
9
|
+
/**
|
|
10
|
+
* Openbaar pickstation: stickerstand, controle, meldingen en uitwijk voor alle
|
|
11
|
+
* karren van de order in één aanroep. Vult de cache van de losse onderdelen,
|
|
12
|
+
* die met een slug zelf niet meer opvragen.
|
|
13
|
+
*/
|
|
14
|
+
export function useCartStickerStates(cartIds, slug) {
|
|
15
|
+
const qc = useQueryClient();
|
|
16
|
+
const ids = useMemo(() => Array.from(new Set(cartIds.filter(Boolean))).sort(), [cartIds]);
|
|
17
|
+
const q = useQuery({
|
|
18
|
+
queryKey: ["pick", "sticker-bundle", slug, ids.join(",")],
|
|
19
|
+
enabled: !!slug && ids.length > 0,
|
|
20
|
+
refetchInterval: STICKER_POLL,
|
|
21
|
+
retry: 1,
|
|
22
|
+
queryFn: async () => {
|
|
23
|
+
const { data, error } = await pickMeasure("stickerstand", () => db.rpc("pickstation_cart_sticker_states", { p_slug: slug, p_cart_ids: ids }));
|
|
24
|
+
if (error)
|
|
25
|
+
throw new Error(error.message);
|
|
26
|
+
return parseCartStickerBundle(data);
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (!q.data)
|
|
31
|
+
return;
|
|
32
|
+
for (const k of q.data) {
|
|
33
|
+
qc.setQueryData(["pick", "sticker-state", k.cartId, slug], k.stand);
|
|
34
|
+
qc.setQueryData(["pick", "sticker-fit", k.cartId, slug], k.controle);
|
|
35
|
+
if (k.orderId)
|
|
36
|
+
qc.setQueryData(["pick", "sticker-meldingen", k.orderId, slug], k.meldingen);
|
|
37
|
+
qc.setQueryData(["pick", "uitwijk", k.jobIds.join(",")], k.uitwijk);
|
|
38
|
+
}
|
|
39
|
+
}, [q.data, qc, slug]);
|
|
40
|
+
return q;
|
|
41
|
+
}
|
|
@@ -33909,6 +33909,13 @@ export type Database = {
|
|
|
33909
33909
|
};
|
|
33910
33910
|
Returns: Json;
|
|
33911
33911
|
};
|
|
33912
|
+
layouts_origineel_bron: {
|
|
33913
|
+
Args: {
|
|
33914
|
+
p_documenttype: string;
|
|
33915
|
+
p_payload: Json;
|
|
33916
|
+
};
|
|
33917
|
+
Returns: string;
|
|
33918
|
+
};
|
|
33912
33919
|
layouts_sticker_verkleinen: {
|
|
33913
33920
|
Args: never;
|
|
33914
33921
|
Returns: Json;
|
|
@@ -35195,6 +35202,30 @@ export type Database = {
|
|
|
35195
35202
|
Args: never;
|
|
35196
35203
|
Returns: Json;
|
|
35197
35204
|
};
|
|
35205
|
+
logistics_data_gereedheid: {
|
|
35206
|
+
Args: {
|
|
35207
|
+
p_product_ids?: string[];
|
|
35208
|
+
};
|
|
35209
|
+
Returns: {
|
|
35210
|
+
in_open_order: boolean;
|
|
35211
|
+
ladingdrager: string;
|
|
35212
|
+
methode: string;
|
|
35213
|
+
ontbrekend: string[];
|
|
35214
|
+
product: string;
|
|
35215
|
+
product_id: string;
|
|
35216
|
+
uitleg: string;
|
|
35217
|
+
velden: Json;
|
|
35218
|
+
voorstel: Json;
|
|
35219
|
+
}[];
|
|
35220
|
+
};
|
|
35221
|
+
logistics_data_vul_in: {
|
|
35222
|
+
Args: {
|
|
35223
|
+
p_product_id: string;
|
|
35224
|
+
p_veld: string;
|
|
35225
|
+
p_waarde: number;
|
|
35226
|
+
};
|
|
35227
|
+
Returns: Json;
|
|
35228
|
+
};
|
|
35198
35229
|
logistics_day_windows: {
|
|
35199
35230
|
Args: {
|
|
35200
35231
|
p_day: string;
|
|
@@ -35655,6 +35686,14 @@ export type Database = {
|
|
|
35655
35686
|
toelichting: string;
|
|
35656
35687
|
}[];
|
|
35657
35688
|
};
|
|
35689
|
+
logistics_install_check_196: {
|
|
35690
|
+
Args: never;
|
|
35691
|
+
Returns: {
|
|
35692
|
+
controle: string;
|
|
35693
|
+
ok: boolean;
|
|
35694
|
+
toelichting: string;
|
|
35695
|
+
}[];
|
|
35696
|
+
};
|
|
35658
35697
|
logistics_is_beheer: {
|
|
35659
35698
|
Args: never;
|
|
35660
35699
|
Returns: boolean;
|
|
@@ -35849,6 +35888,18 @@ export type Database = {
|
|
|
35849
35888
|
};
|
|
35850
35889
|
Returns: Json;
|
|
35851
35890
|
};
|
|
35891
|
+
logistics_order_backlog_info_many: {
|
|
35892
|
+
Args: {
|
|
35893
|
+
p_order_ids: string[];
|
|
35894
|
+
};
|
|
35895
|
+
Returns: {
|
|
35896
|
+
achterstand: boolean;
|
|
35897
|
+
dagen: number;
|
|
35898
|
+
info: Json;
|
|
35899
|
+
leverdatum: string;
|
|
35900
|
+
order_id: string;
|
|
35901
|
+
}[];
|
|
35902
|
+
};
|
|
35852
35903
|
logistics_order_buffer_excluded: {
|
|
35853
35904
|
Args: {
|
|
35854
35905
|
p_order_id: string;
|
|
@@ -36545,6 +36596,12 @@ export type Database = {
|
|
|
36545
36596
|
};
|
|
36546
36597
|
Returns: undefined;
|
|
36547
36598
|
};
|
|
36599
|
+
logistics_plan_now_gate: {
|
|
36600
|
+
Args: {
|
|
36601
|
+
p_order_ids: string[];
|
|
36602
|
+
};
|
|
36603
|
+
Returns: Json;
|
|
36604
|
+
};
|
|
36548
36605
|
logistics_plan_progress: {
|
|
36549
36606
|
Args: {
|
|
36550
36607
|
p_refs: string[];
|
|
@@ -37500,6 +37557,12 @@ export type Database = {
|
|
|
37500
37557
|
};
|
|
37501
37558
|
Returns: number[];
|
|
37502
37559
|
};
|
|
37560
|
+
logistics_sticker_retry: {
|
|
37561
|
+
Args: {
|
|
37562
|
+
p_id: string;
|
|
37563
|
+
};
|
|
37564
|
+
Returns: Json;
|
|
37565
|
+
};
|
|
37503
37566
|
logistics_sticker_sync: {
|
|
37504
37567
|
Args: {
|
|
37505
37568
|
p_limit?: number;
|
|
@@ -39780,6 +39843,10 @@ export type Database = {
|
|
|
39780
39843
|
Args: never;
|
|
39781
39844
|
Returns: Json;
|
|
39782
39845
|
};
|
|
39846
|
+
pickschermen_missing_objects: {
|
|
39847
|
+
Args: never;
|
|
39848
|
+
Returns: string[];
|
|
39849
|
+
};
|
|
39783
39850
|
pickstation_auto_send_status: {
|
|
39784
39851
|
Args: {
|
|
39785
39852
|
p_device_key: string;
|
|
@@ -39808,6 +39875,20 @@ export type Database = {
|
|
|
39808
39875
|
};
|
|
39809
39876
|
Returns: Json;
|
|
39810
39877
|
};
|
|
39878
|
+
pickstation_cart_sticker_states: {
|
|
39879
|
+
Args: {
|
|
39880
|
+
p_cart_ids: string[];
|
|
39881
|
+
p_device_key: string;
|
|
39882
|
+
p_slug: string;
|
|
39883
|
+
};
|
|
39884
|
+
Returns: Json;
|
|
39885
|
+
} | {
|
|
39886
|
+
Args: {
|
|
39887
|
+
p_cart_ids: string[];
|
|
39888
|
+
p_slug: string;
|
|
39889
|
+
};
|
|
39890
|
+
Returns: Json;
|
|
39891
|
+
};
|
|
39811
39892
|
pickstation_device_status: {
|
|
39812
39893
|
Args: {
|
|
39813
39894
|
p_device_key: string;
|