@flowselections/logistiek-engine 1.0.24 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/dist-lib/components/ConsistentieCard.d.ts +2 -0
- package/dist-lib/components/ConsistentieCard.d.ts.map +1 -0
- package/dist-lib/components/ConsistentieCard.js +38 -0
- package/dist-lib/components/LogistiekEnginePage.d.ts.map +1 -1
- package/dist-lib/components/LogistiekEnginePage.js +8 -2
- package/dist-lib/components/ModulePromptsPage.d.ts.map +1 -1
- package/dist-lib/components/ModulePromptsPage.js +11 -3
- package/dist-lib/components/RegiePage.d.ts.map +1 -1
- package/dist-lib/components/RegiePage.js +3 -2
- package/dist-lib/index.d.ts +1 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +1 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1333 -775
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1333 -775
- 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 +1333 -775
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +1346 -806
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.functions.d.ts +3510 -1836
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.functions.d.ts +1333 -775
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +11 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts +6 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanner.js +3 -0
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +5855 -3090
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +3 -0
- package/dist-lib/lib/logisticsPlanner.d.ts +2 -0
- package/dist-lib/lib/logisticsPlanner.d.ts.map +1 -1
- package/dist-lib/lib/logisticsPlanner.js +52 -13
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +2340 -1224
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +1333 -775
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.d.ts +19 -3
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +1664 -1141
- package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineSchema.js +21 -4
- package/dist-lib/lib/ruleEngineWizard.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineWizard.js +3 -1
- package/package.json +1 -1
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadCarrierPlanning.server.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanning.server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAiCrF,wBAAgB,cAAc,CAC5B,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,GAAG,CAAA;CAAE,EACtG,IAAI,EAAE,MAAM,GACX;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAqCvD;AAID,wBAAsB,6BAA6B,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmE/G;AAMD,UAAU,QAAQ;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAOrF;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAQ7E;AAiCD,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,iEAAiE;IACjE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAChC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"loadCarrierPlanning.server.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanning.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -200,6 +200,7 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
200
200
|
product_name: row.product_name ?? "Onbekend",
|
|
201
201
|
plants,
|
|
202
202
|
...base,
|
|
203
|
+
packing_authoritative: source === "floriday_packing",
|
|
203
204
|
weight_per_crate: row.products?.weight != null ? Number(row.products.weight) : null,
|
|
204
205
|
});
|
|
205
206
|
continue;
|
|
@@ -220,6 +221,7 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
220
221
|
product_name: row.product_name ?? "Onbekend",
|
|
221
222
|
plants,
|
|
222
223
|
...base,
|
|
224
|
+
packing_authoritative: source === "floriday_packing",
|
|
223
225
|
weight_per_crate: null,
|
|
224
226
|
});
|
|
225
227
|
continue;
|
|
@@ -280,6 +282,7 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
280
282
|
product_name: `${row.product_name ?? "Groep"} — ${r.p?.product ?? r.m.trade_item_id}`,
|
|
281
283
|
plants: shares[idx],
|
|
282
284
|
...r.belading,
|
|
285
|
+
packing_authoritative: r.source === "floriday_packing",
|
|
283
286
|
weight_per_crate: r.p?.weight != null ? Number(r.p.weight) : null,
|
|
284
287
|
});
|
|
285
288
|
});
|
|
@@ -21,6 +21,8 @@ export interface PlannerContext {
|
|
|
21
21
|
ruleConfigId?: string | null;
|
|
22
22
|
ruleVersion?: number | null;
|
|
23
23
|
shadow?: boolean;
|
|
24
|
+
/** Referentiemoment voor de "nooit in het verleden"-ondergrens (test/herberekening). */
|
|
25
|
+
now?: number | string | Date;
|
|
24
26
|
}
|
|
25
27
|
export interface PlannedTask {
|
|
26
28
|
taskType: LogisticsTaskType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logisticsPlanner.d.ts","sourceRoot":"","sources":["../../src/lib/logisticsPlanner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAc,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO/F,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,kBAAkB,GAClB,mBAAmB,GACnB,QAAQ,GACR,aAAa,GACb,OAAO,CAAC;AAEZ,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"logisticsPlanner.d.ts","sourceRoot":"","sources":["../../src/lib/logisticsPlanner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAc,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO/F,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,kBAAkB,GAClB,mBAAmB,GACnB,QAAQ,GACR,aAAa,GACb,OAAO,CAAC;AAEZ,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wFAAwF;IACxF,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,+EAA+E;IAC/E,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAgDD,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,QAAQ,EAAE,kBAAkB,GAC3B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CASpC;AAMD,wBAAgB,SAAS,CACvB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAqSf"}
|
|
@@ -102,6 +102,21 @@ export function planOrder(order, settings, context = {}) {
|
|
|
102
102
|
pickEndAt = shift(pickupAt, -reserveMinutes);
|
|
103
103
|
pickStartAt = shift(pickEndAt, -pickMinutes);
|
|
104
104
|
}
|
|
105
|
+
// Harde ondergrens: een order mag nooit in het verleden gepickt worden.
|
|
106
|
+
// Ligt het berekende venster achter ons, dan schuift het naar nu met behoud
|
|
107
|
+
// van de berekende pickduur. Zelfde regel als logistics_not_past in de database.
|
|
108
|
+
const nowIso = new Date(context.now ?? Date.now()).toISOString();
|
|
109
|
+
const pickStartRaw = pickStartAt;
|
|
110
|
+
let pickWindowShifted = false;
|
|
111
|
+
if (new Date(pickStartAt) < new Date(nowIso)) {
|
|
112
|
+
pickWindowShifted = true;
|
|
113
|
+
pickStartAt = nowIso;
|
|
114
|
+
pickEndAt = shift(pickStartAt, Math.max(pickMinutes, 1));
|
|
115
|
+
notes.push("Het pickvenster lag in het verleden; het picken start direct (te laat aangemeld).");
|
|
116
|
+
}
|
|
117
|
+
else if (new Date(pickEndAt) < new Date(pickStartAt)) {
|
|
118
|
+
pickEndAt = shift(pickStartAt, Math.max(pickMinutes, 1));
|
|
119
|
+
}
|
|
105
120
|
if (bufferCloseAt && new Date(bufferCloseAt) > new Date(pickStartAt)) {
|
|
106
121
|
notes.push("De buffer sluit later dan het picken zou moeten beginnen; controleer de buffertijd.");
|
|
107
122
|
}
|
|
@@ -139,14 +154,23 @@ export function planOrder(order, settings, context = {}) {
|
|
|
139
154
|
loadCarriers: carriers,
|
|
140
155
|
fillMode: "generated",
|
|
141
156
|
});
|
|
157
|
+
// Aantal ladingdragers bepaalt bij "kleinste telt" of de opdracht per order
|
|
158
|
+
// of per kar gaat: past de order binnen één kar, dan is de order de eenheid.
|
|
159
|
+
const totalCarriers = carriers.reduce((sum, c) => sum + Math.max(0, num(c.count, 0)), 0);
|
|
160
|
+
const configuredPickMode = str(pickStep.pick_mode, "cart");
|
|
161
|
+
const pickUnit = configuredPickMode === "smallest" ? (totalCarriers <= 1 ? "order" : "cart") : configuredPickMode;
|
|
142
162
|
add("pick.execute", pickStartAt, pickEndAt, {
|
|
143
|
-
pickMode:
|
|
163
|
+
pickMode: configuredPickMode,
|
|
164
|
+
pickUnit,
|
|
144
165
|
pickStartMode,
|
|
145
166
|
pickMinutes,
|
|
146
167
|
staff,
|
|
147
168
|
reserveMinutes,
|
|
148
169
|
scanner: str(pickStep.scanner, "required"),
|
|
149
170
|
loadCarriers: carriers,
|
|
171
|
+
totalCarriers,
|
|
172
|
+
pickWindowShifted,
|
|
173
|
+
pickWindowOriginalStart: pickWindowShifted ? pickStartRaw : null,
|
|
150
174
|
});
|
|
151
175
|
if (str(pickStep.scanner, "required") === "required") {
|
|
152
176
|
add("scan.verify", pickStartAt, pickEndAt, { reason: "pick_scanner_required" });
|
|
@@ -188,18 +212,33 @@ export function planOrder(order, settings, context = {}) {
|
|
|
188
212
|
};
|
|
189
213
|
const packingRelease = str(docStep.packing_slip_release, "with_pick_release");
|
|
190
214
|
const packingAt = docRelease(packingRelease, num(docStep.packing_slip_hours_before, 2));
|
|
191
|
-
const pickMode =
|
|
192
|
-
const groupIdenticalCarts = pickMode === "cart"
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
215
|
+
const pickMode = configuredPickMode;
|
|
216
|
+
const groupIdenticalCarts = (pickMode === "cart" || pickMode === "smallest") &&
|
|
217
|
+
bool(docStep.packing_slip_group_identical_carts, true);
|
|
218
|
+
const barcodeEnabled = bool(docStep.packing_slip_barcode, true);
|
|
219
|
+
// Eén pakbon per kar. De laatste (of enige) kar van een order is de deelkar en
|
|
220
|
+
// krijgt daarom de deelorder-layout; alle voorgaande karren zijn volle karren.
|
|
221
|
+
const cartTotal = Math.max(1, totalCarriers);
|
|
222
|
+
for (let cartIndex = 1; cartIndex <= cartTotal; cartIndex++) {
|
|
223
|
+
const isFullCart = cartIndex < cartTotal;
|
|
224
|
+
add("print.packing_slip", packingAt, packingAt, {
|
|
225
|
+
documentType: "pakbon",
|
|
226
|
+
release: packingRelease,
|
|
227
|
+
pickStationId: str(docStep.packing_slip_station, "") || null,
|
|
228
|
+
requiresApproval: false,
|
|
229
|
+
pickMode,
|
|
230
|
+
pickUnit,
|
|
231
|
+
cartIndex,
|
|
232
|
+
cartTotal,
|
|
233
|
+
cartLabel: `Kar ${cartIndex} van ${cartTotal}`,
|
|
234
|
+
isFullCart,
|
|
235
|
+
slipVariant: isFullCart ? "full_cart" : "partial_order",
|
|
236
|
+
barcodeEnabled,
|
|
237
|
+
groupIdenticalCarts,
|
|
238
|
+
cartsPerPrint: groupIdenticalCarts ? Math.max(1, num(docStep.packing_slip_carts_per_print, 1)) : null,
|
|
239
|
+
splitIdenticalGroups: false,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
203
242
|
const stickerRelease = str(docStep.sticker_release, "with_pick_release");
|
|
204
243
|
const stickerAt = docRelease(stickerRelease, num(docStep.sticker_hours_before, 2));
|
|
205
244
|
add("print.sticker", stickerAt, stickerAt, {
|