@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.
@@ -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;AA6D7B,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,+BA0rEpD"}
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,sCAqE7F"}
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: !!slug,
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,sCAuC5F;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,sCA8CzF;AAED,6HAA6H;AAC7H,wBAAgB,yBAAyB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAiBpF"}
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.isLoading)
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.isLoading)
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.isLoading)
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;