@flowselections/logistiek-engine 1.0.200 → 1.0.203
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 +655 -0
- package/dist-lib/components/BeladingIndelingCard.d.ts.map +1 -1
- package/dist-lib/components/BeladingIndelingCard.js +2 -4
- package/dist-lib/components/DataGereedheidCard.d.ts.map +1 -1
- package/dist-lib/components/DataGereedheidCard.js +22 -2
- package/dist-lib/components/HerindelingMeldingCard.js +2 -2
- package/dist-lib/components/StartlijstCard.d.ts.map +1 -1
- package/dist-lib/components/StartlijstCard.js +4 -1
- 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/types.d.ts +371 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/extraPlaten.d.ts +13 -0
- package/dist-lib/lib/extraPlaten.d.ts.map +1 -0
- package/dist-lib/lib/extraPlaten.js +41 -0
- package/dist-lib/lib/floridayCartCarriers.d.ts +3 -0
- package/dist-lib/lib/floridayCartCarriers.d.ts.map +1 -1
- package/dist-lib/lib/floridayCartCarriers.js +8 -1
- package/dist-lib/lib/floridayPush.server.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.server.js +2 -1
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/dist-lib/lib/shippingNoteQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/shippingNoteQueue.server.js +11 -0
- package/dist-lib/lib/stickerQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/stickerQueue.server.js +13 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BeladingIndelingCard.d.ts","sourceRoot":"","sources":["../../src/components/BeladingIndelingCard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BeladingIndelingCard.d.ts","sourceRoot":"","sources":["../../src/components/BeladingIndelingCard.tsx"],"names":[],"mappings":"AAsCA,wBAAgB,oBAAoB,gCA0JnC"}
|
|
@@ -13,6 +13,7 @@ import { previewLoadCarrierPlan, replanOrderLoadCarriers } from "../lib/loadCarr
|
|
|
13
13
|
import { ladingdragerNaam } from "../lib/loadCarrierTypes.js";
|
|
14
14
|
import { useFloricodeLadingdragers } from "../hooks/useFloricodeLadingdragers.js";
|
|
15
15
|
import { layerUtilizationPct } from "../lib/layerUtilization.js";
|
|
16
|
+
import { karBlokkade, ladingdragerPlatenTekst } from "../lib/extraPlaten.js";
|
|
16
17
|
const db = () => supabase;
|
|
17
18
|
export function BeladingIndelingCard() {
|
|
18
19
|
const floricodeNamen = useFloricodeLadingdragers();
|
|
@@ -78,8 +79,5 @@ export function BeladingIndelingCard() {
|
|
|
78
79
|
}
|
|
79
80
|
};
|
|
80
81
|
const safeCarts = Array.isArray(carts) ? carts : [];
|
|
81
|
-
return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(Boxes, { className: "h-5 w-5 text-primary" }), "Beladingindeling"] }), _jsx(CardDescription, { children: "De Engine deelt de orderregels van de hele buffer in over ladingdragers. Bekijk eerst het resultaat en leg het daarna vast." }), _jsxs("div", { className: "flex flex-wrap items-end gap-2 pt-2", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { htmlFor: "indeling-order", children: "Ordernummer" }), _jsx(Input, { id: "indeling-order", value: orderNummer, onChange: (e) => setOrderNummer(e.target.value), placeholder: "SO-12345", className: "w-56" })] }), _jsxs(Button, { onClick: () => void bereken(), disabled: bezig || !orderNummer.trim(), children: [_jsx(Search, { className: "mr-2 h-4 w-4" }), "Berekenen"] }), _jsx(Button, { variant: "outline", onClick: () => void vastleggen(), disabled: bezig || !orderId, children: "Vastleggen" })] })] }), _jsxs(CardContent, { className: "space-y-4", children: [warnings.length > 0 && (_jsx("ul", { className: "space-y-1 rounded-lg border border-dashed p-3 text-sm text-muted-foreground", children: warnings.map((w, i) => (_jsx("li", { children: w }, i))) })), safeCarts.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Nog geen indeling berekend." })) : (safeCarts.map((cart) => (_jsxs("div", { className: "space-y-2 rounded-lg border p-3", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("span", { className: "font-medium", children: ["Ladingdrager ", cart.cart_number] }), _jsx(Badge, { variant: "secondary", children: ladingdragerNaam(cart.carrier_type, floricodeNamen) }), _jsxs(Badge, { variant: cart.is_complete ? "default" : "outline", children: [cart.occupancy_pct, "% vol"] }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [cart.total_layers_used, "
|
|
82
|
-
const p = layerUtilizationPct(cart.total_layers_used, cart.max_layers);
|
|
83
|
-
return p === null ? "" : ` · ${p}% van de kar`;
|
|
84
|
-
})(), cart.weight_kg ? ` · ${cart.weight_kg} kg` : ""] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Partij" }), _jsx(TableHead, { className: "text-right", children: "Fusten" }), _jsx(TableHead, { className: "text-right", children: "Planten" }), _jsx(TableHead, { className: "text-right", children: "Aandeel" })] }) }), _jsx(TableBody, { children: (Array.isArray(cart.items) ? cart.items : []).map((item, idx) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-medium", children: item.product_name }), _jsx(TableCell, { className: "text-right", children: item.crates }), _jsx(TableCell, { className: "text-right", children: item.plants }), _jsxs(TableCell, { className: "text-right", children: [Math.round(item.layer_share_pct * 10) / 10, "%"] })] }, `${item.order_item_id}-${idx}`))) })] })] }, cart.cart_number))))] })] }));
|
|
82
|
+
return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(Boxes, { className: "h-5 w-5 text-primary" }), "Beladingindeling"] }), _jsx(CardDescription, { children: "De Engine deelt de orderregels van de hele buffer in over ladingdragers. Bekijk eerst het resultaat en leg het daarna vast." }), _jsxs("div", { className: "flex flex-wrap items-end gap-2 pt-2", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { htmlFor: "indeling-order", children: "Ordernummer" }), _jsx(Input, { id: "indeling-order", value: orderNummer, onChange: (e) => setOrderNummer(e.target.value), placeholder: "SO-12345", className: "w-56" })] }), _jsxs(Button, { onClick: () => void bereken(), disabled: bezig || !orderNummer.trim(), children: [_jsx(Search, { className: "mr-2 h-4 w-4" }), "Berekenen"] }), _jsx(Button, { variant: "outline", onClick: () => void vastleggen(), disabled: bezig || !orderId, children: "Vastleggen" })] })] }), _jsxs(CardContent, { className: "space-y-4", children: [warnings.length > 0 && (_jsx("ul", { className: "space-y-1 rounded-lg border border-dashed p-3 text-sm text-muted-foreground", children: warnings.map((w, i) => (_jsx("li", { children: w }, i))) })), safeCarts.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Nog geen indeling berekend." })) : (safeCarts.map((cart) => (_jsxs("div", { className: "space-y-2 rounded-lg border p-3", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("span", { className: "font-medium", children: ["Ladingdrager ", cart.cart_number] }), _jsx(Badge, { variant: "secondary", children: ladingdragerNaam(cart.carrier_type, floricodeNamen) }), _jsxs(Badge, { variant: cart.is_complete ? "default" : "outline", children: [cart.occupancy_pct, "% vol"] }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [ladingdragerPlatenTekst(ladingdragerNaam(cart.carrier_type, floricodeNamen), cart.total_layers_used, cart.occupancy_pct ?? layerUtilizationPct(cart.total_layers_used, cart.max_layers)), cart.weight_kg ? ` · ${cart.weight_kg} kg` : ""] })] }), karBlokkade(cart.cart_number, cart.total_layers_used, cart.max_layers).blokkade && (_jsx("p", { className: "rounded-md border border-destructive/40 bg-destructive/10 p-2 text-sm text-destructive", children: karBlokkade(cart.cart_number, cart.total_layers_used, cart.max_layers).blokkade.tekst })), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Partij" }), _jsx(TableHead, { className: "text-right", children: "Fusten" }), _jsx(TableHead, { className: "text-right", children: "Planten" }), _jsx(TableHead, { className: "text-right", children: "Aandeel" })] }) }), _jsx(TableBody, { children: (Array.isArray(cart.items) ? cart.items : []).map((item, idx) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-medium", children: item.product_name }), _jsx(TableCell, { className: "text-right", children: item.crates }), _jsx(TableCell, { className: "text-right", children: item.plants }), _jsxs(TableCell, { className: "text-right", children: [Math.round(item.layer_share_pct * 10) / 10, "%"] })] }, `${item.order_item_id}-${idx}`))) })] })] }, cart.cart_number))))] })] }));
|
|
85
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGereedheidCard.d.ts","sourceRoot":"","sources":["../../src/components/DataGereedheidCard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DataGereedheidCard.d.ts","sourceRoot":"","sources":["../../src/components/DataGereedheidCard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU3E,KAAK,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AACxG,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAMzN,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAuB9H;AAED,KAAK,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAClI,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS7C,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7C,CAAC;AAGF,wBAAgB,kBAAkB,gCAoLjC"}
|
|
@@ -13,6 +13,13 @@ import { RefreshCw } from "lucide-react";
|
|
|
13
13
|
import { supabase } from "../integrations/supabase/moduleClient.js";
|
|
14
14
|
import { maxFustenPerLaag } from "../lib/dimensionPlanner.js";
|
|
15
15
|
import { fysiekeBelading } from "../lib/beladingRegels.js";
|
|
16
|
+
import { ladingdragerNaam } from "../lib/loadCarrierTypes.js";
|
|
17
|
+
import { useFloricodeLadingdragers } from "../hooks/useFloricodeLadingdragers.js";
|
|
18
|
+
const METHODE_LABEL = {
|
|
19
|
+
belading: "Indeling op belading (fusten per laag × lagen)",
|
|
20
|
+
afmetingen: "Indeling op afmetingen",
|
|
21
|
+
dimensies: "Indeling op afmetingen",
|
|
22
|
+
};
|
|
16
23
|
const num = (v) => {
|
|
17
24
|
const n = Number(v);
|
|
18
25
|
return v != null && Number.isFinite(n) && n > 0 ? n : null;
|
|
@@ -71,6 +78,7 @@ export function DataGereedheidCard() {
|
|
|
71
78
|
const [bezig, setBezig] = useState(null);
|
|
72
79
|
const [fusten, setFusten] = useState(new Map());
|
|
73
80
|
const [dragers, setDragers] = useState(new Map());
|
|
81
|
+
const floricodeNamen = useFloricodeLadingdragers();
|
|
74
82
|
const laden = useCallback(async () => {
|
|
75
83
|
setLoading(true);
|
|
76
84
|
setFout(null);
|
|
@@ -113,9 +121,21 @@ export function DataGereedheidCard() {
|
|
|
113
121
|
else
|
|
114
122
|
await laden();
|
|
115
123
|
};
|
|
116
|
-
const metGaten = rijen.filter((r) => Array.isArray(r.ontbrekend) && r.ontbrekend.length > 0);
|
|
117
124
|
const fysiek = (r) => fysiekVoorRegel(r, typeof r.velden?.fust_type_id?.waarde === "string" ? fusten.get(r.velden.fust_type_id.waarde) ?? null : null, r.ladingdrager ? dragers.get(r.ladingdrager) ?? null : null);
|
|
118
|
-
|
|
125
|
+
// 1.0.201: onmogelijk bovenaan, dan ontbrekende gegevens, dan alleen een waarschuwing (gewicht).
|
|
126
|
+
const rang = (r) => {
|
|
127
|
+
if (fysiek(r).status === "onmogelijk")
|
|
128
|
+
return 0;
|
|
129
|
+
const mist = (Array.isArray(r.ontbrekend) ? r.ontbrekend : []).filter((v) => v !== "weight");
|
|
130
|
+
if (mist.length > 0)
|
|
131
|
+
return 1;
|
|
132
|
+
return 2;
|
|
133
|
+
};
|
|
134
|
+
const metGaten = rijen
|
|
135
|
+
.filter((r) => (Array.isArray(r.ontbrekend) && r.ontbrekend.length > 0) || fysiek(r).status === "onmogelijk")
|
|
136
|
+
.sort((a, b) => rang(a) - rang(b) || a.product.localeCompare(b.product));
|
|
137
|
+
const dragerNaam = (code) => code ? ladingdragerNaam(code, floricodeNamen, dragers.get(code)?.name ?? undefined) : "";
|
|
138
|
+
return (_jsxs(Card, { id: "gegevens-voor-karindeling", children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsx(CardTitle, { children: "Gegevens voor karindeling" }), _jsx(CardDescription, { children: "Producten in open orders waarvan een waarde ontbreekt. Een voorstel (berekend of van vergelijkbare producten) wordt pas gebruikt als je het hier invult en opslaat." })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => void laden(), disabled: loading, children: [_jsx(RefreshCw, { className: "h-4 w-4" }), "Verversen"] })] }), _jsxs(CardContent, { className: "space-y-3", children: [fout && _jsx("p", { className: "text-sm text-destructive", children: fout }), loading ? (_jsx(Skeleton, { className: "h-16 w-full" })) : metGaten.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Alle producten in open orders hebben de benodigde gegevens." })) : (metGaten.map((r) => (_jsxs("div", { className: "rounded-md border p-3 space-y-2", children: [_jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-2", children: [_jsx("span", { className: "font-medium", children: r.product }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [rang(r) === 0 ? "Onmogelijk · " : rang(r) === 2 ? "Compleet, 1 waarschuwing · " : "", r.in_open_order ? "In open order" : "Niet in open order", " \u00B7 ", METHODE_LABEL[r.methode] ?? "Indeling", r.ladingdrager ? ` · ${dragerNaam(r.ladingdrager)}` : ""] })] }), _jsx("p", { className: "text-xs text-muted-foreground", children: r.uitleg }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Fust ", String(r.velden?.fust_type_id?.naam ?? "onbekend"), " (", bronTekst(r.velden?.fust_type_id?.bron), ") \u00B7 maten", " ", ["fust_length_mm", "fust_width_mm", "fust_height_mm"]
|
|
119
139
|
.map((k) => `${r.velden?.[k]?.waarde ?? "?"} mm (${bronTekst(r.velden?.[k]?.bron)})`)
|
|
120
140
|
.join(" × "), " ", "\u00B7 planthoogte inclusief pot ", r.velden?.plant_height_cm?.waarde != null ? `${r.velden.plant_height_cm.waarde} cm` : "onbekend", " (", bronTekst(r.velden?.plant_height_cm?.bron), ")"] }), r.ontbrekend.map((veld) => {
|
|
121
141
|
const k = `${r.product_id}:${veld}`;
|
|
@@ -31,7 +31,7 @@ export function HerindelingMeldingCard() {
|
|
|
31
31
|
const orders = Array.isArray(data?.orders) ? data.orders : [];
|
|
32
32
|
const aantal = Number(data?.wouldChange ?? 0);
|
|
33
33
|
const probleem = data?.ok === false ? data.error : data?.lastError;
|
|
34
|
-
return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: ["Herindelen", _jsx(Badge, { variant: "outline", children: data?.mode === "apply" ? "Uitvoeren" : "Alleen melden" })] }), _jsx(CardDescription, { children: "Alleen open orders (niet geprint, gescand of verstuurd) met een leverdag vanaf vandaag. Bestaande indelingen veranderen hier niet." })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => void laden(), disabled: loading, children: [_jsx(RefreshCw, { className: "h-4 w-4" }), "Verversen"] })] }), _jsx(CardContent, { className: "space-y-3", children: loading ? (_jsx(Skeleton, { className: "h-16 w-full" })) : fout ? (_jsx("p", { className: "text-sm text-destructive", children: fout })) : (_jsxs(_Fragment, { children: [probleem ? _jsx("p", { className: "text-sm text-destructive", children: probleem }) : null, _jsxs("p", { className: "text-sm font-medium", children: [aantal, " order", aantal === 1 ? "" : "s", " zou", aantal === 1 ? "" : "den", " anders ingedeeld worden (alleen leverdagen vanaf vandaag)"] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: [Number(data?.checked ?? 0), " open order(s) bekeken", data?.lastRunAt
|
|
35
|
-
? ` · laatste
|
|
34
|
+
return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: ["Herindelen", _jsx(Badge, { variant: "outline", children: data?.mode === "apply" ? "Uitvoeren" : "Alleen melden" })] }), _jsx(CardDescription, { children: "Alleen open orders (niet geprint, gescand of verstuurd) met een leverdag vanaf vandaag. Bestaande indelingen veranderen hier niet." })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => void laden(), disabled: loading, children: [_jsx(RefreshCw, { className: "h-4 w-4" }), "Verversen"] })] }), _jsx(CardContent, { className: "space-y-3", children: loading ? (_jsx(Skeleton, { className: "h-16 w-full" })) : fout ? (_jsx("p", { className: "text-sm text-destructive", children: fout })) : (_jsxs(_Fragment, { children: [probleem ? _jsx("p", { className: "text-sm text-destructive", children: probleem }) : null, _jsxs("p", { className: "text-sm font-medium", children: [aantal, " order", aantal === 1 ? "" : "s", " zou", aantal === 1 ? "" : "den", " anders ingedeeld worden (alleen leverdagen vanaf vandaag)"] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: [Number(data?.checked ?? 0), " open order(s) bekeken \u00B7 deze lijst is nu berekend", data?.lastRunAt
|
|
35
|
+
? ` · laatste echte herindeling ${new Date(data.lastRunAt).toLocaleString("nl-NL")} (${Number(data.lastDurationMs ?? 0)} ms; draait alleen na een wijziging in de combineerregels)`
|
|
36
36
|
: ""] }), orders.length > 0 ? (_jsx("div", { className: "overflow-x-auto rounded-md border", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: "bg-muted/50 text-left", children: _jsxs("tr", { children: [_jsx("th", { className: "p-2", children: "Order" }), _jsx("th", { className: "p-2", children: "Leverdag" }), _jsx("th", { className: "p-2", children: "Uitkomst" }), _jsx("th", { className: "p-2", children: "Huidige indeling" }), _jsx("th", { className: "p-2", children: "Nieuwe indeling" }), _jsx("th", { className: "p-2", children: "Reden" })] }) }), _jsx("tbody", { children: orders.map((o) => (_jsxs("tr", { className: "border-t align-top", children: [_jsx("td", { className: "p-2 font-medium", children: o.orderNumber ?? "—" }), _jsx("td", { className: "p-2", children: o.deliveryDate ?? "—" }), _jsx("td", { className: "p-2", children: o.wijzigt === false ? "Blijft zoals het is" : "Zou wijzigen" }), _jsx("td", { className: "p-2", children: o.huidig }), _jsx("td", { className: "p-2", children: o.nieuw }), _jsx("td", { className: "p-2 break-all text-xs text-muted-foreground", children: o.reden })] }, o.orderId))) })] }) })) : null] })) })] }));
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartlijstCard.d.ts","sourceRoot":"","sources":["../../src/components/StartlijstCard.tsx"],"names":[],"mappings":"AA6BA,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"StartlijstCard.d.ts","sourceRoot":"","sources":["../../src/components/StartlijstCard.tsx"],"names":[],"mappings":"AA6BA,wBAAgB,cAAc,gCA2G7B"}
|
|
@@ -47,7 +47,10 @@ export function StartlijstCard() {
|
|
|
47
47
|
await laden();
|
|
48
48
|
};
|
|
49
49
|
const Stap = ({ klaar, titel, tekst, naar }) => (_jsxs("div", { className: "flex items-start gap-3", children: [klaar ? _jsx(CheckCircle2, { className: "mt-0.5 h-5 w-5 text-primary" }) : _jsx(Circle, { className: "mt-0.5 h-5 w-5 text-muted-foreground" }), _jsxs("div", { className: "text-sm", children: [_jsx("p", { className: "font-medium", children: titel }), _jsxs("p", { className: "text-muted-foreground", children: [tekst, naar && (_jsxs(_Fragment, { children: [" ", _jsx(Link, { to: naar, className: "underline", children: "Openen" })] }))] })] })] }));
|
|
50
|
-
return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Startlijst" }), _jsx(CardDescription, { children: "Wat er nodig is om karren te kunnen indelen, in deze volgorde." })] }), _jsxs(CardContent, { className: "space-y-3", children: [fout && _jsx("p", { className: "text-sm text-destructive", children: fout }), _jsx(Stap, { klaar: s?.ladingdragers?.klaar, titel: "1. Ladingdragers", tekst: `${s?.ladingdragers?.aantal ?? 0} actief, ${s?.ladingdragers?.onvolledig ?? 0} zonder volledige maten.`, naar: "/logistiek-engine/ladingdragers" }), _jsx(Stap, { klaar: s?.werkwijze?.klaar, titel: "2. Werkwijze", tekst: s?.werkwijze?.klaar ? "Ingesteld." : "Nog niet ingesteld in de Rule Engine.", naar: "/logistiek-engine/rule-engine" }), _jsx(Stap, { klaar: s?.gereedheid?.klaar, titel: "3. Gereedheid per product", tekst: `${s?.gereedheid?.onvolledig ?? 0} van ${s?.gereedheid?.producten ?? 0} producten in open orders missen gegevens.`
|
|
50
|
+
return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Startlijst" }), _jsx(CardDescription, { children: "Wat er nodig is om karren te kunnen indelen, in deze volgorde." })] }), _jsxs(CardContent, { className: "space-y-3", children: [fout && _jsx("p", { className: "text-sm text-destructive", children: fout }), _jsx(Stap, { klaar: s?.ladingdragers?.klaar, titel: "1. Ladingdragers", tekst: `${s?.ladingdragers?.aantal ?? 0} actief, ${s?.ladingdragers?.onvolledig ?? 0} zonder volledige maten.`, naar: "/logistiek-engine/ladingdragers" }), _jsx(Stap, { klaar: s?.werkwijze?.klaar, titel: "2. Werkwijze", tekst: s?.werkwijze?.klaar ? "Ingesteld." : "Nog niet ingesteld in de Rule Engine.", naar: "/logistiek-engine/rule-engine" }), _jsx(Stap, { klaar: s?.gereedheid?.klaar, titel: "3. Gereedheid per product", tekst: `${s?.gereedheid?.onvolledig ?? 0} van ${s?.gereedheid?.producten ?? 0} producten in open orders missen gegevens.` +
|
|
51
|
+
((s?.gereedheid?.waarschuwing ?? 0) > 0
|
|
52
|
+
? ` ${s?.gereedheid?.waarschuwing} compleet, 1 waarschuwing (alleen gewicht ontbreekt).`
|
|
53
|
+
: ""), naar: "/logistiek-engine/beheer" }), _jsxs("div", { className: "flex flex-wrap gap-2 border-t pt-3", children: [_jsx(Button, { variant: "outline", size: "sm", disabled: bezig, onClick: () => void overnemen(false), children: "Alles overnemen uit Floricode/Floriday" }), voor && !voor.uitgevoerd && voor.aantal > 0 && (_jsxs(Button, { size: "sm", disabled: bezig, onClick: () => void overnemen(true), children: ["Bevestigen: ", voor.aantal, " veld(en) invullen"] }))] }), voor && (_jsxs("div", { className: "space-y-1 text-sm", children: [_jsxs("p", { children: [voor.uitgevoerd ? "Ingevuld" : "Voorvertoning", ": ", voor.aantal, " leeg veld(en)", Object.keys(voor.per_bron).length > 0 &&
|
|
51
54
|
` (${Object.entries(voor.per_bron)
|
|
52
55
|
.map(([b, n]) => `${n} uit ${b}`)
|
|
53
56
|
.join(", ")})`, ". Bestaande waarden blijven staan."] }), voor.velden.slice(0, 30).map((v, i) => (_jsxs("p", { className: "text-xs text-muted-foreground", children: [v.naam, ": ", VELD[v.veld] ?? v.veld, " = ", String(v.waarde), " (", v.bron, ")"] }, i)))] }))] })] }));
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -84,4 +84,5 @@ export * from './lib/shellAdres.js';
|
|
|
84
84
|
export * from './hooks/useShellAdres.js';
|
|
85
85
|
export { BeladingVerstuurderCard } from "./components/BeladingVerstuurderCard.js";
|
|
86
86
|
export { DocumentkeuzeCard } from "./components/DocumentkeuzeCard.js";
|
|
87
|
+
export * from './lib/extraPlaten.js';
|
|
87
88
|
//# sourceMappingURL=index.d.ts.map
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AAKpD,eAAO,MAAM,qBAAqB,EAAE,UAanC,CAAC;AACF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist-lib/index.js
CHANGED
|
@@ -98,3 +98,4 @@ export * from './lib/shellAdres.js';
|
|
|
98
98
|
export * from './hooks/useShellAdres.js';
|
|
99
99
|
export { BeladingVerstuurderCard } from "./components/BeladingVerstuurderCard.js";
|
|
100
100
|
export { DocumentkeuzeCard } from "./components/DocumentkeuzeCard.js";
|
|
101
|
+
export * from './lib/extraPlaten.js';
|