@flowselections/logistiek-engine 1.0.34 → 1.0.89
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/AfrondWachtrijCard.d.ts +2 -0
- package/dist-lib/components/AfrondWachtrijCard.d.ts.map +1 -0
- package/dist-lib/components/AfrondWachtrijCard.js +27 -0
- package/dist-lib/components/BeladingsafwijkingenCard.d.ts +2 -0
- package/dist-lib/components/BeladingsafwijkingenCard.d.ts.map +1 -0
- package/dist-lib/components/BeladingsafwijkingenCard.js +44 -0
- package/dist-lib/components/FlowCanvas.d.ts +34 -0
- package/dist-lib/components/FlowCanvas.d.ts.map +1 -0
- package/dist-lib/components/FlowCanvas.js +490 -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 +171 -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 +310 -0
- package/dist-lib/components/GeblokkeerdeOrdersCard.d.ts.map +1 -1
- package/dist-lib/components/GeblokkeerdeOrdersCard.js +21 -2
- 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/KardekkingCard.d.ts +2 -0
- package/dist-lib/components/KardekkingCard.d.ts.map +1 -0
- package/dist-lib/components/KardekkingCard.js +29 -0
- package/dist-lib/components/LogistiekEnginePage.d.ts.map +1 -1
- package/dist-lib/components/LogistiekEnginePage.js +15 -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 +13 -0
- package/dist-lib/components/NodeTracePanel.d.ts +14 -0
- package/dist-lib/components/NodeTracePanel.d.ts.map +1 -0
- package/dist-lib/components/NodeTracePanel.js +46 -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 +12 -0
- package/dist-lib/components/OrderStopBanner.d.ts.map +1 -0
- package/dist-lib/components/OrderStopBanner.js +36 -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 +88 -0
- package/dist-lib/components/PlanWachtrijPage.d.ts +2 -0
- package/dist-lib/components/PlanWachtrijPage.d.ts.map +1 -0
- package/dist-lib/components/PlanWachtrijPage.js +99 -0
- package/dist-lib/components/PlannerDiffCard.d.ts +2 -0
- package/dist-lib/components/PlannerDiffCard.d.ts.map +1 -0
- package/dist-lib/components/PlannerDiffCard.js +25 -0
- package/dist-lib/components/RegiePage.d.ts.map +1 -1
- package/dist-lib/components/RegiePage.js +28 -78
- package/dist-lib/components/TaakGezondheidCard.d.ts +2 -0
- package/dist-lib/components/TaakGezondheidCard.d.ts.map +1 -0
- package/dist-lib/components/TaakGezondheidCard.js +31 -0
- 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/useAfrondWachtrij.d.ts +28 -0
- package/dist-lib/hooks/useAfrondWachtrij.d.ts.map +1 -0
- package/dist-lib/hooks/useAfrondWachtrij.js +88 -0
- package/dist-lib/hooks/useBeladingsafwijkingen.d.ts +39 -0
- package/dist-lib/hooks/useBeladingsafwijkingen.d.ts.map +1 -0
- package/dist-lib/hooks/useBeladingsafwijkingen.js +119 -0
- package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts +7 -0
- package/dist-lib/hooks/useGeblokkeerdeOrders.d.ts.map +1 -1
- package/dist-lib/hooks/useGeblokkeerdeOrders.js +28 -2
- 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 +194 -0
- package/dist-lib/hooks/usePlanWachtrij.d.ts +33 -0
- package/dist-lib/hooks/usePlanWachtrij.d.ts.map +1 -0
- package/dist-lib/hooks/usePlanWachtrij.js +104 -0
- package/dist-lib/hooks/useRecalcJob.js +1 -1
- 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/useShippingNoteDiagnose.d.ts +20 -0
- package/dist-lib/hooks/useShippingNoteDiagnose.d.ts.map +1 -0
- package/dist-lib/hooks/useShippingNoteDiagnose.js +52 -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/useTaakGezondheid.d.ts +16 -0
- package/dist-lib/hooks/useTaakGezondheid.d.ts.map +1 -0
- package/dist-lib/hooks/useTaakGezondheid.js +43 -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 +61 -5
- package/dist-lib/index.d.ts +23 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +23 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +4993 -459
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +4993 -459
- 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 +4993 -459
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.d.ts +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.js +8 -1
- package/dist-lib/integrations/supabase/types.d.ts +5022 -432
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/attachAuthToken.js +1 -1
- package/dist-lib/lib/bufferDecision.test.d.ts +2 -0
- package/dist-lib/lib/bufferDecision.test.d.ts.map +1 -0
- package/dist-lib/lib/bufferDecision.test.js +104 -0
- package/dist-lib/lib/cartCoverage.functions.d.ts +30820 -0
- package/dist-lib/lib/cartCoverage.functions.d.ts.map +1 -0
- package/dist-lib/lib/cartCoverage.functions.js +20 -0
- 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 +13623 -21
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.functions.js +5 -5
- 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 +4993 -459
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.functions.js +3 -3
- 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/flowJourney.d.ts +40 -0
- package/dist-lib/lib/flowJourney.d.ts.map +1 -0
- package/dist-lib/lib/flowJourney.js +156 -0
- package/dist-lib/lib/flowNodes.d.ts +26 -0
- package/dist-lib/lib/flowNodes.d.ts.map +1 -0
- package/dist-lib/lib/flowNodes.js +64 -0
- package/dist-lib/lib/flowRoute.d.ts +117 -0
- package/dist-lib/lib/flowRoute.d.ts.map +1 -0
- package/dist-lib/lib/flowRoute.js +583 -0
- package/dist-lib/lib/flowTree.d.ts +149 -0
- package/dist-lib/lib/flowTree.d.ts.map +1 -0
- package/dist-lib/lib/flowTree.js +908 -0
- package/dist-lib/lib/foutTekst.d.ts +4 -0
- package/dist-lib/lib/foutTekst.d.ts.map +1 -0
- package/dist-lib/lib/foutTekst.js +43 -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 +2 -0
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +153 -2
- package/dist-lib/lib/handlers/logistics-tick.test.d.ts +2 -0
- package/dist-lib/lib/handlers/logistics-tick.test.d.ts.map +1 -0
- package/dist-lib/lib/handlers/logistics-tick.test.js +63 -0
- 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 +22705 -35
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.functions.js +7 -7
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts +33 -12
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +534 -228
- 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 +9082 -14
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.functions.js +4 -4
- package/dist-lib/lib/logisticsRecalcJob.server.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.server.js +17 -2
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +4993 -459
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.js +2 -2
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +893 -0
- package/dist-lib/lib/nodeTrace.d.ts +65 -0
- package/dist-lib/lib/nodeTrace.d.ts.map +1 -0
- package/dist-lib/lib/nodeTrace.js +182 -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 +164 -3
- package/dist-lib/lib/plannerDiff.d.ts +37 -0
- package/dist-lib/lib/plannerDiff.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.functions.d.ts +30821 -0
- package/dist-lib/lib/plannerDiff.functions.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.functions.js +21 -0
- package/dist-lib/lib/plannerDiff.js +74 -0
- package/dist-lib/lib/plannerDiff.server.d.ts +5 -0
- package/dist-lib/lib/plannerDiff.server.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.server.js +60 -0
- package/dist-lib/lib/plannerDiff.test.d.ts +2 -0
- package/dist-lib/lib/plannerDiff.test.d.ts.map +1 -0
- package/dist-lib/lib/plannerDiff.test.js +41 -0
- package/dist-lib/lib/resolveBuffer.test.d.ts +2 -0
- package/dist-lib/lib/resolveBuffer.test.d.ts.map +1 -0
- package/dist-lib/lib/resolveBuffer.test.js +38 -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 +102 -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/stopReden.d.ts +43 -0
- package/dist-lib/lib/stopReden.d.ts.map +1 -0
- package/dist-lib/lib/stopReden.js +197 -0
- package/dist-lib/lib/taskCounts.d.ts +2 -0
- package/dist-lib/lib/taskCounts.d.ts.map +1 -0
- package/dist-lib/lib/taskCounts.js +15 -0
- package/dist-lib/lib/taskCounts.test.d.ts +2 -0
- package/dist-lib/lib/taskCounts.test.d.ts.map +1 -0
- package/dist-lib/lib/taskCounts.test.js +12 -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 +78 -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 +133 -0
- package/package.json +158 -131
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"useOrderTrace.d.ts","sourceRoot":"","sources":["../../src/hooks/useOrderTrace.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAoCD,wBAAgB,sBAAsB;;;;;eAwCN,OAAO,CAAC,YAAY,CAAC;;;EAGpD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;;;;EAkDzD"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/hooks/useOrderTrace.ts — Order Trace lezen
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Alles komt uit de databasefuncties logistics_trace_order_overview,
|
|
5
|
+
// logistics_trace_order_state en logistics_trace_timeline. Er wordt niets
|
|
6
|
+
// afgeleid of aangevuld: wat hier staat is echt door de Engine vastgelegd.
|
|
7
|
+
// ============================================================================
|
|
8
|
+
import { useCallback, useEffect, useState } from "react";
|
|
9
|
+
import { supabase } from "../integrations/supabase/moduleClient.js";
|
|
10
|
+
const LEEG = { search: "", state: "", errorClass: "", source: "", step: "", hours: 72 };
|
|
11
|
+
function mapRij(r) {
|
|
12
|
+
return {
|
|
13
|
+
orderNumber: String(r?.orderNumber ?? ""),
|
|
14
|
+
orderSource: r?.orderSource ?? null,
|
|
15
|
+
orderStatus: r?.orderStatus ?? null,
|
|
16
|
+
deliveryDate: r?.deliveryDate ?? null,
|
|
17
|
+
customerName: r?.customerName ?? null,
|
|
18
|
+
createdAt: r?.createdAt ?? null,
|
|
19
|
+
cancelledAt: r?.cancelledAt ?? null,
|
|
20
|
+
bufferId: r?.bufferId ?? null,
|
|
21
|
+
state: String(r?.state ?? "wachtend"),
|
|
22
|
+
events: Number(r?.events ?? 0),
|
|
23
|
+
versions: Number(r?.versions ?? 0),
|
|
24
|
+
errors: Number(r?.errors ?? 0),
|
|
25
|
+
waiting: Number(r?.waiting ?? 0),
|
|
26
|
+
warnings: Number(r?.warnings ?? 0),
|
|
27
|
+
attempts: Number(r?.attempts ?? 0),
|
|
28
|
+
lastAt: r?.lastAt ?? null,
|
|
29
|
+
firstAt: r?.firstAt ?? null,
|
|
30
|
+
lastStep: r?.lastStep ?? null,
|
|
31
|
+
lastPhase: r?.lastPhase ?? null,
|
|
32
|
+
lastStatus: r?.lastStatus ?? null,
|
|
33
|
+
lastNode: r?.lastNode ?? null,
|
|
34
|
+
lastReason: r?.lastReason ?? null,
|
|
35
|
+
errorClass: r?.errorClass ?? null,
|
|
36
|
+
traceId: r?.traceId ?? null,
|
|
37
|
+
queueStatus: r?.queueStatus ?? null,
|
|
38
|
+
reasonCode: r?.reasonCode ?? null,
|
|
39
|
+
queueError: r?.queueError ?? null,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function useOrderTraceOverzicht() {
|
|
43
|
+
const [filters, setFilters] = useState(LEEG);
|
|
44
|
+
const [orders, setOrders] = useState([]);
|
|
45
|
+
const [loading, setLoading] = useState(true);
|
|
46
|
+
const [error, setError] = useState(null);
|
|
47
|
+
const load = useCallback(async () => {
|
|
48
|
+
setLoading(true);
|
|
49
|
+
setError(null);
|
|
50
|
+
try {
|
|
51
|
+
const since = new Date(Date.now() - Math.max(filters.hours, 1) * 3600000).toISOString();
|
|
52
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_trace_order_overview", {
|
|
53
|
+
p_search: filters.search || null,
|
|
54
|
+
p_state: filters.state || null,
|
|
55
|
+
p_error_class: filters.errorClass || null,
|
|
56
|
+
p_source: filters.source || null,
|
|
57
|
+
p_step: filters.step || null,
|
|
58
|
+
p_since: since,
|
|
59
|
+
p_limit: 300,
|
|
60
|
+
});
|
|
61
|
+
if (rpcError)
|
|
62
|
+
throw new Error(rpcError.message);
|
|
63
|
+
const safe = Array.isArray(data) ? data : [];
|
|
64
|
+
setOrders(safe.map(mapRij));
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
setError(e?.message ? String(e.message) : "Het overzicht kon niet worden gelezen.");
|
|
68
|
+
setOrders([]);
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
setLoading(false);
|
|
72
|
+
}
|
|
73
|
+
}, [filters]);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
void load();
|
|
76
|
+
}, [load]);
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
const timer = setInterval(() => void load(), 30000);
|
|
79
|
+
return () => clearInterval(timer);
|
|
80
|
+
}, [load]);
|
|
81
|
+
const patch = useCallback((p) => setFilters((f) => ({ ...f, ...p })), []);
|
|
82
|
+
return { orders, loading, error, filters, patch, reset: () => setFilters(LEEG), refresh: load };
|
|
83
|
+
}
|
|
84
|
+
export function useOrderTraceStand(orderRef) {
|
|
85
|
+
const [stand, setStand] = useState(null);
|
|
86
|
+
const [loading, setLoading] = useState(false);
|
|
87
|
+
const load = useCallback(async () => {
|
|
88
|
+
if (!orderRef) {
|
|
89
|
+
setStand(null);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
setLoading(true);
|
|
93
|
+
try {
|
|
94
|
+
const { data, error } = await supabase.rpc("logistics_trace_order_state", {
|
|
95
|
+
p_order_ref: orderRef,
|
|
96
|
+
});
|
|
97
|
+
if (error)
|
|
98
|
+
throw new Error(error.message);
|
|
99
|
+
const r = (data ?? {});
|
|
100
|
+
setStand({
|
|
101
|
+
orderRef,
|
|
102
|
+
lastStep: r?.lastStep ?? null,
|
|
103
|
+
lastNode: r?.lastNode ?? null,
|
|
104
|
+
lastPhase: r?.lastPhase ?? null,
|
|
105
|
+
lastStatus: r?.lastStatus ?? null,
|
|
106
|
+
lastAt: r?.lastAt ?? null,
|
|
107
|
+
stuckStep: r?.stuckStep ?? null,
|
|
108
|
+
stuckNode: r?.stuckNode ?? null,
|
|
109
|
+
stuckStatus: r?.stuckStatus ?? null,
|
|
110
|
+
stuckReason: r?.stuckReason ?? null,
|
|
111
|
+
stuckError: r?.stuckError ?? null,
|
|
112
|
+
errorClass: r?.errorClass ?? null,
|
|
113
|
+
nextStep: r?.nextStep ?? null,
|
|
114
|
+
nextAttemptAt: r?.nextAttemptAt ?? null,
|
|
115
|
+
blockedSince: r?.blockedSince ?? null,
|
|
116
|
+
tries: Number(r?.tries ?? 0),
|
|
117
|
+
attempts: Number(r?.attempts ?? 0),
|
|
118
|
+
queueStatus: r?.queueStatus ?? null,
|
|
119
|
+
reasonCode: r?.reasonCode ?? null,
|
|
120
|
+
queueError: r?.queueError ?? null,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
setStand(null);
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
setLoading(false);
|
|
128
|
+
}
|
|
129
|
+
}, [orderRef]);
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
void load();
|
|
132
|
+
}, [load]);
|
|
133
|
+
return { stand, loading, refresh: load };
|
|
134
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type TraceEventRow } from "./useLogisticsTrace";
|
|
2
|
+
import type { KarStand, OrderKop, OrderVersie } from "../lib/flowRoute";
|
|
3
|
+
export interface OrderOverzichtRij {
|
|
4
|
+
orderNumber: string;
|
|
5
|
+
orderSource: string | null;
|
|
6
|
+
orderStatus: string | null;
|
|
7
|
+
deliveryDate: string | null;
|
|
8
|
+
customerName: string | null;
|
|
9
|
+
createdAt: string | null;
|
|
10
|
+
cancelledAt: string | null;
|
|
11
|
+
bufferId: string | null;
|
|
12
|
+
events: number;
|
|
13
|
+
versions: number;
|
|
14
|
+
errors: number;
|
|
15
|
+
lastAt: string | null;
|
|
16
|
+
lastStep: string | null;
|
|
17
|
+
lastStatus: string | null;
|
|
18
|
+
queueStatus: string | null;
|
|
19
|
+
reasonCode: string | null;
|
|
20
|
+
queueError: string | null;
|
|
21
|
+
}
|
|
22
|
+
export declare function useAlleOrders(zoek: string): {
|
|
23
|
+
rows: OrderOverzichtRij[];
|
|
24
|
+
loading: boolean;
|
|
25
|
+
error: string | null;
|
|
26
|
+
refresh: () => Promise<void>;
|
|
27
|
+
};
|
|
28
|
+
export interface OrderVersies {
|
|
29
|
+
order: OrderKop | null;
|
|
30
|
+
carts: KarStand | null;
|
|
31
|
+
versions: OrderVersie[];
|
|
32
|
+
}
|
|
33
|
+
export declare function useOrderVersies(orderRef: string | null): {
|
|
34
|
+
loading: boolean;
|
|
35
|
+
error: string | null;
|
|
36
|
+
refresh: () => Promise<void>;
|
|
37
|
+
order: OrderKop | null;
|
|
38
|
+
carts: KarStand | null;
|
|
39
|
+
versions: OrderVersie[];
|
|
40
|
+
};
|
|
41
|
+
export declare function useVersieEvents(orderRef: string | null, versie: OrderVersie | null): {
|
|
42
|
+
events: TraceEventRow[];
|
|
43
|
+
loading: boolean;
|
|
44
|
+
error: string | null;
|
|
45
|
+
refresh: () => Promise<void>;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=useOrderVersies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOrderVersies.d.ts","sourceRoot":"","sources":["../../src/hooks/useOrderVersies.ts"],"names":[],"mappings":"AAQA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAaD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM;;;;;EAgDzC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AA+BD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;;;;WAlC9C,QAAQ,GAAG,IAAI;WACf,QAAQ,GAAG,IAAI;cACZ,WAAW,EAAE;EA4FxB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;;;;;EAwClF"}
|
|
@@ -0,0 +1,194 @@
|
|
|
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.js";
|
|
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
|
+
function leesOrderFout(error) {
|
|
12
|
+
const bericht = error instanceof Error ? error.message : "";
|
|
13
|
+
if (bericht.toLowerCase().includes("statement timeout")) {
|
|
14
|
+
return "Het orderoverzicht reageerde niet op tijd. De laatst geladen orders blijven zichtbaar; probeer opnieuw.";
|
|
15
|
+
}
|
|
16
|
+
return bericht || "De orders konden niet worden gelezen. De laatst geladen orders blijven zichtbaar.";
|
|
17
|
+
}
|
|
18
|
+
export function useAlleOrders(zoek) {
|
|
19
|
+
const [rows, setRows] = useState([]);
|
|
20
|
+
const [loading, setLoading] = useState(true);
|
|
21
|
+
const [error, setError] = useState(null);
|
|
22
|
+
const load = useCallback(async () => {
|
|
23
|
+
setLoading(true);
|
|
24
|
+
setError(null);
|
|
25
|
+
try {
|
|
26
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_trace_all_orders", {
|
|
27
|
+
p_search: zoek || null,
|
|
28
|
+
p_limit: 300,
|
|
29
|
+
});
|
|
30
|
+
if (rpcError)
|
|
31
|
+
throw new Error(rpcError.message);
|
|
32
|
+
const safe = Array.isArray(data) ? data : [];
|
|
33
|
+
setRows(safe.map((r) => ({
|
|
34
|
+
orderNumber: String(r?.orderNumber ?? ""),
|
|
35
|
+
orderSource: s(r?.orderSource),
|
|
36
|
+
orderStatus: s(r?.orderStatus),
|
|
37
|
+
deliveryDate: s(r?.deliveryDate),
|
|
38
|
+
customerName: s(r?.customerName),
|
|
39
|
+
createdAt: s(r?.createdAt),
|
|
40
|
+
cancelledAt: s(r?.cancelledAt),
|
|
41
|
+
bufferId: s(r?.bufferId),
|
|
42
|
+
events: n(r?.events),
|
|
43
|
+
versions: n(r?.versions),
|
|
44
|
+
errors: n(r?.errors),
|
|
45
|
+
lastAt: s(r?.lastAt),
|
|
46
|
+
lastStep: s(r?.lastStep),
|
|
47
|
+
lastStatus: s(r?.lastStatus),
|
|
48
|
+
queueStatus: s(r?.queueStatus),
|
|
49
|
+
reasonCode: s(r?.reasonCode),
|
|
50
|
+
queueError: s(r?.queueError),
|
|
51
|
+
})));
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
setError(leesOrderFout(e));
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
setLoading(false);
|
|
58
|
+
}
|
|
59
|
+
}, [zoek]);
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
void load();
|
|
62
|
+
}, [load]);
|
|
63
|
+
return { rows, loading, error, refresh: load };
|
|
64
|
+
}
|
|
65
|
+
function mapVersie(v) {
|
|
66
|
+
return {
|
|
67
|
+
id: String(v?.id ?? ""),
|
|
68
|
+
nr: n(v?.nr),
|
|
69
|
+
startedAt: s(v?.startedAt),
|
|
70
|
+
claimedAt: s(v?.claimedAt),
|
|
71
|
+
finishedAt: s(v?.finishedAt),
|
|
72
|
+
windowEnd: s(v?.windowEnd),
|
|
73
|
+
status: s(v?.status),
|
|
74
|
+
error: s(v?.error),
|
|
75
|
+
reason: s(v?.reason),
|
|
76
|
+
reasonCode: s(v?.reasonCode),
|
|
77
|
+
attempts: n(v?.attempts),
|
|
78
|
+
events: n(v?.events),
|
|
79
|
+
errors: n(v?.errors),
|
|
80
|
+
warnings: n(v?.warnings),
|
|
81
|
+
waiting: n(v?.waiting),
|
|
82
|
+
printJobs: n(v?.printJobs),
|
|
83
|
+
printFailed: n(v?.printFailed),
|
|
84
|
+
shippingEvents: n(v?.shippingEvents),
|
|
85
|
+
shippingStatus: s(v?.shippingStatus),
|
|
86
|
+
lastErrorStep: s(v?.lastErrorStep),
|
|
87
|
+
lastError: s(v?.lastError),
|
|
88
|
+
lastPhase: s(v?.lastPhase),
|
|
89
|
+
lastStep: s(v?.lastStep),
|
|
90
|
+
lastEventAt: s(v?.lastEventAt),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function useOrderVersies(orderRef) {
|
|
94
|
+
const [data, setData] = useState({ order: null, carts: null, versions: [] });
|
|
95
|
+
const [loading, setLoading] = useState(false);
|
|
96
|
+
const [error, setError] = useState(null);
|
|
97
|
+
const load = useCallback(async () => {
|
|
98
|
+
if (!orderRef) {
|
|
99
|
+
setData({ order: null, carts: null, versions: [] });
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
setLoading(true);
|
|
103
|
+
setError(null);
|
|
104
|
+
try {
|
|
105
|
+
// Eerst de stand van deze ene order bijwerken; mislukt dat, dan lezen we
|
|
106
|
+
// gewoon wat er al staat.
|
|
107
|
+
try {
|
|
108
|
+
await supabase.rpc("logistics_trace_progress_order", { p_order_ref: orderRef });
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
/* meekijken mag nooit blokkeren */
|
|
112
|
+
}
|
|
113
|
+
const { data: raw, error: rpcError } = await supabase.rpc("logistics_trace_versions", {
|
|
114
|
+
p_order_ref: orderRef,
|
|
115
|
+
});
|
|
116
|
+
if (rpcError)
|
|
117
|
+
throw new Error(rpcError.message);
|
|
118
|
+
const r = (raw ?? {});
|
|
119
|
+
const versions = Array.isArray(r?.versions) ? r.versions.map(mapVersie) : [];
|
|
120
|
+
const o = r?.order;
|
|
121
|
+
const c = r?.carts;
|
|
122
|
+
setData({
|
|
123
|
+
order: o
|
|
124
|
+
? {
|
|
125
|
+
orderNumber: String(o.orderNumber ?? orderRef),
|
|
126
|
+
orderSource: s(o.orderSource),
|
|
127
|
+
status: s(o.status),
|
|
128
|
+
deliveryDate: s(o.deliveryDate),
|
|
129
|
+
customerName: s(o.customerName),
|
|
130
|
+
createdAt: s(o.createdAt),
|
|
131
|
+
bufferId: s(o.bufferId),
|
|
132
|
+
planLockedAt: s(o.planLockedAt),
|
|
133
|
+
cancelledAt: s(o.cancelledAt),
|
|
134
|
+
}
|
|
135
|
+
: null,
|
|
136
|
+
carts: c
|
|
137
|
+
? { total: n(c.total), printed: n(c.printed), controlled: n(c.controlled), announced: n(c.announced) }
|
|
138
|
+
: null,
|
|
139
|
+
versions,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
setError(e?.message ? String(e.message) : "De versies konden niet worden gelezen.");
|
|
144
|
+
setData({ order: null, carts: null, versions: [] });
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
setLoading(false);
|
|
148
|
+
}
|
|
149
|
+
}, [orderRef]);
|
|
150
|
+
useEffect(() => {
|
|
151
|
+
void load();
|
|
152
|
+
}, [load]);
|
|
153
|
+
return { ...data, loading, error, refresh: load };
|
|
154
|
+
}
|
|
155
|
+
export function useVersieEvents(orderRef, versie) {
|
|
156
|
+
const [events, setEvents] = useState([]);
|
|
157
|
+
const [loading, setLoading] = useState(false);
|
|
158
|
+
const [error, setError] = useState(null);
|
|
159
|
+
const versieId = versie?.id ?? null;
|
|
160
|
+
const from = versie?.startedAt ?? null;
|
|
161
|
+
const to = versie?.windowEnd ?? null;
|
|
162
|
+
const load = useCallback(async () => {
|
|
163
|
+
if (!orderRef || !versieId) {
|
|
164
|
+
setEvents([]);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
setLoading(true);
|
|
168
|
+
setError(null);
|
|
169
|
+
try {
|
|
170
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_trace_version_events", {
|
|
171
|
+
p_order_ref: orderRef,
|
|
172
|
+
p_version_id: versieId,
|
|
173
|
+
p_from: from,
|
|
174
|
+
p_to: to,
|
|
175
|
+
p_limit: 500,
|
|
176
|
+
});
|
|
177
|
+
if (rpcError)
|
|
178
|
+
throw new Error(rpcError.message);
|
|
179
|
+
const safe = Array.isArray(data) ? data : [];
|
|
180
|
+
setEvents(safe.map(mapEvent));
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
setError(e?.message ? String(e.message) : "De gebeurtenissen konden niet worden gelezen.");
|
|
184
|
+
setEvents([]);
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
setLoading(false);
|
|
188
|
+
}
|
|
189
|
+
}, [orderRef, versieId, from, to]);
|
|
190
|
+
useEffect(() => {
|
|
191
|
+
void load();
|
|
192
|
+
}, [load]);
|
|
193
|
+
return { events, loading, error, refresh: load };
|
|
194
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface WachtrijRegel {
|
|
2
|
+
id: string;
|
|
3
|
+
orderId: string | null;
|
|
4
|
+
orderNumber: string | null;
|
|
5
|
+
klant: string | null;
|
|
6
|
+
status: string;
|
|
7
|
+
stand: string;
|
|
8
|
+
pogingen: number;
|
|
9
|
+
maxPogingen: number;
|
|
10
|
+
reden: string | null;
|
|
11
|
+
foutRuw: string | null;
|
|
12
|
+
foutTekst: string | null;
|
|
13
|
+
foutSoort: string | null;
|
|
14
|
+
/** Hoeveel procent van de orderregels al op een kar staat (null = niet te bepalen). */
|
|
15
|
+
voortgang: number | null;
|
|
16
|
+
volgendePoging: string | null;
|
|
17
|
+
bezigSinds: string | null;
|
|
18
|
+
aangemeldOp: string | null;
|
|
19
|
+
bijgewerktOp: string | null;
|
|
20
|
+
/** Wanneer de order zelf is binnengekomen — bepaalt de volgorde in de lijst. */
|
|
21
|
+
orderGemaaktOp: string | null;
|
|
22
|
+
}
|
|
23
|
+
export type ResetKeuze = "failed" | "stuck" | "all";
|
|
24
|
+
export declare function usePlanWachtrij(limiet?: number): {
|
|
25
|
+
regels: WachtrijRegel[];
|
|
26
|
+
loading: boolean;
|
|
27
|
+
busy: boolean;
|
|
28
|
+
error: string | null;
|
|
29
|
+
refresh: (quiet?: boolean) => Promise<void>;
|
|
30
|
+
reset: (keuze: ResetKeuze) => Promise<number>;
|
|
31
|
+
opnieuw: (orderId: string) => Promise<void>;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=usePlanWachtrij.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePlanWachtrij.d.ts","sourceRoot":"","sources":["../../src/hooks/usePlanWachtrij.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uFAAuF;IACvF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gFAAgF;IAChF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAyBpD,wBAAgB,eAAe,CAAC,MAAM,SAAM;;;;;;mBA0C1B,UAAU,KAAG,OAAO,CAAC,MAAM,CAAC;uBAkB1B,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;EAiBzC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/hooks/usePlanWachtrij.ts — de planwachtrij lezen en opnieuw starten
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Leest public.logistics_plan_queue via logistics_plan_queue_list en kan de
|
|
5
|
+
// wachtrij resetten via logistics_plan_reset_queue. De Engine blijft de bron.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { useCallback, useEffect, useState } from "react";
|
|
8
|
+
import { supabase } from "../integrations/supabase/moduleClient.js";
|
|
9
|
+
function rij(r) {
|
|
10
|
+
return {
|
|
11
|
+
id: String(r["id"] ?? ""),
|
|
12
|
+
orderId: r["order_id"] ?? null,
|
|
13
|
+
orderNumber: r["order_number"] ?? null,
|
|
14
|
+
klant: r["customer_name"] ?? null,
|
|
15
|
+
status: String(r["status"] ?? ""),
|
|
16
|
+
stand: String(r["stand"] ?? ""),
|
|
17
|
+
pogingen: Number(r["attempts"] ?? 0),
|
|
18
|
+
maxPogingen: Number(r["max_attempts"] ?? 0),
|
|
19
|
+
reden: r["reason"] ?? null,
|
|
20
|
+
foutRuw: r["error_raw"] ?? null,
|
|
21
|
+
foutTekst: r["error_text"] ?? null,
|
|
22
|
+
foutSoort: r["error_class"] ?? null,
|
|
23
|
+
voortgang: r["progress_pct"] === null || r["progress_pct"] === undefined ? null : Number(r["progress_pct"]),
|
|
24
|
+
volgendePoging: r["next_attempt_at"] ?? null,
|
|
25
|
+
bezigSinds: r["claimed_at"] ?? null,
|
|
26
|
+
aangemeldOp: r["enqueued_at"] ?? null,
|
|
27
|
+
bijgewerktOp: r["updated_at"] ?? null,
|
|
28
|
+
orderGemaaktOp: r["order_created_at"] ?? null,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function usePlanWachtrij(limiet = 300) {
|
|
32
|
+
const [regels, setRegels] = useState([]);
|
|
33
|
+
const [loading, setLoading] = useState(true);
|
|
34
|
+
const [busy, setBusy] = useState(false);
|
|
35
|
+
const [error, setError] = useState(null);
|
|
36
|
+
const load = useCallback(async (quiet = false) => {
|
|
37
|
+
if (!quiet)
|
|
38
|
+
setLoading(true);
|
|
39
|
+
setError(null);
|
|
40
|
+
try {
|
|
41
|
+
// Te lang durende berekeningen afbreken, zodat niets eeuwig op "bezig" blijft staan.
|
|
42
|
+
try {
|
|
43
|
+
await supabase.rpc("logistics_plan_timeout_running", {});
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
/* afbreken van blijvers mag het ophalen nooit tegenhouden */
|
|
47
|
+
}
|
|
48
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_plan_queue_list", {
|
|
49
|
+
p_limit: limiet,
|
|
50
|
+
});
|
|
51
|
+
if (rpcError)
|
|
52
|
+
throw rpcError;
|
|
53
|
+
const lijst = Array.isArray(data) ? data : [];
|
|
54
|
+
setRegels(lijst.map(rij));
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
setError(e?.message ? String(e.message) : "De wachtrij kon niet worden opgehaald.");
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
if (!quiet)
|
|
61
|
+
setLoading(false);
|
|
62
|
+
}
|
|
63
|
+
}, [limiet]);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
void load();
|
|
66
|
+
const t = setInterval(() => {
|
|
67
|
+
void load(true);
|
|
68
|
+
}, 20000);
|
|
69
|
+
return () => clearInterval(t);
|
|
70
|
+
}, [load]);
|
|
71
|
+
/** Zet wachtrijregels terug op wachtend, zodat de Engine ze opnieuw bekijkt. */
|
|
72
|
+
const reset = useCallback(async (keuze) => {
|
|
73
|
+
setBusy(true);
|
|
74
|
+
try {
|
|
75
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_plan_reset_queue", {
|
|
76
|
+
p_scope: keuze,
|
|
77
|
+
});
|
|
78
|
+
if (rpcError)
|
|
79
|
+
throw rpcError;
|
|
80
|
+
await load(true);
|
|
81
|
+
return Number(data ?? 0);
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
setBusy(false);
|
|
85
|
+
}
|
|
86
|
+
}, [load]);
|
|
87
|
+
/** Eén order opnieuw laten indelen. */
|
|
88
|
+
const opnieuw = useCallback(async (orderId) => {
|
|
89
|
+
setBusy(true);
|
|
90
|
+
try {
|
|
91
|
+
const { error: rpcError } = await supabase.rpc("logistics_plan_enqueue", {
|
|
92
|
+
p_order_id: orderId,
|
|
93
|
+
p_reason: "handmatig opnieuw proberen",
|
|
94
|
+
});
|
|
95
|
+
if (rpcError)
|
|
96
|
+
throw rpcError;
|
|
97
|
+
await load(true);
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
setBusy(false);
|
|
101
|
+
}
|
|
102
|
+
}, [load]);
|
|
103
|
+
return { regels, loading, busy, error, refresh: load, reset, opnieuw };
|
|
104
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// ============================================================================
|
|
4
4
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
5
5
|
import { useServerFn } from "@tanstack/react-start";
|
|
6
|
-
import { supabase } from "../integrations/supabase/moduleClient";
|
|
6
|
+
import { supabase } from "../integrations/supabase/moduleClient.js";
|
|
7
7
|
import { startRecalcJob, tickRecalcJob } from "../lib/logisticsRecalcJob.functions";
|
|
8
8
|
const PHASE_LABEL = {
|
|
9
9
|
buffers: "Orderbuffers indelen",
|
|
@@ -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,20 @@
|
|
|
1
|
+
export interface ShippingNoteDiagnose {
|
|
2
|
+
gevonden: boolean;
|
|
3
|
+
ordernummer: string | null;
|
|
4
|
+
isFloriday: boolean;
|
|
5
|
+
heeftVerkooporder: boolean;
|
|
6
|
+
status: string | null;
|
|
7
|
+
pogingen: number;
|
|
8
|
+
wachtreden: string | null;
|
|
9
|
+
afleveropdracht: string | null;
|
|
10
|
+
aanvragenVerstuurd: number;
|
|
11
|
+
laatsteAanvraag: string | null;
|
|
12
|
+
reden: string | null;
|
|
13
|
+
actie: string | null;
|
|
14
|
+
}
|
|
15
|
+
/** Diagnose van de verzendbrief bij één order. Alleen lezen. */
|
|
16
|
+
export declare function useShippingNoteDiagnose(orderRef: string | null): {
|
|
17
|
+
diagnose: ShippingNoteDiagnose | null;
|
|
18
|
+
reload: () => Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=useShippingNoteDiagnose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useShippingNoteDiagnose.d.ts","sourceRoot":"","sources":["../../src/hooks/useShippingNoteDiagnose.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAuBD,gEAAgE;AAChE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;;;EAyB9D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Alleen-lezen diagnose van de verzendbrief bij een order.
|
|
3
|
+
// Leest uitsluitend bestaande gegevens; er wordt niets aangevraagd of geprint.
|
|
4
|
+
// ============================================================================
|
|
5
|
+
import { useCallback, useEffect, useState } from "react";
|
|
6
|
+
import { supabase } from "@flowselections/core";
|
|
7
|
+
function veilig(value) {
|
|
8
|
+
if (!value || typeof value !== "object")
|
|
9
|
+
return null;
|
|
10
|
+
const row = value;
|
|
11
|
+
if (row["gevonden"] !== true)
|
|
12
|
+
return null;
|
|
13
|
+
const tekst = (key) => (typeof row[key] === "string" ? row[key] : null);
|
|
14
|
+
return {
|
|
15
|
+
gevonden: true,
|
|
16
|
+
ordernummer: tekst("ordernummer"),
|
|
17
|
+
isFloriday: row["isFloriday"] === true,
|
|
18
|
+
heeftVerkooporder: row["heeftVerkooporder"] === true,
|
|
19
|
+
status: tekst("status"),
|
|
20
|
+
pogingen: Number(row["pogingen"] ?? 0),
|
|
21
|
+
wachtreden: tekst("wachtreden"),
|
|
22
|
+
afleveropdracht: tekst("afleveropdracht"),
|
|
23
|
+
aanvragenVerstuurd: Number(row["aanvragenVerstuurd"] ?? 0),
|
|
24
|
+
laatsteAanvraag: tekst("laatsteAanvraag"),
|
|
25
|
+
reden: tekst("reden"),
|
|
26
|
+
actie: tekst("actie"),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Diagnose van de verzendbrief bij één order. Alleen lezen. */
|
|
30
|
+
export function useShippingNoteDiagnose(orderRef) {
|
|
31
|
+
const [data, setData] = useState(null);
|
|
32
|
+
const reload = useCallback(async () => {
|
|
33
|
+
if (!orderRef) {
|
|
34
|
+
setData(null);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const { data: result, error } = await supabase.rpc("logistics_shipping_note_diagnose", { p_order_number: orderRef });
|
|
39
|
+
if (error)
|
|
40
|
+
throw error;
|
|
41
|
+
setData(veilig(result));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Een mislukte diagnose mag de flow nooit blokkeren.
|
|
45
|
+
setData(null);
|
|
46
|
+
}
|
|
47
|
+
}, [orderRef]);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
void reload();
|
|
50
|
+
}, [reload]);
|
|
51
|
+
return { diagnose: data, reload };
|
|
52
|
+
}
|
|
@@ -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
|