@flowselections/pick-schermen-kwekers 1.0.72 → 1.0.74
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 +5 -3
- package/dist-lib/hooks/usePickQueue.d.ts +2 -0
- package/dist-lib/hooks/usePickQueue.d.ts.map +1 -1
- package/dist-lib/hooks/usePickQueue.js +6 -1
- package/dist-lib/integrations/supabase/types.d.ts +199 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/pickLoadOrder.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickLoadOrder.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickLoadOrder.test.js +37 -0
- package/dist-lib/lib/__tests__/pickSharedCart.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickSharedCart.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickSharedCart.test.js +14 -0
- package/dist-lib/lib/pick159.d.ts.map +1 -1
- package/dist-lib/lib/pick159.js +1 -0
- package/dist-lib/lib/pickApi.d.ts +2 -0
- package/dist-lib/lib/pickApi.d.ts.map +1 -1
- package/dist-lib/lib/pickApi.js +16 -0
- package/dist-lib/lib/pickCartResults.d.ts +1 -1
- package/dist-lib/lib/pickCartResults.d.ts.map +1 -1
- package/dist-lib/lib/pickCartResults.js +5 -2
- package/dist-lib/lib/pickLoadOrder.d.ts +15 -0
- package/dist-lib/lib/pickLoadOrder.d.ts.map +1 -0
- package/dist-lib/lib/pickLoadOrder.js +13 -0
- package/package.json +1 -1
- package/schema/pickschermen.sql +104 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickScherm.d.ts","sourceRoot":"","sources":["../../../src/components/pick/PickScherm.tsx"],"names":[],"mappings":"
|
|
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
|
-
|
|
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;
|
|
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
|
|
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;
|