@flowselections/pick-schermen-kwekers 1.0.66 → 1.0.70

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.
@@ -3,10 +3,12 @@ interface Props {
3
3
  station: PickStation;
4
4
  onBack?: () => void;
5
5
  }
6
+ /** Taal per station op dit apparaat. */
7
+ export declare const langStorageKey: (stationId: string) => string;
6
8
  /**
7
9
  * Pickscherm. De Logistiek Engine bepaalt welke documenten zichtbaar zijn en
8
10
  * in welke volgorde; dit scherm toont uitsluitend wat de wachtrij teruggeeft.
9
11
  */
10
- export declare function PickScherm({ station, onBack }: Props): import("react").JSX.Element;
12
+ export declare function PickScherm({ station, onBack }: Props): import("react").JSX.Element | null;
11
13
  export {};
12
14
  //# sourceMappingURL=PickScherm.d.ts.map
@@ -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;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"}
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;AAGD,wCAAwC;AACxC,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,WAAuC,CAAC;AAsBxF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,sCAosEpD"}
@@ -36,6 +36,8 @@ import { isPrintBlocked } from "../../lib/pick156.js";
36
36
  import { DocumentChoiceMelding, useDocumentChoice } from "./DocumentChoiceMelding.js";
37
37
  import { isWaitingShippingNote, shippingNoteMessage, shippingNoteSourceLabel, } from "../../lib/shippingNoteStatus.js";
38
38
  const LANG_STORAGE_KEY = "pick.language";
39
+ /** Taal per station op dit apparaat. */
40
+ export const langStorageKey = (stationId) => `${LANG_STORAGE_KEY}.${stationId}`;
39
41
  /** Melding als de planning voor deze order geen karren heeft vastgelegd. */
40
42
  /** Papier is geprint, maar de PDF-kopie op de werkplek is niet opgeslagen. */
41
43
  const PDF_SAVE_NOTICE = "De pakbon is geprint, maar de PDF is niet op de werkplek opgeslagen. Geef de PDF-map in Layout maker opnieuw vrij.";
@@ -57,6 +59,7 @@ const NOT_READY_NOTICE = "Deze pakbon is nog niet printklaar. Klik op \"Pakbon o
57
59
  export function PickScherm({ station, onBack }) {
58
60
  const sessionId = getSessionId();
59
61
  const [lang, setLang] = useState(null);
62
+ const [langLoaded, setLangLoaded] = useState(false);
60
63
  const [filters, setFilters] = useState(defaultFilters);
61
64
  const [chosenDay, setChosenDay] = useState(null);
62
65
  const [loadingDay, setLoadingDay] = useState(false);
@@ -205,15 +208,16 @@ export function PickScherm({ station, onBack }) {
205
208
  useEffect(() => {
206
209
  if (typeof window === "undefined")
207
210
  return;
208
- const stored = window.localStorage.getItem(LANG_STORAGE_KEY);
211
+ const stored = window.localStorage.getItem(langStorageKey(station.id)) ?? window.localStorage.getItem(LANG_STORAGE_KEY);
209
212
  if (stored)
210
213
  setLang(stored);
211
- }, []);
214
+ setLangLoaded(true);
215
+ }, [station.id]);
212
216
  const chooseLang = useCallback((code) => {
213
217
  setLang(code);
214
218
  if (typeof window !== "undefined")
215
- window.localStorage.setItem(LANG_STORAGE_KEY, code);
216
- }, []);
219
+ window.localStorage.setItem(langStorageKey(station.id), code);
220
+ }, [station.id]);
217
221
  /** Zoeken pas na een korte pauze, zodat typen geen query per toets afvuurt. */
218
222
  useEffect(() => {
219
223
  const timer = setTimeout(() => {
@@ -955,16 +959,16 @@ export function PickScherm({ station, onBack }) {
955
959
  targets.push(item);
956
960
  }
957
961
  if (targets.length === 0) {
958
- toast.warning("Er is geen enkele kar printklaar.");
962
+ toast.warning("Er is geen enkele kar printklaar.", { id: "pick-none-ready" });
959
963
  for (const s of skipped.slice(0, 5))
960
- toast.warning(`${s.title}: ${s.reason}`);
964
+ toast.warning(`${s.title}: ${s.reason}`, { id: `pick-skip-${s.title}` });
961
965
  return;
962
966
  }
963
967
  if (targets.length < cartsPerPrint) {
964
- toast.info(`Er zijn maar ${targets.length} van de ${cartsPerPrint} karren printklaar; alleen die worden geprint.`);
968
+ toast.info(`Er zijn maar ${targets.length} van de ${cartsPerPrint} karren printklaar; alleen die worden geprint.`, { id: "pick-some-ready" });
965
969
  }
966
970
  for (const s of skipped.slice(0, 5))
967
- toast.warning(`${s.title}: ${s.reason}`);
971
+ toast.warning(`${s.title}: ${s.reason}`, { id: `pick-skip-${s.title}` });
968
972
  const doneUnits = new Set();
969
973
  for (const item of targets) {
970
974
  const unitKey = `${item.document_type_id ?? "-"}|${unitRefOf(item)}`;
@@ -1356,6 +1360,8 @@ export function PickScherm({ station, onBack }) {
1356
1360
  autoFetched.current = false;
1357
1361
  }, [pendingCount]);
1358
1362
  // Stap 1 — taalselectie
1363
+ if (!langLoaded)
1364
+ return null;
1359
1365
  if (lang === null) {
1360
1366
  return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 sm:flex sm:flex-wrap sm:justify-between", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "truncate text-xl font-bold text-foreground sm:text-2xl", children: station.name }), _jsx("p", { className: "text-sm text-muted-foreground", children: t("chooseLanguageHint") })] }), onBack && (_jsxs(Button, { variant: "outline", className: "shrink-0", onClick: onBack, children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), " ", t("back")] }))] }), _jsx(LanguageTiles, { onSelect: chooseLang })] }));
1361
1367
  }
@@ -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,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"}
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,sCAyDzF;AAED,6HAA6H;AAC7H,wBAAgB,yBAAyB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAiBpF"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useQuery } from "@tanstack/react-query";
3
3
  import { fetchCartStickerState, fetchOrderStickerMeldingen, STICKER_UNKNOWN, stickerStatusLabel, } from "../../lib/pickStickers.js";
4
- import { stickerLine } from "../../lib/pick161.js";
4
+ import { stickerLineWithJobs } from "../../lib/pick161.js";
5
5
  import { fetchUitwijk, fetchVroegeWaarschuwing, vroegeWaarschuwingText } from "../../lib/pickUitwijk.js";
6
6
  import { fetchStickerFit, STICKER_FIT_UNKNOWN, stickerFitTone } from "../../lib/pick150.js";
7
7
  const POLL = 15000;
@@ -72,15 +72,26 @@ export function CartStickerState({ cartId, slug }) {
72
72
  placeholderData: (prev) => prev,
73
73
  retry: 1,
74
74
  });
75
- if (q.data === undefined && !q.isError)
75
+ const jobs = useQuery({
76
+ queryKey: ["pick", "sticker-jobs", cartId, slug],
77
+ queryFn: () => null,
78
+ enabled: false, // gevuld door useCartStickerStates
79
+ });
80
+ // Openbaar: uit de bundel. Ingelogd: uit Engine 1.0.201 (ontbreekt bij oudere Engine → oud gedrag).
81
+ const opdrachten = jobs.data?.opdrachten ?? q.data?.printopdrachten ?? null;
82
+ const gevraagd = jobs.data ? jobs.data.gevraagd : q.data?.stickerGevraagd;
83
+ const hasJobs = Array.isArray(opdrachten) && opdrachten.length > 0;
84
+ if (q.data === undefined && !q.isError && !hasJobs)
76
85
  return null;
77
- if (q.isError || !q.data) {
86
+ if ((q.isError || !q.data) && !hasJobs) {
78
87
  return _jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: STICKER_UNKNOWN });
79
88
  }
80
- const s = q.data;
81
- const line = stickerLine(s, u.data);
89
+ const s = q.data ?? null;
90
+ const line = stickerLineWithJobs(s, opdrachten, jobs.data?.tijdzone ?? null, u.data, new Date(), gevraagd);
91
+ if (!s)
92
+ return _jsx("p", { className: "mt-3 text-sm text-foreground", children: line });
82
93
  const regels = Array.isArray(s.regels) ? s.regels : [];
83
- if (s.totaal === 0)
94
+ if (s.totaal === 0 || hasJobs)
84
95
  return _jsx("p", { className: "mt-3 text-sm text-muted-foreground", children: line });
85
96
  return (_jsxs("details", { className: "mt-3 rounded-md border bg-background p-3 text-sm", children: [_jsxs("summary", { className: "cursor-pointer font-medium text-foreground", children: ["Stickers: ", line] }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "In de printwachtrij betekent nog niet fysiek geprint." }), _jsx("ul", { className: "mt-2 divide-y", children: regels.map((r, i) => (_jsxs("li", { className: "flex flex-wrap justify-between gap-2 py-1.5 text-xs", children: [_jsxs("span", { className: "text-foreground", children: [r.soort ?? "sticker", " \u00B7 ", r.kopieen ?? "—", "x", r.breedteMm && r.hoogteMm ? ` · ${r.breedteMm}x${r.hoogteMm} mm` : ""] }), _jsxs("span", { className: "text-muted-foreground", children: [stickerStatusLabel(r.status), r.reden ? ` — ${r.reden}` : ""] })] }, r.stickerId ?? i))) })] }));
86
97
  }
@@ -1 +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"}
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,qHA2B1E"}
@@ -35,6 +35,7 @@ export function useCartStickerStates(cartIds, slug) {
35
35
  if (k.orderId)
36
36
  qc.setQueryData(["pick", "sticker-meldingen", k.orderId, slug], k.meldingen);
37
37
  qc.setQueryData(["pick", "uitwijk", k.jobIds.join(",")], k.uitwijk);
38
+ qc.setQueryData(["pick", "sticker-jobs", k.cartId, slug], { opdrachten: k.opdrachten, tijdzone: k.tijdzone, gevraagd: k.gevraagd });
38
39
  }
39
40
  }, [q.data, qc, slug]);
40
41
  return q;