@flowselections/logistiek-engine 1.0.203 → 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 +1333 -0
- package/dist-lib/components/BeladingIndelingCard.d.ts.map +1 -1
- package/dist-lib/components/BeladingIndelingCard.js +14 -2
- package/dist-lib/components/LadingdragersPage.d.ts.map +1 -1
- package/dist-lib/components/LadingdragersPage.js +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +498 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.server.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.server.js +3 -2
- 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 +80 -1
- package/dist-lib/lib/loadCarrierPlanner.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanner.js +353 -280
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +39 -5
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/dist-lib/lib/quarantaine.d.ts +9 -0
- package/dist-lib/lib/quarantaine.d.ts.map +1 -0
- package/dist-lib/lib/quarantaine.js +13 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floridayPush.server.d.ts","sourceRoot":"","sources":["../../src/lib/floridayPush.server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"floridayPush.server.d.ts","sourceRoot":"","sources":["../../src/lib/floridayPush.server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAc/C,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUlD;AAaD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,OAAO,2BAA2B,EAAE,WAAW,EAAE,CAAC;CACjE;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAUnE;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CACN;IACE,EAAE,EAAE,IAAI,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,OAAO,2BAA2B,EAAE,oBAAoB,EAAE,CAAC;IAC3E,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAC7C,CAoEA;AAED,8CAA8C;AAC9C,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CAmItB;AAQD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3F;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhG;AA6BD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAYD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,eAAe,CAAC,CAqN1B;AAQD,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3F"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
// - Supabase-client komt altijd als eerste parameter binnen (geen module-state).
|
|
12
12
|
// ============================================================================
|
|
13
13
|
import { isReadOnlyBlocked } from "./floridayWriteMode.js";
|
|
14
|
+
import { zonderQuarantaine } from "./quarantaine.js";
|
|
14
15
|
export const FLORIDAY_PUSH_BATCH = 20;
|
|
15
16
|
export const FLORIDAY_PUSH_LEASE_SECONDS = 120;
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
@@ -137,7 +138,7 @@ export async function buildFloridayPayload(sb, orderRef) {
|
|
|
137
138
|
// Orderregel → Floriday fulfillmentRequest (order_items.source_line_key).
|
|
138
139
|
const { data: orderItems, error: itemsError } = await sb
|
|
139
140
|
.from("order_items")
|
|
140
|
-
.select("id, source_line_key")
|
|
141
|
+
.select("id, source_line_key, quarantined_at")
|
|
141
142
|
.eq("order_id", row["id"])
|
|
142
143
|
// Regels in quarantaine (Verkoop-herstel) gaan niet mee naar Floriday.
|
|
143
144
|
.is("quarantined_at", null);
|
|
@@ -151,7 +152,7 @@ export async function buildFloridayPayload(sb, orderRef) {
|
|
|
151
152
|
}
|
|
152
153
|
const requestByItem = new Map();
|
|
153
154
|
const ownItemIds = [];
|
|
154
|
-
for (const it of (Array.isArray(orderItems) ? orderItems : [])) {
|
|
155
|
+
for (const it of zonderQuarantaine((Array.isArray(orderItems) ? orderItems : []))) {
|
|
155
156
|
ownItemIds.push(String(it["id"]));
|
|
156
157
|
const key = String(it["source_line_key"] ?? "").trim();
|
|
157
158
|
if (key)
|
|
@@ -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;
|
|
@@ -10,6 +10,8 @@ export interface CarrierProfile {
|
|
|
10
10
|
max_boxes?: number | null;
|
|
11
11
|
max_weight_kg?: number | null;
|
|
12
12
|
allow_mixing?: boolean | null;
|
|
13
|
+
/** 1.0.204: grens "max lagen" uit de werkwijze; begrenst de lagen per kar van een product. */
|
|
14
|
+
werkwijze_max_lagen?: number | null;
|
|
13
15
|
}
|
|
14
16
|
export interface PlannerInputItem {
|
|
15
17
|
order_item_id: string;
|
|
@@ -43,7 +45,76 @@ export interface PlannerOptions {
|
|
|
43
45
|
/** Vanaf zoveel volle lagen krijgt een partij altijd een eigen ladingdrager. */
|
|
44
46
|
ownCarrierFromLayers?: number | null;
|
|
45
47
|
sortOrder?: "location" | "customer" | "product" | "size" | "none";
|
|
48
|
+
/**
|
|
49
|
+
* 1.0.204: menging per laag.
|
|
50
|
+
* "vrij" → lagen per regel = fust ÷ fusten per laag (fractie, zoals Floriday).
|
|
51
|
+
* "per_regel" → een begonnen laag telt per regel als hele laag: ceil(fust ÷ fusten per laag).
|
|
52
|
+
* Standaard "vrij". Gebruik bepaalLaagMenging() om dit uit de werkwijze af te leiden.
|
|
53
|
+
*/
|
|
54
|
+
laagMenging?: "vrij" | "per_regel";
|
|
55
|
+
/**
|
|
56
|
+
* 1.0.205: wie mag een laag delen (alleen bij laagMenging "vrij").
|
|
57
|
+
* klantenPerLaag N: regels van dezelfde klant delen altijd; klanten in groepen van N.
|
|
58
|
+
* beladingenPerLaag M (>= 999 = onbeperkt): binnen een klant hoogstens M regels per laag.
|
|
59
|
+
* Een begonnen laag telt alleen als hele laag als er meer dan één groep op de kar staat.
|
|
60
|
+
*/
|
|
61
|
+
laagGroepen?: {
|
|
62
|
+
klantenPerLaag?: number | null;
|
|
63
|
+
beladingenPerLaag?: number | null;
|
|
64
|
+
} | null;
|
|
65
|
+
}
|
|
66
|
+
/** Grens vanaf waar "beladingen per laag" als onbeperkt geldt (instelling 999 = onbeperkt). */
|
|
67
|
+
export declare const BELADINGEN_ONBEPERKT = 999;
|
|
68
|
+
/**
|
|
69
|
+
* Leidt de menging per laag af uit de werkwijze.
|
|
70
|
+
* Niet vrij als: geen optimale vulling, maximaal N beladingen per laag (N < 999),
|
|
71
|
+
* maximaal N klanten per laag, of één klant per laag.
|
|
72
|
+
*/
|
|
73
|
+
export declare function bepaalLaagMenging(w: {
|
|
74
|
+
optimalFill?: boolean | null;
|
|
75
|
+
maxBeladingenPerLayer?: number | null;
|
|
76
|
+
maxCustomersPerLayer?: number | null;
|
|
77
|
+
oneCustomerPerLayer?: boolean | null;
|
|
78
|
+
}): {
|
|
79
|
+
menging: "vrij" | "per_regel";
|
|
80
|
+
groepen: {
|
|
81
|
+
klantenPerLaag: number | null;
|
|
82
|
+
beladingenPerLaag: number | null;
|
|
83
|
+
};
|
|
84
|
+
reden: string;
|
|
85
|
+
};
|
|
86
|
+
/** Eén regel op een kar, voor de laagberekening. */
|
|
87
|
+
export interface LaagRegel {
|
|
88
|
+
regelId: string;
|
|
89
|
+
klantId: string | null;
|
|
90
|
+
crates: number;
|
|
91
|
+
cpl: number;
|
|
92
|
+
/** 1.0.208: lagen per kar van deze regel (voor de vulgraad zoals Floriday). */
|
|
93
|
+
lpc?: number;
|
|
46
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* 1.0.205: lagen op een kar volgens de mengregels.
|
|
97
|
+
* - "per_regel" (optimale vulling uit): Σ ceil(fust ÷ fusten per laag) per regel.
|
|
98
|
+
* - anders: regels vormen groepen die een laag mogen delen (zelfde klant; klanten in
|
|
99
|
+
* groepen van N; binnen een klant hoogstens M regels). Eén groep op de kar → fractie.
|
|
100
|
+
* Meer groepen → elke groep telt in hele lagen: Σ ceil(groep).
|
|
101
|
+
*/
|
|
102
|
+
export declare function karLagen(regels: LaagRegel[], menging?: "vrij" | "per_regel", groepen?: {
|
|
103
|
+
klantenPerLaag?: number | null;
|
|
104
|
+
beladingenPerLaag?: number | null;
|
|
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;
|
|
116
|
+
/** Lagen van één regel op een kar volgens de menging per laag. */
|
|
117
|
+
export declare function regelLagen(crates: number, cpl: number, menging?: "vrij" | "per_regel"): number;
|
|
47
118
|
export interface PlannedLoadUnitItem {
|
|
48
119
|
order_item_id: string;
|
|
49
120
|
order_id: string | null;
|
|
@@ -81,5 +152,13 @@ export interface PlannerOutput {
|
|
|
81
152
|
carts: PlannedLoadUnit[];
|
|
82
153
|
warnings: string[];
|
|
83
154
|
}
|
|
155
|
+
export declare const LAGEN_MARGE = 0.001;
|
|
156
|
+
/** Capaciteit van een kar: hoogste lagen-per-kar van de producten; anders de ladingdrager. */
|
|
157
|
+
export declare function karCapaciteit(productLagen: Array<number | null | undefined>, ladingdragerLagen: number | null | undefined): {
|
|
158
|
+
capaciteit: number | null;
|
|
159
|
+
bron: "product" | "ladingdrager" | null;
|
|
160
|
+
};
|
|
161
|
+
/** Vulgraad in procenten (heel getal), of null als de capaciteit onbekend is. */
|
|
162
|
+
export declare function karVulgraad(lagen: number, capaciteit: number | null): number | null;
|
|
84
163
|
export declare function planLoadUnits(inputs: PlannerInputItem[], options: PlannerOptions): PlannerOutput;
|
|
85
164
|
//# sourceMappingURL=loadCarrierPlanner.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"loadCarrierPlanner.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanner.ts"],"names":[],"mappings":"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"}
|