@flowselections/floriday-afhandeling-module 1.0.50 → 1.0.54
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/afhandeling/ControlePage.js +1 -1
- package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/DagDetailDialog.js +255 -89
- package/dist-lib/components/afhandeling/NuVersturenButton.d.ts +2 -2
- package/dist-lib/components/afhandeling/NuVersturenButton.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/NuVersturenButton.js +22 -4
- package/dist-lib/components/afhandeling/ScanControleView.js +1 -1
- package/dist-lib/components/afhandeling/VervoerdersPage.js +1 -1
- package/dist-lib/components/afhandeling/VerzetOrderDialog.js +1 -1
- package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/WeekAgendaView.js +4 -3
- package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts +9 -9
- package/dist-lib/components/afhandeling/WerkplekWaarschuwing.js +28 -28
- package/dist-lib/components/ui/responsive-dialog.js +1 -1
- package/dist-lib/hooks/useKnownOrders.d.ts +1 -0
- package/dist-lib/hooks/useKnownOrders.d.ts.map +1 -1
- package/dist-lib/hooks/useKnownOrders.js +20 -1
- package/dist-lib/hooks/useOrderBuffers.d.ts +6 -0
- package/dist-lib/hooks/useOrderBuffers.d.ts.map +1 -1
- package/dist-lib/hooks/useOrderBuffers.js +21 -0
- package/dist-lib/hooks/usePickAgenda.d.ts.map +1 -1
- package/dist-lib/hooks/usePickAgenda.js +7 -3
- package/dist-lib/hooks/usePickMode.d.ts +1 -1
- package/dist-lib/index.d.ts +0 -2
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +0 -2
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +14 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/authGateway.server.d.ts.map +1 -1
- package/dist-lib/lib/authGateway.server.js +3 -2
- package/dist-lib/lib/cartAssignments.functions.d.ts +48 -0
- package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartAssignments.functions.js +111 -0
- package/dist-lib/lib/deliveryNotePrint.d.ts +33 -33
- package/dist-lib/lib/deliveryNotePrint.js +219 -219
- package/dist-lib/lib/floridayFulfillmentSend.server.d.ts +6 -1
- package/dist-lib/lib/floridayFulfillmentSend.server.d.ts.map +1 -1
- package/dist-lib/lib/floridayFulfillmentSend.server.js +23 -6
- package/dist-lib/lib/floridayLoading.functions.d.ts +2 -0
- package/dist-lib/lib/floridayLoading.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayLoading.functions.js +52 -24
- package/dist-lib/lib/logisticsEngine/capacity.js +1 -1
- package/dist-lib/lib/logisticsEngine/staffPlanning.js +1 -1
- package/dist-lib/lib/orderFulfilment.functions.d.ts.map +1 -1
- package/dist-lib/lib/orderFulfilment.functions.js +17 -0
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import { Button, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogDescription, AlertDialogTitle, toast, } from "@flowselections/core";
|
|
4
4
|
import { Plus, Pencil, Trash2, Truck, ArrowUp, ArrowDown } from "lucide-react";
|
|
5
|
-
import { ResponsiveAlertDialogBody, ResponsiveAlertDialogContent, ResponsiveAlertDialogFooter, ResponsiveAlertDialogHeader, } from "
|
|
5
|
+
import { ResponsiveAlertDialogBody, ResponsiveAlertDialogContent, ResponsiveAlertDialogFooter, ResponsiveAlertDialogHeader, } from "../ui/responsive-dialog.js";
|
|
6
6
|
import { Link } from "@tanstack/react-router";
|
|
7
7
|
import { useServerFn } from "@tanstack/react-start";
|
|
8
8
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
@@ -3,7 +3,7 @@ import { useEffect, useMemo, useState } from "react";
|
|
|
3
3
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
4
4
|
import { useServerFn } from "@tanstack/react-start";
|
|
5
5
|
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, Badge, Button, Dialog, DialogTitle, DialogDescription, Input, Label, Textarea, toast, } from "@flowselections/core";
|
|
6
|
-
import { ResponsiveDialogBody, ResponsiveDialogContent, ResponsiveDialogFooter, ResponsiveDialogHeader, } from "
|
|
6
|
+
import { ResponsiveDialogBody, ResponsiveDialogContent, ResponsiveDialogFooter, ResponsiveDialogHeader, } from "../ui/responsive-dialog.js";
|
|
7
7
|
import { applyReschedule, listRescheduleHistory, previewReschedule, getPickMoments, setPickDay, } from "../../lib/logisticsEngine/reschedule";
|
|
8
8
|
import { ENGINE_TASKS_KEY } from "../../hooks/useEngineTasks";
|
|
9
9
|
import { listCarriers } from "../../lib/carriers.functions";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WeekAgendaView.d.ts","sourceRoot":"","sources":["../../../src/components/afhandeling/WeekAgendaView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IACxD,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAgFD,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,UAAU,EACV,KAAK,EACL,YAAY,EACZ,UAAU,GACX,EAAE,mBAAmB,+
|
|
1
|
+
{"version":3,"file":"WeekAgendaView.d.ts","sourceRoot":"","sources":["../../../src/components/afhandeling/WeekAgendaView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IACxD,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAgFD,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,UAAU,EACV,KAAK,EACL,YAAY,EACZ,UAAU,GACX,EAAE,mBAAmB,+BAqKrB"}
|
|
@@ -102,9 +102,8 @@ export function WeekAgendaView({ planned, mode, isLoading, onOrderClick, onDayCl
|
|
|
102
102
|
planten: row?.plantCount ?? 0,
|
|
103
103
|
verzendklaar: row?.ready ?? 0,
|
|
104
104
|
voorbereiding: row?.inPreparation ?? 0,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
: 0,
|
|
105
|
+
// Uitsluitend uit de Engine (taak afgemeld); geannuleerde orders zijn al weggelaten.
|
|
106
|
+
afgehandeld: row?.doneCount ?? 0,
|
|
108
107
|
};
|
|
109
108
|
}
|
|
110
109
|
const entries = [];
|
|
@@ -114,6 +113,8 @@ export function WeekAgendaView({ planned, mode, isLoading, onOrderClick, onDayCl
|
|
|
114
113
|
const d = dateForPlanned(p, mode);
|
|
115
114
|
if (!d || !isSameDay(d, date))
|
|
116
115
|
continue;
|
|
116
|
+
if (/annul|cancel/i.test(p.order.status ?? ""))
|
|
117
|
+
continue;
|
|
117
118
|
entries.push({
|
|
118
119
|
order: p.order,
|
|
119
120
|
cartCount: (p.planning.pickAssignments ?? []).reduce((sum, a) => sum + a.cartCount, 0),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/** Leest de ingestelde werkplek client-side (SSR-veilig). */
|
|
2
|
-
export declare function useWerkplek(): string | null;
|
|
3
|
-
/**
|
|
4
|
-
* Eén melding bovenaan een printscherm zolang er geen werkplek is ingesteld.
|
|
5
|
-
* Printknoppen zijn dan uitgeschakeld, zodat er geen fout per printactie komt.
|
|
6
|
-
*/
|
|
7
|
-
export declare function WerkplekWaarschuwing({ werkplek }: {
|
|
8
|
-
werkplek: string | null;
|
|
9
|
-
}): import("react").JSX.Element | null;
|
|
1
|
+
/** Leest de ingestelde werkplek client-side (SSR-veilig). */
|
|
2
|
+
export declare function useWerkplek(): string | null;
|
|
3
|
+
/**
|
|
4
|
+
* Eén melding bovenaan een printscherm zolang er geen werkplek is ingesteld.
|
|
5
|
+
* Printknoppen zijn dan uitgeschakeld, zodat er geen fout per printactie komt.
|
|
6
|
+
*/
|
|
7
|
+
export declare function WerkplekWaarschuwing({ werkplek }: {
|
|
8
|
+
werkplek: string | null;
|
|
9
|
+
}): import("react").JSX.Element | null;
|
|
10
10
|
//# sourceMappingURL=WerkplekWaarschuwing.d.ts.map
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
import { AlertTriangle } from "lucide-react";
|
|
4
|
-
import { getWerkplek } from "../../lib/printing";
|
|
5
|
-
/** Leest de ingestelde werkplek client-side (SSR-veilig). */
|
|
6
|
-
export function useWerkplek() {
|
|
7
|
-
const [werkplek, setWerkplekState] = useState(null);
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
setWerkplekState(getWerkplek());
|
|
10
|
-
const onStorage = () => setWerkplekState(getWerkplek());
|
|
11
|
-
window.addEventListener("storage", onStorage);
|
|
12
|
-
window.addEventListener("focus", onStorage);
|
|
13
|
-
return () => {
|
|
14
|
-
window.removeEventListener("storage", onStorage);
|
|
15
|
-
window.removeEventListener("focus", onStorage);
|
|
16
|
-
};
|
|
17
|
-
}, []);
|
|
18
|
-
return werkplek;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Eén melding bovenaan een printscherm zolang er geen werkplek is ingesteld.
|
|
22
|
-
* Printknoppen zijn dan uitgeschakeld, zodat er geen fout per printactie komt.
|
|
23
|
-
*/
|
|
24
|
-
export function WerkplekWaarschuwing({ werkplek }) {
|
|
25
|
-
if (werkplek)
|
|
26
|
-
return null;
|
|
27
|
-
return (_jsxs("div", { className: "flex items-start gap-2 rounded-lg border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-sm", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0 text-amber-600" }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Geen werkplek ingesteld." }), " Printen is uitgeschakeld. Stel de werkplek (pickstation- of computernaam) in bij ", _jsx("strong", { children: "Instellingen" }), "."] })] }));
|
|
28
|
-
}
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { AlertTriangle } from "lucide-react";
|
|
4
|
+
import { getWerkplek } from "../../lib/printing";
|
|
5
|
+
/** Leest de ingestelde werkplek client-side (SSR-veilig). */
|
|
6
|
+
export function useWerkplek() {
|
|
7
|
+
const [werkplek, setWerkplekState] = useState(null);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
setWerkplekState(getWerkplek());
|
|
10
|
+
const onStorage = () => setWerkplekState(getWerkplek());
|
|
11
|
+
window.addEventListener("storage", onStorage);
|
|
12
|
+
window.addEventListener("focus", onStorage);
|
|
13
|
+
return () => {
|
|
14
|
+
window.removeEventListener("storage", onStorage);
|
|
15
|
+
window.removeEventListener("focus", onStorage);
|
|
16
|
+
};
|
|
17
|
+
}, []);
|
|
18
|
+
return werkplek;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Eén melding bovenaan een printscherm zolang er geen werkplek is ingesteld.
|
|
22
|
+
* Printknoppen zijn dan uitgeschakeld, zodat er geen fout per printactie komt.
|
|
23
|
+
*/
|
|
24
|
+
export function WerkplekWaarschuwing({ werkplek }) {
|
|
25
|
+
if (werkplek)
|
|
26
|
+
return null;
|
|
27
|
+
return (_jsxs("div", { className: "flex items-start gap-2 rounded-lg border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-sm", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0 text-amber-600" }), _jsxs("div", { children: [_jsx("span", { className: "font-medium", children: "Geen werkplek ingesteld." }), " Printen is uitgeschakeld. Stel de werkplek (pickstation- of computernaam) in bij ", _jsx("strong", { children: "Instellingen" }), "."] })] }));
|
|
28
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { AlertDialogContent, AlertDialogFooter, AlertDialogHeader, DialogContent, DialogFooter, DialogHeader, } from "@flowselections/core";
|
|
3
|
-
import { cn } from "../../lib/utils";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
4
|
const WIDTH_BY_SIZE = {
|
|
5
5
|
sm: "min(40rem, calc(100vw - 2rem))",
|
|
6
6
|
md: "min(48rem, calc(100vw - 2rem))",
|
|
@@ -6,6 +6,7 @@ export declare function useKnownOrders(): {
|
|
|
6
6
|
refs: Set<string>;
|
|
7
7
|
isKnownRef: (...candidates: (string | null | undefined)[]) => boolean;
|
|
8
8
|
isFulfilledRef: (...candidates: (string | null | undefined)[]) => boolean;
|
|
9
|
+
isCancelledRef: (...candidates: (string | null | undefined)[]) => boolean;
|
|
9
10
|
isReady: boolean;
|
|
10
11
|
isLoading: boolean;
|
|
11
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKnownOrders.d.ts","sourceRoot":"","sources":["../../src/hooks/useKnownOrders.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,cAAc;;
|
|
1
|
+
{"version":3,"file":"useKnownOrders.d.ts","sourceRoot":"","sources":["../../src/hooks/useKnownOrders.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,cAAc;;gCA+DV,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,KAAG,OAAO;oCAavC,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,KAAG,OAAO;oCA3BvC,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,KAAG,OAAO;;;EAsC1D"}
|
|
@@ -54,6 +54,25 @@ export function useKnownOrders() {
|
|
|
54
54
|
}
|
|
55
55
|
return set;
|
|
56
56
|
}, [query.data]);
|
|
57
|
+
/** Referenties die in de Verkoop-module geannuleerd zijn; tellen nergens als open. */
|
|
58
|
+
const cancelledRefs = useMemo(() => {
|
|
59
|
+
const set = new Set();
|
|
60
|
+
for (const o of query.data?.orders ?? []) {
|
|
61
|
+
if (!/annul|cancel/i.test(String(o.status ?? "")))
|
|
62
|
+
continue;
|
|
63
|
+
const id = keyOf(o.id);
|
|
64
|
+
const num = keyOf(o.orderNumber);
|
|
65
|
+
if (id)
|
|
66
|
+
set.add(id);
|
|
67
|
+
if (num)
|
|
68
|
+
set.add(num);
|
|
69
|
+
}
|
|
70
|
+
return set;
|
|
71
|
+
}, [query.data]);
|
|
72
|
+
const isCancelledRef = useCallback((...candidates) => candidates.some((c) => {
|
|
73
|
+
const k = keyOf(c);
|
|
74
|
+
return !!k && cancelledRefs.has(k);
|
|
75
|
+
}), [cancelledRefs]);
|
|
57
76
|
// Zodra de lijst geladen is filteren we, ook als er niets open staat.
|
|
58
77
|
const isReady = !query.isLoading && !!query.data && !query.data.error;
|
|
59
78
|
/** Onbekende referentie? Dan niet tonen. Zolang de lijst laadt: niets filteren. */
|
|
@@ -76,5 +95,5 @@ export function useKnownOrders() {
|
|
|
76
95
|
}
|
|
77
96
|
return false;
|
|
78
97
|
}, [fulfilledRefs]);
|
|
79
|
-
return { refs, isKnownRef, isFulfilledRef, isReady, isLoading: query.isLoading };
|
|
98
|
+
return { refs, isKnownRef, isFulfilledRef, isCancelledRef, isReady, isLoading: query.isLoading };
|
|
80
99
|
}
|
|
@@ -14,4 +14,10 @@ export declare function useOrderBuffers(orderRefs: string[]): {
|
|
|
14
14
|
bufferFor: (ref: string | null | undefined) => OrderBufferInfo | null;
|
|
15
15
|
isLoading: boolean;
|
|
16
16
|
};
|
|
17
|
+
/** Alle orders van één buffer (koppeling op buffer-id), ook van andere dagen. */
|
|
18
|
+
export declare function useBufferMembers(bufferId: string | null): import("@tanstack/react-query").UseQueryResult<{
|
|
19
|
+
id: string;
|
|
20
|
+
orderNumber: string;
|
|
21
|
+
status: string | null;
|
|
22
|
+
}[], Error>;
|
|
17
23
|
//# sourceMappingURL=useOrderBuffers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrderBuffers.d.ts","sourceRoot":"","sources":["../../src/hooks/useOrderBuffers.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE;;qBA2C9B,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,eAAe,GAAG,IAAI;;EAItE"}
|
|
1
|
+
{"version":3,"file":"useOrderBuffers.d.ts","sourceRoot":"","sources":["../../src/hooks/useOrderBuffers.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE;;qBA2C9B,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,eAAe,GAAG,IAAI;;EAItE;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;QAMnB,MAAM;iBAAe,MAAM;YAAU,MAAM,GAAG,IAAI;YAYtF"}
|
|
@@ -51,3 +51,24 @@ export function useOrderBuffers(orderRefs) {
|
|
|
51
51
|
isLoading: query.isLoading,
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
+
/** Alle orders van één buffer (koppeling op buffer-id), ook van andere dagen. */
|
|
55
|
+
export function useBufferMembers(bufferId) {
|
|
56
|
+
return useQuery({
|
|
57
|
+
queryKey: ["order-buffers", "members", bufferId],
|
|
58
|
+
enabled: !!bufferId,
|
|
59
|
+
staleTime: 60000,
|
|
60
|
+
retry: false,
|
|
61
|
+
queryFn: async () => {
|
|
62
|
+
const { data, error } = await supabase
|
|
63
|
+
.from("orders")
|
|
64
|
+
.select("id, order_number, status")
|
|
65
|
+
.eq("buffer_id", bufferId)
|
|
66
|
+
.is("deleted_at", null);
|
|
67
|
+
if (error)
|
|
68
|
+
throw new Error(error.message);
|
|
69
|
+
return (data ?? [])
|
|
70
|
+
.filter((r) => !!r.order_number)
|
|
71
|
+
.map((r) => ({ id: r.id, orderNumber: r.order_number, status: r.status }));
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePickAgenda.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickAgenda.ts"],"names":[],"mappings":"AAQA,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAwCD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;;;;;
|
|
1
|
+
{"version":3,"file":"usePickAgenda.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickAgenda.ts"],"names":[],"mappings":"AAQA,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAwCD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;;;;;EA8GnE"}
|
|
@@ -84,7 +84,7 @@ export function usePickAgenda(from, to) {
|
|
|
84
84
|
// Orders die de Verkoop-module niet kent horen hier niet te staan, en orders
|
|
85
85
|
// die de Engine ná hun leverdatum plant gaan terug naar hun eigen dag. De
|
|
86
86
|
// dagtotalen worden opnieuw opgeteld uit wat overblijft.
|
|
87
|
-
const { isKnownRef, isFulfilledRef } = useKnownOrders();
|
|
87
|
+
const { isKnownRef, isFulfilledRef, isCancelledRef } = useKnownOrders();
|
|
88
88
|
const { correctPickDate } = useOrderPickDates(wideFrom, wideTo);
|
|
89
89
|
const days = useMemo(() => {
|
|
90
90
|
const perDay = new Map();
|
|
@@ -94,6 +94,9 @@ export function usePickAgenda(from, to) {
|
|
|
94
94
|
for (const o of d.orders) {
|
|
95
95
|
if (!isKnownRef(o.orderRef))
|
|
96
96
|
continue;
|
|
97
|
+
// Geannuleerde orders tellen niet als open en niet mee in de dag.
|
|
98
|
+
if (isCancelledRef(o.orderRef) || /annul|cancel/i.test(o.status))
|
|
99
|
+
continue;
|
|
97
100
|
const dag = correctPickDate(o.orderRef, d.pickDate);
|
|
98
101
|
const list = perDay.get(dag) ?? [];
|
|
99
102
|
list.push({ ...o, fulfilled: isFulfilledRef(o.orderRef) });
|
|
@@ -106,7 +109,8 @@ export function usePickAgenda(from, to) {
|
|
|
106
109
|
continue;
|
|
107
110
|
if (to && pickDate > to)
|
|
108
111
|
continue;
|
|
109
|
-
|
|
112
|
+
// "Afgehandeld" volgt uitsluitend de Engine (taak afgemeld), niet de Verkoop-status.
|
|
113
|
+
const doneCount = orders.filter((o) => o.status === "done" || o.status === "completed").length;
|
|
110
114
|
const ready = orders.filter((o) => o.status === "ready" || o.status === "done").length;
|
|
111
115
|
out.push({
|
|
112
116
|
pickDate,
|
|
@@ -122,7 +126,7 @@ export function usePickAgenda(from, to) {
|
|
|
122
126
|
}
|
|
123
127
|
out.sort((a, b) => a.pickDate.localeCompare(b.pickDate));
|
|
124
128
|
return out;
|
|
125
|
-
}, [query.data, isKnownRef, isFulfilledRef, correctPickDate, from, to]);
|
|
129
|
+
}, [query.data, isKnownRef, isFulfilledRef, isCancelledRef, correctPickDate, from, to]);
|
|
126
130
|
const byDate = new Map();
|
|
127
131
|
for (const d of days)
|
|
128
132
|
byDate.set(d.pickDate, d);
|
|
@@ -11,6 +11,6 @@ export declare function usePickMode(): {
|
|
|
11
11
|
isError: boolean;
|
|
12
12
|
isUnknown: boolean;
|
|
13
13
|
error: string | undefined;
|
|
14
|
-
refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<
|
|
14
|
+
refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<PickModeInfo, Error>>;
|
|
15
15
|
};
|
|
16
16
|
//# sourceMappingURL=usePickMode.d.ts.map
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -9,8 +9,6 @@ export { PickAgendaView } from "./components/afhandeling/PickAgendaView";
|
|
|
9
9
|
export { PickingPage } from "./components/afhandeling/PickingPage";
|
|
10
10
|
export { PlanningAgendaPage } from "./components/afhandeling/PlanningAgendaPage";
|
|
11
11
|
export { ControlePage } from "./components/afhandeling/ControlePage";
|
|
12
|
-
export { AfhandelingSettingsCard } from "./components/settings/AfhandelingSettingsCard";
|
|
13
|
-
export { VervoerdersSettingsCard } from "./components/settings/VervoerdersSettingsCard";
|
|
14
12
|
export { calculateEarliestDeliveryDate, calculateOrderPlanning, DEFAULT_PICKUP_MOMENT, type EarliestDeliveryRules, type OrderPlanning, type PickupMoment, } from "./lib/planning";
|
|
15
13
|
export { carrierLeadDaysFromMoments, normalizePickupMoments, sanitizeWeekdays, selectCarrierForTarget, type CarrierOrderTarget, type CarrierPlanningInfo, } from "./lib/carrierPlanning";
|
|
16
14
|
export { ensurePickMode, fetchPickMode, getPickMode, refreshPickMode, startPickModeWatch, subscribePickMode, type PickMode, type PickModeInfo } from "./lib/pickMode";
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtK,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist-lib/index.js
CHANGED
|
@@ -9,8 +9,6 @@ export { PickAgendaView } from "./components/afhandeling/PickAgendaView";
|
|
|
9
9
|
export { PickingPage } from "./components/afhandeling/PickingPage";
|
|
10
10
|
export { PlanningAgendaPage } from "./components/afhandeling/PlanningAgendaPage";
|
|
11
11
|
export { ControlePage } from "./components/afhandeling/ControlePage";
|
|
12
|
-
export { AfhandelingSettingsCard } from "./components/settings/AfhandelingSettingsCard";
|
|
13
|
-
export { VervoerdersSettingsCard } from "./components/settings/VervoerdersSettingsCard";
|
|
14
12
|
export { calculateEarliestDeliveryDate, calculateOrderPlanning, DEFAULT_PICKUP_MOMENT, } from "./lib/planning";
|
|
15
13
|
export { carrierLeadDaysFromMoments, normalizePickupMoments, sanitizeWeekdays, selectCarrierForTarget, } from "./lib/carrierPlanning";
|
|
16
14
|
export { ensurePickMode, fetchPickMode, getPickMode, refreshPickMode, startPickModeWatch, subscribePickMode } from "./lib/pickMode";
|
|
@@ -20,7 +20,7 @@ function createSupabaseAdminClient() {
|
|
|
20
20
|
let _supabaseAdmin;
|
|
21
21
|
// Server-side Supabase client with service role - bypasses RLS
|
|
22
22
|
// SECURITY: Only use this for trusted server-side operations, never expose to client code
|
|
23
|
-
// Import like: import { supabaseAdmin } from "
|
|
23
|
+
// Import like: import { supabaseAdmin } from "./client.server.js";
|
|
24
24
|
export const supabaseAdmin = new Proxy({}, {
|
|
25
25
|
get(_, prop, receiver) {
|
|
26
26
|
if (!_supabaseAdmin)
|
|
@@ -29813,6 +29813,12 @@ export type Database = {
|
|
|
29813
29813
|
};
|
|
29814
29814
|
Returns: string;
|
|
29815
29815
|
};
|
|
29816
|
+
logistics_afhandeling_fulfillment_order: {
|
|
29817
|
+
Args: {
|
|
29818
|
+
_order_id: string;
|
|
29819
|
+
};
|
|
29820
|
+
Returns: Json;
|
|
29821
|
+
};
|
|
29816
29822
|
logistics_allocation_check_changes: {
|
|
29817
29823
|
Args: {
|
|
29818
29824
|
p_order_item_ids?: string[];
|
|
@@ -31937,6 +31943,14 @@ export type Database = {
|
|
|
31937
31943
|
};
|
|
31938
31944
|
Returns: Json;
|
|
31939
31945
|
};
|
|
31946
|
+
logistics_shipping_note_wait_reasons: {
|
|
31947
|
+
Args: never;
|
|
31948
|
+
Returns: {
|
|
31949
|
+
order_number: string;
|
|
31950
|
+
reden: string;
|
|
31951
|
+
wacht_sinds: string;
|
|
31952
|
+
}[];
|
|
31953
|
+
};
|
|
31940
31954
|
logistics_shipping_note_wake: {
|
|
31941
31955
|
Args: {
|
|
31942
31956
|
_slip_job_id: string;
|