@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,38 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { resolveBufferForOrderInternal } from "./loadCarrierPlanning.server";
|
|
3
|
+
function fakeClient(initial, afterRpc) {
|
|
4
|
+
const calls = { rpc: 0, writes: 0 };
|
|
5
|
+
let current = initial;
|
|
6
|
+
const client = {
|
|
7
|
+
from(table) {
|
|
8
|
+
return {
|
|
9
|
+
select: () => ({
|
|
10
|
+
eq: () => ({
|
|
11
|
+
maybeSingle: async () => ({ data: table === "orders" ? { id: "o1", buffer_id: current } : null }),
|
|
12
|
+
}),
|
|
13
|
+
}),
|
|
14
|
+
update: () => { calls.writes++; return { eq: async () => ({}) }; },
|
|
15
|
+
insert: () => { calls.writes++; return { select: () => ({ single: async () => ({}) }) }; },
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
async rpc() { calls.rpc++; current = afterRpc; return { error: null }; },
|
|
19
|
+
};
|
|
20
|
+
return { client: client, calls };
|
|
21
|
+
}
|
|
22
|
+
describe("resolveBufferForOrderInternal (alleen lezen)", () => {
|
|
23
|
+
it("gebruikt de bestaande buffer zonder iets te schrijven", async () => {
|
|
24
|
+
const { client, calls } = fakeClient("b1", "b2");
|
|
25
|
+
expect(await resolveBufferForOrderInternal(client, "o1")).toBe("b1");
|
|
26
|
+
expect(calls).toEqual({ rpc: 0, writes: 0 });
|
|
27
|
+
});
|
|
28
|
+
it("laat de database beslissen als er nog geen buffer is", async () => {
|
|
29
|
+
const { client, calls } = fakeClient(null, "b9");
|
|
30
|
+
expect(await resolveBufferForOrderInternal(client, "o1")).toBe("b9");
|
|
31
|
+
expect(calls).toEqual({ rpc: 1, writes: 0 });
|
|
32
|
+
});
|
|
33
|
+
it("maakt nooit zelf een buffer als de database er geen geeft", async () => {
|
|
34
|
+
const { client, calls } = fakeClient(null, null);
|
|
35
|
+
expect(await resolveBufferForOrderInternal(client, "o1")).toBeNull();
|
|
36
|
+
expect(calls.writes).toBe(0);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngineImpact.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineImpact.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAMD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"ruleEngineImpact.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineImpact.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAMD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc,CAwL1E;AAMD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,WAAW,EAAE,CA2CrE;AAID,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAiBD,wBAAgB,YAAY,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,GAAG,QAAQ,EAAE,CAqBrF"}
|
|
@@ -81,9 +81,16 @@ export function analyseImpact(settings) {
|
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
const control = f(settings, "controle", "control_mode");
|
|
84
|
-
score(control === "scanner");
|
|
85
|
-
if (control === "scanner")
|
|
84
|
+
score(control === "scanner" || control === "scan_only");
|
|
85
|
+
if (control === "scanner" || control === "scan_only")
|
|
86
86
|
scanMoments += 1;
|
|
87
|
+
if (control === "scan_only") {
|
|
88
|
+
signals.push({
|
|
89
|
+
level: "info",
|
|
90
|
+
title: "Scannen voor afmelden",
|
|
91
|
+
detail: "Eén scan van de pakbon meldt de hele kar af; er wordt geen verzendbrief geprint.",
|
|
92
|
+
});
|
|
93
|
+
}
|
|
87
94
|
if (control === "skip") {
|
|
88
95
|
signals.push({
|
|
89
96
|
level: "risk",
|
|
@@ -111,8 +118,8 @@ export function analyseImpact(settings) {
|
|
|
111
118
|
if (reschedule === "manual_approval") {
|
|
112
119
|
signals.push({
|
|
113
120
|
level: "warning",
|
|
114
|
-
title: "Herplannen
|
|
115
|
-
detail: "
|
|
121
|
+
title: "Herplannen gebeurt handmatig",
|
|
122
|
+
detail: "De Engine verzet vertraagde orders niet; dat doe je zelf in de Afhandeling-module.",
|
|
116
123
|
});
|
|
117
124
|
}
|
|
118
125
|
if (f(settings, "order_picken", "internal_alert_enabled") === false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngineSchema.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineSchema.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,QAAQ,GACR,aAAa,GACb,SAAS,GACT,SAAS,GACT,UAAU,CAAC;AAMf,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,wGAAwG;IACxG,SAAS,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;CAC/C;AAGD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAID,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAQzC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAK5C,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAI9D,eAAO,MAAM,UAAU,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"ruleEngineSchema.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,20 @@ export const RULE_STEPS = [
|
|
|
30
30
|
description: "Bepaal wanneer een order in een gecombineerde order (orderbuffer) terechtkomt.",
|
|
31
31
|
supportsConditions: true,
|
|
32
32
|
groups: [
|
|
33
|
+
{
|
|
34
|
+
id: "herkomst",
|
|
35
|
+
label: "Herkomst van bestellingen",
|
|
36
|
+
description: "Bestellingen komen binnen uit Floriday, de mailbox voor bestellingen, de actiemail of handmatige invoer.",
|
|
37
|
+
fields: [
|
|
38
|
+
{
|
|
39
|
+
key: "floriday_merge_lines",
|
|
40
|
+
label: "Floriday-bestelregels samenvoegen tot \u00e9\u00e9n bestelling",
|
|
41
|
+
type: "toggle",
|
|
42
|
+
default: true,
|
|
43
|
+
description: "Floriday levert elke bestelregel als een eigen verkooporder. Staat dit aan, dan worden regels van dezelfde klant, hetzelfde levermoment en dezelfde afleverlocatie samengevoegd tot \u00e9\u00e9n order met \u00e9\u00e9n ordernummer (het laagste FO-nummer). Orders die al zijn ingedeeld, geprint of gecontroleerd blijven ongewijzigd.",
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
33
47
|
{
|
|
34
48
|
id: "orderbuffer",
|
|
35
49
|
label: "Orderbuffer",
|
|
@@ -232,6 +246,27 @@ export const RULE_STEPS = [
|
|
|
232
246
|
dependsOn: { key: "mode", in: ["auto"] },
|
|
233
247
|
},
|
|
234
248
|
{ key: "max_customers", label: "Maximaal aantal klanten per ladingdrager", type: "number", min: 1, max: 99, default: 2, dependsOn: [{ key: "mode", in: ["auto"] }, { key: "fill_customers_as_much_as_fits", in: [false] }] },
|
|
249
|
+
{
|
|
250
|
+
key: "max_customers_per_layer",
|
|
251
|
+
label: "Maximaal aantal klanten op een laag",
|
|
252
|
+
type: "number",
|
|
253
|
+
min: 1,
|
|
254
|
+
max: 99,
|
|
255
|
+
default: 1,
|
|
256
|
+
description: "Staat dit op 1, dan mogen op één laag alleen producten van dezelfde klant staan. Meerdere bestellingen van dezelfde klant mogen wel samen op een laag.",
|
|
257
|
+
dependsOn: { key: "mode", in: ["auto"] },
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
key: "cart_plan_freeze",
|
|
261
|
+
label: "Wanneer ligt de karrenindeling vast?",
|
|
262
|
+
type: "select",
|
|
263
|
+
default: "per_cart",
|
|
264
|
+
options: [
|
|
265
|
+
{ value: "per_cart", label: "Als de pakbon is uitgeprint" },
|
|
266
|
+
{ value: "first_packing_slip", label: "Als de eerste pakbon van de order of buffer is uitgeprint" },
|
|
267
|
+
],
|
|
268
|
+
description: "Per kar: alleen de kar met een geprinte pakbon blijft staan, de rest mag nog opnieuw ingedeeld worden. Eerste pakbon: zodra de eerste pakbon van de order of buffer is geprint, ligt de hele indeling vast en komen er hoogstens karren bij.",
|
|
269
|
+
},
|
|
235
270
|
{
|
|
236
271
|
key: "fill_layers_as_much_as_fits",
|
|
237
272
|
label: "Lagen: zoveel als past",
|
|
@@ -538,8 +573,8 @@ export const RULE_STEPS = [
|
|
|
538
573
|
},
|
|
539
574
|
{
|
|
540
575
|
value: "manual_approval",
|
|
541
|
-
label: "
|
|
542
|
-
description: "De Engine
|
|
576
|
+
label: "Handmatig herinplannen",
|
|
577
|
+
description: "De Engine doet niets met vertraagde orders: de nieuwe leverdag wordt handmatig in de Afhandeling-module bepaald.",
|
|
543
578
|
},
|
|
544
579
|
],
|
|
545
580
|
},
|
|
@@ -782,7 +817,7 @@ export const RULE_STEPS = [
|
|
|
782
817
|
options: [
|
|
783
818
|
{ value: "after_checkin", label: "Na het aanmeldmoment van het transport" },
|
|
784
819
|
{ value: "after_scan", label: "Automatisch afdrukken nadat een kar is gescand" },
|
|
785
|
-
{ value: "with_packing_slip", label: "
|
|
820
|
+
{ value: "with_packing_slip", label: "Als de pakbon wordt uitgeprint" },
|
|
786
821
|
{ value: "manual_approval", label: "Pas na handmatige goedkeuring op een pickstation" },
|
|
787
822
|
],
|
|
788
823
|
},
|
|
@@ -883,16 +918,18 @@ export const RULE_STEPS = [
|
|
|
883
918
|
type: "select",
|
|
884
919
|
default: "scanner",
|
|
885
920
|
options: [
|
|
886
|
-
{ value: "scanner", label: "Scancontrole" },
|
|
921
|
+
{ value: "scanner", label: "Scancontrole met verzendbrief uitprinten" },
|
|
922
|
+
{ value: "scan_only", label: "Scannen voor afmelden" },
|
|
887
923
|
{ value: "paper", label: "Papieren controle" },
|
|
888
924
|
{ value: "skip", label: "Controle overslaan" },
|
|
889
925
|
],
|
|
926
|
+
description: "Bij 'Scannen voor afmelden' scant de medewerker alleen de pakbon; die ene scan meldt de hele kar direct af. Er wordt dan niets geprint.",
|
|
890
927
|
},
|
|
891
928
|
{
|
|
892
929
|
key: "control_scanner_id",
|
|
893
930
|
label: "Scanner",
|
|
894
931
|
type: "scanner",
|
|
895
|
-
dependsOn: [{ key: "control_mode", in: ["scanner"] }],
|
|
932
|
+
dependsOn: [{ key: "control_mode", in: ["scanner", "scan_only"] }],
|
|
896
933
|
description: "De scanner die bij deze controlepost hoort. Alle pakbonnen die gecontroleerd moeten worden, komen bij deze scanner binnen.",
|
|
897
934
|
},
|
|
898
935
|
{
|
|
@@ -920,6 +957,13 @@ export const RULE_STEPS = [
|
|
|
920
957
|
default: false,
|
|
921
958
|
description: "Staat dit uit, dan verstuurt de Logistics Engine geen enkele statuswijziging naar Floriday. Staat dit aan, dan wordt een order pas op afgehandeld gezet nadat de karrencontrole is goedgekeurd.",
|
|
922
959
|
},
|
|
960
|
+
{
|
|
961
|
+
key: "floriday_delivery_note_create",
|
|
962
|
+
label: "Verzendbrief laten aanmaken in Floriday",
|
|
963
|
+
type: "toggle",
|
|
964
|
+
default: false,
|
|
965
|
+
description: "Staat dit aan, dan laat de Engine bij een Floriday-order een officiele verzendbrief aanmaken zodra de pakbon naar het pickstation gaat, en haalt dat document daarna op. De order wordt hierdoor niet afgemeld; dat blijft aan de controlescan.",
|
|
966
|
+
},
|
|
923
967
|
{
|
|
924
968
|
key: "floriday_stock_updates",
|
|
925
969
|
label: "Voorraad doorgeven aan Floriday",
|
|
@@ -935,7 +979,59 @@ export const RULE_STEPS = [
|
|
|
935
979
|
max: 100,
|
|
936
980
|
default: 100,
|
|
937
981
|
unit: "%",
|
|
938
|
-
dependsOn: { key: "control_mode", in: ["scanner", "paper"] },
|
|
982
|
+
dependsOn: { key: "control_mode", in: ["scanner", "scan_only", "paper"] },
|
|
983
|
+
},
|
|
984
|
+
],
|
|
985
|
+
},
|
|
986
|
+
],
|
|
987
|
+
},
|
|
988
|
+
{
|
|
989
|
+
id: "opruimen",
|
|
990
|
+
label: "Opruimen",
|
|
991
|
+
icon: "trash",
|
|
992
|
+
description: "Hoe lang bewaart de engine afgeronde en geannuleerde taken voordat ze worden opgeruimd?",
|
|
993
|
+
supportsConditions: false,
|
|
994
|
+
groups: [
|
|
995
|
+
{
|
|
996
|
+
id: "opruimen",
|
|
997
|
+
label: "Bewaartermijn",
|
|
998
|
+
description: "Afgeronde, overgeslagen en geannuleerde taken worden na deze termijn verwijderd. Lopende en geplande taken blijven altijd staan. Zonder ingevulde termijn wordt er niets opgeruimd.",
|
|
999
|
+
fields: [
|
|
1000
|
+
{
|
|
1001
|
+
key: "task_retention_days",
|
|
1002
|
+
default: 90,
|
|
1003
|
+
label: "Afgeronde taken bewaren (dagen)",
|
|
1004
|
+
type: "number",
|
|
1005
|
+
min: 1,
|
|
1006
|
+
max: 3650,
|
|
1007
|
+
description: "Laat dit leeg om niets op te ruimen. Karren, karnummers en totalen van afgehandelde of gecontroleerde karren blijven hoe dan ook behouden.",
|
|
1008
|
+
},
|
|
1009
|
+
{
|
|
1010
|
+
key: "trace_retention_days",
|
|
1011
|
+
default: 30,
|
|
1012
|
+
label: "Logboekregels bewaren (dagen)",
|
|
1013
|
+
type: "number",
|
|
1014
|
+
min: 1,
|
|
1015
|
+
max: 3650,
|
|
1016
|
+
description: "Na deze termijn worden logboekregels van orders opgeruimd. Laat leeg om niets op te ruimen.",
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
key: "pick_history_retention_days",
|
|
1020
|
+
default: 180,
|
|
1021
|
+
label: "Pickhistorie bewaren (dagen)",
|
|
1022
|
+
type: "number",
|
|
1023
|
+
min: 1,
|
|
1024
|
+
max: 3650,
|
|
1025
|
+
description: "Na deze termijn wordt de historie van de pickstations opgeruimd. Laat leeg om niets op te ruimen.",
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
key: "barcode_retention_days",
|
|
1029
|
+
default: 30,
|
|
1030
|
+
label: "Barcodes van verdwenen karren bewaren (dagen)",
|
|
1031
|
+
type: "number",
|
|
1032
|
+
min: 1,
|
|
1033
|
+
max: 3650,
|
|
1034
|
+
description: "Alleen barcodes van karren die niet meer bestaan en nooit zijn geprint, gescand of gecontroleerd. Laat leeg om niets op te ruimen.",
|
|
939
1035
|
},
|
|
940
1036
|
],
|
|
941
1037
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngineWizard.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineWizard.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;CACzB;AAeD,eAAO,MAAM,YAAY,EAAE,UAAU,EAsDpC,CAAC;AA+BF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEzD;
|
|
1
|
+
{"version":3,"file":"ruleEngineWizard.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineWizard.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;CACzB;AAeD,eAAO,MAAM,YAAY,EAAE,UAAU,EAsDpC,CAAC;AA+BF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEzD;AAwED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAE9D;AAyCD,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAStF"}
|
|
@@ -114,6 +114,8 @@ const EXTRA_HELP = {
|
|
|
114
114
|
multi_order: "Aan: orders van meerdere bestellingen mogen op dezelfde drager staan.",
|
|
115
115
|
max_orders: "Meer orders op één drager betekent minder karren, maar wel meer sorteerwerk.",
|
|
116
116
|
max_customers: "Handig als klanten hun eigen kar willen ontvangen.",
|
|
117
|
+
max_customers_per_layer: "Op 1 komen er nooit twee verschillende klanten op dezelfde laag; meerdere bestellingen van dezelfde klant mogen wel samen.",
|
|
118
|
+
cart_plan_freeze: "Bepaalt hoe streng een eenmaal geprinte indeling vaststaat. Per kar blijft alleen de geprinte kar staan; bij 'eerste pakbon' ligt de hele order of buffer vast zodra er één pakbon uit de printer is.",
|
|
117
119
|
max_layers: "Het aantal lagen dat je fysiek op een kar of container kwijt kunt.",
|
|
118
120
|
max_boxes_per_pallet: "Het aantal dozen dat je fysiek op één pallet kwijt kunt.",
|
|
119
121
|
optimal_fill: "Aan: het systeem zoekt de indeling waarbij de minste dragers nodig zijn.",
|
|
@@ -144,7 +146,7 @@ const EXTRA_HELP = {
|
|
|
144
146
|
shipping_note_layout: "\u00c9\u00e9n layout voor de verzend-, aflever- en veilingbrief van BVO orders.",
|
|
145
147
|
production_note_release: "Bepaalt op welk moment de productiebon beschikbaar komt.",
|
|
146
148
|
production_note_station: "Het pickstation waar de productiebon uitgeprint wordt.",
|
|
147
|
-
control_mode: "Hoe je controleert of de kar klopt voordat hij weggaat.",
|
|
149
|
+
control_mode: "Hoe je controleert of de kar klopt voordat hij weggaat. Bij 'Scannen voor afmelden' is één pakbonscan genoeg en wordt de hele kar direct afgemeld.",
|
|
148
150
|
control_print_items: "Welke papieren de medewerker bij de controle krijgt.",
|
|
149
151
|
sample_percentage: "100% betekent alles controleren; lager betekent steekproefsgewijs.",
|
|
150
152
|
pick_reserve_minutes: "Extra tijd die je altijd vrijhoudt vóór de vervoerder komt.",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
export interface ShippingNoteRun {
|
|
3
|
+
/** Het aantal aanvragen dat deze ronde is opgepakt. */
|
|
4
|
+
claimed: number;
|
|
5
|
+
/** Aantal aangemaakte verzendbrief-printopdrachten. */
|
|
6
|
+
printed: number;
|
|
7
|
+
/** Aantal aanvragen dat wacht op het officiële Floriday-document. */
|
|
8
|
+
waiting: number;
|
|
9
|
+
/** Aantal aanvragen dat door een tijdelijke storing opnieuw wordt geprobeerd. */
|
|
10
|
+
retrying: number;
|
|
11
|
+
/** Aantal aanvragen met een definitieve fout. */
|
|
12
|
+
failed: number;
|
|
13
|
+
errors: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare function runShippingNoteQueue(sb: SupabaseClient, options?: {
|
|
16
|
+
limit?: number;
|
|
17
|
+
}): Promise<ShippingNoteRun>;
|
|
18
|
+
//# sourceMappingURL=shippingNoteQueue.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shippingNoteQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/shippingNoteQueue.server.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAqCD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,CAmU1B"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/shippingNoteQueue.server.ts
|
|
3
|
+
// Verzendbrief bij het printen van een kar.
|
|
4
|
+
//
|
|
5
|
+
// De pakbon is de enige bron voor kar en printer. De wachtrijregel bewaart
|
|
6
|
+
// alleen de verwijzing naar de pakbon; op het moment dat de printopdracht
|
|
7
|
+
// wordt aangemaakt worden kar en printer uit die pakbon gelezen.
|
|
8
|
+
//
|
|
9
|
+
// BVO-orders krijgen hun eigen layout al vanuit de database. FO-orders (Floriday)
|
|
10
|
+
// komen hier langs: alleen het officiële Floriday-document mag worden geprint.
|
|
11
|
+
// Er wordt niets bevestigd of afgehandeld, en er komen geen omgevings- of
|
|
12
|
+
// klantwaarden in deze code.
|
|
13
|
+
// ============================================================================
|
|
14
|
+
import { trace, newTraceId, classifyError } from "./trace.server.js";
|
|
15
|
+
import { FLOW_NODE } from "./flowNodes.js";
|
|
16
|
+
/** Na dit aantal pogingen is een aanvraag definitief mislukt. */
|
|
17
|
+
const MAX_ATTEMPTS = 60;
|
|
18
|
+
function pickPdf(result) {
|
|
19
|
+
const base64 = result["pdfBase64"] ??
|
|
20
|
+
result["base64"] ??
|
|
21
|
+
result["pdf"] ??
|
|
22
|
+
null;
|
|
23
|
+
const url = result["url"] ??
|
|
24
|
+
result["pdfUrl"] ??
|
|
25
|
+
result["documentUrl"] ??
|
|
26
|
+
null;
|
|
27
|
+
return { base64: base64 ?? null, url: url ?? null };
|
|
28
|
+
}
|
|
29
|
+
/** Bepaalt of een Floriday-antwoord tijdelijk is of "nog niet beschikbaar". */
|
|
30
|
+
function classifyFloridayReason(message) {
|
|
31
|
+
const tijdelijk = /(timeout|time-out|tijdelijk|netwerk|network|rate.?limit|429|50\d|service unavailable|unavailable|opnieuw)/i;
|
|
32
|
+
return tijdelijk.test(message) ? "tijdelijk" : "nog_niet_beschikbaar";
|
|
33
|
+
}
|
|
34
|
+
export async function runShippingNoteQueue(sb, options = {}) {
|
|
35
|
+
const run = {
|
|
36
|
+
claimed: 0,
|
|
37
|
+
printed: 0,
|
|
38
|
+
waiting: 0,
|
|
39
|
+
retrying: 0,
|
|
40
|
+
failed: 0,
|
|
41
|
+
errors: [],
|
|
42
|
+
};
|
|
43
|
+
const { data, error } = await sb.rpc("logistics_slip_note_claim", {
|
|
44
|
+
_limit: options.limit ?? 10,
|
|
45
|
+
_lease_seconds: 120,
|
|
46
|
+
});
|
|
47
|
+
if (error) {
|
|
48
|
+
run.errors.push(`Verzendbrieven niet leesbaar: ${error.message}`);
|
|
49
|
+
return run;
|
|
50
|
+
}
|
|
51
|
+
const rows = Array.isArray(data) ? data : [];
|
|
52
|
+
run.claimed = rows.length;
|
|
53
|
+
if (rows.length === 0)
|
|
54
|
+
return run;
|
|
55
|
+
const { getFlorydayDocument } = await import("./floridayDocuments.server.js");
|
|
56
|
+
for (const row of rows) {
|
|
57
|
+
const attempts = Number(row.attempts ?? 0);
|
|
58
|
+
const traceId = newTraceId();
|
|
59
|
+
const basis = {
|
|
60
|
+
traceId,
|
|
61
|
+
orderRef: row.order_number ?? row.order_id ?? null,
|
|
62
|
+
orderSource: "floriday",
|
|
63
|
+
cartRef: row.cart_id ?? null,
|
|
64
|
+
slipRef: row.slip_job_id ?? null,
|
|
65
|
+
phase: "verzendbrief",
|
|
66
|
+
actor: "logistiek-engine:verzendbriefwachtrij",
|
|
67
|
+
attempts,
|
|
68
|
+
nodeId: FLOW_NODE.stations,
|
|
69
|
+
};
|
|
70
|
+
await trace(sb, {
|
|
71
|
+
...basis,
|
|
72
|
+
step: "Verzendbriefaanvraag opgepakt",
|
|
73
|
+
status: "geslaagd",
|
|
74
|
+
input: { aanvraagId: row.id, pakbonJobId: row.slip_job_id, pogingen: attempts },
|
|
75
|
+
nextStep: "Officiële Floriday-verzendbrief ophalen",
|
|
76
|
+
});
|
|
77
|
+
const faal = async (code, reden, fulfillmentOrderId) => {
|
|
78
|
+
await sb.rpc("logistics_slip_note_finish", {
|
|
79
|
+
_id: row.id,
|
|
80
|
+
_ok: false,
|
|
81
|
+
_status: "mislukt",
|
|
82
|
+
_fulfillment_order_id: fulfillmentOrderId ?? null,
|
|
83
|
+
_error_code: code,
|
|
84
|
+
_error: reden,
|
|
85
|
+
});
|
|
86
|
+
run.failed++;
|
|
87
|
+
await trace(sb, {
|
|
88
|
+
...basis,
|
|
89
|
+
step: "Verzendbrief definitief mislukt",
|
|
90
|
+
status: "mislukt",
|
|
91
|
+
decision: code,
|
|
92
|
+
reason: reden,
|
|
93
|
+
error: reden,
|
|
94
|
+
errorClass: classifyError(code, reden),
|
|
95
|
+
nextStep: "Handmatig oplossen; de Engine probeert het niet meer.",
|
|
96
|
+
calc: { values: { pogingen: attempts, maximaal: MAX_ATTEMPTS }, conclusion: reden },
|
|
97
|
+
...(fulfillmentOrderId ? { externalRef: fulfillmentOrderId } : {}),
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
const wacht = async (reden, klasse) => {
|
|
101
|
+
if (attempts >= MAX_ATTEMPTS) {
|
|
102
|
+
await faal("wachten_verlopen", `Na ${attempts} pogingen is er nog steeds geen officiële verzendbrief. Laatste reden: ${reden}`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
await sb.rpc("logistics_slip_note_keep_waiting", {
|
|
106
|
+
_id: row.id,
|
|
107
|
+
_reason: reden,
|
|
108
|
+
_class: klasse,
|
|
109
|
+
});
|
|
110
|
+
if (klasse === "tijdelijk")
|
|
111
|
+
run.retrying++;
|
|
112
|
+
else
|
|
113
|
+
run.waiting++;
|
|
114
|
+
await trace(sb, {
|
|
115
|
+
...basis,
|
|
116
|
+
step: "Wachten op officiële Floriday-verzendbrief",
|
|
117
|
+
status: "wachtend",
|
|
118
|
+
decision: klasse,
|
|
119
|
+
reason: reden,
|
|
120
|
+
errorClass: "extern",
|
|
121
|
+
rule: "FO-orders krijgen uitsluitend het officiële Floriday-document",
|
|
122
|
+
nextStep: "Automatisch opnieuw proberen",
|
|
123
|
+
calc: {
|
|
124
|
+
setting: "Maximaal aantal pogingen voor de verzendbrief",
|
|
125
|
+
values: { poging: attempts, maximaal: MAX_ATTEMPTS },
|
|
126
|
+
conclusion: `Nog ${Math.max(MAX_ATTEMPTS - attempts, 0)} poging(en) over.`,
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
try {
|
|
131
|
+
if (!row.order_number) {
|
|
132
|
+
await faal("geen_ordernummer", "Bij deze kar hoort geen ordernummer; de verzendbrief kan niet worden opgehaald.");
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
// Een verzendbrief ophalen is een leesactie. Wacht daarom niet op de
|
|
136
|
+
// status-/afhandelpush: die is bewust geblokkeerd tot na de controlescan.
|
|
137
|
+
const { data: order, error: orderError } = await sb
|
|
138
|
+
.from("orders")
|
|
139
|
+
.select("floriday_sales_order_id")
|
|
140
|
+
.eq("id", row.order_id ?? "")
|
|
141
|
+
.maybeSingle();
|
|
142
|
+
if (orderError) {
|
|
143
|
+
await wacht(`De Floriday-order kon niet worden gelezen: ${orderError.message}`, "tijdelijk");
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const salesOrderId = String(order?.["floriday_sales_order_id"] ?? "").trim();
|
|
147
|
+
if (!salesOrderId) {
|
|
148
|
+
await faal("sales_order_ontbreekt", "Bij deze FO-order ontbreekt het Floriday sales-order-ID; de verzendbrief kan niet worden opgehaald.");
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// Stap 1: zorg dat Floriday een officiele verzendbrief heeft. Bestaat er
|
|
152
|
+
// al een fulfillment-order voor deze pakbon, dan wordt er geen tweede
|
|
153
|
+
// aangemaakt.
|
|
154
|
+
let bestaandeFo = String(row.fulfillment_order_id ?? "").trim() || null;
|
|
155
|
+
if (!bestaandeFo) {
|
|
156
|
+
const { createFlorydayDeliveryNote } = await import("./floridayDocuments.server.js");
|
|
157
|
+
const startAanmaak = Date.now();
|
|
158
|
+
const aangemaakt = await createFlorydayDeliveryNote(sb, row.order_number);
|
|
159
|
+
await trace(sb, {
|
|
160
|
+
...basis,
|
|
161
|
+
step: "Floriday: verzendbrief aanvragen",
|
|
162
|
+
status: aangemaakt.fulfillmentOrderId ? "geslaagd" : aangemaakt.ok ? "wachtend" : "mislukt",
|
|
163
|
+
externalSystem: "floriday",
|
|
164
|
+
externalAction: "fulfillment-order aanmaken",
|
|
165
|
+
...(aangemaakt.fulfillmentOrderId ? { externalRef: aangemaakt.fulfillmentOrderId } : {}),
|
|
166
|
+
externalResponse: aangemaakt,
|
|
167
|
+
durationMs: Date.now() - startAanmaak,
|
|
168
|
+
...(aangemaakt.error ? { error: aangemaakt.error } : {}),
|
|
169
|
+
});
|
|
170
|
+
if (aangemaakt.fulfillmentOrderId) {
|
|
171
|
+
bestaandeFo = aangemaakt.fulfillmentOrderId;
|
|
172
|
+
await sb
|
|
173
|
+
.from("logistics_slip_shipping_note")
|
|
174
|
+
.update({ fulfillment_order_id: bestaandeFo })
|
|
175
|
+
.eq("id", row.id)
|
|
176
|
+
.is("fulfillment_order_id", null);
|
|
177
|
+
}
|
|
178
|
+
else if (!aangemaakt.ok) {
|
|
179
|
+
await wacht(`Wachten op Floriday-verzendbrief: ${aangemaakt.error ?? "Floriday heeft het document nog niet aangemaakt."}`, aangemaakt.skipped ? "nog_niet_beschikbaar" : classifyFloridayReason(aangemaakt.error ?? ""));
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Stap 2: het officiele document ophalen.
|
|
184
|
+
const startOphalen = Date.now();
|
|
185
|
+
const doc = (await getFlorydayDocument(sb, {
|
|
186
|
+
kind: "delivery-note",
|
|
187
|
+
salesOrderId,
|
|
188
|
+
...(bestaandeFo ? { fulfillmentOrderId: bestaandeFo } : {}),
|
|
189
|
+
}));
|
|
190
|
+
await trace(sb, {
|
|
191
|
+
...basis,
|
|
192
|
+
step: "Floriday: verzendbrief ophalen",
|
|
193
|
+
status: doc["ok"] ? "geslaagd" : "wachtend",
|
|
194
|
+
externalSystem: "floriday",
|
|
195
|
+
externalAction: "delivery-note ophalen",
|
|
196
|
+
...(bestaandeFo ? { externalRef: bestaandeFo } : {}),
|
|
197
|
+
externalResponse: {
|
|
198
|
+
ok: doc["ok"] ?? false,
|
|
199
|
+
error: doc["error"] ?? null,
|
|
200
|
+
heeftBestand: Boolean(doc["pdfBase64"] ?? doc["base64"] ?? doc["pdf"] ?? doc["url"]),
|
|
201
|
+
},
|
|
202
|
+
durationMs: Date.now() - startOphalen,
|
|
203
|
+
});
|
|
204
|
+
if (!doc["ok"]) {
|
|
205
|
+
const message = String(doc["error"] ?? "") ||
|
|
206
|
+
"Wachten op officiële Floriday-afleverbrief: Floriday heeft het document nog niet aangemaakt.";
|
|
207
|
+
await wacht(message, classifyFloridayReason(message));
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const fulfillmentOrderId = String(doc["fulfillmentOrderId"] ?? doc["fulfillment_order_id"] ?? "").trim() ||
|
|
211
|
+
bestaandeFo;
|
|
212
|
+
const { base64, url } = pickPdf(doc);
|
|
213
|
+
if (!base64 && !url) {
|
|
214
|
+
// Nooit een leeg of zelfgemaakt document printen.
|
|
215
|
+
await wacht("Wachten op officiële Floriday-afleverbrief: Floriday gaf nog geen bruikbaar bestand terug.", "nog_niet_beschikbaar");
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
// De pakbon is de bron voor printer en kar.
|
|
219
|
+
const { data: slip } = await sb
|
|
220
|
+
.from("print_jobs")
|
|
221
|
+
.select("payload, printer_id, documentnaam, is_herprint")
|
|
222
|
+
.eq("id", row.slip_job_id)
|
|
223
|
+
.maybeSingle();
|
|
224
|
+
const slipRow = (slip ?? null);
|
|
225
|
+
if (!slipRow) {
|
|
226
|
+
await faal("pakbon_verdwenen", "De bijbehorende pakbon bestaat niet meer; er wordt geen losse verzendbrief gemaakt.", fulfillmentOrderId);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const slipPayload = slipRow["payload"] ?? {};
|
|
230
|
+
const printerId = slipRow["printer_id"] ?? null;
|
|
231
|
+
const cartId = slipPayload["cart_id"] ?? row.cart_id;
|
|
232
|
+
if (!printerId) {
|
|
233
|
+
await wacht("De pakbon heeft nog geen printer toegewezen gekregen; de verzendbrief wacht op dezelfde printer.", "tijdelijk");
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
const idempotentie = `verzendbrief-bij-pakbon:${row.slip_job_id}`;
|
|
237
|
+
const { data: bestaand } = await sb
|
|
238
|
+
.from("print_jobs")
|
|
239
|
+
.select("id")
|
|
240
|
+
.eq("idempotentie_sleutel", idempotentie)
|
|
241
|
+
.maybeSingle();
|
|
242
|
+
let jobId = bestaand?.["id"] ?? null;
|
|
243
|
+
if (!jobId) {
|
|
244
|
+
const { data: job, error: jobError } = await sb
|
|
245
|
+
.from("print_jobs")
|
|
246
|
+
.insert({
|
|
247
|
+
printer_id: printerId,
|
|
248
|
+
documenttype: "afleverbrief",
|
|
249
|
+
documentnaam: `Verzendbrief ${row.order_number}`,
|
|
250
|
+
status: "wachtend",
|
|
251
|
+
idempotentie_sleutel: idempotentie,
|
|
252
|
+
pdf_base64: base64,
|
|
253
|
+
pdf_url: url,
|
|
254
|
+
herkomst: "logistiek-engine",
|
|
255
|
+
gebruiker_naam: "Pickstation",
|
|
256
|
+
is_herprint: Boolean(slipRow["is_herprint"] ?? false),
|
|
257
|
+
payload: {
|
|
258
|
+
...slipPayload,
|
|
259
|
+
source: "pickstation",
|
|
260
|
+
document_type_code: "verzendbrief",
|
|
261
|
+
documentType: "verzendbrief",
|
|
262
|
+
trigger: "with_packing_slip",
|
|
263
|
+
is_floriday: true,
|
|
264
|
+
packing_slip_job_id: row.slip_job_id,
|
|
265
|
+
print_batch_key: row.batch_key ?? `kar-print:${row.slip_job_id}`,
|
|
266
|
+
order_id: row.order_id,
|
|
267
|
+
order_number: row.order_number,
|
|
268
|
+
cart_id: cartId,
|
|
269
|
+
fulfillment_order_id: fulfillmentOrderId,
|
|
270
|
+
},
|
|
271
|
+
})
|
|
272
|
+
.select("id")
|
|
273
|
+
.maybeSingle();
|
|
274
|
+
if (jobError) {
|
|
275
|
+
await wacht(`De verzendbrief kon nog niet worden klaargezet om te printen: ${jobError.message}`, "tijdelijk");
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
jobId = job?.["id"] ?? null;
|
|
279
|
+
}
|
|
280
|
+
await sb.rpc("logistics_slip_note_finish", {
|
|
281
|
+
_id: row.id,
|
|
282
|
+
_ok: true,
|
|
283
|
+
_status: "geprint",
|
|
284
|
+
_print_job_id: jobId,
|
|
285
|
+
_fulfillment_order_id: fulfillmentOrderId,
|
|
286
|
+
});
|
|
287
|
+
run.printed++;
|
|
288
|
+
await trace(sb, {
|
|
289
|
+
...basis,
|
|
290
|
+
step: "Verzendbrief klaargezet om te printen",
|
|
291
|
+
status: "geslaagd",
|
|
292
|
+
decision: "samen met de pakbon naar dezelfde printer",
|
|
293
|
+
...(fulfillmentOrderId ? { externalRef: fulfillmentOrderId } : {}),
|
|
294
|
+
output: { printJobId: jobId, printerId, cartId },
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
catch (e) {
|
|
298
|
+
const message = String(e?.message ?? e);
|
|
299
|
+
run.errors.push(message);
|
|
300
|
+
await wacht(`Onverwachte fout bij het ophalen van de verzendbrief: ${message}`, "tijdelijk");
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return run;
|
|
304
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { TraceOrderStand } from "../hooks/useOrderTrace";
|
|
2
|
+
import type { ShippingNoteDiagnose } from "../hooks/useShippingNoteDiagnose";
|
|
3
|
+
import type { NodeTraceGroep } from "./nodeTrace";
|
|
4
|
+
export type StopSoort = "mislukt" | "wachtrij" | "handeling" | "nietvastgelegd" | "klaar";
|
|
5
|
+
export interface StopReden {
|
|
6
|
+
soort: StopSoort;
|
|
7
|
+
/** Korte kop, bijvoorbeeld "Hier is de order vastgelopen". */
|
|
8
|
+
titel: string;
|
|
9
|
+
/** Waarom de reis hier ophoudt. */
|
|
10
|
+
reden: string;
|
|
11
|
+
/** Bepalende gegevens, als korte regels. */
|
|
12
|
+
feiten: string[];
|
|
13
|
+
/** Wat er hierna moet gebeuren. */
|
|
14
|
+
volgendeStap: string | null;
|
|
15
|
+
/** De route is elders opgehouden door een gewijzigde instelling. */
|
|
16
|
+
verouderd: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Waarom de flow bij een samenkomstpunt blijft staan: de ingestelde voorwaarde
|
|
20
|
+
* is nog niet gehaald, of een verplichte tak is mislukt.
|
|
21
|
+
*/
|
|
22
|
+
export declare function samenkomstStop(input: {
|
|
23
|
+
wachtOp: string[];
|
|
24
|
+
mislukt?: string[];
|
|
25
|
+
voorwaarde: string;
|
|
26
|
+
maxWachtMinuten: number;
|
|
27
|
+
}): StopReden;
|
|
28
|
+
/**
|
|
29
|
+
* Bepaalt in gewone taal waarom de blauwe route bij dit vakje ophoudt.
|
|
30
|
+
* Werkt ook als er voor dit vakje nog niets is vastgelegd.
|
|
31
|
+
*/
|
|
32
|
+
export declare function stopReden(input: {
|
|
33
|
+
nodeId: string;
|
|
34
|
+
groep?: NodeTraceGroep | null;
|
|
35
|
+
stand?: TraceOrderStand | null;
|
|
36
|
+
verouderd?: boolean;
|
|
37
|
+
}): StopReden;
|
|
38
|
+
/**
|
|
39
|
+
* Waarom is de verzendbrief bij deze order nog niet opgehaald? Zet de
|
|
40
|
+
* alleen-lezen diagnose om naar dezelfde stoptekst als de rest van de kaart.
|
|
41
|
+
*/
|
|
42
|
+
export declare function verzendbriefStop(d: ShippingNoteDiagnose | null | undefined): StopReden | null;
|
|
43
|
+
//# sourceMappingURL=stopReden.d.ts.map
|