@flowselections/pick-schermen-kwekers 1.0.72 → 1.0.75

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;AA+D7B,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,sCA+sEpD"}
1
+ {"version":3,"file":"PickScherm.d.ts","sourceRoot":"","sources":["../../../src/components/pick/PickScherm.tsx"],"names":[],"mappings":"AA2DA,OAAO,EAaL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AA+D7B,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,sCAutEpD"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { showSyncingNotice } from "../../lib/pickLoadOrder.js";
3
4
  import { useQuery } from "@tanstack/react-query";
4
5
  import { Badge, Button, Card, CardContent, Input, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, toast, } from "@flowselections/core";
5
6
  import { AlertTriangle, ArrowLeft, CheckCircle2, ChevronLeft, ChevronRight, FileDown, Globe, Loader2, Printer, RefreshCw, Search, WifiOff, Zap, } from "lucide-react";
@@ -227,7 +228,7 @@ export function PickScherm({ station, onBack }) {
227
228
  return () => clearTimeout(timer);
228
229
  }, [searchInput]);
229
230
  const effectiveFilters = useMemo(() => ({ ...filters, country: null, sortRules: [] }), [filters]);
230
- const { items, total, loading, lockedIds, refresh, pendingCount, printedCount, countsLoading, urgentCount, realtimeOk, pickDay, rebuiltAt, syncError, } = usePickQueue({
231
+ const { items, total, loading, lockedIds, refresh, pendingCount, printedCount, countsLoading, urgentCount, realtimeOk, pickDay, rebuiltAt, syncError, syncing, } = usePickQueue({
231
232
  stationId: station.id,
232
233
  filters: effectiveFilters,
233
234
  enabled: lang !== null,
@@ -1114,7 +1115,8 @@ export function PickScherm({ station, onBack }) {
1114
1115
  const todo = rowCarts.filter((cart) => !already.includes(cart.cartId));
1115
1116
  if (todo.length === 0) {
1116
1117
  // Alles al geprint: geen opdracht. Herprinten alleen via de knop Herprint.
1117
- showCartResults(alreadyPrintedResults(rowCarts));
1118
+ const shared = await pickApi.sharedCartMessages(item.id, rowCarts.map((c) => c.cartId));
1119
+ showCartResults(alreadyPrintedResults(rowCarts, shared));
1118
1120
  await releaseQuietly(item.id);
1119
1121
  refresh();
1120
1122
  return;
@@ -1402,7 +1404,7 @@ export function PickScherm({ station, onBack }) {
1402
1404
  ? "Pickwachtrij laden…"
1403
1405
  : checkDone > 0
1404
1406
  ? `Pakbonnen controleren (${checkDone} van ${checkTotal})…`
1405
- : `Pakbonnen controleren (${checkTotal})…` }), _jsxs("span", { className: "tabular-nums", children: [loadPercent, "%"] })] }), _jsx("div", { className: "h-1.5 w-full overflow-hidden rounded-full bg-muted", children: _jsx("div", { className: "h-full rounded-full bg-primary transition-all duration-300", style: { width: `${Math.max(5, loadPercent)}%` } }) })] })), _jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:flex-wrap md:items-center md:justify-between", children: [_jsxs("div", { className: "grid grid-cols-[auto_minmax(0,1fr)] items-center gap-3", children: [_jsxs(Button, { variant: "outline", size: "lg", className: "h-12 shrink-0 px-3 sm:px-4", onClick: () => setLang(null), "aria-label": t("changeLanguage"), children: [_jsx(Globe, { className: "h-5 w-5 sm:mr-2" }), _jsx("span", { className: "hidden sm:inline", children: t("changeLanguage") })] }), _jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "truncate text-lg font-bold text-foreground sm:text-xl", children: station.name }), _jsxs("p", { className: "truncate text-sm text-muted-foreground", children: [countsLoading ? "…" : pendingCount, " ", t("statusToPrint"), " \u00B7 ", countsLoading ? "…" : printedCount, " ", t("statusPrinted"), openJobIds.length > 0 ? ` · ${openJobIds.length} wacht op printer` : ""] })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", size: "lg", className: "h-12 px-3", onClick: () => void shiftDay(-1), disabled: loadingDay || !(chosenDay ?? pickDay), "aria-label": ui.pickDayPrev, children: [_jsx(ChevronLeft, { className: "h-5 w-5 sm:mr-1" }), _jsx("span", { className: "hidden sm:inline", children: ui.pickDayPrev })] }), _jsx("div", { className: "flex h-12 items-center rounded-md border bg-muted px-4 text-sm font-semibold text-foreground", children: chosenDay ? dayLabel(chosenDay) : ui.pickDayToday }), _jsxs(Button, { variant: "outline", size: "lg", className: "h-12 px-3", onClick: () => void shiftDay(1), disabled: loadingDay || !(chosenDay ?? pickDay), "aria-label": ui.pickDayNext, children: [_jsx("span", { className: "hidden sm:inline", children: ui.pickDayNext }), _jsx(ChevronRight, { className: "h-5 w-5 sm:ml-1" })] }), chosenDay && (_jsx(Button, { variant: "secondary", size: "lg", className: "h-12 px-4", onClick: () => void chooseDay("current"), disabled: loadingDay, children: ui.pickDayBackToToday }))] }), _jsxs("div", { className: "flex items-center gap-2", children: [!online && (_jsxs(Badge, { className: "bg-destructive text-destructive-foreground", children: [_jsx(WifiOff, { className: "mr-1 h-3.5 w-3.5" }), " ", t("offline")] })), _jsx(Button, { variant: "outline", size: "icon", className: "h-12 w-12 shrink-0", onClick: refresh, "aria-label": t("refresh"), children: _jsx(RefreshCw, { className: "h-4 w-4" }) }), _jsxs(Button, { variant: "outline", size: "lg", className: "hidden h-14 px-5 md:inline-flex", disabled: fetchingNotes, onClick: () => void fetchShippingNotes(), children: [fetchingNotes ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : (_jsx(FileDown, { className: "mr-2 h-5 w-5" })), fetchingNotes ? "Ophalen…" : "Verzendbrieven ophalen"] }), cartsPerPrint != null && (_jsxs(Button, { size: "lg", className: "hidden h-14 px-6 text-lg md:inline-flex", disabled: loading || printStatusLoading || batchPrinting || (busyId != null || actionBusy), onClick: () => void printNextCarts(), children: [batchPrinting ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), "Volgende printen (", cartsPerPrint, " karren)"] })), _jsxs(Button, { size: "lg", className: "hidden h-14 px-8 text-lg md:inline-flex", onClick: () => (pending ? confirmPending() : fetchNextLocked()), disabled: (busyId !== null || actionBusy) || fetchingData || (!pending && printStatusLoading), children: [(busyId !== null || actionBusy) || fetchingData ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : pending && !readiness.ready ? (_jsx(RefreshCw, { className: "mr-2 h-5 w-5" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), pending && !readiness.ready ? "Pakbon ophalen" : t("printNext")] })] })] }), syncError && (_jsxs("div", { role: "alert", className: "flex items-start gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsxs("span", { children: [SYNC_ERROR_MESSAGE, _jsxs("details", { className: "mt-1 text-xs text-muted-foreground", children: [_jsx("summary", { children: "Details voor beheer" }), syncError] })] })] })), !plekLoading && !printPlek && (_jsxs("div", { className: "flex items-start gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsx("span", { children: "Nog geen printplek gekoppeld \u2014 de opdracht blijft in de wachtrij staan." })] })), (cartMissing || rowGone) && (_jsxs("div", { role: "alert", className: "flex flex-col gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("span", { className: "flex items-start gap-2", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), rowGone ? ROW_GONE_MESSAGE : CART_MISSING_MESSAGE] }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => {
1407
+ : `Pakbonnen controleren (${checkTotal})…` }), _jsxs("span", { className: "tabular-nums", children: [loadPercent, "%"] })] }), _jsx("div", { className: "h-1.5 w-full overflow-hidden rounded-full bg-muted", children: _jsx("div", { className: "h-full rounded-full bg-primary transition-all duration-300", style: { width: `${Math.max(5, loadPercent)}%` } }) })] })), _jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:flex-wrap md:items-center md:justify-between", children: [_jsxs("div", { className: "grid grid-cols-[auto_minmax(0,1fr)] items-center gap-3", children: [_jsxs(Button, { variant: "outline", size: "lg", className: "h-12 shrink-0 px-3 sm:px-4", onClick: () => setLang(null), "aria-label": t("changeLanguage"), children: [_jsx(Globe, { className: "h-5 w-5 sm:mr-2" }), _jsx("span", { className: "hidden sm:inline", children: t("changeLanguage") })] }), _jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "truncate text-lg font-bold text-foreground sm:text-xl", children: station.name }), _jsxs("p", { className: "truncate text-sm text-muted-foreground", children: [countsLoading ? "…" : pendingCount, " ", t("statusToPrint"), " \u00B7 ", countsLoading ? "…" : printedCount, " ", t("statusPrinted"), openJobIds.length > 0 ? ` · ${openJobIds.length} wacht op printer` : ""] })] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", size: "lg", className: "h-12 px-3", onClick: () => void shiftDay(-1), disabled: loadingDay || !(chosenDay ?? pickDay), "aria-label": ui.pickDayPrev, children: [_jsx(ChevronLeft, { className: "h-5 w-5 sm:mr-1" }), _jsx("span", { className: "hidden sm:inline", children: ui.pickDayPrev })] }), _jsx("div", { className: "flex h-12 items-center rounded-md border bg-muted px-4 text-sm font-semibold text-foreground", children: chosenDay ? dayLabel(chosenDay) : ui.pickDayToday }), _jsxs(Button, { variant: "outline", size: "lg", className: "h-12 px-3", onClick: () => void shiftDay(1), disabled: loadingDay || !(chosenDay ?? pickDay), "aria-label": ui.pickDayNext, children: [_jsx("span", { className: "hidden sm:inline", children: ui.pickDayNext }), _jsx(ChevronRight, { className: "h-5 w-5 sm:ml-1" })] }), chosenDay && (_jsx(Button, { variant: "secondary", size: "lg", className: "h-12 px-4", onClick: () => void chooseDay("current"), disabled: loadingDay, children: ui.pickDayBackToToday }))] }), _jsxs("div", { className: "flex items-center gap-2", children: [!online && (_jsxs(Badge, { className: "bg-destructive text-destructive-foreground", children: [_jsx(WifiOff, { className: "mr-1 h-3.5 w-3.5" }), " ", t("offline")] })), _jsx(Button, { variant: "outline", size: "icon", className: "h-12 w-12 shrink-0", onClick: refresh, "aria-label": t("refresh"), children: _jsx(RefreshCw, { className: "h-4 w-4" }) }), _jsxs(Button, { variant: "outline", size: "lg", className: "hidden h-14 px-5 md:inline-flex", disabled: fetchingNotes, onClick: () => void fetchShippingNotes(), children: [fetchingNotes ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : (_jsx(FileDown, { className: "mr-2 h-5 w-5" })), fetchingNotes ? "Ophalen…" : "Verzendbrieven ophalen"] }), cartsPerPrint != null && (_jsxs(Button, { size: "lg", className: "hidden h-14 px-6 text-lg md:inline-flex", disabled: loading || printStatusLoading || batchPrinting || (busyId != null || actionBusy), onClick: () => void printNextCarts(), children: [batchPrinting ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), "Volgende printen (", cartsPerPrint, " karren)"] })), _jsxs(Button, { size: "lg", className: "hidden h-14 px-8 text-lg md:inline-flex", onClick: () => (pending ? confirmPending() : fetchNextLocked()), disabled: (busyId !== null || actionBusy) || fetchingData || (!pending && printStatusLoading), children: [(busyId !== null || actionBusy) || fetchingData ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : pending && !readiness.ready ? (_jsx(RefreshCw, { className: "mr-2 h-5 w-5" })) : (_jsx(Printer, { className: "mr-2 h-5 w-5" })), pending && !readiness.ready ? "Pakbon ophalen" : t("printNext")] })] })] }), showSyncingNotice({ syncing, syncError }) && (_jsx("div", { role: "status", "aria-live": "polite", className: "px-4 py-1 text-xs text-muted-foreground", children: "Wachtrij wordt bijgewerkt\u2026" })), syncError && (_jsxs("div", { role: "alert", className: "flex items-start gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsxs("span", { children: [SYNC_ERROR_MESSAGE, _jsxs("details", { className: "mt-1 text-xs text-muted-foreground", children: [_jsx("summary", { children: "Details voor beheer" }), syncError] })] })] })), !plekLoading && !printPlek && (_jsxs("div", { className: "flex items-start gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsx("span", { children: "Nog geen printplek gekoppeld \u2014 de opdracht blijft in de wachtrij staan." })] })), (cartMissing || rowGone) && (_jsxs("div", { role: "alert", className: "flex flex-col gap-2 rounded-md border-2 border-destructive/50 bg-destructive/5 p-3 text-sm text-destructive sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("span", { className: "flex items-start gap-2", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), rowGone ? ROW_GONE_MESSAGE : CART_MISSING_MESSAGE] }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => {
1406
1408
  setCartMissing(false);
1407
1409
  setRowGone(false);
1408
1410
  setPending(null);
@@ -37,6 +37,8 @@ export declare function usePickQueue(args: {
37
37
  realtimeOk: boolean;
38
38
  /** Letterlijke fout uit de wachtrij-synchronisatie, of null. */
39
39
  syncError: string | null;
40
+ /** Synchronisatie loopt op de achtergrond: "Wachtrij wordt bijgewerkt…". */
41
+ syncing: boolean;
40
42
  /** Tijdstip van de laatste heropbouw na een buffer-seintje van de Engine. */
41
43
  rebuiltAt: number | null;
42
44
  refresh: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"usePickQueue.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickQueue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAK9E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,YAS5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;;;;;;;IAqNG,sDAAsD;;;;;;IAMtD,gEAAgE;;IAEhE,6EAA6E;;;EAIhF;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM;;EAuBhG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,iFAOnF;AACD,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,OAAO,UAAO;;;YAQzC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAEpF"}
1
+ {"version":3,"file":"usePickQueue.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickQueue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAM9E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,YAS5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;;;;;;;IAuNG,sDAAsD;;;;;;IAMtD,gEAAgE;;IAEhE,4EAA4E;;IAE5E,6EAA6E;;;EAIhF;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM;;EAuBhG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,iFAOnF;AACD,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,OAAO,UAAO;;;YAQzC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAEpF"}
@@ -4,6 +4,7 @@ import { pickApi, pickDb } from "../lib/pickApi.js";
4
4
  import { safeArray } from "../lib/pickTypes.js";
5
5
  import { isRowOpen } from "../lib/pick143.js";
6
6
  import { pickMark, pickMeasure } from "../lib/pickPerf.js";
7
+ import { pickDayLoadEnabled } from "../lib/pickLoadOrder.js";
7
8
  export const defaultFilters = {
8
9
  country: null,
9
10
  search: "",
@@ -63,9 +64,11 @@ export function usePickQueue(args) {
63
64
  });
64
65
  const rebuildCount = bufferEventsQuery.data?.events ?? 0;
65
66
  const [rebuiltAt, setRebuiltAt] = useState(null);
67
+ // 1.0.73: openen wacht niet meer op de Engine-synchronisatie. De bestaande
68
+ // wachtrij verschijnt meteen; na de sync wordt opnieuw geladen.
66
69
  const pickDayQuery = useQuery({
67
70
  queryKey: ["pick", "pickDay"],
68
- enabled: enabled && !syncQuery.isLoading,
71
+ enabled: pickDayLoadEnabled({ enabled, syncPending: syncQuery.isPending }),
69
72
  queryFn: () => pickMeasure("pickdag", () => pickApi.currentPickDay()),
70
73
  staleTime: 30000,
71
74
  });
@@ -210,6 +213,8 @@ export function usePickQueue(args) {
210
213
  realtimeOk,
211
214
  /** Letterlijke fout uit de wachtrij-synchronisatie, of null. */
212
215
  syncError: syncQuery.data?.syncError ?? null,
216
+ /** Synchronisatie loopt op de achtergrond: "Wachtrij wordt bijgewerkt…". */
217
+ syncing: syncQuery.isFetching || bufferEventsQuery.isFetching,
213
218
  /** Tijdstip van de laatste heropbouw na een buffer-seintje van de Engine. */
214
219
  rebuiltAt,
215
220
  refresh: invalidateNow,
@@ -6115,6 +6115,24 @@ export type Database = {
6115
6115
  };
6116
6116
  Relationships: [];
6117
6117
  };
6118
+ floricode_record_counts: {
6119
+ Row: {
6120
+ count: number;
6121
+ counted_at: string;
6122
+ resource: string;
6123
+ };
6124
+ Insert: {
6125
+ count?: number;
6126
+ counted_at?: string;
6127
+ resource: string;
6128
+ };
6129
+ Update: {
6130
+ count?: number;
6131
+ counted_at?: string;
6132
+ resource?: string;
6133
+ };
6134
+ Relationships: [];
6135
+ };
6118
6136
  floricode_records: {
6119
6137
  Row: {
6120
6138
  change_date_time: string | null;
@@ -10456,6 +10474,7 @@ export type Database = {
10456
10474
  created_at: string;
10457
10475
  enabled: boolean;
10458
10476
  id: string;
10477
+ invoice_without_signoff: boolean;
10459
10478
  offset_days: number;
10460
10479
  pickup_anchor: string;
10461
10480
  pickup_business_days_only: boolean;
@@ -10471,6 +10490,7 @@ export type Database = {
10471
10490
  created_at?: string;
10472
10491
  enabled?: boolean;
10473
10492
  id?: string;
10493
+ invoice_without_signoff?: boolean;
10474
10494
  offset_days?: number;
10475
10495
  pickup_anchor?: string;
10476
10496
  pickup_business_days_only?: boolean;
@@ -10486,6 +10506,7 @@ export type Database = {
10486
10506
  created_at?: string;
10487
10507
  enabled?: boolean;
10488
10508
  id?: string;
10509
+ invoice_without_signoff?: boolean;
10489
10510
  offset_days?: number;
10490
10511
  pickup_anchor?: string;
10491
10512
  pickup_business_days_only?: boolean;
@@ -18552,6 +18573,8 @@ export type Database = {
18552
18573
  floriday_sales_order_id: string | null;
18553
18574
  id: string;
18554
18575
  invoice_due_at: string | null;
18576
+ invoice_ready_at: string | null;
18577
+ invoice_ready_note: string | null;
18555
18578
  is_reservation: boolean;
18556
18579
  notes: string | null;
18557
18580
  order_date: string;
@@ -18586,6 +18609,8 @@ export type Database = {
18586
18609
  floriday_sales_order_id?: string | null;
18587
18610
  id?: string;
18588
18611
  invoice_due_at?: string | null;
18612
+ invoice_ready_at?: string | null;
18613
+ invoice_ready_note?: string | null;
18589
18614
  is_reservation?: boolean;
18590
18615
  notes?: string | null;
18591
18616
  order_date?: string;
@@ -18620,6 +18645,8 @@ export type Database = {
18620
18645
  floriday_sales_order_id?: string | null;
18621
18646
  id?: string;
18622
18647
  invoice_due_at?: string | null;
18648
+ invoice_ready_at?: string | null;
18649
+ invoice_ready_note?: string | null;
18623
18650
  is_reservation?: boolean;
18624
18651
  notes?: string | null;
18625
18652
  order_date?: string;
@@ -19876,25 +19903,31 @@ export type Database = {
19876
19903
  Row: {
19877
19904
  id: boolean;
19878
19905
  last_cleanup_at: string | null;
19906
+ last_duration_ms: number | null;
19879
19907
  last_error: string | null;
19880
19908
  last_error_at: string | null;
19881
19909
  last_sync_at: string | null;
19910
+ sync_requested_at: string | null;
19882
19911
  updated_at: string;
19883
19912
  };
19884
19913
  Insert: {
19885
19914
  id?: boolean;
19886
19915
  last_cleanup_at?: string | null;
19916
+ last_duration_ms?: number | null;
19887
19917
  last_error?: string | null;
19888
19918
  last_error_at?: string | null;
19889
19919
  last_sync_at?: string | null;
19920
+ sync_requested_at?: string | null;
19890
19921
  updated_at?: string;
19891
19922
  };
19892
19923
  Update: {
19893
19924
  id?: boolean;
19894
19925
  last_cleanup_at?: string | null;
19926
+ last_duration_ms?: number | null;
19895
19927
  last_error?: string | null;
19896
19928
  last_error_at?: string | null;
19897
19929
  last_sync_at?: string | null;
19930
+ sync_requested_at?: string | null;
19898
19931
  updated_at?: string;
19899
19932
  };
19900
19933
  Relationships: [];
@@ -26330,6 +26363,8 @@ export type Database = {
26330
26363
  default_payment_term_days: number;
26331
26364
  default_vat_code: string;
26332
26365
  email_purpose: string | null;
26366
+ email_test_address: string | null;
26367
+ email_test_mode: boolean;
26333
26368
  home_country_code: string;
26334
26369
  invoice_enabled_ao: boolean;
26335
26370
  invoice_enabled_fo: boolean;
@@ -26361,6 +26396,8 @@ export type Database = {
26361
26396
  default_payment_term_days?: number;
26362
26397
  default_vat_code?: string;
26363
26398
  email_purpose?: string | null;
26399
+ email_test_address?: string | null;
26400
+ email_test_mode?: boolean;
26364
26401
  home_country_code?: string;
26365
26402
  invoice_enabled_ao?: boolean;
26366
26403
  invoice_enabled_fo?: boolean;
@@ -26392,6 +26429,8 @@ export type Database = {
26392
26429
  default_payment_term_days?: number;
26393
26430
  default_vat_code?: string;
26394
26431
  email_purpose?: string | null;
26432
+ email_test_address?: string | null;
26433
+ email_test_mode?: boolean;
26395
26434
  home_country_code?: string;
26396
26435
  invoice_enabled_ao?: boolean;
26397
26436
  invoice_enabled_fo?: boolean;
@@ -29279,14 +29318,17 @@ export type Database = {
29279
29318
  default_quantity: number;
29280
29319
  description: string | null;
29281
29320
  duration_minutes: number;
29321
+ extra_quarter_price_cents: number;
29282
29322
  id: string;
29283
29323
  labor_minutes: number;
29324
+ labor_rate_cents: number;
29284
29325
  mandaat_type: string | null;
29285
29326
  name: string;
29286
29327
  package_type: string;
29287
29328
  price_mode: string;
29288
29329
  sort_order: number;
29289
29330
  travel_minutes: number;
29331
+ travel_rate_cents: number;
29290
29332
  unit_price_cents: number;
29291
29333
  updated_at: string;
29292
29334
  };
@@ -29299,14 +29341,17 @@ export type Database = {
29299
29341
  default_quantity?: number;
29300
29342
  description?: string | null;
29301
29343
  duration_minutes?: number;
29344
+ extra_quarter_price_cents?: number;
29302
29345
  id?: string;
29303
29346
  labor_minutes?: number;
29347
+ labor_rate_cents?: number;
29304
29348
  mandaat_type?: string | null;
29305
29349
  name: string;
29306
29350
  package_type?: string;
29307
29351
  price_mode?: string;
29308
29352
  sort_order?: number;
29309
29353
  travel_minutes?: number;
29354
+ travel_rate_cents?: number;
29310
29355
  unit_price_cents?: number;
29311
29356
  updated_at?: string;
29312
29357
  };
@@ -29319,14 +29364,17 @@ export type Database = {
29319
29364
  default_quantity?: number;
29320
29365
  description?: string | null;
29321
29366
  duration_minutes?: number;
29367
+ extra_quarter_price_cents?: number;
29322
29368
  id?: string;
29323
29369
  labor_minutes?: number;
29370
+ labor_rate_cents?: number;
29324
29371
  mandaat_type?: string | null;
29325
29372
  name?: string;
29326
29373
  package_type?: string;
29327
29374
  price_mode?: string;
29328
29375
  sort_order?: number;
29329
29376
  travel_minutes?: number;
29377
+ travel_rate_cents?: number;
29330
29378
  unit_price_cents?: number;
29331
29379
  updated_at?: string;
29332
29380
  };
@@ -29759,6 +29807,7 @@ export type Database = {
29759
29807
  sequence_number: number;
29760
29808
  signature_accepted_at: string | null;
29761
29809
  signature_by_user_id: string | null;
29810
+ signature_image_path: string | null;
29762
29811
  signature_name: string | null;
29763
29812
  source_email_meta: Json | null;
29764
29813
  source_mailbox_message_id: string | null;
@@ -29807,6 +29856,7 @@ export type Database = {
29807
29856
  sequence_number: number;
29808
29857
  signature_accepted_at?: string | null;
29809
29858
  signature_by_user_id?: string | null;
29859
+ signature_image_path?: string | null;
29810
29860
  signature_name?: string | null;
29811
29861
  source_email_meta?: Json | null;
29812
29862
  source_mailbox_message_id?: string | null;
@@ -29855,6 +29905,7 @@ export type Database = {
29855
29905
  sequence_number?: number;
29856
29906
  signature_accepted_at?: string | null;
29857
29907
  signature_by_user_id?: string | null;
29908
+ signature_image_path?: string | null;
29858
29909
  signature_name?: string | null;
29859
29910
  source_email_meta?: Json | null;
29860
29911
  source_mailbox_message_id?: string | null;
@@ -32805,6 +32856,20 @@ export type Database = {
32805
32856
  niveau: string;
32806
32857
  }[];
32807
32858
  };
32859
+ floriday_buyer_organizations: {
32860
+ Args: {
32861
+ p_connection_id: string;
32862
+ };
32863
+ Returns: {
32864
+ gln: string;
32865
+ in_connections: boolean;
32866
+ in_trade_settings: boolean;
32867
+ organization_id: string;
32868
+ organization_name: string;
32869
+ price_group_ids: string[];
32870
+ sources: string[];
32871
+ }[];
32872
+ };
32808
32873
  floriday_caller_is_server: {
32809
32874
  Args: never;
32810
32875
  Returns: boolean;
@@ -32984,6 +33049,23 @@ export type Database = {
32984
33049
  Args: never;
32985
33050
  Returns: number;
32986
33051
  };
33052
+ floriday_packing_blocked_items: {
33053
+ Args: {
33054
+ p_connection_id: string;
33055
+ };
33056
+ Returns: {
33057
+ article_code: string;
33058
+ article_name: string;
33059
+ blocked_attempts: number;
33060
+ blocked_by: string;
33061
+ details: string;
33062
+ last_blocked_at: string;
33063
+ mismatch_id: string;
33064
+ reason: string;
33065
+ since: string;
33066
+ trade_item_id: string;
33067
+ }[];
33068
+ };
32987
33069
  floriday_publish_horizon_weeks: {
32988
33070
  Args: never;
32989
33071
  Returns: number;
@@ -34925,6 +35007,12 @@ export type Database = {
34925
35007
  };
34926
35008
  Returns: Json;
34927
35009
  };
35010
+ logistics_cart_lagen_core: {
35011
+ Args: {
35012
+ p_cart_id: string;
35013
+ };
35014
+ Returns: number;
35015
+ };
34928
35016
  logistics_cart_layout_method: {
34929
35017
  Args: never;
34930
35018
  Returns: Json;
@@ -36029,6 +36117,30 @@ export type Database = {
36029
36117
  uitleg: string;
36030
36118
  }[];
36031
36119
  };
36120
+ logistics_install_check_204b: {
36121
+ Args: never;
36122
+ Returns: {
36123
+ ok: boolean;
36124
+ punt: string;
36125
+ uitleg: string;
36126
+ }[];
36127
+ };
36128
+ logistics_install_check_205: {
36129
+ Args: never;
36130
+ Returns: {
36131
+ ok: boolean;
36132
+ punt: string;
36133
+ uitleg: string;
36134
+ }[];
36135
+ };
36136
+ logistics_install_check_207: {
36137
+ Args: never;
36138
+ Returns: {
36139
+ ok: boolean;
36140
+ punt: string;
36141
+ uitleg: string;
36142
+ }[];
36143
+ };
36032
36144
  logistics_is_beheer: {
36033
36145
  Args: never;
36034
36146
  Returns: boolean;
@@ -36100,6 +36212,10 @@ export type Database = {
36100
36212
  Args: never;
36101
36213
  Returns: number;
36102
36214
  };
36215
+ logistics_laag_menging_core: {
36216
+ Args: never;
36217
+ Returns: Json;
36218
+ };
36103
36219
  logistics_ladingdrager_referentie: {
36104
36220
  Args: never;
36105
36221
  Returns: {
@@ -37852,6 +37968,12 @@ export type Database = {
37852
37968
  Args: never;
37853
37969
  Returns: number;
37854
37970
  };
37971
+ logistics_shipping_note_printer: {
37972
+ Args: {
37973
+ p_order_id?: string;
37974
+ };
37975
+ Returns: Json;
37976
+ };
37855
37977
  logistics_shipping_note_release: {
37856
37978
  Args: {
37857
37979
  _order_number?: string;
@@ -39585,6 +39707,20 @@ export type Database = {
39585
39707
  };
39586
39708
  Returns: Json;
39587
39709
  };
39710
+ pick_read_shared_cart_messages: {
39711
+ Args: {
39712
+ _cart_ids: string[];
39713
+ _queue_item_id: string;
39714
+ };
39715
+ Returns: Json;
39716
+ } | {
39717
+ Args: {
39718
+ _cart_ids: string[];
39719
+ _queue_item_id: string;
39720
+ p_device_key: string;
39721
+ };
39722
+ Returns: Json;
39723
+ };
39588
39724
  pick_read_station: {
39589
39725
  Args: {
39590
39726
  p_device_key: string;
@@ -40262,6 +40398,13 @@ export type Database = {
40262
40398
  };
40263
40399
  Returns: string;
40264
40400
  };
40401
+ pick_shared_cart_message: {
40402
+ Args: {
40403
+ _cart_id: string;
40404
+ _item: Database["public"]["Tables"]["pick_queue"]["Row"];
40405
+ };
40406
+ Returns: string;
40407
+ };
40265
40408
  pick_signal_station: {
40266
40409
  Args: {
40267
40410
  p_station: string;
@@ -41332,6 +41475,12 @@ export type Database = {
41332
41475
  };
41333
41476
  Returns: number;
41334
41477
  };
41478
+ refresh_floricode_record_counts: {
41479
+ Args: {
41480
+ p_resource?: string;
41481
+ };
41482
+ Returns: number;
41483
+ };
41335
41484
  refresh_floriday_delivery_locations: {
41336
41485
  Args: never;
41337
41486
  Returns: number;
@@ -43600,6 +43749,45 @@ export type Database = {
43600
43749
  };
43601
43750
  Returns: Json;
43602
43751
  };
43752
+ voorraad_correctie_1119: {
43753
+ Args: {
43754
+ p_uitvoeren?: boolean;
43755
+ };
43756
+ Returns: Json;
43757
+ };
43758
+ voorraad_correctie_1120: {
43759
+ Args: {
43760
+ p_uitvoeren?: boolean;
43761
+ };
43762
+ Returns: Json;
43763
+ };
43764
+ voorraad_correctie_1121: {
43765
+ Args: {
43766
+ p_uitvoeren?: boolean;
43767
+ };
43768
+ Returns: Json;
43769
+ };
43770
+ voorraad_correctie_1121_regels: {
43771
+ Args: never;
43772
+ Returns: {
43773
+ aantal_boekingen: number;
43774
+ fust_naam: string;
43775
+ fust_type_id: string;
43776
+ juist: number;
43777
+ netto_geboekt: number;
43778
+ order_item_id: string;
43779
+ order_number: string;
43780
+ reden: string;
43781
+ regel_bestaat: boolean;
43782
+ verschil: number;
43783
+ }[];
43784
+ };
43785
+ voorraad_correctie_1123: {
43786
+ Args: {
43787
+ p_uitvoeren?: boolean;
43788
+ };
43789
+ Returns: Json;
43790
+ };
43603
43791
  voorraad_correctie_status: {
43604
43792
  Args: {
43605
43793
  p_correctie?: string;
@@ -43632,6 +43820,17 @@ export type Database = {
43632
43820
  width_mm: number;
43633
43821
  }[];
43634
43822
  };
43823
+ voorraad_fust_juist: {
43824
+ Args: {
43825
+ p_order_item_id: string;
43826
+ };
43827
+ Returns: {
43828
+ aantal: number;
43829
+ bron: string;
43830
+ fust_key: string;
43831
+ fust_type_id: string;
43832
+ }[];
43833
+ };
43635
43834
  voorraad_hook_base_url: {
43636
43835
  Args: never;
43637
43836
  Returns: string;