@flowselections/logistiek-engine 1.0.206 → 1.0.209
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/db/schema/logistiek-engine.sql +765 -1
- package/dist-lib/integrations/supabase/types.d.ts +258 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/hoofdverpakking.d.ts +7 -0
- package/dist-lib/lib/hoofdverpakking.d.ts.map +1 -0
- package/dist-lib/lib/hoofdverpakking.js +19 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts +13 -1
- package/dist-lib/lib/loadCarrierPlanner.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanner.js +68 -8
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +23 -2
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const BELADING_NIET_INGESTELD = "belading niet ingesteld";
|
|
2
|
+
/**
|
|
3
|
+
* Haalt de beladingwaarden van het product weg als het product geen hoofdverpakking heeft.
|
|
4
|
+
* `metHoofdverpakking` null = Voorraad-verpakkingen bestaan niet in deze shell: niets wijzigen.
|
|
5
|
+
*/
|
|
6
|
+
export declare function zonderStandaardBelading<T extends Record<string, any>>(product: T | null | undefined, productId: string | null | undefined, metHoofdverpakking: Set<string> | null): T | null | undefined;
|
|
7
|
+
//# sourceMappingURL=hoofdverpakking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hoofdverpakking.d.ts","sourceRoot":"","sources":["../../src/lib/hoofdverpakking.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAIjE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnE,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GACrC,CAAC,GAAG,IAAI,GAAG,SAAS,CAMtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// 1.0.208: een product zonder hoofdverpakking (product_packings.is_primary) heeft geen ingestelde
|
|
2
|
+
// belading. De kolomstandaarden van products (1/10/4) tellen dan niet als belading: de planner
|
|
3
|
+
// gebruikt ze niet, zodat de regel met "belading niet ingesteld" blijft wachten (fail closed).
|
|
4
|
+
export const BELADING_NIET_INGESTELD = "belading niet ingesteld";
|
|
5
|
+
const VELDEN = ["plants_per_crate", "crates_per_layer", "layers_per_cart"];
|
|
6
|
+
/**
|
|
7
|
+
* Haalt de beladingwaarden van het product weg als het product geen hoofdverpakking heeft.
|
|
8
|
+
* `metHoofdverpakking` null = Voorraad-verpakkingen bestaan niet in deze shell: niets wijzigen.
|
|
9
|
+
*/
|
|
10
|
+
export function zonderStandaardBelading(product, productId, metHoofdverpakking) {
|
|
11
|
+
if (!product || !metHoofdverpakking || !productId)
|
|
12
|
+
return product;
|
|
13
|
+
if (metHoofdverpakking.has(String(productId)))
|
|
14
|
+
return product;
|
|
15
|
+
const kopie = { ...product, belading_niet_ingesteld: true };
|
|
16
|
+
for (const v of VELDEN)
|
|
17
|
+
kopie[v] = null;
|
|
18
|
+
return kopie;
|
|
19
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LOAD_CARRIER_PLANNER_VERSION =
|
|
1
|
+
export declare const LOAD_CARRIER_PLANNER_VERSION = 5;
|
|
2
2
|
export type CapacityModel = "layered" | "stacked" | "single" | "none";
|
|
3
3
|
export interface CarrierProfile {
|
|
4
4
|
id?: string | null;
|
|
@@ -89,6 +89,8 @@ export interface LaagRegel {
|
|
|
89
89
|
klantId: string | null;
|
|
90
90
|
crates: number;
|
|
91
91
|
cpl: number;
|
|
92
|
+
/** 1.0.208: lagen per kar van deze regel (voor de vulgraad zoals Floriday). */
|
|
93
|
+
lpc?: number;
|
|
92
94
|
}
|
|
93
95
|
/**
|
|
94
96
|
* 1.0.205: lagen op een kar volgens de mengregels.
|
|
@@ -101,6 +103,16 @@ export declare function karLagen(regels: LaagRegel[], menging?: "vrij" | "per_re
|
|
|
101
103
|
klantenPerLaag?: number | null;
|
|
102
104
|
beladingenPerLaag?: number | null;
|
|
103
105
|
} | null): number;
|
|
106
|
+
/**
|
|
107
|
+
* 1.0.208: vulgraad van een kar zoals Floriday (fractie, 1 = vol):
|
|
108
|
+
* Σ per regel (lagen van de regel ÷ lagen per kar van die regel).
|
|
109
|
+
* Mengregels blijven: een afgeronde laag (tussen groepen die geen laag mogen delen)
|
|
110
|
+
* telt met de kleinste lagen-per-kar binnen die groep.
|
|
111
|
+
*/
|
|
112
|
+
export declare function karVulgraadFractie(regels: LaagRegel[], menging?: "vrij" | "per_regel", groepen?: {
|
|
113
|
+
klantenPerLaag?: number | null;
|
|
114
|
+
beladingenPerLaag?: number | null;
|
|
115
|
+
} | null): number;
|
|
104
116
|
/** Lagen van één regel op een kar volgens de menging per laag. */
|
|
105
117
|
export declare function regelLagen(crates: number, cpl: number, menging?: "vrij" | "per_regel"): number;
|
|
106
118
|
export interface PlannedLoadUnitItem {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadCarrierPlanner.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanner.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,aAAa,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,8FAA8F;IAC9F,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAGD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClE;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5F;AAED,+FAA+F;AAC/F,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE;IACnC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC,GAAG;IACF,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,OAAO,EAAE;QAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7E,KAAK,EAAE,MAAM,CAAC;CACf,CAeA;AAED,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"loadCarrierPlanner.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// - verticaal : totalHeightPct <= 100
|
|
10
10
|
// - horizontaal: crateShare per laag <= 1
|
|
11
11
|
// ============================================================================
|
|
12
|
-
export const LOAD_CARRIER_PLANNER_VERSION =
|
|
12
|
+
export const LOAD_CARRIER_PLANNER_VERSION = 5;
|
|
13
13
|
/** Grens vanaf waar "beladingen per laag" als onbeperkt geldt (instelling 999 = onbeperkt). */
|
|
14
14
|
export const BELADINGEN_ONBEPERKT = 999;
|
|
15
15
|
/**
|
|
@@ -77,6 +77,48 @@ export function karLagen(regels, menging = "vrij", groepen) {
|
|
|
77
77
|
return units.reduce((s, u) => s + u, 0);
|
|
78
78
|
return units.reduce((s, u) => s + Math.ceil(u - 1e-9), 0);
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* 1.0.208: vulgraad van een kar zoals Floriday (fractie, 1 = vol):
|
|
82
|
+
* Σ per regel (lagen van de regel ÷ lagen per kar van die regel).
|
|
83
|
+
* Mengregels blijven: een afgeronde laag (tussen groepen die geen laag mogen delen)
|
|
84
|
+
* telt met de kleinste lagen-per-kar binnen die groep.
|
|
85
|
+
*/
|
|
86
|
+
export function karVulgraadFractie(regels, menging = "vrij", groepen) {
|
|
87
|
+
const f = (r) => r.crates / Math.max(1, r.cpl);
|
|
88
|
+
const l = (r) => Math.max(1, Number(r.lpc) || 1);
|
|
89
|
+
if (menging === "per_regel")
|
|
90
|
+
return regels.reduce((s, r) => s + Math.ceil(f(r) - 1e-9) / l(r), 0);
|
|
91
|
+
const N = groepen?.klantenPerLaag ?? null;
|
|
92
|
+
const M = groepen?.beladingenPerLaag ?? null;
|
|
93
|
+
if (N == null && M == null)
|
|
94
|
+
return regels.reduce((s, r) => s + f(r) / l(r), 0);
|
|
95
|
+
const perKlant = new Map();
|
|
96
|
+
for (const r of regels) {
|
|
97
|
+
const k = r.klantId ?? `regel:${r.regelId}`;
|
|
98
|
+
const lijst = perKlant.get(k) ?? [];
|
|
99
|
+
lijst.push(r);
|
|
100
|
+
perKlant.set(k, lijst);
|
|
101
|
+
}
|
|
102
|
+
const klanten = [...perKlant.keys()].sort();
|
|
103
|
+
const units = [];
|
|
104
|
+
if (M != null) {
|
|
105
|
+
for (const k of klanten) {
|
|
106
|
+
const lijst = perKlant.get(k).sort((a, b) => a.regelId.localeCompare(b.regelId));
|
|
107
|
+
for (let i = 0; i < lijst.length; i += M)
|
|
108
|
+
units.push(lijst.slice(i, i + M));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
for (let i = 0; i < klanten.length; i += N)
|
|
113
|
+
units.push(klanten.slice(i, i + N).flatMap((k) => perKlant.get(k)));
|
|
114
|
+
}
|
|
115
|
+
if (units.length <= 1)
|
|
116
|
+
return regels.reduce((s, r) => s + f(r) / l(r), 0);
|
|
117
|
+
return units.reduce((s, u) => {
|
|
118
|
+
const lagen = u.reduce((t, r) => t + f(r), 0);
|
|
119
|
+
return s + Math.ceil(lagen - 1e-9) / Math.min(...u.map(l));
|
|
120
|
+
}, 0);
|
|
121
|
+
}
|
|
80
122
|
/** Lagen van één regel op een kar volgens de menging per laag. */
|
|
81
123
|
export function regelLagen(crates, cpl, menging = "vrij") {
|
|
82
124
|
const f = crates / Math.max(1, cpl);
|
|
@@ -196,6 +238,23 @@ function accepteert(kar, rest, crates, r) {
|
|
|
196
238
|
}
|
|
197
239
|
/** Hoeveel fusten van deze rest passen nog op de kar (0 = niets). */
|
|
198
240
|
/** Lagen van een kar volgens de mengregels, optioneel met extra fusten van een rest. */
|
|
241
|
+
function regelsVan(kar, rests, extra) {
|
|
242
|
+
const per = new Map();
|
|
243
|
+
for (const e of kar.entries)
|
|
244
|
+
per.set(e.restIdx, (per.get(e.restIdx) ?? 0) + e.crates);
|
|
245
|
+
if (extra)
|
|
246
|
+
per.set(extra.restIdx, (per.get(extra.restIdx) ?? 0) + extra.crates);
|
|
247
|
+
return [...per.entries()].map(([i, crates]) => ({
|
|
248
|
+
regelId: rests[i].input.order_item_id,
|
|
249
|
+
klantId: rests[i].input.customer_id ?? rests[i].input.order_id ?? null,
|
|
250
|
+
crates,
|
|
251
|
+
cpl: rests[i].cpl,
|
|
252
|
+
lpc: rests[i].lpc,
|
|
253
|
+
}));
|
|
254
|
+
}
|
|
255
|
+
function vulVan(kar, rests, r, extra) {
|
|
256
|
+
return karVulgraadFractie(regelsVan(kar, rests, extra), r.opts.laagMenging, r.opts.laagGroepen);
|
|
257
|
+
}
|
|
199
258
|
function lagenVan(kar, rests, r, extra) {
|
|
200
259
|
const per = new Map();
|
|
201
260
|
for (const e of kar.entries)
|
|
@@ -215,11 +274,11 @@ function pastErop(kar, rest, r, rests, restIdx) {
|
|
|
215
274
|
(rest.input.product_id ? r.opts.neverMixProductIds.has(rest.input.product_id) : false);
|
|
216
275
|
if (kar.entries.length > 0 && (neverMix || kar.neverMix))
|
|
217
276
|
return 0;
|
|
218
|
-
|
|
219
|
-
const vrij =
|
|
277
|
+
// 1.0.208: vol = vulgraad 100 % (Σ lagen van regel ÷ lagen per kar van die regel).
|
|
278
|
+
const vrij = 1 - kar.vul;
|
|
220
279
|
if (vrij <= LAGEN_MARGE)
|
|
221
280
|
return 0;
|
|
222
|
-
let n = Math.min(rest.crates, Math.floor((vrij + LAGEN_MARGE) * rest.cpl));
|
|
281
|
+
let n = Math.min(rest.crates, Math.floor((vrij + LAGEN_MARGE) * rest.lpc * rest.cpl + 1e-9));
|
|
223
282
|
const c = r.opts.carrier;
|
|
224
283
|
if (typeof c.max_boxes === "number" && c.max_boxes > 0)
|
|
225
284
|
n = Math.min(n, c.max_boxes - kar.boxes);
|
|
@@ -229,7 +288,7 @@ function pastErop(kar, rest, r, rests, restIdx) {
|
|
|
229
288
|
n = Math.min(n, Math.floor((c.max_weight_kg - kar.weightKg + EPS) / pc));
|
|
230
289
|
}
|
|
231
290
|
// Mengregels: grootste n waarbij de kar binnen de capaciteit blijft (monotoon → binair zoeken).
|
|
232
|
-
const past = (m) =>
|
|
291
|
+
const past = (m) => vulVan(kar, rests, r, { restIdx, crates: m }) <= 1 + LAGEN_MARGE;
|
|
233
292
|
if (n > 0 && !past(n)) {
|
|
234
293
|
let lo = 0, hi = n;
|
|
235
294
|
while (lo < hi) {
|
|
@@ -259,9 +318,10 @@ function zetErop(kar, rest, restIdx, crates, r, rests) {
|
|
|
259
318
|
kar.neverMix = true;
|
|
260
319
|
rest.crates -= crates;
|
|
261
320
|
kar.lagen = lagenVan(kar, rests, r);
|
|
321
|
+
kar.vul = vulVan(kar, rests, r);
|
|
262
322
|
}
|
|
263
323
|
function nieuweKar() {
|
|
264
|
-
return { entries: [], lagen: 0, capaciteit: 0, boxes: 0, weightKg: 0, orderIds: new Set(), customerIds: new Set(), neverMix: false, eigen: false };
|
|
324
|
+
return { entries: [], lagen: 0, vul: 0, capaciteit: 0, boxes: 0, weightKg: 0, orderIds: new Set(), customerIds: new Set(), neverMix: false, eigen: false };
|
|
265
325
|
}
|
|
266
326
|
function samenvatten(kar, rests, nr, r) {
|
|
267
327
|
const per = new Map();
|
|
@@ -299,8 +359,8 @@ function samenvatten(kar, rests, nr, r) {
|
|
|
299
359
|
carrier_type: r.opts.carrier.code,
|
|
300
360
|
carrier_type_id: r.opts.carrier.id ?? null,
|
|
301
361
|
source: "auto",
|
|
302
|
-
is_complete: kar.
|
|
303
|
-
occupancy_pct: Math.round(
|
|
362
|
+
is_complete: kar.vul >= 1 - LAGEN_MARGE,
|
|
363
|
+
occupancy_pct: Math.round(10000 * kar.vul) / 100,
|
|
304
364
|
total_layers_used: lagen,
|
|
305
365
|
max_layers: kar.capaciteit,
|
|
306
366
|
weight_kg: weight > 0 ? Math.round(weight * 100) / 100 : null,
|
|
@@ -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,EAEtB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"loadCarrierPlanning.server.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanning.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { planLoadUnits, LOAD_CARRIER_PLANNER_VERSION, bepaalLaagMenging, } from "./loadCarrierPlanner.js";
|
|
9
9
|
import { traceBatch } from "./trace.server.js";
|
|
10
10
|
import { zonderQuarantaine } from "./quarantaine.js";
|
|
11
|
+
import { zonderStandaardBelading } from "./hoofdverpakking.js";
|
|
11
12
|
import { MODULE_VERSION } from "./moduleVersion.js";
|
|
12
13
|
import { fallbackCarrierProfile } from "./loadCarrierTypes.js";
|
|
13
14
|
import { WAAR_INVULLEN, gewichtOnbekendTekst, ladingdragerNietInBeheerTekst } from "./invoerTeksten.js";
|
|
@@ -208,6 +209,24 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
208
209
|
.flat()
|
|
209
210
|
.filter((l) => l.unit_kind === "groepslid" && l.product_id)
|
|
210
211
|
.map((l) => String(l.product_id))));
|
|
212
|
+
// 1.0.208: welke producten hebben een hoofdverpakking? Zonder hoofdverpakking telt 1/10/4 niet.
|
|
213
|
+
const alleProductIds = Array.from(new Set([...memberIds, ...rows.map((r) => (r.product_id ? String(r.product_id) : "")).filter(Boolean)]));
|
|
214
|
+
let metHoofdverpakking = null;
|
|
215
|
+
if (alleProductIds.length > 0) {
|
|
216
|
+
const { data: pp, error: ppError } = await sb
|
|
217
|
+
.from("product_packings")
|
|
218
|
+
.select("product_id, is_primary")
|
|
219
|
+
.in("product_id", alleProductIds);
|
|
220
|
+
if (ppError) {
|
|
221
|
+
const ontbreekt = /does not exist|42P01|PGRST205|schema cache/i.test(`${ppError.code ?? ""} ${ppError.message}`);
|
|
222
|
+
if (!ontbreekt) {
|
|
223
|
+
throw new Error(`Indeling geblokkeerd: hoofdverpakkingen konden niet worden gelezen (${ppError.message}).`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
metHoofdverpakking = new Set((Array.isArray(pp) ? pp : []).filter((r) => r.is_primary === true).map((r) => String(r.product_id)));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
211
230
|
const prodById = new Map();
|
|
212
231
|
if (memberIds.length > 0) {
|
|
213
232
|
const { data: prods, error } = await sb
|
|
@@ -216,9 +235,11 @@ export async function expandOrderItemsForPlanner(sb, rows, options = {}) {
|
|
|
216
235
|
.in("id", memberIds);
|
|
217
236
|
if (error)
|
|
218
237
|
throw new Error(`Indeling geblokkeerd: groepsleden konden niet worden gelezen (${error.message}).`);
|
|
219
|
-
for (const p of Array.isArray(prods) ? prods : [])
|
|
220
|
-
prodById.set(String(p.id), p);
|
|
238
|
+
for (const p of Array.isArray(prods) ? prods : []) {
|
|
239
|
+
prodById.set(String(p.id), zonderStandaardBelading(p, String(p.id), metHoofdverpakking));
|
|
240
|
+
}
|
|
221
241
|
}
|
|
242
|
+
rows = rows.map((r) => r.products ? { ...r, products: zonderStandaardBelading(r.products, r.product_id, metHoofdverpakking) } : r);
|
|
222
243
|
for (const row of rows) {
|
|
223
244
|
const orderKey = row.order_id ? String(row.order_id) : null;
|
|
224
245
|
const packing = orderKey ? options.packingByOrder?.get(orderKey) ?? null : null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const MODULE_VERSION = "1.0.
|
|
1
|
+
export declare const MODULE_VERSION = "1.0.209";
|
|
2
2
|
//# sourceMappingURL=moduleVersion.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatisch gegenereerd door prebuild:lib; niet handmatig aanpassen.
|
|
2
|
-
export const MODULE_VERSION = "1.0.
|
|
2
|
+
export const MODULE_VERSION = "1.0.209";
|