@flowselections/floriday-afhandeling-module 1.0.25 → 1.0.26
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/CapacityWarning.d.ts +10 -0
- package/dist-lib/components/afhandeling/CapacityWarning.d.ts.map +1 -0
- package/dist-lib/components/afhandeling/CapacityWarning.js +12 -0
- package/dist-lib/components/afhandeling/ControlePage.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/ControlePage.js +7 -2
- package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/DagDetailDialog.js +158 -62
- package/dist-lib/components/afhandeling/LeveringenPage.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/LeveringenPage.js +2 -10
- package/dist-lib/components/afhandeling/PickAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/PickAgendaView.js +4 -11
- package/dist-lib/components/afhandeling/VervoerdersPage.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/VervoerdersPage.js +2 -5
- package/dist-lib/components/afhandeling/VerzetOrderDialog.d.ts +14 -0
- package/dist-lib/components/afhandeling/VerzetOrderDialog.d.ts.map +1 -0
- package/dist-lib/components/afhandeling/VerzetOrderDialog.js +203 -0
- package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/WeekAgendaView.js +7 -3
- package/dist-lib/components/pickstation/PickstationPage.d.ts.map +1 -1
- package/dist-lib/components/pickstation/PickstationPage.js +1 -0
- package/dist-lib/components/settings/VervoerdersSettingsCard.d.ts.map +1 -1
- package/dist-lib/components/settings/VervoerdersSettingsCard.js +2 -5
- package/dist-lib/hooks/useCapacityCheck.d.ts +10 -0
- package/dist-lib/hooks/useCapacityCheck.d.ts.map +1 -0
- package/dist-lib/hooks/useCapacityCheck.js +22 -0
- package/dist-lib/hooks/useEngineTasks.d.ts +14 -0
- package/dist-lib/hooks/useEngineTasks.d.ts.map +1 -0
- package/dist-lib/hooks/useEngineTasks.js +49 -0
- package/dist-lib/hooks/useOrderPlanning.d.ts +8 -2
- package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
- package/dist-lib/hooks/useOrderPlanning.js +95 -93
- package/dist-lib/index.d.ts +0 -3
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +1 -5
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +9010 -5433
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +9010 -5433
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +9010 -5433
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +9184 -5544
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/afhandelingSettings.functions.d.ts +7186 -32
- package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
- package/dist-lib/lib/carriers.functions.d.ts +17965 -80
- package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartAssignments.functions.d.ts +17965 -80
- package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartControl.functions.d.ts +35962 -170
- package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartControl.functions.js +103 -13
- package/dist-lib/lib/floriday.functions.d.ts +9010 -5433
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsEngine/capacity.d.ts +19 -0
- package/dist-lib/lib/logisticsEngine/capacity.d.ts.map +1 -0
- package/dist-lib/lib/logisticsEngine/capacity.js +91 -0
- package/dist-lib/lib/logisticsEngine/engine.d.ts +99 -0
- package/dist-lib/lib/logisticsEngine/engine.d.ts.map +1 -0
- package/dist-lib/lib/logisticsEngine/engine.js +102 -0
- package/dist-lib/lib/logisticsEngine/reschedule.d.ts +65 -0
- package/dist-lib/lib/logisticsEngine/reschedule.d.ts.map +1 -0
- package/dist-lib/lib/logisticsEngine/reschedule.js +86 -0
- package/dist-lib/lib/logisticsEngine/staffPlanning.d.ts +37 -0
- package/dist-lib/lib/logisticsEngine/staffPlanning.d.ts.map +1 -0
- package/dist-lib/lib/logisticsEngine/staffPlanning.js +100 -0
- package/dist-lib/lib/serverFnError.d.ts +10 -0
- package/dist-lib/lib/serverFnError.d.ts.map +1 -0
- package/dist-lib/lib/serverFnError.js +29 -0
- package/dist-lib/lib/serverRoutes/index.d.ts +0 -1
- package/dist-lib/lib/serverRoutes/index.d.ts.map +1 -1
- package/dist-lib/lib/serverRoutes/index.js +0 -1
- package/dist-lib/lib/timezone.d.ts +27 -0
- package/dist-lib/lib/timezone.d.ts.map +1 -0
- package/dist-lib/lib/timezone.js +68 -0
- package/package.json +6 -21
- package/dist-lib/components/engine/CapaciteitsmaatregelenPage.d.ts +0 -2
- package/dist-lib/components/engine/CapaciteitsmaatregelenPage.d.ts.map +0 -1
- package/dist-lib/components/engine/CapaciteitsmaatregelenPage.js +0 -40
- package/dist-lib/components/engine/CapaciteitsmonitorPage.d.ts +0 -2
- package/dist-lib/components/engine/CapaciteitsmonitorPage.d.ts.map +0 -1
- package/dist-lib/components/engine/CapaciteitsmonitorPage.js +0 -49
- package/dist-lib/components/engine/FormulesPage.d.ts +0 -2
- package/dist-lib/components/engine/FormulesPage.d.ts.map +0 -1
- package/dist-lib/components/engine/FormulesPage.js +0 -252
- package/dist-lib/components/engine/PlaceholderPage.d.ts +0 -6
- package/dist-lib/components/engine/PlaceholderPage.d.ts.map +0 -1
- package/dist-lib/components/engine/PlaceholderPage.js +0 -6
- package/dist-lib/components/engine/StrategieenPage.d.ts +0 -2
- package/dist-lib/components/engine/StrategieenPage.d.ts.map +0 -1
- package/dist-lib/components/engine/StrategieenPage.js +0 -80
- package/dist-lib/lib/logisticsEngine/capacity.functions.d.ts +0 -64978
- package/dist-lib/lib/logisticsEngine/capacity.functions.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/capacity.functions.js +0 -90
- package/dist-lib/lib/logisticsEngine/config.d.ts +0 -140
- package/dist-lib/lib/logisticsEngine/config.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/config.js +0 -488
- package/dist-lib/lib/logisticsEngine/enginePickTime.d.ts +0 -29
- package/dist-lib/lib/logisticsEngine/enginePickTime.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/enginePickTime.js +0 -136
- package/dist-lib/lib/logisticsEngine/evaluate.functions.d.ts +0 -16278
- package/dist-lib/lib/logisticsEngine/evaluate.functions.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/evaluate.functions.js +0 -104
- package/dist-lib/lib/logisticsEngine/expression.d.ts +0 -21
- package/dist-lib/lib/logisticsEngine/expression.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/expression.js +0 -263
- package/dist-lib/lib/logisticsEngine/formulas.functions.d.ts +0 -32512
- package/dist-lib/lib/logisticsEngine/formulas.functions.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/formulas.functions.js +0 -58
- package/dist-lib/lib/logisticsEngine/safetyLayer.d.ts +0 -83
- package/dist-lib/lib/logisticsEngine/safetyLayer.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/safetyLayer.js +0 -182
- package/dist-lib/lib/logisticsEngine/strategies.functions.d.ts +0 -129961
- package/dist-lib/lib/logisticsEngine/strategies.functions.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/strategies.functions.js +0 -176
- package/dist-lib/lib/logisticsEngine/variables.d.ts +0 -29
- package/dist-lib/lib/logisticsEngine/variables.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/variables.js +0 -144
- package/dist-lib/lib/logisticsEngine/wizard.functions.d.ts +0 -64976
- package/dist-lib/lib/logisticsEngine/wizard.functions.d.ts.map +0 -1
- package/dist-lib/lib/logisticsEngine/wizard.functions.js +0 -175
- package/dist-lib/lib/serverRoutes/logisticsTick.handler.d.ts +0 -3
- package/dist-lib/lib/serverRoutes/logisticsTick.handler.d.ts.map +0 -1
- package/dist-lib/lib/serverRoutes/logisticsTick.handler.js +0 -42
|
@@ -20,21 +20,115 @@ async function loadControlPlanningSettings(supabase, userId) {
|
|
|
20
20
|
const minWorkdays = Math.max(0, Number(settings?.pick_days_before_transport ?? 1));
|
|
21
21
|
return { pickWeekdays, minWorkdays };
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Karren van vandaag volgens de Logistics Engine.
|
|
25
|
+
*
|
|
26
|
+
* De Engine is leidend: alleen orders met een `load.compose`-taak waarvan
|
|
27
|
+
* `planned_start` vandaag (Europe/Amsterdam) valt, staan op de controlelijst,
|
|
28
|
+
* en het aantal karren komt uit `payload.loadCarriers` — nooit meer uit de
|
|
29
|
+
* eigen stuks/fust-berekening.
|
|
30
|
+
*/
|
|
31
|
+
function amsterdamDay(iso) {
|
|
32
|
+
if (!iso)
|
|
33
|
+
return null;
|
|
34
|
+
const d = new Date(iso);
|
|
35
|
+
if (Number.isNaN(d.getTime()))
|
|
36
|
+
return null;
|
|
37
|
+
return new Intl.DateTimeFormat("en-CA", {
|
|
38
|
+
timeZone: "Europe/Amsterdam",
|
|
39
|
+
year: "numeric",
|
|
40
|
+
month: "2-digit",
|
|
41
|
+
day: "2-digit",
|
|
42
|
+
}).format(d);
|
|
43
|
+
}
|
|
44
|
+
async function loadEngineCartsForToday(supabase) {
|
|
45
|
+
const today = amsterdamDay(new Date().toISOString());
|
|
46
|
+
const { data, error } = await supabase
|
|
47
|
+
.from("logistics_tasks")
|
|
48
|
+
.select("order_ref, payload, planned_start, sequence, status")
|
|
49
|
+
.eq("owner_module", "afhandeling")
|
|
50
|
+
.eq("task_type", "load.compose")
|
|
51
|
+
.in("status", ["planned", "ready", "in_progress"])
|
|
52
|
+
.limit(1000);
|
|
53
|
+
if (error)
|
|
54
|
+
throw new Error(error.message);
|
|
55
|
+
const map = new Map();
|
|
56
|
+
for (const row of (data ?? [])) {
|
|
57
|
+
const day = amsterdamDay(row.planned_start);
|
|
58
|
+
if (!day || day !== today)
|
|
59
|
+
continue;
|
|
60
|
+
const carriers = Array.isArray(row.payload?.loadCarriers)
|
|
61
|
+
? row.payload.loadCarriers
|
|
62
|
+
: [];
|
|
63
|
+
const cartCount = carriers.length;
|
|
64
|
+
const cartOrderRefs = carriers.map((c) => Array.isArray(c?.orderRefs) ? c.orderRefs.filter((r) => typeof r === "string") : []);
|
|
65
|
+
const existing = map.get(row.order_ref);
|
|
66
|
+
if (!existing || cartCount > existing.cartCount) {
|
|
67
|
+
map.set(row.order_ref, {
|
|
68
|
+
cartCount: Math.max(1, cartCount),
|
|
69
|
+
pickDate: day,
|
|
70
|
+
cartOrderRefs,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return map;
|
|
75
|
+
}
|
|
76
|
+
/** Alle nog niet goedgekeurde karren van vandaag, gefilterd op de Engine. */
|
|
77
|
+
async function loadPendingControlOrders(supabase) {
|
|
78
|
+
const { loadTodaysPickstationOrders } = await import("./pickstationOrders.server");
|
|
79
|
+
const [orders, engine] = await Promise.all([
|
|
80
|
+
loadTodaysPickstationOrders(),
|
|
81
|
+
loadEngineCartsForToday(supabase),
|
|
82
|
+
]);
|
|
83
|
+
const pending = orders.filter((o) => !APPROVED_STATUSES.has(o.status));
|
|
84
|
+
const result = [];
|
|
85
|
+
const seenSharedCarts = new Set();
|
|
86
|
+
for (const o of pending) {
|
|
87
|
+
const info = (o.orderNumber ? engine.get(o.orderNumber) : undefined) ?? engine.get(o.orderId);
|
|
88
|
+
const refs = info?.cartOrderRefs[o.cartIndex - 1] ?? [];
|
|
89
|
+
const orderNumbers = Array.from(new Set([o.orderNumber, ...refs].filter((v) => Boolean(v))));
|
|
90
|
+
if (orderNumbers.length > 1) {
|
|
91
|
+
// Kar met meerdere orders: maar één regel tonen.
|
|
92
|
+
const key = `${[...orderNumbers].sort().join("|")}#${o.cartIndex}`;
|
|
93
|
+
if (seenSharedCarts.has(key))
|
|
94
|
+
continue;
|
|
95
|
+
seenSharedCarts.add(key);
|
|
96
|
+
}
|
|
97
|
+
result.push({
|
|
98
|
+
orderId: o.orderId,
|
|
99
|
+
orderSource: o.orderSource,
|
|
100
|
+
cartIndex: o.cartIndex,
|
|
101
|
+
cartNumber: o.cartNumber,
|
|
102
|
+
orderNumber: o.orderNumber,
|
|
103
|
+
orderNumbers,
|
|
104
|
+
customerName: o.customerName,
|
|
105
|
+
carrierName: o.carrierName,
|
|
106
|
+
deliveryDate: o.deliveryDate,
|
|
107
|
+
pickupDate: o.pickupDate,
|
|
108
|
+
pickupTime: o.pickupTime,
|
|
109
|
+
country: o.country,
|
|
110
|
+
cratesOnCart: o.cratesOnCart,
|
|
111
|
+
pickDate: info?.pickDate ?? amsterdamDay(new Date().toISOString()),
|
|
112
|
+
printedCount: o.printedCount,
|
|
113
|
+
status: o.status,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
23
118
|
/** Haal alle karren op die vandaag gepickt / klaargezet hadden moeten worden. */
|
|
24
119
|
export const getTodaysControlCarts = createServerFn({ method: "GET" })
|
|
25
120
|
.middleware([requireSupabaseAuth])
|
|
26
|
-
.handler(async () => {
|
|
27
|
-
const
|
|
28
|
-
const orders = await
|
|
29
|
-
const carts = orders
|
|
30
|
-
.filter((o) => !APPROVED_STATUSES.has(o.status))
|
|
31
|
-
.map((o) => ({
|
|
121
|
+
.handler(async ({ context }) => {
|
|
122
|
+
const supabase = context.supabase;
|
|
123
|
+
const orders = await loadPendingControlOrders(supabase);
|
|
124
|
+
const carts = orders.map((o) => ({
|
|
32
125
|
cartNumberId: null, // will be resolved below via cart_numbers lookup
|
|
33
126
|
cartNumber: o.cartNumber,
|
|
34
127
|
orderId: o.orderId,
|
|
35
128
|
orderSource: o.orderSource,
|
|
36
129
|
cartIndex: o.cartIndex - 1, // pickstation uses 1-based, DB is 0-based
|
|
37
130
|
orderNumber: o.orderNumber,
|
|
131
|
+
orderNumbers: o.orderNumbers,
|
|
38
132
|
customerName: o.customerName,
|
|
39
133
|
carrierName: o.carrierName,
|
|
40
134
|
deliveryDate: o.deliveryDate,
|
|
@@ -53,9 +147,7 @@ export const getControlRescheduleProposals = createServerFn({ method: "POST" })
|
|
|
53
147
|
.inputValidator((d) => d)
|
|
54
148
|
.handler(async ({ data, context }) => {
|
|
55
149
|
const supabase = context.supabase;
|
|
56
|
-
const
|
|
57
|
-
const orders = await loadTodaysPickstationOrders();
|
|
58
|
-
const pendingOrders = orders.filter((o) => !APPROVED_STATUSES.has(o.status));
|
|
150
|
+
const pendingOrders = await loadPendingControlOrders(supabase);
|
|
59
151
|
const { pickWeekdays, minWorkdays } = await loadControlPlanningSettings(supabase, context.userId);
|
|
60
152
|
const checkedSet = new Set(data.checkedCartKeys);
|
|
61
153
|
const proposals = [];
|
|
@@ -110,10 +202,8 @@ export const submitControlSession = createServerFn({ method: "POST" })
|
|
|
110
202
|
.inputValidator((d) => d)
|
|
111
203
|
.handler(async ({ data, context }) => {
|
|
112
204
|
const supabase = context.supabase;
|
|
113
|
-
// 1) Laad alle karren van vandaag + instellingen
|
|
114
|
-
const
|
|
115
|
-
const orders = await loadTodaysPickstationOrders();
|
|
116
|
-
const pendingOrders = orders.filter((o) => !APPROVED_STATUSES.has(o.status));
|
|
205
|
+
// 1) Laad alle karren van vandaag (Engine is leidend) + instellingen
|
|
206
|
+
const pendingOrders = await loadPendingControlOrders(supabase);
|
|
117
207
|
const { pickWeekdays, minWorkdays } = await loadControlPlanningSettings(supabase, context.userId);
|
|
118
208
|
// 2) Maak sessie aan
|
|
119
209
|
const { data: session, error: sessErr } = await supabase
|