@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.
Files changed (47) hide show
  1. package/dist-lib/components/afhandeling/ControlePage.js +1 -1
  2. package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
  3. package/dist-lib/components/afhandeling/DagDetailDialog.js +255 -89
  4. package/dist-lib/components/afhandeling/NuVersturenButton.d.ts +2 -2
  5. package/dist-lib/components/afhandeling/NuVersturenButton.d.ts.map +1 -1
  6. package/dist-lib/components/afhandeling/NuVersturenButton.js +22 -4
  7. package/dist-lib/components/afhandeling/ScanControleView.js +1 -1
  8. package/dist-lib/components/afhandeling/VervoerdersPage.js +1 -1
  9. package/dist-lib/components/afhandeling/VerzetOrderDialog.js +1 -1
  10. package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
  11. package/dist-lib/components/afhandeling/WeekAgendaView.js +4 -3
  12. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts +9 -9
  13. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.js +28 -28
  14. package/dist-lib/components/ui/responsive-dialog.js +1 -1
  15. package/dist-lib/hooks/useKnownOrders.d.ts +1 -0
  16. package/dist-lib/hooks/useKnownOrders.d.ts.map +1 -1
  17. package/dist-lib/hooks/useKnownOrders.js +20 -1
  18. package/dist-lib/hooks/useOrderBuffers.d.ts +6 -0
  19. package/dist-lib/hooks/useOrderBuffers.d.ts.map +1 -1
  20. package/dist-lib/hooks/useOrderBuffers.js +21 -0
  21. package/dist-lib/hooks/usePickAgenda.d.ts.map +1 -1
  22. package/dist-lib/hooks/usePickAgenda.js +7 -3
  23. package/dist-lib/hooks/usePickMode.d.ts +1 -1
  24. package/dist-lib/index.d.ts +0 -2
  25. package/dist-lib/index.d.ts.map +1 -1
  26. package/dist-lib/index.js +0 -2
  27. package/dist-lib/integrations/supabase/client.server.js +1 -1
  28. package/dist-lib/integrations/supabase/types.d.ts +14 -0
  29. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  30. package/dist-lib/lib/authGateway.server.d.ts.map +1 -1
  31. package/dist-lib/lib/authGateway.server.js +3 -2
  32. package/dist-lib/lib/cartAssignments.functions.d.ts +48 -0
  33. package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
  34. package/dist-lib/lib/cartAssignments.functions.js +111 -0
  35. package/dist-lib/lib/deliveryNotePrint.d.ts +33 -33
  36. package/dist-lib/lib/deliveryNotePrint.js +219 -219
  37. package/dist-lib/lib/floridayFulfillmentSend.server.d.ts +6 -1
  38. package/dist-lib/lib/floridayFulfillmentSend.server.d.ts.map +1 -1
  39. package/dist-lib/lib/floridayFulfillmentSend.server.js +23 -6
  40. package/dist-lib/lib/floridayLoading.functions.d.ts +2 -0
  41. package/dist-lib/lib/floridayLoading.functions.d.ts.map +1 -1
  42. package/dist-lib/lib/floridayLoading.functions.js +52 -24
  43. package/dist-lib/lib/logisticsEngine/capacity.js +1 -1
  44. package/dist-lib/lib/logisticsEngine/staffPlanning.js +1 -1
  45. package/dist-lib/lib/orderFulfilment.functions.d.ts.map +1 -1
  46. package/dist-lib/lib/orderFulfilment.functions.js +17 -0
  47. 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 "../../components/ui/responsive-dialog";
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 "../../components/ui/responsive-dialog";
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,+BAwKrB"}
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
- afgehandeld: row
106
- ? Math.max(row.doneCount, row.orders.filter((o) => o.fulfilled || isDoneStatus(o.status)).length)
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;;gCAyCV,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,KAAG,OAAO;oCAavC,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,KAAG,OAAO;;;EAW1D"}
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;;;;;EA6GnE"}
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
- const doneCount = orders.filter((o) => o.fulfilled || o.status === "done" || o.status === "completed").length;
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<NoInfer<PickModeInfo>, Error>>;
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
@@ -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";
@@ -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;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,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"}
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 "../../integrations/supabase/client.server";
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;