@flowselections/logistiek-engine 1.0.34 → 1.0.53
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/README.md +24 -24
- package/dist-lib/components/FlowCanvas.d.ts +28 -0
- package/dist-lib/components/FlowCanvas.d.ts.map +1 -0
- package/dist-lib/components/FlowCanvas.js +429 -0
- package/dist-lib/components/FlowOrders.d.ts +8 -0
- package/dist-lib/components/FlowOrders.d.ts.map +1 -0
- package/dist-lib/components/FlowOrders.js +125 -0
- package/dist-lib/components/FlowPage.d.ts +2 -0
- package/dist-lib/components/FlowPage.d.ts.map +1 -0
- package/dist-lib/components/FlowPage.js +141 -0
- package/dist-lib/components/InklapbaarVenster.d.ts +9 -0
- package/dist-lib/components/InklapbaarVenster.d.ts.map +1 -0
- package/dist-lib/components/InklapbaarVenster.js +10 -0
- package/dist-lib/components/LogistiekEnginePage.d.ts.map +1 -1
- package/dist-lib/components/LogistiekEnginePage.js +9 -3
- package/dist-lib/components/LogistiekEngineQueuePage.d.ts +2 -0
- package/dist-lib/components/LogistiekEngineQueuePage.d.ts.map +1 -0
- package/dist-lib/components/LogistiekEngineQueuePage.js +11 -0
- package/dist-lib/components/NodeTracePanel.d.ts +11 -0
- package/dist-lib/components/NodeTracePanel.d.ts.map +1 -0
- package/dist-lib/components/NodeTracePanel.js +40 -0
- package/dist-lib/components/OrderJourneyBar.d.ts +9 -0
- package/dist-lib/components/OrderJourneyBar.d.ts.map +1 -0
- package/dist-lib/components/OrderJourneyBar.js +26 -0
- package/dist-lib/components/OrderLogboek.d.ts +10 -0
- package/dist-lib/components/OrderLogboek.d.ts.map +1 -0
- package/dist-lib/components/OrderLogboek.js +92 -0
- package/dist-lib/components/OrderStopBanner.d.ts +5 -0
- package/dist-lib/components/OrderStopBanner.d.ts.map +1 -0
- package/dist-lib/components/OrderStopBanner.js +22 -0
- package/dist-lib/components/OrderTraceDetails.d.ts +22 -0
- package/dist-lib/components/OrderTraceDetails.d.ts.map +1 -0
- package/dist-lib/components/OrderTraceDetails.js +87 -0
- package/dist-lib/components/RegiePage.d.ts.map +1 -1
- package/dist-lib/components/RegiePage.js +11 -69
- package/dist-lib/components/WerktijdenCard.d.ts +2 -0
- package/dist-lib/components/WerktijdenCard.d.ts.map +1 -0
- package/dist-lib/components/WerktijdenCard.js +37 -0
- package/dist-lib/components/WerkwijzeHerindelingCard.d.ts.map +1 -1
- package/dist-lib/components/WerkwijzeHerindelingCard.js +100 -6
- package/dist-lib/hooks/useLogisticsTrace.d.ts +78 -0
- package/dist-lib/hooks/useLogisticsTrace.d.ts.map +1 -0
- package/dist-lib/hooks/useLogisticsTrace.js +152 -0
- package/dist-lib/hooks/useOrderNodeTrace.d.ts +11 -0
- package/dist-lib/hooks/useOrderNodeTrace.d.ts.map +1 -0
- package/dist-lib/hooks/useOrderNodeTrace.js +26 -0
- package/dist-lib/hooks/useOrderTrace.d.ts +74 -0
- package/dist-lib/hooks/useOrderTrace.d.ts.map +1 -0
- package/dist-lib/hooks/useOrderTrace.js +134 -0
- package/dist-lib/hooks/useOrderVersies.d.ts +47 -0
- package/dist-lib/hooks/useOrderVersies.d.ts.map +1 -0
- package/dist-lib/hooks/useOrderVersies.js +180 -0
- package/dist-lib/hooks/useRuleEngine.d.ts +1 -0
- package/dist-lib/hooks/useRuleEngine.d.ts.map +1 -1
- package/dist-lib/hooks/useRuleEngine.js +1 -0
- package/dist-lib/hooks/useShippingNoteStatus.d.ts +29 -0
- package/dist-lib/hooks/useShippingNoteStatus.d.ts.map +1 -0
- package/dist-lib/hooks/useShippingNoteStatus.js +107 -0
- package/dist-lib/hooks/useWerktijden.d.ts +33 -0
- package/dist-lib/hooks/useWerktijden.d.ts.map +1 -0
- package/dist-lib/hooks/useWerktijden.js +88 -0
- package/dist-lib/hooks/useWerkwijzeStatus.d.ts +12 -1
- package/dist-lib/hooks/useWerkwijzeStatus.d.ts.map +1 -1
- package/dist-lib/hooks/useWerkwijzeStatus.js +60 -4
- package/dist-lib/index.d.ts +13 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +13 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1600 -54
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1600 -54
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +1600 -54
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +1618 -50
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cartPlanRequests.server.d.ts +1 -1
- package/dist-lib/lib/cartPlanRequests.server.d.ts.map +1 -1
- package/dist-lib/lib/cartPlanRequests.server.js +49 -8
- package/dist-lib/lib/floridayDocuments.functions.d.ts +4644 -6
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.functions.js +1 -1
- package/dist-lib/lib/floridayDocuments.server.d.ts +14 -0
- package/dist-lib/lib/floridayDocuments.server.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.server.js +58 -0
- package/dist-lib/lib/floridayGuard.server.d.ts +1 -1
- package/dist-lib/lib/floridayGuard.server.d.ts.map +1 -1
- package/dist-lib/lib/floridayGuard.server.js +6 -3
- package/dist-lib/lib/floridayPush.functions.d.ts +1600 -54
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.functions.js +1 -1
- package/dist-lib/lib/flowGraph.d.ts +43 -0
- package/dist-lib/lib/flowGraph.d.ts.map +1 -0
- package/dist-lib/lib/flowGraph.js +153 -0
- package/dist-lib/lib/flowNodes.d.ts +23 -0
- package/dist-lib/lib/flowNodes.d.ts.map +1 -0
- package/dist-lib/lib/flowNodes.js +58 -0
- package/dist-lib/lib/flowRoute.d.ts +107 -0
- package/dist-lib/lib/flowRoute.d.ts.map +1 -0
- package/dist-lib/lib/flowRoute.js +280 -0
- package/dist-lib/lib/flowTree.d.ts +64 -0
- package/dist-lib/lib/flowTree.d.ts.map +1 -0
- package/dist-lib/lib/flowTree.js +519 -0
- package/dist-lib/lib/handlers/index.d.ts +1 -0
- package/dist-lib/lib/handlers/index.d.ts.map +1 -1
- package/dist-lib/lib/handlers/index.js +1 -0
- package/dist-lib/lib/handlers/logistics-shipping-note-now.server.d.ts +3 -0
- package/dist-lib/lib/handlers/logistics-shipping-note-now.server.d.ts.map +1 -0
- package/dist-lib/lib/handlers/logistics-shipping-note-now.server.js +100 -0
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +97 -2
- package/dist-lib/lib/loadCarrierPlanner.d.ts +2 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanner.js +18 -0
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +7740 -10
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.functions.js +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts +9 -0
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +44 -17
- package/dist-lib/lib/logisticsPlanner.d.ts.map +1 -1
- package/dist-lib/lib/logisticsPlanner.js +14 -2
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +3096 -4
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.functions.js +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +1600 -54
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.js +1 -1
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +3459 -2677
- package/dist-lib/lib/nodeTrace.d.ts +61 -0
- package/dist-lib/lib/nodeTrace.d.ts.map +1 -0
- package/dist-lib/lib/nodeTrace.js +191 -0
- package/dist-lib/lib/pickQueueCleanup.server.d.ts +14 -0
- package/dist-lib/lib/pickQueueCleanup.server.d.ts.map +1 -0
- package/dist-lib/lib/pickQueueCleanup.server.js +80 -0
- package/dist-lib/lib/planQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/planQueue.server.js +140 -0
- package/dist-lib/lib/ruleEngineImpact.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineImpact.js +11 -4
- package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineSchema.js +50 -6
- package/dist-lib/lib/ruleEngineWizard.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineWizard.js +3 -1
- package/dist-lib/lib/shippingNoteQueue.server.d.ts +18 -0
- package/dist-lib/lib/shippingNoteQueue.server.d.ts.map +1 -0
- package/dist-lib/lib/shippingNoteQueue.server.js +304 -0
- package/dist-lib/lib/trace.server.d.ts +75 -0
- package/dist-lib/lib/trace.server.d.ts.map +1 -0
- package/dist-lib/lib/trace.server.js +75 -0
- package/dist-lib/lib/vakUitleg.d.ts +19 -0
- package/dist-lib/lib/vakUitleg.d.ts.map +1 -0
- package/dist-lib/lib/vakUitleg.js +132 -0
- package/package.json +26 -2
- package/dist-lib/components/rule-engine/FloridayConnectionBanner.d.ts +0 -2
- package/dist-lib/components/rule-engine/FloridayConnectionBanner.d.ts.map +0 -1
- package/dist-lib/components/rule-engine/FloridayConnectionBanner.js +0 -41
- package/dist-lib/integrations/supabase/client.d.ts +0 -20293
- package/dist-lib/integrations/supabase/client.d.ts.map +0 -1
- package/dist-lib/integrations/supabase/client.js +0 -13
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/hooks/useOrderVersies.ts — alle orders + herberekeningen (versies) per order
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Leest uitsluitend via de logboek-RPC's; wijzigt niets.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
import { useCallback, useEffect, useState } from "react";
|
|
7
|
+
import { supabase } from "../integrations/supabase/moduleClient";
|
|
8
|
+
import { mapEvent } from "./useLogisticsTrace";
|
|
9
|
+
const n = (v) => (typeof v === "number" ? v : Number(v) || 0);
|
|
10
|
+
const s = (v) => (v == null ? null : String(v));
|
|
11
|
+
export function useAlleOrders(zoek) {
|
|
12
|
+
const [rows, setRows] = useState([]);
|
|
13
|
+
const [loading, setLoading] = useState(true);
|
|
14
|
+
const [error, setError] = useState(null);
|
|
15
|
+
const load = useCallback(async () => {
|
|
16
|
+
setLoading(true);
|
|
17
|
+
setError(null);
|
|
18
|
+
try {
|
|
19
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_trace_all_orders", {
|
|
20
|
+
p_search: zoek || null,
|
|
21
|
+
p_limit: 300,
|
|
22
|
+
});
|
|
23
|
+
if (rpcError)
|
|
24
|
+
throw new Error(rpcError.message);
|
|
25
|
+
const safe = Array.isArray(data) ? data : [];
|
|
26
|
+
setRows(safe.map((r) => ({
|
|
27
|
+
orderNumber: String(r?.orderNumber ?? ""),
|
|
28
|
+
orderSource: s(r?.orderSource),
|
|
29
|
+
orderStatus: s(r?.orderStatus),
|
|
30
|
+
deliveryDate: s(r?.deliveryDate),
|
|
31
|
+
customerName: s(r?.customerName),
|
|
32
|
+
createdAt: s(r?.createdAt),
|
|
33
|
+
cancelledAt: s(r?.cancelledAt),
|
|
34
|
+
bufferId: s(r?.bufferId),
|
|
35
|
+
events: n(r?.events),
|
|
36
|
+
versions: n(r?.versions),
|
|
37
|
+
errors: n(r?.errors),
|
|
38
|
+
lastAt: s(r?.lastAt),
|
|
39
|
+
lastStep: s(r?.lastStep),
|
|
40
|
+
lastStatus: s(r?.lastStatus),
|
|
41
|
+
queueStatus: s(r?.queueStatus),
|
|
42
|
+
reasonCode: s(r?.reasonCode),
|
|
43
|
+
queueError: s(r?.queueError),
|
|
44
|
+
})));
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
setError(e?.message ? String(e.message) : "De orders konden niet worden gelezen.");
|
|
48
|
+
setRows([]);
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
setLoading(false);
|
|
52
|
+
}
|
|
53
|
+
}, [zoek]);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
void load();
|
|
56
|
+
}, [load]);
|
|
57
|
+
return { rows, loading, error, refresh: load };
|
|
58
|
+
}
|
|
59
|
+
function mapVersie(v) {
|
|
60
|
+
return {
|
|
61
|
+
id: String(v?.id ?? ""),
|
|
62
|
+
nr: n(v?.nr),
|
|
63
|
+
startedAt: s(v?.startedAt),
|
|
64
|
+
claimedAt: s(v?.claimedAt),
|
|
65
|
+
finishedAt: s(v?.finishedAt),
|
|
66
|
+
windowEnd: s(v?.windowEnd),
|
|
67
|
+
status: s(v?.status),
|
|
68
|
+
error: s(v?.error),
|
|
69
|
+
reason: s(v?.reason),
|
|
70
|
+
reasonCode: s(v?.reasonCode),
|
|
71
|
+
attempts: n(v?.attempts),
|
|
72
|
+
events: n(v?.events),
|
|
73
|
+
errors: n(v?.errors),
|
|
74
|
+
warnings: n(v?.warnings),
|
|
75
|
+
waiting: n(v?.waiting),
|
|
76
|
+
printJobs: n(v?.printJobs),
|
|
77
|
+
printFailed: n(v?.printFailed),
|
|
78
|
+
shippingEvents: n(v?.shippingEvents),
|
|
79
|
+
shippingStatus: s(v?.shippingStatus),
|
|
80
|
+
lastErrorStep: s(v?.lastErrorStep),
|
|
81
|
+
lastError: s(v?.lastError),
|
|
82
|
+
lastPhase: s(v?.lastPhase),
|
|
83
|
+
lastStep: s(v?.lastStep),
|
|
84
|
+
lastEventAt: s(v?.lastEventAt),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export function useOrderVersies(orderRef) {
|
|
88
|
+
const [data, setData] = useState({ order: null, carts: null, versions: [] });
|
|
89
|
+
const [loading, setLoading] = useState(false);
|
|
90
|
+
const [error, setError] = useState(null);
|
|
91
|
+
const load = useCallback(async () => {
|
|
92
|
+
if (!orderRef) {
|
|
93
|
+
setData({ order: null, carts: null, versions: [] });
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
setLoading(true);
|
|
97
|
+
setError(null);
|
|
98
|
+
try {
|
|
99
|
+
const { data: raw, error: rpcError } = await supabase.rpc("logistics_trace_versions", {
|
|
100
|
+
p_order_ref: orderRef,
|
|
101
|
+
});
|
|
102
|
+
if (rpcError)
|
|
103
|
+
throw new Error(rpcError.message);
|
|
104
|
+
const r = (raw ?? {});
|
|
105
|
+
const versions = Array.isArray(r?.versions) ? r.versions.map(mapVersie) : [];
|
|
106
|
+
const o = r?.order;
|
|
107
|
+
const c = r?.carts;
|
|
108
|
+
setData({
|
|
109
|
+
order: o
|
|
110
|
+
? {
|
|
111
|
+
orderNumber: String(o.orderNumber ?? orderRef),
|
|
112
|
+
orderSource: s(o.orderSource),
|
|
113
|
+
status: s(o.status),
|
|
114
|
+
deliveryDate: s(o.deliveryDate),
|
|
115
|
+
customerName: s(o.customerName),
|
|
116
|
+
createdAt: s(o.createdAt),
|
|
117
|
+
bufferId: s(o.bufferId),
|
|
118
|
+
planLockedAt: s(o.planLockedAt),
|
|
119
|
+
cancelledAt: s(o.cancelledAt),
|
|
120
|
+
}
|
|
121
|
+
: null,
|
|
122
|
+
carts: c
|
|
123
|
+
? { total: n(c.total), printed: n(c.printed), controlled: n(c.controlled), announced: n(c.announced) }
|
|
124
|
+
: null,
|
|
125
|
+
versions,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
setError(e?.message ? String(e.message) : "De versies konden niet worden gelezen.");
|
|
130
|
+
setData({ order: null, carts: null, versions: [] });
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
setLoading(false);
|
|
134
|
+
}
|
|
135
|
+
}, [orderRef]);
|
|
136
|
+
useEffect(() => {
|
|
137
|
+
void load();
|
|
138
|
+
}, [load]);
|
|
139
|
+
return { ...data, loading, error, refresh: load };
|
|
140
|
+
}
|
|
141
|
+
export function useVersieEvents(orderRef, versie) {
|
|
142
|
+
const [events, setEvents] = useState([]);
|
|
143
|
+
const [loading, setLoading] = useState(false);
|
|
144
|
+
const [error, setError] = useState(null);
|
|
145
|
+
const versieId = versie?.id ?? null;
|
|
146
|
+
const from = versie?.startedAt ?? null;
|
|
147
|
+
const to = versie?.windowEnd ?? null;
|
|
148
|
+
const load = useCallback(async () => {
|
|
149
|
+
if (!orderRef || !versieId) {
|
|
150
|
+
setEvents([]);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
setLoading(true);
|
|
154
|
+
setError(null);
|
|
155
|
+
try {
|
|
156
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_trace_version_events", {
|
|
157
|
+
p_order_ref: orderRef,
|
|
158
|
+
p_version_id: versieId,
|
|
159
|
+
p_from: from,
|
|
160
|
+
p_to: to,
|
|
161
|
+
p_limit: 500,
|
|
162
|
+
});
|
|
163
|
+
if (rpcError)
|
|
164
|
+
throw new Error(rpcError.message);
|
|
165
|
+
const safe = Array.isArray(data) ? data : [];
|
|
166
|
+
setEvents(safe.map(mapEvent));
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
setError(e?.message ? String(e.message) : "De gebeurtenissen konden niet worden gelezen.");
|
|
170
|
+
setEvents([]);
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
setLoading(false);
|
|
174
|
+
}
|
|
175
|
+
}, [orderRef, versieId, from, to]);
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
void load();
|
|
178
|
+
}, [load]);
|
|
179
|
+
return { events, loading, error, refresh: load };
|
|
180
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRuleEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/useRuleEngine.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"useRuleEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/useRuleEngine.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAmBD,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;;;;;;;;;yBAwF3C,MAAM,gBAAgB,MAAM;8BA2BE,MAAM,YAAY,kBAAkB;yBAUhE,UAAU,YAAY;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;+BA4CtD,MAAM;8BAmCP,WAAW;6BAYqB,MAAM;;EA4BzD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type ShippingNoteStatusCode = "klaar_voor_print" | "wacht_op_floriday" | "geprint" | "mislukt";
|
|
2
|
+
export interface ShippingNoteStatus {
|
|
3
|
+
status: ShippingNoteStatusCode;
|
|
4
|
+
message: string;
|
|
5
|
+
attempts: number;
|
|
6
|
+
nextAttemptAt: string | null;
|
|
7
|
+
slipJobId: string | null;
|
|
8
|
+
shippingNoteJobId: string | null;
|
|
9
|
+
cartId: string | null;
|
|
10
|
+
orderNumber: string | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Zet de verzendbriefverwerking direct aan het werk zodra de pakbon naar het
|
|
14
|
+
* pickstation is gestuurd, zodat niet op de volgende ronde hoeft te worden
|
|
15
|
+
* gewacht. Alleen-lezen richting Floriday en idempotent: nooit een dubbele
|
|
16
|
+
* aanvraag of printopdracht. Ontbreekt de sleutel, dan gebeurt er niets extra
|
|
17
|
+
* en blijft de gewone achtergrondverwerking de status bijwerken.
|
|
18
|
+
*/
|
|
19
|
+
export declare function kickShippingNoteQueue(): Promise<void>;
|
|
20
|
+
export declare function useShippingNoteStatus(slipJobId: string | null, cartId: string | null, options?: {
|
|
21
|
+
pollMs?: number;
|
|
22
|
+
maxPollMs?: number;
|
|
23
|
+
fetchNow?: boolean;
|
|
24
|
+
}): {
|
|
25
|
+
data: ShippingNoteStatus | null;
|
|
26
|
+
loading: boolean;
|
|
27
|
+
reload: () => Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=useShippingNoteStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useShippingNoteStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useShippingNoteStatus.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,sBAAsB,GAC9B,kBAAkB,GAClB,mBAAmB,GACnB,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA+BD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAe3D;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO;;;;EAqD1E"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Alleen-lezen status van de verzendbrief die bij een pakbon hoort.
|
|
3
|
+
// Verversen maakt nooit een nieuwe aanvraag of printopdracht aan.
|
|
4
|
+
// ============================================================================
|
|
5
|
+
import { useCallback, useEffect, useState } from "react";
|
|
6
|
+
import { supabase } from "@flowselections/core";
|
|
7
|
+
const WAITING = new Set(["klaar_voor_print", "wacht_op_floriday"]);
|
|
8
|
+
function safeStatus(value) {
|
|
9
|
+
if (!value || typeof value !== "object")
|
|
10
|
+
return null;
|
|
11
|
+
const row = value;
|
|
12
|
+
const status = String(row["status"] ?? "");
|
|
13
|
+
if (status !== "klaar_voor_print" &&
|
|
14
|
+
status !== "wacht_op_floriday" &&
|
|
15
|
+
status !== "geprint" &&
|
|
16
|
+
status !== "mislukt") {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
status,
|
|
21
|
+
message: String(row["message"] ?? "Verzendbriefstatus is niet beschikbaar."),
|
|
22
|
+
attempts: Number(row["attempts"] ?? 0),
|
|
23
|
+
nextAttemptAt: typeof row["nextAttemptAt"] === "string" ? row["nextAttemptAt"] : null,
|
|
24
|
+
slipJobId: typeof row["slipJobId"] === "string" ? row["slipJobId"] : null,
|
|
25
|
+
shippingNoteJobId: typeof row["shippingNoteJobId"] === "string" ? row["shippingNoteJobId"] : null,
|
|
26
|
+
cartId: typeof row["cartId"] === "string" ? row["cartId"] : null,
|
|
27
|
+
orderNumber: typeof row["orderNumber"] === "string" ? row["orderNumber"] : null,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Zet de verzendbriefverwerking direct aan het werk zodra de pakbon naar het
|
|
32
|
+
* pickstation is gestuurd, zodat niet op de volgende ronde hoeft te worden
|
|
33
|
+
* gewacht. Alleen-lezen richting Floriday en idempotent: nooit een dubbele
|
|
34
|
+
* aanvraag of printopdracht. Ontbreekt de sleutel, dan gebeurt er niets extra
|
|
35
|
+
* en blijft de gewone achtergrondverwerking de status bijwerken.
|
|
36
|
+
*/
|
|
37
|
+
export async function kickShippingNoteQueue() {
|
|
38
|
+
const apikey = import.meta.env["VITE_SUPABASE_PUBLISHABLE_KEY"] ??
|
|
39
|
+
import.meta.env["VITE_SUPABASE_ANON_KEY"] ??
|
|
40
|
+
"";
|
|
41
|
+
if (!apikey)
|
|
42
|
+
return;
|
|
43
|
+
try {
|
|
44
|
+
await fetch("/api/public/hooks/logistics-shipping-note-now", {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers: { apikey, "Content-Type": "application/json" },
|
|
47
|
+
body: "{}",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Een mislukte directe verwerking mag het scherm nooit blokkeren.
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function useShippingNoteStatus(slipJobId, cartId, options = {}) {
|
|
55
|
+
const [data, setData] = useState(null);
|
|
56
|
+
const [loading, setLoading] = useState(false);
|
|
57
|
+
const [startedAt, setStartedAt] = useState(null);
|
|
58
|
+
const pollMs = options.pollMs ?? 3000;
|
|
59
|
+
const maxPollMs = options.maxPollMs ?? 15 * 60000;
|
|
60
|
+
const fetchNow = options.fetchNow ?? true;
|
|
61
|
+
const reload = useCallback(async () => {
|
|
62
|
+
if (!slipJobId && !cartId)
|
|
63
|
+
return;
|
|
64
|
+
setLoading(true);
|
|
65
|
+
try {
|
|
66
|
+
const { data: result, error } = await supabase.rpc("logistics_shipping_note_status", { p_slip_job_id: slipJobId, p_cart_id: cartId });
|
|
67
|
+
if (error)
|
|
68
|
+
throw error;
|
|
69
|
+
setData(safeStatus(result));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
setData({
|
|
73
|
+
status: "mislukt",
|
|
74
|
+
message: "De verzendbriefstatus kon niet worden opgehaald. Probeer het opnieuw.",
|
|
75
|
+
attempts: 0,
|
|
76
|
+
nextAttemptAt: null,
|
|
77
|
+
slipJobId,
|
|
78
|
+
shippingNoteJobId: null,
|
|
79
|
+
cartId,
|
|
80
|
+
orderNumber: null,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
setLoading(false);
|
|
85
|
+
}
|
|
86
|
+
}, [cartId, slipJobId]);
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
setStartedAt(Date.now());
|
|
89
|
+
setData(null);
|
|
90
|
+
if (!slipJobId && !cartId)
|
|
91
|
+
return;
|
|
92
|
+
void (async () => {
|
|
93
|
+
if (fetchNow)
|
|
94
|
+
await kickShippingNoteQueue();
|
|
95
|
+
await reload();
|
|
96
|
+
})();
|
|
97
|
+
}, [cartId, fetchNow, reload, slipJobId]);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (!data || !WAITING.has(data.status) || startedAt === null)
|
|
100
|
+
return;
|
|
101
|
+
if (Date.now() - startedAt >= maxPollMs)
|
|
102
|
+
return;
|
|
103
|
+
const timer = window.setTimeout(() => void reload(), pollMs);
|
|
104
|
+
return () => window.clearTimeout(timer);
|
|
105
|
+
}, [data, maxPollMs, pollMs, reload, startedAt]);
|
|
106
|
+
return { data, loading, reload };
|
|
107
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface Werkvenster {
|
|
2
|
+
id: string;
|
|
3
|
+
weekday: number;
|
|
4
|
+
opens: string;
|
|
5
|
+
closes: string;
|
|
6
|
+
note: string | null;
|
|
7
|
+
}
|
|
8
|
+
export interface Uitzondering {
|
|
9
|
+
id: string;
|
|
10
|
+
day: string;
|
|
11
|
+
closed: boolean;
|
|
12
|
+
opens: string | null;
|
|
13
|
+
closes: string | null;
|
|
14
|
+
note: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface WerktijdenStatus {
|
|
17
|
+
timezone: string | null;
|
|
18
|
+
windows: Werkvenster[];
|
|
19
|
+
exceptions: Uitzondering[];
|
|
20
|
+
usable: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function useWerktijden(): {
|
|
23
|
+
status: WerktijdenStatus | null;
|
|
24
|
+
loading: boolean;
|
|
25
|
+
error: string | null;
|
|
26
|
+
refresh: () => Promise<void>;
|
|
27
|
+
zetTijdzone: (timezone: string) => Promise<void>;
|
|
28
|
+
voegVensterToe: (weekday: number, opens: string, closes: string) => Promise<void>;
|
|
29
|
+
verwijderVenster: (id: string) => Promise<void>;
|
|
30
|
+
voegUitzonderingToe: (day: string, closed: boolean, opens: string | null, closes: string | null, note: string | null) => Promise<void>;
|
|
31
|
+
verwijderUitzondering: (id: string) => Promise<void>;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=useWerktijden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWerktijden.d.ts","sourceRoot":"","sources":["../../src/hooks/useWerktijden.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAgB,aAAa;;;;;4BA8BR,MAAM;8BAWP,MAAM,SAAS,MAAM,UAAU,MAAM;2BAW1C,MAAM;+BASL,MAAM,UAAU,OAAO,SAAS,MAAM,GAAG,IAAI,UAAU,MAAM,GAAG,IAAI,QAAQ,MAAM,GAAG,IAAI;gCAW1F,MAAM;EAmBpB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/hooks/useWerktijden.ts — openingstijden, uitzonderingen en tijdzone
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// De Engine rekent picktijd terug in werkuren. De vensters komen uit de
|
|
5
|
+
// instellingentabellen; ontbreken ze, dan wordt er niets geraden.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { useCallback, useEffect, useState } from "react";
|
|
8
|
+
import { supabase } from "../integrations/supabase/moduleClient";
|
|
9
|
+
function lijst(value) {
|
|
10
|
+
return Array.isArray(value) ? value : [];
|
|
11
|
+
}
|
|
12
|
+
export function useWerktijden() {
|
|
13
|
+
const [status, setStatus] = useState(null);
|
|
14
|
+
const [loading, setLoading] = useState(true);
|
|
15
|
+
const [error, setError] = useState(null);
|
|
16
|
+
const load = useCallback(async () => {
|
|
17
|
+
setLoading(true);
|
|
18
|
+
setError(null);
|
|
19
|
+
try {
|
|
20
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_working_hours_status");
|
|
21
|
+
if (rpcError)
|
|
22
|
+
throw rpcError;
|
|
23
|
+
const raw = (data ?? {});
|
|
24
|
+
setStatus({
|
|
25
|
+
timezone: typeof raw["timezone"] === "string" ? raw["timezone"] : null,
|
|
26
|
+
windows: lijst(raw["windows"]),
|
|
27
|
+
exceptions: lijst(raw["exceptions"]),
|
|
28
|
+
usable: raw["usable"] === true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
setError(e?.message ? String(e.message) : "Werktijden konden niet worden opgehaald.");
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
setLoading(false);
|
|
36
|
+
}
|
|
37
|
+
}, []);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
void load();
|
|
40
|
+
}, [load]);
|
|
41
|
+
const zetTijdzone = useCallback(async (timezone) => {
|
|
42
|
+
const { error: e } = await supabase
|
|
43
|
+
.from("logistics_time_settings")
|
|
44
|
+
.upsert({ id: true, timezone, updated_at: new Date().toISOString() });
|
|
45
|
+
if (e)
|
|
46
|
+
throw e;
|
|
47
|
+
await load();
|
|
48
|
+
}, [load]);
|
|
49
|
+
const voegVensterToe = useCallback(async (weekday, opens, closes) => {
|
|
50
|
+
const { error: e } = await supabase
|
|
51
|
+
.from("logistics_opening_hours")
|
|
52
|
+
.insert({ weekday, opens, closes });
|
|
53
|
+
if (e)
|
|
54
|
+
throw e;
|
|
55
|
+
await load();
|
|
56
|
+
}, [load]);
|
|
57
|
+
const verwijderVenster = useCallback(async (id) => {
|
|
58
|
+
const { error: e } = await supabase.from("logistics_opening_hours").delete().eq("id", id);
|
|
59
|
+
if (e)
|
|
60
|
+
throw e;
|
|
61
|
+
await load();
|
|
62
|
+
}, [load]);
|
|
63
|
+
const voegUitzonderingToe = useCallback(async (day, closed, opens, closes, note) => {
|
|
64
|
+
const { error: e } = await supabase
|
|
65
|
+
.from("logistics_opening_exceptions")
|
|
66
|
+
.insert({ day, is_closed: closed, opens, closes, note });
|
|
67
|
+
if (e)
|
|
68
|
+
throw e;
|
|
69
|
+
await load();
|
|
70
|
+
}, [load]);
|
|
71
|
+
const verwijderUitzondering = useCallback(async (id) => {
|
|
72
|
+
const { error: e } = await supabase.from("logistics_opening_exceptions").delete().eq("id", id);
|
|
73
|
+
if (e)
|
|
74
|
+
throw e;
|
|
75
|
+
await load();
|
|
76
|
+
}, [load]);
|
|
77
|
+
return {
|
|
78
|
+
status,
|
|
79
|
+
loading,
|
|
80
|
+
error,
|
|
81
|
+
refresh: load,
|
|
82
|
+
zetTijdzone,
|
|
83
|
+
voegVensterToe,
|
|
84
|
+
verwijderVenster,
|
|
85
|
+
voegUitzonderingToe,
|
|
86
|
+
verwijderUitzondering,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
@@ -11,7 +11,18 @@ export declare function useWerkwijzeStatus(): {
|
|
|
11
11
|
loading: boolean;
|
|
12
12
|
busy: boolean;
|
|
13
13
|
error: string | null;
|
|
14
|
-
refresh: () => Promise<void>;
|
|
14
|
+
refresh: (quiet?: boolean) => Promise<void>;
|
|
15
|
+
refreshQuiet: () => Promise<void>;
|
|
15
16
|
herindelen: () => Promise<number>;
|
|
17
|
+
alsnogAllesHerindelen: () => Promise<{
|
|
18
|
+
aangemeld: number;
|
|
19
|
+
karrenVerwijderd: number;
|
|
20
|
+
pakbonnenVervallen: number;
|
|
21
|
+
}>;
|
|
22
|
+
pakbonnenGereedmaken: () => Promise<{
|
|
23
|
+
gereed: number;
|
|
24
|
+
open: number;
|
|
25
|
+
totaal: number;
|
|
26
|
+
}>;
|
|
16
27
|
};
|
|
17
28
|
//# sourceMappingURL=useWerkwijzeStatus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWerkwijzeStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useWerkwijzeStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useWerkwijzeStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useWerkwijzeStatus.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAgB,kBAAkB;;;;;;;sBAkCS,OAAO,CAAC,MAAM,CAAC;iCAmBJ,OAAO,CAAC;QAC1D,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;gCA4BiD,OAAO,CAAC;QACzD,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;EA4BH"}
|
|
@@ -6,13 +6,15 @@
|
|
|
6
6
|
// ============================================================================
|
|
7
7
|
import { useCallback, useEffect, useState } from "react";
|
|
8
8
|
import { supabase } from "../integrations/supabase/moduleClient";
|
|
9
|
+
import { kickShippingNoteQueue } from "./useShippingNoteStatus";
|
|
9
10
|
export function useWerkwijzeStatus() {
|
|
10
11
|
const [status, setStatus] = useState(null);
|
|
11
12
|
const [loading, setLoading] = useState(true);
|
|
12
13
|
const [busy, setBusy] = useState(false);
|
|
13
14
|
const [error, setError] = useState(null);
|
|
14
|
-
const load = useCallback(async () => {
|
|
15
|
-
|
|
15
|
+
const load = useCallback(async (quiet = false) => {
|
|
16
|
+
if (!quiet)
|
|
17
|
+
setLoading(true);
|
|
16
18
|
setError(null);
|
|
17
19
|
try {
|
|
18
20
|
const { data, error: rpcError } = await supabase.rpc("logistics_layout_method_status");
|
|
@@ -32,7 +34,8 @@ export function useWerkwijzeStatus() {
|
|
|
32
34
|
setError(e?.message ? String(e.message) : "Status kon niet worden opgehaald.");
|
|
33
35
|
}
|
|
34
36
|
finally {
|
|
35
|
-
|
|
37
|
+
if (!quiet)
|
|
38
|
+
setLoading(false);
|
|
36
39
|
}
|
|
37
40
|
}, []);
|
|
38
41
|
useEffect(() => {
|
|
@@ -54,5 +57,58 @@ export function useWerkwijzeStatus() {
|
|
|
54
57
|
setBusy(false);
|
|
55
58
|
}
|
|
56
59
|
}, [load]);
|
|
57
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Alles opnieuw indelen, ook orders waarvan de pakbon al is geprint of die al
|
|
62
|
+
* gepickt zijn. Oude karren, barcodes en pakbonnen vervallen; de Engine maakt
|
|
63
|
+
* overal nieuwe aan.
|
|
64
|
+
*/
|
|
65
|
+
const alsnogAllesHerindelen = useCallback(async () => {
|
|
66
|
+
setBusy(true);
|
|
67
|
+
try {
|
|
68
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_replan_all_force", {
|
|
69
|
+
p_reason: "volledige_herindeling",
|
|
70
|
+
});
|
|
71
|
+
if (rpcError)
|
|
72
|
+
throw rpcError;
|
|
73
|
+
// Nieuwe pakbonnen betekenen nieuwe verzendbrieven: haal de officiele
|
|
74
|
+
// Floriday-afleverbrieven meteen op in plaats van te wachten op de ronde.
|
|
75
|
+
await kickShippingNoteQueue();
|
|
76
|
+
await load();
|
|
77
|
+
const raw = (data ?? {});
|
|
78
|
+
return {
|
|
79
|
+
aangemeld: Number(raw["aangemeld"] ?? 0),
|
|
80
|
+
karrenVerwijderd: Number(raw["karrenVerwijderd"] ?? 0),
|
|
81
|
+
pakbonnenVervallen: Number(raw["barcodesVervallen"] ?? 0) + Number(raw["pickregelsVervallen"] ?? 0),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
setBusy(false);
|
|
86
|
+
}
|
|
87
|
+
}, [load]);
|
|
88
|
+
/**
|
|
89
|
+
* Zet de pakbongegevens van openstaande pickregels alvast klaar. De Engine
|
|
90
|
+
* doet dit idempotent: bestaande kar-ID's, nummers en barcodes blijven staan.
|
|
91
|
+
*/
|
|
92
|
+
const pakbonnenGereedmaken = useCallback(async () => {
|
|
93
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_prepare_pick_documents", { p_limit: 25 });
|
|
94
|
+
if (rpcError)
|
|
95
|
+
throw rpcError;
|
|
96
|
+
const raw = (data ?? {});
|
|
97
|
+
return {
|
|
98
|
+
gereed: Number(raw["gereed"] ?? 0),
|
|
99
|
+
open: Number(raw["open"] ?? 0),
|
|
100
|
+
totaal: Number(raw["totaal"] ?? 0),
|
|
101
|
+
};
|
|
102
|
+
}, []);
|
|
103
|
+
return {
|
|
104
|
+
status,
|
|
105
|
+
loading,
|
|
106
|
+
busy,
|
|
107
|
+
error,
|
|
108
|
+
refresh: load,
|
|
109
|
+
refreshQuiet: () => load(true),
|
|
110
|
+
herindelen,
|
|
111
|
+
alsnogAllesHerindelen,
|
|
112
|
+
pakbonnenGereedmaken,
|
|
113
|
+
};
|
|
58
114
|
}
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -14,10 +14,13 @@ export { KarplanStatusCard } from './components/KarplanStatusCard';
|
|
|
14
14
|
export { GeblokkeerdeOrdersCard } from './components/GeblokkeerdeOrdersCard';
|
|
15
15
|
export { AfmetingenBronnenCard } from './components/AfmetingenBronnenCard';
|
|
16
16
|
export { WerkwijzeHerindelingCard } from './components/WerkwijzeHerindelingCard';
|
|
17
|
+
export { WerktijdenCard } from './components/WerktijdenCard';
|
|
18
|
+
export { useWerktijden } from './hooks/useWerktijden';
|
|
17
19
|
export { FloridayPoortCard } from './components/FloridayPoortCard';
|
|
18
20
|
export * from './hooks/useFloridayGate';
|
|
19
21
|
export * from './hooks/useWerkwijzeStatus';
|
|
20
22
|
export * from './hooks/usePrintjobs';
|
|
23
|
+
export * from './hooks/useShippingNoteStatus';
|
|
21
24
|
export * from './components/VertragingMeldingenCard';
|
|
22
25
|
export * from './components/CapaciteitMeldingenCard';
|
|
23
26
|
export * from './hooks/useCapaciteitMeldingen';
|
|
@@ -29,6 +32,14 @@ export { RuleEnginePage } from './components/RuleEnginePage';
|
|
|
29
32
|
export { RegiePage } from './components/RegiePage';
|
|
30
33
|
export { ModulePromptsPage } from './components/ModulePromptsPage';
|
|
31
34
|
export { LadingdragersPage } from './components/LadingdragersPage';
|
|
35
|
+
export { LogistiekEngineQueuePage } from './components/LogistiekEngineQueuePage';
|
|
36
|
+
export { FlowPage } from './components/FlowPage';
|
|
37
|
+
export * from './hooks/useLogisticsTrace';
|
|
38
|
+
export * from './hooks/useOrderTrace';
|
|
39
|
+
export * from './hooks/useOrderNodeTrace';
|
|
40
|
+
export * from './lib/flowNodes';
|
|
41
|
+
export * from './lib/nodeTrace';
|
|
42
|
+
export * from './lib/vakUitleg';
|
|
32
43
|
export { LogistiekEngineLogo } from './components/LogistiekEngineLogo';
|
|
33
44
|
export { LogistiekEngineSettingsCard } from './components/settings/LogistiekEngineSettingsCard';
|
|
34
45
|
export * from './hooks/useLogistiekStrategieen';
|
|
@@ -44,4 +55,6 @@ export * from './lib/loadCarrierPlanner';
|
|
|
44
55
|
export * from './lib/loadCarrierTypes';
|
|
45
56
|
export * from './lib/loadCarrierPlanning.functions';
|
|
46
57
|
export declare const logistiekEngineModule: FlowModule;
|
|
58
|
+
export { OrderLogboek } from './components/OrderLogboek';
|
|
59
|
+
export { InklapbaarVenster } from './components/InklapbaarVenster';
|
|
47
60
|
//# sourceMappingURL=index.d.ts.map
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAIhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AAMpD,eAAO,MAAM,qBAAqB,EAAE,UAcnC,CAAC;AACF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC"}
|