@flowselections/logistiek-engine 1.0.90 → 1.0.98
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/FlowOrders.js +1 -1
- package/dist-lib/components/MisluktVerzendbrievenCard.d.ts +2 -0
- package/dist-lib/components/MisluktVerzendbrievenCard.d.ts.map +1 -0
- package/dist-lib/components/MisluktVerzendbrievenCard.js +50 -0
- package/dist-lib/components/RegiePage.d.ts.map +1 -1
- package/dist-lib/components/RegiePage.js +2 -1
- package/dist-lib/components/RuleEnginePage.d.ts.map +1 -1
- package/dist-lib/components/RuleEnginePage.js +3 -1
- package/dist-lib/hooks/useShippingNoteStatus.d.ts +2 -0
- package/dist-lib/hooks/useShippingNoteStatus.d.ts.map +1 -1
- package/dist-lib/hooks/useShippingNoteStatus.js +13 -1
- package/dist-lib/hooks/useShippingNoteStatus.test.d.ts +2 -0
- package/dist-lib/hooks/useShippingNoteStatus.test.d.ts.map +1 -0
- package/dist-lib/hooks/useShippingNoteStatus.test.js +20 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +415 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +415 -0
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +415 -0
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +423 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cartCoverage.functions.d.ts +415 -0
- package/dist-lib/lib/cartCoverage.functions.d.ts.map +1 -1
- package/dist-lib/lib/controlScan.server.d.ts +2 -0
- package/dist-lib/lib/controlScan.server.d.ts.map +1 -1
- package/dist-lib/lib/controlScan.server.js +59 -53
- package/dist-lib/lib/floridayDocuments.functions.d.ts +1245 -0
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.functions.d.ts +415 -0
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/layoutPrint.server.d.ts +27 -0
- package/dist-lib/lib/layoutPrint.server.d.ts.map +1 -0
- package/dist-lib/lib/layoutPrint.server.js +48 -0
- package/dist-lib/lib/layoutPrint.test.d.ts +2 -0
- package/dist-lib/lib/layoutPrint.test.d.ts.map +1 -0
- package/dist-lib/lib/layoutPrint.test.js +47 -0
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +2075 -0
- 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 +52 -8
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +830 -0
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +415 -0
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +54 -0
- package/dist-lib/lib/plannerDiff.functions.d.ts +415 -0
- package/dist-lib/lib/plannerDiff.functions.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineSchema.js +2 -2
- package/dist-lib/lib/shippingNoteQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/shippingNoteQueue.server.js +40 -49
- package/package.json +1 -1
|
@@ -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;AACrF,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAarG,wBAAsB,6BAA6B,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwB/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,GACtB,WAAW,GACX,eAAe,GACf,kBAAkB,GAClB,aAAa,GACb,SAAS,GACT,MAAM,CAAC;AAgBX;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAQ7E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAYrF;AAgED,MAAM,WAAW,aAAa;IAC5B,mFAAmF;IACnF,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,iEAAiE;IACjE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC;AAGD,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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"}
|
|
@@ -146,6 +146,8 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
146
146
|
let groupSet = new Set();
|
|
147
147
|
// Groepsregels dragen niet altijd een product_id. Zonder koppeling wordt de
|
|
148
148
|
// groep op naam opgezocht, zodat de leden en hun afmetingen alsnog meetellen.
|
|
149
|
+
// Een regel die aan een echt artikel gekoppeld is, blijft altijd dat artikel,
|
|
150
|
+
// ook als er toevallig een productgroep met dezelfde naam bestaat.
|
|
149
151
|
const groupByName = new Map();
|
|
150
152
|
{
|
|
151
153
|
const { data: allGroups } = await sb.from("product_groups").select("id, name");
|
|
@@ -154,9 +156,12 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
154
156
|
groupByName.set(String(g.name).trim().toLowerCase(), String(g.id));
|
|
155
157
|
}
|
|
156
158
|
}
|
|
159
|
+
let realProductIds = new Set();
|
|
157
160
|
if (groupIds.length > 0) {
|
|
158
161
|
const { data: groups } = await sb.from("product_groups").select("id").in("id", groupIds);
|
|
159
162
|
groupSet = new Set((groups ?? []).map((g) => g.id));
|
|
163
|
+
const { data: realProds } = await sb.from("products").select("id").in("id", groupIds);
|
|
164
|
+
realProductIds = new Set((Array.isArray(realProds) ? realProds : []).map((p) => String(p.id)));
|
|
160
165
|
}
|
|
161
166
|
for (const row of rows) {
|
|
162
167
|
const orderKey = row.order_id ? String(row.order_id) : null;
|
|
@@ -169,14 +174,18 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
169
174
|
: null;
|
|
170
175
|
const { belading: base, source } = resolveBelading(row, packing, linePacking);
|
|
171
176
|
const plants = Math.max(0, Number(row.quantity ?? 0));
|
|
177
|
+
const explicitGroupPrefix = /^\[Groep\]/i.test(String(row.product_name ?? ""));
|
|
172
178
|
const groupNameKey = String(row.product_name ?? "")
|
|
173
179
|
.replace(/^\[Groep\]\s*/i, "")
|
|
174
180
|
.trim()
|
|
175
181
|
.toLowerCase();
|
|
182
|
+
const linkedToRealProduct = typeof row.product_id === "string" && realProductIds.has(row.product_id) && !groupSet.has(row.product_id);
|
|
176
183
|
const groupId = row.product_id && groupSet.has(row.product_id)
|
|
177
184
|
? String(row.product_id)
|
|
178
|
-
:
|
|
179
|
-
|
|
185
|
+
: !linkedToRealProduct || explicitGroupPrefix
|
|
186
|
+
? groupByName.get(groupNameKey) ?? null
|
|
187
|
+
: null;
|
|
188
|
+
const isGroup = groupId != null || (explicitGroupPrefix && !linkedToRealProduct);
|
|
180
189
|
if (!isGroup) {
|
|
181
190
|
options.sources?.set(String(row.id), source);
|
|
182
191
|
out.push({
|
|
@@ -219,7 +228,9 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
219
228
|
const { data: prods } = await sb
|
|
220
229
|
.from("products")
|
|
221
230
|
.select("id, product, plants_per_crate, crates_per_layer, layers_per_cart, weight, floriday_trade_item_id")
|
|
222
|
-
.or(tradeIds
|
|
231
|
+
.or(tradeIds
|
|
232
|
+
.flatMap((t) => UUID_RE.test(t) ? [`floriday_trade_item_id.eq.${t}`, `id.eq.${t}`] : [`floriday_trade_item_id.eq.${t}`])
|
|
233
|
+
.join(","));
|
|
223
234
|
const prodByTrade = new Map();
|
|
224
235
|
for (const p of prods ?? []) {
|
|
225
236
|
if (p.floriday_trade_item_id)
|
|
@@ -228,6 +239,9 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
228
239
|
}
|
|
229
240
|
const resolved = memberList.map((m) => {
|
|
230
241
|
const p = prodByTrade.get(String(m.trade_item_id));
|
|
242
|
+
// Onbekend groepslid: niet gokken en geen kale id als artikelnaam.
|
|
243
|
+
if (!p)
|
|
244
|
+
return { m, p, belading: { ...base }, source: "geen" };
|
|
231
245
|
// Een handmatig vastgezette regel blijft leidend voor de hele groep.
|
|
232
246
|
if (source === "handmatig") {
|
|
233
247
|
return { m, p, belading: { ...base }, source };
|
|
@@ -283,7 +297,7 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
283
297
|
order_id: row.order_id ?? null,
|
|
284
298
|
customer_id: row.customer_id ?? null,
|
|
285
299
|
product_id: r.p?.id ?? null,
|
|
286
|
-
product_name: `${row.product_name ?? "Groep"} — ${r.p?.product ??
|
|
300
|
+
product_name: `${row.product_name ?? "Groep"} — ${r.p?.product ?? "onbekend groepslid"}`,
|
|
287
301
|
plants: shares[idx],
|
|
288
302
|
...r.belading,
|
|
289
303
|
packing_authoritative: isAuthoritative(r.source),
|
|
@@ -551,8 +565,12 @@ export function dimensionCartsToPlannedUnits(carts) {
|
|
|
551
565
|
// ---------------------------------------------------------------------------
|
|
552
566
|
// Herplannen van een buffer
|
|
553
567
|
// ---------------------------------------------------------------------------
|
|
554
|
-
/**
|
|
555
|
-
|
|
568
|
+
/**
|
|
569
|
+
* Maximaal aantal ladingdragers dat één orderbuffer mag opleveren. De grootste
|
|
570
|
+
* echte buffers kwamen op 725–867 karren; 1.000 houdt een vangnet tegen
|
|
571
|
+
* opgeblazen aantallen zonder echte grote orders te blokkeren.
|
|
572
|
+
*/
|
|
573
|
+
const MAX_CARTS_PER_BUFFER = 1000;
|
|
556
574
|
/** Statussen waarbij een order niet meer ingedeeld hoeft te worden. */
|
|
557
575
|
const TERMINALE_STATUSSEN = new Set([
|
|
558
576
|
"verzonden",
|
|
@@ -1217,9 +1235,11 @@ async function replanBufferUnlocked(sb, bufferId, options = {}) {
|
|
|
1217
1235
|
// omzeild kan worden.
|
|
1218
1236
|
const totalCartsAfterPlan = plannedCarts.length + frozenCartCount;
|
|
1219
1237
|
if (totalCartsAfterPlan > MAX_CARTS_PER_BUFFER) {
|
|
1220
|
-
const reason = `
|
|
1238
|
+
const reason = `Orderbuffer met order(s) ${orderRefs.join(", ")} komt uit op ${totalCartsAfterPlan} ladingdragers ` +
|
|
1221
1239
|
`(${frozenCartCount} al vastgelegd + ${plannedCarts.length} nieuw), meer dan de grens van ` +
|
|
1222
|
-
`${MAX_CARTS_PER_BUFFER}.
|
|
1240
|
+
`${MAX_CARTS_PER_BUFFER}. Alleen deze buffer is niet ingedeeld. Wat te doen: controleer de ` +
|
|
1241
|
+
`aantallen in de order (dubbele regels?) en de belading per ladingdrager van de producten; ` +
|
|
1242
|
+
`daarna opnieuw berekenen.`;
|
|
1223
1243
|
console.error(`[logistiek-engine] buffer ${bufferId} geblokkeerd: ${reason}`);
|
|
1224
1244
|
if (!options.dryRun) {
|
|
1225
1245
|
const { error: blockError } = await sb.rpc("logistics_plan_block", {
|
|
@@ -1264,6 +1284,30 @@ async function replanBufferUnlocked(sb, bufferId, options = {}) {
|
|
|
1264
1284
|
carts: plannedCarts,
|
|
1265
1285
|
};
|
|
1266
1286
|
}
|
|
1287
|
+
// Tussen lezen en schrijven kan de buffer zijn afgesloten (bijv. door het
|
|
1288
|
+
// losmaken van late orders). Dan niets meer schrijven.
|
|
1289
|
+
{
|
|
1290
|
+
const { data: bufRow, error: bufError } = await sb
|
|
1291
|
+
.from("order_buffers")
|
|
1292
|
+
.select("closed_at")
|
|
1293
|
+
.eq("id", bufferId)
|
|
1294
|
+
.maybeSingle();
|
|
1295
|
+
if (bufError || bufRow?.closed_at) {
|
|
1296
|
+
const reason = bufError
|
|
1297
|
+
? `Status van de buffer kon niet worden gelezen: ${bufError.message}`
|
|
1298
|
+
: "De buffer is inmiddels afgesloten; er is niets weggeschreven.";
|
|
1299
|
+
return {
|
|
1300
|
+
ok: true,
|
|
1301
|
+
bufferId,
|
|
1302
|
+
orderIds,
|
|
1303
|
+
cartsCreated: 0,
|
|
1304
|
+
replacedManualCount,
|
|
1305
|
+
usedFloridayPacking,
|
|
1306
|
+
warnings: [...warnings, reason],
|
|
1307
|
+
skipped: "locked",
|
|
1308
|
+
};
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1267
1311
|
const persistentIdentities = assignPersistentCartIdentities(plannedCarts, itemToOrder, {
|
|
1268
1312
|
shared: isBufferOrder || isSupplement,
|
|
1269
1313
|
startNumber: cartNumberStart,
|