@flowselections/floriday-afhandeling-module 1.0.41 → 1.0.43

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 (86) hide show
  1. package/dist-lib/components/afhandeling/AutoProcessStatus.d.ts +3 -1
  2. package/dist-lib/components/afhandeling/AutoProcessStatus.d.ts.map +1 -1
  3. package/dist-lib/components/afhandeling/AutoProcessStatus.js +36 -3
  4. package/dist-lib/components/afhandeling/ControlePage.d.ts.map +1 -1
  5. package/dist-lib/components/afhandeling/ControlePage.js +53 -13
  6. package/dist-lib/components/afhandeling/DagDetailDialog.d.ts +1 -1
  7. package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
  8. package/dist-lib/components/afhandeling/DagDetailDialog.js +409 -120
  9. package/dist-lib/components/afhandeling/PickAgendaView.d.ts.map +1 -1
  10. package/dist-lib/components/afhandeling/PickAgendaView.js +4 -4
  11. package/dist-lib/components/afhandeling/PickingPage.d.ts.map +1 -1
  12. package/dist-lib/components/afhandeling/PickingPage.js +1 -1
  13. package/dist-lib/components/afhandeling/ScanControleView.d.ts +2 -0
  14. package/dist-lib/components/afhandeling/ScanControleView.d.ts.map +1 -0
  15. package/dist-lib/components/afhandeling/ScanControleView.js +158 -0
  16. package/dist-lib/components/afhandeling/WeekAgendaView.js +1 -1
  17. package/dist-lib/hooks/useCartIndex.d.ts.map +1 -1
  18. package/dist-lib/hooks/useCartIndex.js +6 -1
  19. package/dist-lib/hooks/useEngineTasks.js +1 -1
  20. package/dist-lib/hooks/useKnownOrders.d.ts +11 -0
  21. package/dist-lib/hooks/useKnownOrders.d.ts.map +1 -0
  22. package/dist-lib/hooks/useKnownOrders.js +54 -0
  23. package/dist-lib/hooks/useOrderBuffers.d.ts +17 -0
  24. package/dist-lib/hooks/useOrderBuffers.d.ts.map +1 -0
  25. package/dist-lib/hooks/useOrderBuffers.js +53 -0
  26. package/dist-lib/hooks/useOrderPickDates.d.ts +10 -0
  27. package/dist-lib/hooks/useOrderPickDates.d.ts.map +1 -0
  28. package/dist-lib/hooks/useOrderPickDates.js +62 -0
  29. package/dist-lib/hooks/useOrderPlanning.d.ts +1 -3
  30. package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
  31. package/dist-lib/hooks/useOrderPlanning.js +9 -13
  32. package/dist-lib/hooks/usePickAgenda.d.ts +1 -6
  33. package/dist-lib/hooks/usePickAgenda.d.ts.map +1 -1
  34. package/dist-lib/hooks/usePickAgenda.js +62 -9
  35. package/dist-lib/hooks/usePickMode.d.ts +10 -0
  36. package/dist-lib/hooks/usePickMode.d.ts.map +1 -0
  37. package/dist-lib/hooks/usePickMode.js +31 -0
  38. package/dist-lib/index.d.ts +2 -0
  39. package/dist-lib/index.d.ts.map +1 -1
  40. package/dist-lib/index.js +19 -6
  41. package/dist-lib/integrations/supabase/auth-middleware.d.ts +3598 -1225
  42. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  43. package/dist-lib/integrations/supabase/client.server.d.ts +3598 -1225
  44. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  45. package/dist-lib/integrations/supabase/moduleClient.d.ts +3598 -1225
  46. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
  47. package/dist-lib/integrations/supabase/types.d.ts +3645 -1246
  48. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  49. package/dist-lib/integrations/supabase/types.js +1 -0
  50. package/dist-lib/lib/afhandelingSettings.functions.d.ts +6076 -1330
  51. package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
  52. package/dist-lib/lib/carriers.functions.d.ts +15052 -3187
  53. package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
  54. package/dist-lib/lib/cartAssignments.functions.d.ts +15052 -3187
  55. package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
  56. package/dist-lib/lib/cartControl.functions.d.ts +55913 -6313
  57. package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
  58. package/dist-lib/lib/cartControl.functions.js +134 -10
  59. package/dist-lib/lib/deliveryNote.functions.d.ts +25891 -0
  60. package/dist-lib/lib/deliveryNote.functions.d.ts.map +1 -0
  61. package/dist-lib/lib/deliveryNote.functions.js +32 -0
  62. package/dist-lib/lib/engineLayouts.functions.d.ts +25889 -0
  63. package/dist-lib/lib/engineLayouts.functions.d.ts.map +1 -0
  64. package/dist-lib/lib/engineLayouts.functions.js +42 -0
  65. package/dist-lib/lib/floriday.functions.d.ts +28979 -712
  66. package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
  67. package/dist-lib/lib/floriday.functions.js +118 -343
  68. package/dist-lib/lib/logisticsEngine/reschedule.d.ts +17 -0
  69. package/dist-lib/lib/logisticsEngine/reschedule.d.ts.map +1 -1
  70. package/dist-lib/lib/logisticsEngine/reschedule.js +63 -0
  71. package/dist-lib/lib/orderFulfilment.functions.d.ts +25891 -0
  72. package/dist-lib/lib/orderFulfilment.functions.d.ts.map +1 -0
  73. package/dist-lib/lib/orderFulfilment.functions.js +35 -0
  74. package/dist-lib/lib/orderStatus.d.ts +10 -0
  75. package/dist-lib/lib/orderStatus.d.ts.map +1 -0
  76. package/dist-lib/lib/orderStatus.js +81 -0
  77. package/dist-lib/lib/pickDates.functions.d.ts +25896 -0
  78. package/dist-lib/lib/pickDates.functions.d.ts.map +1 -0
  79. package/dist-lib/lib/pickDates.functions.js +56 -0
  80. package/dist-lib/lib/pickMode.d.ts +14 -0
  81. package/dist-lib/lib/pickMode.d.ts.map +1 -0
  82. package/dist-lib/lib/pickMode.js +103 -0
  83. package/dist-lib/lib/printing.d.ts +3 -1
  84. package/dist-lib/lib/printing.d.ts.map +1 -1
  85. package/dist-lib/lib/printing.js +1 -0
  86. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"usePickAgenda.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickAgenda.ts"],"names":[],"mappings":"AAIA,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;CAClB;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,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AA4BD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;;;;;EAyDnE"}
1
+ {"version":3,"file":"usePickAgenda.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickAgenda.ts"],"names":[],"mappings":"AAOA,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;CAClB;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,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAuCD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;;;;;EAuGnE"}
@@ -1,6 +1,8 @@
1
- import { useEffect } from "react";
1
+ import { useEffect, useMemo } from "react";
2
2
  import { useQuery, useQueryClient } from "@tanstack/react-query";
3
3
  import { supabase } from "../integrations/supabase/moduleClient";
4
+ import { useKnownOrders } from "./useKnownOrders";
5
+ import { useOrderPickDates } from "./useOrderPickDates";
4
6
  function toOrders(value) {
5
7
  if (!Array.isArray(value))
6
8
  return [];
@@ -21,20 +23,29 @@ function toOrders(value) {
21
23
  * berekent zelf geen pickdagen meer en doet geen datum- of tijdzonelogica.
22
24
  * Dagen zonder rij tonen simpelweg nullen.
23
25
  */
26
+ function shiftDay(day, delta) {
27
+ const d = new Date(`${day}T12:00:00Z`);
28
+ d.setUTCDate(d.getUTCDate() + delta);
29
+ return d.toISOString().slice(0, 10);
30
+ }
24
31
  export function usePickAgenda(from, to) {
25
32
  const queryClient = useQueryClient();
26
- const queryKey = ["logistics-pick-agenda", from, to];
33
+ // Ruimer ophalen dan gevraagd: de Engine schuift oude taken naar vandaag, wij
34
+ // zetten ze terug op hun oorspronkelijke dag en dat kan buiten de week vallen.
35
+ const wideFrom = from ? shiftDay(from, -180) : null;
36
+ const wideTo = to ? shiftDay(to, 30) : null;
37
+ const queryKey = ["logistics-pick-agenda", wideFrom, wideTo];
27
38
  const query = useQuery({
28
39
  queryKey,
29
- enabled: !!from && !!to,
40
+ enabled: !!wideFrom && !!wideTo,
30
41
  staleTime: 30000,
31
42
  retry: false,
32
43
  refetchInterval: 60000,
33
44
  refetchOnWindowFocus: true,
34
45
  queryFn: async () => {
35
46
  const { data, error } = await supabase.rpc("logistics_pick_agenda", {
36
- p_from: from,
37
- p_to: to,
47
+ p_from: wideFrom,
48
+ p_to: wideTo,
38
49
  });
39
50
  if (error)
40
51
  throw new Error(error.message);
@@ -51,10 +62,12 @@ export function usePickAgenda(from, to) {
51
62
  }));
52
63
  },
53
64
  });
54
- // Ververs zodra de Engine taken wijzigt.
65
+ // Ververs zodra de Engine taken wijzigt. Elke hook-instantie krijgt een eigen
66
+ // kanaalnaam; hergebruik van dezelfde naam laat Supabase een al-geabonneerd
67
+ // kanaal terugvinden en gooit "cannot add postgres_changes after subscribe()".
55
68
  useEffect(() => {
56
69
  const channel = supabase
57
- .channel("pick-agenda-logistics-tasks")
70
+ .channel(`pick-agenda-logistics-tasks-${Math.random().toString(36).slice(2)}`)
58
71
  .on("postgres_changes", { event: "*", schema: "public", table: "logistics_tasks" }, () => {
59
72
  queryClient.invalidateQueries({ queryKey: ["logistics-pick-agenda"] });
60
73
  })
@@ -63,11 +76,51 @@ export function usePickAgenda(from, to) {
63
76
  supabase.removeChannel(channel);
64
77
  };
65
78
  }, [queryClient]);
79
+ // Orders die de Verkoop-module niet kent horen hier niet te staan, en orders
80
+ // die de Engine ná hun leverdatum plant gaan terug naar hun eigen dag. De
81
+ // dagtotalen worden opnieuw opgeteld uit wat overblijft.
82
+ const { isKnownRef } = useKnownOrders();
83
+ const { correctPickDate } = useOrderPickDates();
84
+ const days = useMemo(() => {
85
+ const perDay = new Map();
86
+ for (const d of query.data ?? []) {
87
+ if (!perDay.has(d.pickDate))
88
+ perDay.set(d.pickDate, []);
89
+ for (const o of d.orders) {
90
+ if (!isKnownRef(o.orderRef))
91
+ continue;
92
+ const dag = correctPickDate(o.orderRef, d.pickDate);
93
+ const list = perDay.get(dag) ?? [];
94
+ list.push(o);
95
+ perDay.set(dag, list);
96
+ }
97
+ }
98
+ const out = [];
99
+ for (const [pickDate, orders] of perDay) {
100
+ if (from && pickDate < from)
101
+ continue;
102
+ if (to && pickDate > to)
103
+ continue;
104
+ const ready = orders.filter((o) => o.status === "ready" || o.status === "done").length;
105
+ out.push({
106
+ pickDate,
107
+ orders,
108
+ orderCount: orders.length,
109
+ cartCount: orders.reduce((s, o) => s + (o.carts || 0), 0),
110
+ plantCount: orders.reduce((s, o) => s + (o.plants || 0), 0),
111
+ ready,
112
+ inPreparation: Math.max(0, orders.length - ready),
113
+ shiftedCount: orders.filter((o) => o.shifted).length,
114
+ });
115
+ }
116
+ out.sort((a, b) => a.pickDate.localeCompare(b.pickDate));
117
+ return out;
118
+ }, [query.data, isKnownRef, correctPickDate, from, to]);
66
119
  const byDate = new Map();
67
- for (const d of query.data ?? [])
120
+ for (const d of days)
68
121
  byDate.set(d.pickDate, d);
69
122
  return {
70
- days: query.data ?? [],
123
+ days,
71
124
  byDate,
72
125
  isLoading: query.isLoading,
73
126
  error: query.error instanceof Error ? query.error.message : null,
@@ -0,0 +1,10 @@
1
+ /**
2
+ * De Engine bepaalt de actieve pickmethode. Alleen bij "picken per kar"
3
+ * bestaat er een karcontrolestap. Zonder antwoord blijft die verborgen.
4
+ */
5
+ export declare function usePickMode(): {
6
+ pickMode: "order" | "buffer" | "cart" | "smallest" | null;
7
+ showCartControl: boolean;
8
+ isLoading: boolean;
9
+ };
10
+ //# sourceMappingURL=usePickMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePickMode.d.ts","sourceRoot":"","sources":["../../src/hooks/usePickMode.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,WAAW;;;;EA0B1B"}
@@ -0,0 +1,31 @@
1
+ import { useEffect } from "react";
2
+ import { useQuery, useQueryClient } from "@tanstack/react-query";
3
+ import { fetchPickMode, startPickModeWatch, subscribePickMode, } from "../lib/pickMode";
4
+ /**
5
+ * De Engine bepaalt de actieve pickmethode. Alleen bij "picken per kar"
6
+ * bestaat er een karcontrolestap. Zonder antwoord blijft die verborgen.
7
+ */
8
+ export function usePickMode() {
9
+ const queryClient = useQueryClient();
10
+ const query = useQuery({
11
+ queryKey: ["logistics-pick-mode"],
12
+ staleTime: 5000,
13
+ refetchInterval: 30000,
14
+ refetchOnWindowFocus: true,
15
+ refetchOnMount: "always",
16
+ retry: false,
17
+ queryFn: fetchPickMode,
18
+ });
19
+ // Live meelopen met wijzigingen in de instellingen van de Engine.
20
+ useEffect(() => {
21
+ startPickModeWatch();
22
+ return subscribePickMode(() => {
23
+ queryClient.invalidateQueries({ queryKey: ["logistics-pick-mode"] });
24
+ });
25
+ }, [queryClient]);
26
+ return {
27
+ pickMode: query.data?.pickMode ?? null,
28
+ showCartControl: query.data?.showCartControl === true,
29
+ isLoading: query.isLoading,
30
+ };
31
+ }
@@ -14,5 +14,7 @@ export { AfhandelingSettingsCard } from "./components/settings/AfhandelingSettin
14
14
  export { VervoerdersSettingsCard } from "./components/settings/VervoerdersSettingsCard";
15
15
  export { calculateEarliestDeliveryDate, calculateOrderPlanning, DEFAULT_PICKUP_MOMENT, type EarliestDeliveryRules, type OrderPlanning, type PickupMoment, } from "./lib/planning";
16
16
  export { carrierLeadDaysFromMoments, normalizePickupMoments, sanitizeWeekdays, selectCarrierForTarget, type CarrierOrderTarget, type CarrierPlanningInfo, } from "./lib/carrierPlanning";
17
+ export { ensurePickMode, fetchPickMode, getPickMode, refreshPickMode, startPickModeWatch, subscribePickMode, type PickMode, type PickModeInfo } from "./lib/pickMode";
18
+ export { usePickMode } from "./hooks/usePickMode";
17
19
  export declare const floridayAfhandelingModule: FlowModule;
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,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;AAK/B,eAAO,MAAM,yBAAyB,EAAE,UAkBvC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,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;AAM/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;AAalD,eAAO,MAAM,yBAAyB,EAAE,UAmBvC,CAAC"}
package/dist-lib/index.js CHANGED
@@ -16,19 +16,32 @@ export { calculateEarliestDeliveryDate, calculateOrderPlanning, DEFAULT_PICKUP_M
16
16
  export { carrierLeadDaysFromMoments, normalizePickupMoments, sanitizeWeekdays, selectCarrierForTarget, } from "./lib/carrierPlanning";
17
17
  import { AfhandelingSettingsCard } from "./components/settings/AfhandelingSettingsCard";
18
18
  import { VervoerdersSettingsCard } from "./components/settings/VervoerdersSettingsCard";
19
+ import { ensurePickMode, getPickMode } from "./lib/pickMode";
20
+ export { ensurePickMode, fetchPickMode, getPickMode, refreshPickMode, startPickModeWatch, subscribePickMode } from "./lib/pickMode";
21
+ export { usePickMode } from "./hooks/usePickMode";
22
+ const baseChildren = [
23
+ { label: "Pick Agenda", href: "/afhandeling/picking", icon: CalendarCheck },
24
+ { label: "Planning en leveringen", href: "/afhandeling/leveringen", icon: CalendarRange },
25
+ ];
26
+ const cartControlChild = {
27
+ label: "Controle karren",
28
+ href: "/afhandeling/controle",
29
+ icon: ClipboardCheck,
30
+ };
19
31
  export const floridayAfhandelingModule = {
20
32
  id: "afhandeling",
21
33
  name: "Afhandeling",
22
- version: "1.3.0",
34
+ version: "1.4.0",
23
35
  nav: {
24
36
  label: "Afhandeling",
25
37
  href: "/afhandeling/picking",
26
38
  icon: PackageCheck,
27
- children: [
28
- { label: "Pick Agenda", href: "/afhandeling/picking", icon: CalendarCheck },
29
- { label: "Planning en leveringen", href: "/afhandeling/leveringen", icon: CalendarRange },
30
- { label: "Controle karren", href: "/afhandeling/controle", icon: ClipboardCheck },
31
- ],
39
+ // De Engine beslist: karcontrole hoort alleen bij "picken per kar".
40
+ // Zonder antwoord blijft het item verborgen (fail closed).
41
+ get children() {
42
+ void ensurePickMode();
43
+ return getPickMode().showCartControl ? [...baseChildren, cartControlChild] : baseChildren;
44
+ },
32
45
  },
33
46
  settingsCards: [
34
47
  { component: VervoerdersSettingsCard, order: 80 },