@flowselections/logistiek-engine 1.0.29 → 1.0.30
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/LogistiekEnginePage.d.ts.map +1 -1
- package/dist-lib/components/LogistiekEnginePage.js +2 -1
- package/dist-lib/components/WerkwijzeHerindelingCard.d.ts +2 -0
- package/dist-lib/components/WerkwijzeHerindelingCard.d.ts.map +1 -0
- package/dist-lib/components/WerkwijzeHerindelingCard.js +36 -0
- package/dist-lib/hooks/useRuleEngine.d.ts.map +1 -1
- package/dist-lib/hooks/useRuleEngine.js +7 -4
- package/dist-lib/hooks/useWerkwijzeStatus.d.ts +17 -0
- package/dist-lib/hooks/useWerkwijzeStatus.d.ts.map +1 -0
- package/dist-lib/hooks/useWerkwijzeStatus.js +58 -0
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +2 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +154 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +1516 -159
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +154 -0
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +154 -0
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +154 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.functions.d.ts +462 -0
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.server.d.ts +7 -1
- package/dist-lib/lib/floridayDocuments.server.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.server.js +25 -1
- package/dist-lib/lib/floridayPush.functions.d.ts +154 -0
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.server.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.server.js +28 -0
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +14 -0
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +770 -0
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +308 -0
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +154 -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 +2613 -2406
- package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineSchema.js +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# logistiek Engine
|
|
2
|
-
|
|
3
|
-
blank project start
|
|
4
|
-
|
|
5
|
-
This project was built with [Lovable](https://lovable.dev).
|
|
6
|
-
|
|
7
|
-
## Build with Lovable
|
|
8
|
-
|
|
9
|
-
Continue developing this project in the [Lovable editor](https://lovable.dev/projects/316ec9c5-0f01-408a-b7ec-3d4dccf9b65d).
|
|
10
|
-
|
|
11
|
-
- **Ship faster**: describe what you want to build and Lovable handles the code.
|
|
12
|
-
- **Stay in sync**: every change made in Lovable is committed straight to this repository.
|
|
13
|
-
- **Full ownership**: this code is yours. Push to `main` on GitHub and your changes sync back into Lovable, ready for your next prompt.
|
|
14
|
-
|
|
15
|
-
## Development
|
|
16
|
-
|
|
17
|
-
Prefer working locally? You need Node.js and npm — [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
|
|
18
|
-
|
|
19
|
-
```sh
|
|
20
|
-
git clone <this-repository-url>
|
|
21
|
-
cd <repository-name>
|
|
22
|
-
npm i
|
|
23
|
-
npm run dev
|
|
24
|
-
```
|
|
1
|
+
# logistiek Engine
|
|
2
|
+
|
|
3
|
+
blank project start
|
|
4
|
+
|
|
5
|
+
This project was built with [Lovable](https://lovable.dev).
|
|
6
|
+
|
|
7
|
+
## Build with Lovable
|
|
8
|
+
|
|
9
|
+
Continue developing this project in the [Lovable editor](https://lovable.dev/projects/316ec9c5-0f01-408a-b7ec-3d4dccf9b65d).
|
|
10
|
+
|
|
11
|
+
- **Ship faster**: describe what you want to build and Lovable handles the code.
|
|
12
|
+
- **Stay in sync**: every change made in Lovable is committed straight to this repository.
|
|
13
|
+
- **Full ownership**: this code is yours. Push to `main` on GitHub and your changes sync back into Lovable, ready for your next prompt.
|
|
14
|
+
|
|
15
|
+
## Development
|
|
16
|
+
|
|
17
|
+
Prefer working locally? You need Node.js and npm — [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
git clone <this-repository-url>
|
|
21
|
+
cd <repository-name>
|
|
22
|
+
npm i
|
|
23
|
+
npm run dev
|
|
24
|
+
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogistiekEnginePage.d.ts","sourceRoot":"","sources":["../../src/components/LogistiekEnginePage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LogistiekEnginePage.d.ts","sourceRoot":"","sources":["../../src/components/LogistiekEnginePage.tsx"],"names":[],"mappings":"AAsEA,wBAAgB,mBAAmB,gCA+OlC"}
|
|
@@ -10,6 +10,7 @@ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
|
|
|
10
10
|
import { Container, Pencil, Plus, Puzzle, SlidersHorizontal, Trash2, Workflow } from "lucide-react";
|
|
11
11
|
import { Link } from "@tanstack/react-router";
|
|
12
12
|
import { StrategieDialog } from "./StrategieDialog";
|
|
13
|
+
import { WerkwijzeHerindelingCard } from "./WerkwijzeHerindelingCard";
|
|
13
14
|
import { useLogistiekStrategieen, } from "../hooks/useLogistiekStrategieen";
|
|
14
15
|
const SNELKOPPELINGEN = [
|
|
15
16
|
{
|
|
@@ -62,7 +63,7 @@ export function LogistiekEnginePage() {
|
|
|
62
63
|
setEditing(item);
|
|
63
64
|
setDialogOpen(true);
|
|
64
65
|
};
|
|
65
|
-
return (_jsxs("main", { className: "p-6 space-y-6", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Hier bepaal je hoe orders in je bedrijf logistiek worden afgehandeld." }), _jsx("div", { className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-4", children: SNELKOPPELINGEN.map(({ to, icon: Icon, titel, uitleg }) => (_jsx(Link, { to: to, className: "group", children: _jsx(Card, { className: "h-full transition-colors group-hover:border-primary", children: _jsxs(CardHeader, { className: "p-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary", children: _jsx(Icon, { className: "h-4 w-4" }) }), _jsx(CardTitle, { className: "text-sm font-semibold leading-tight", children: titel })] }), _jsx(CardDescription, { className: "pt-1 text-xs leading-relaxed", children: uitleg })] }) }) }, to))) }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsx(CardTitle, { children: "Werkwijzen" }), _jsx(CardDescription, { children: "Alleen een werkwijze die aan staat wordt op je orders toegepast." })] }), _jsxs(Button, { size: "sm", onClick: openNew, children: [_jsx(Plus, { className: "h-4 w-4" }), "Nieuwe werkwijze"] })] }) }), _jsx(CardContent, { children: loading ? (_jsxs("div", { className: "space-y-2", children: [_jsx(Skeleton, { className: "h-8 w-full" }), _jsx(Skeleton, { className: "h-8 w-full" }), _jsx(Skeleton, { className: "h-8 w-full" })] })) : error ? (_jsx("p", { className: "text-sm text-destructive", children: "Kon de gegevens niet ophalen. Probeer het over een moment opnieuw." })) : safeItems.length === 0 ? (_jsxs("div", { className: "space-y-3", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Je hebt nog geen werkwijze ingesteld." }), _jsxs(Button, { variant: "outline", size: "sm", onClick: openNew, children: [_jsx(Plus, { className: "h-4 w-4" }), "Eerste werkwijze aanmaken"] })] })) : (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Naam" }), _jsx(TableHead, { children: "Status" }), _jsx(TableHead, { className: "w-48 text-right", children: "Acties" })] }) }), _jsx(TableBody, { children: safeItems.map((item) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "h-3 w-3 shrink-0 rounded-full border border-border", style: { backgroundColor: item.color ?? "#3b82f6" } }), _jsxs("div", { children: [_jsx("p", { className: "font-medium", children: item.name ?? "—" }), item.description && (_jsx("p", { className: "text-xs text-muted-foreground", children: item.description }))] })] }) }), _jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "radio", name: "actieve-werkwijze", className: "h-4 w-4 accent-primary", checked: !!item.is_active, disabled: saving, onChange: () => kiesWerkwijze(item), "aria-label": `${item.name ?? "Werkwijze"} als actieve werkwijze kiezen` }), _jsx("span", { className: "sr-only", children: "Actief" })] }), _jsx(Badge, { variant: item.is_active ? "default" : "secondary", children: item.is_active ? "Actief" : "Uit" }), item.is_active && (_jsx(Button, { size: "sm", variant: "ghost", disabled: saving, onClick: () => void clearActive(), children: "Uitzetten" }))] }) }), _jsx(TableCell, { className: "text-right", children: _jsxs("div", { className: "flex justify-end gap-1", children: [_jsx(Button, { size: "sm", variant: "outline", asChild: true, children: _jsxs(Link, { to: "/logistiek-engine/rule-engine", search: { strategy: String(item.id), naam: item.name ?? "" }, children: [_jsx(SlidersHorizontal, { className: "h-4 w-4" }), "Instellen"] }) }), _jsx(Button, { size: "icon", variant: "ghost", onClick: () => openEdit(item), "aria-label": "Bewerken", children: _jsx(Pencil, { className: "h-4 w-4" }) }), _jsx(Button, { size: "icon", variant: "ghost", onClick: () => setDeleting(item), "aria-label": "Verwijderen", children: _jsx(Trash2, { className: "h-4 w-4" }) })] }) })] }, String(item.id)))) })] })) })] }), _jsx(StrategieDialog, { open: dialogOpen, onOpenChange: setDialogOpen, strategie: editing, saving: saving, onSubmit: (input) => (editing ? update(editing.id, input) : create(input)) }), _jsx(AlertDialog, { open: !!deleting, onOpenChange: (open) => !open && setDeleting(null), children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Werkwijze verwijderen?" }), _jsxs(AlertDialogDescription, { children: ["\"", deleting?.name, "\" wordt definitief verwijderd. Dit kan niet ongedaan worden gemaakt."] })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Annuleren" }), _jsx(AlertDialogAction, { onClick: async () => {
|
|
66
|
+
return (_jsxs("main", { className: "p-6 space-y-6", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Hier bepaal je hoe orders in je bedrijf logistiek worden afgehandeld." }), _jsx("div", { className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-4", children: SNELKOPPELINGEN.map(({ to, icon: Icon, titel, uitleg }) => (_jsx(Link, { to: to, className: "group", children: _jsx(Card, { className: "h-full transition-colors group-hover:border-primary", children: _jsxs(CardHeader, { className: "p-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary", children: _jsx(Icon, { className: "h-4 w-4" }) }), _jsx(CardTitle, { className: "text-sm font-semibold leading-tight", children: titel })] }), _jsx(CardDescription, { className: "pt-1 text-xs leading-relaxed", children: uitleg })] }) }) }, to))) }), _jsx(WerkwijzeHerindelingCard, {}), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsx(CardTitle, { children: "Werkwijzen" }), _jsx(CardDescription, { children: "Alleen een werkwijze die aan staat wordt op je orders toegepast." })] }), _jsxs(Button, { size: "sm", onClick: openNew, children: [_jsx(Plus, { className: "h-4 w-4" }), "Nieuwe werkwijze"] })] }) }), _jsx(CardContent, { children: loading ? (_jsxs("div", { className: "space-y-2", children: [_jsx(Skeleton, { className: "h-8 w-full" }), _jsx(Skeleton, { className: "h-8 w-full" }), _jsx(Skeleton, { className: "h-8 w-full" })] })) : error ? (_jsx("p", { className: "text-sm text-destructive", children: "Kon de gegevens niet ophalen. Probeer het over een moment opnieuw." })) : safeItems.length === 0 ? (_jsxs("div", { className: "space-y-3", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Je hebt nog geen werkwijze ingesteld." }), _jsxs(Button, { variant: "outline", size: "sm", onClick: openNew, children: [_jsx(Plus, { className: "h-4 w-4" }), "Eerste werkwijze aanmaken"] })] })) : (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Naam" }), _jsx(TableHead, { children: "Status" }), _jsx(TableHead, { className: "w-48 text-right", children: "Acties" })] }) }), _jsx(TableBody, { children: safeItems.map((item) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "h-3 w-3 shrink-0 rounded-full border border-border", style: { backgroundColor: item.color ?? "#3b82f6" } }), _jsxs("div", { children: [_jsx("p", { className: "font-medium", children: item.name ?? "—" }), item.description && (_jsx("p", { className: "text-xs text-muted-foreground", children: item.description }))] })] }) }), _jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "radio", name: "actieve-werkwijze", className: "h-4 w-4 accent-primary", checked: !!item.is_active, disabled: saving, onChange: () => kiesWerkwijze(item), "aria-label": `${item.name ?? "Werkwijze"} als actieve werkwijze kiezen` }), _jsx("span", { className: "sr-only", children: "Actief" })] }), _jsx(Badge, { variant: item.is_active ? "default" : "secondary", children: item.is_active ? "Actief" : "Uit" }), item.is_active && (_jsx(Button, { size: "sm", variant: "ghost", disabled: saving, onClick: () => void clearActive(), children: "Uitzetten" }))] }) }), _jsx(TableCell, { className: "text-right", children: _jsxs("div", { className: "flex justify-end gap-1", children: [_jsx(Button, { size: "sm", variant: "outline", asChild: true, children: _jsxs(Link, { to: "/logistiek-engine/rule-engine", search: { strategy: String(item.id), naam: item.name ?? "" }, children: [_jsx(SlidersHorizontal, { className: "h-4 w-4" }), "Instellen"] }) }), _jsx(Button, { size: "icon", variant: "ghost", onClick: () => openEdit(item), "aria-label": "Bewerken", children: _jsx(Pencil, { className: "h-4 w-4" }) }), _jsx(Button, { size: "icon", variant: "ghost", onClick: () => setDeleting(item), "aria-label": "Verwijderen", children: _jsx(Trash2, { className: "h-4 w-4" }) })] }) })] }, String(item.id)))) })] })) })] }), _jsx(StrategieDialog, { open: dialogOpen, onOpenChange: setDialogOpen, strategie: editing, saving: saving, onSubmit: (input) => (editing ? update(editing.id, input) : create(input)) }), _jsx(AlertDialog, { open: !!deleting, onOpenChange: (open) => !open && setDeleting(null), children: _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Werkwijze verwijderen?" }), _jsxs(AlertDialogDescription, { children: ["\"", deleting?.name, "\" wordt definitief verwijderd. Dit kan niet ongedaan worden gemaakt."] })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Annuleren" }), _jsx(AlertDialogAction, { onClick: async () => {
|
|
66
67
|
if (deleting)
|
|
67
68
|
await remove(deleting.id);
|
|
68
69
|
setDeleting(null);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WerkwijzeHerindelingCard.d.ts","sourceRoot":"","sources":["../../src/components/WerkwijzeHerindelingCard.tsx"],"names":[],"mappings":"AA4BA,wBAAgB,wBAAwB,gCAoGvC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// src/components/WerkwijzeHerindelingCard.tsx — welke methode geldt er echt?
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Toont de methode van de actieve werkwijze, hoeveel karren nog volgens een
|
|
6
|
+
// oudere methode zijn berekend en de stand van de verwerking. Alles komt uit de
|
|
7
|
+
// Engine-functies; hier wordt niets zelf berekend.
|
|
8
|
+
// GEEN <Header /> hier — die levert de shell.
|
|
9
|
+
// ============================================================================
|
|
10
|
+
import { useState } from "react";
|
|
11
|
+
import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Skeleton, } from "@flowselections/core";
|
|
12
|
+
import { RefreshCw, RotateCcw, Ruler, Boxes } from "lucide-react";
|
|
13
|
+
import { useWerkwijzeStatus } from "../hooks/useWerkwijzeStatus";
|
|
14
|
+
const METHODE_LABEL = {
|
|
15
|
+
belading: "Indelen op basis van belading",
|
|
16
|
+
afmetingen: "Indelen op basis van afmetingen",
|
|
17
|
+
};
|
|
18
|
+
export function WerkwijzeHerindelingCard() {
|
|
19
|
+
const { status, loading, busy, error, refresh, herindelen } = useWerkwijzeStatus();
|
|
20
|
+
const [melding, setMelding] = useState(null);
|
|
21
|
+
const wachtrij = status?.wachtrij ?? {};
|
|
22
|
+
const pending = Number(wachtrij["pending"] ?? 0);
|
|
23
|
+
const blocked = Number(wachtrij["geblokkeerd"] ?? 0);
|
|
24
|
+
const opnieuw = async () => {
|
|
25
|
+
try {
|
|
26
|
+
const n = await herindelen();
|
|
27
|
+
setMelding(n === 0
|
|
28
|
+
? "Er stonden geen orders open om opnieuw in te delen."
|
|
29
|
+
: `${n} order(s) opnieuw aangemeld. De indeling wordt op de achtergrond bijgewerkt.`);
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
setMelding(e?.message ? String(e.message) : "Opnieuw indelen is niet gelukt.");
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
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: [status?.methode === "afmetingen" ? (_jsx(Ruler, { className: "h-4 w-4" })) : (_jsx(Boxes, { className: "h-4 w-4" })), "Werkwijze en herindeling"] }), _jsx(CardDescription, { children: "Zo worden karren op dit moment samengesteld. Verandert de methode, dan worden alle openstaande orders automatisch opnieuw ingedeeld." })] }), _jsxs("div", { className: "flex gap-2", children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: () => void refresh(), disabled: loading, children: [_jsx(RefreshCw, { className: "h-4 w-4" }), "Verversen"] }), _jsxs(Button, { size: "sm", onClick: () => void opnieuw(), disabled: busy, children: [_jsx(RotateCcw, { className: "h-4 w-4" }), "Alles opnieuw indelen"] })] })] }), _jsx(CardContent, { className: "space-y-3", children: loading ? (_jsx(Skeleton, { className: "h-16 w-full" })) : error ? (_jsx("p", { className: "text-sm text-destructive", children: error })) : status ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Badge, { children: METHODE_LABEL[status.methode] ?? status.methode }), status.actieveWerkwijze ? (_jsxs("span", { className: "text-sm text-muted-foreground", children: ["volgens werkwijze \u201C", status.actieveWerkwijze, "\u201D"] })) : (_jsx("span", { className: "text-sm text-muted-foreground", children: "Er staat geen werkwijze aan; er wordt op belading ingedeeld." }))] }), _jsxs("div", { className: "grid gap-3 sm:grid-cols-3", children: [_jsxs("div", { className: "rounded-md border p-3", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "Karren volgens deze methode" }), _jsx("p", { className: "text-lg font-semibold", children: status.karrenVolgensMethode })] }), _jsxs("div", { className: "rounded-md border p-3", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "Karren van een oudere methode" }), _jsx("p", { className: "text-lg font-semibold", children: status.karrenOudeMethode })] }), _jsxs("div", { className: "rounded-md border p-3", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "Wacht op indelen" }), _jsx("p", { className: "text-lg font-semibold", children: pending }), blocked > 0 ? (_jsxs("p", { className: "text-xs text-destructive", children: [blocked, " geblokkeerd"] })) : null] })] }), status.karrenOudeMethode > 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Deze karren zijn nog met een eerdere methode berekend. Ze worden vervangen zodra de order opnieuw is ingedeeld; al geprinte of gecontroleerde karren blijven staan." })) : null, melding ? _jsx("p", { className: "text-sm", children: melding }) : null] })) : null })] }));
|
|
36
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRuleEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/useRuleEngine.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAiBD,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;;;;;;;;;yBAwF3C,MAAM,gBAAgB,MAAM;8BA2BE,MAAM,YAAY,kBAAkB;yBAUhE,UAAU,YAAY;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;+BA4CtD,MAAM;
|
|
1
|
+
{"version":3,"file":"useRuleEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/useRuleEngine.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEtG,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAiBD,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB;;;;;;;;;yBAwF3C,MAAM,gBAAgB,MAAM;8BA2BE,MAAM,YAAY,kBAAkB;yBAUhE,UAAU,YAAY;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;+BA4CtD,MAAM;8BAmCP,WAAW;6BAYqB,MAAM;;EA4BzD"}
|
|
@@ -164,10 +164,13 @@ export function useRuleEngine(options) {
|
|
|
164
164
|
}
|
|
165
165
|
}, [loadVersions]);
|
|
166
166
|
const activateConfig = useCallback(async (configId) => {
|
|
167
|
-
//
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
// Er mag in de hele module maar één werkwijze actief zijn: anders leest de
|
|
168
|
+
// planner een andere werkwijze dan het scherm toont.
|
|
169
|
+
const { error: resetError } = await db()
|
|
170
|
+
.from("logistics_rule_configs")
|
|
171
|
+
.update({ is_active: false })
|
|
172
|
+
.neq("id", configId)
|
|
173
|
+
.eq("is_active", true);
|
|
171
174
|
if (resetError) {
|
|
172
175
|
toast.error("Activeren mislukt");
|
|
173
176
|
return;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface WerkwijzeStatus {
|
|
2
|
+
methode: "belading" | "afmetingen";
|
|
3
|
+
actieveWerkwijze: string | null;
|
|
4
|
+
actieveWerkwijzeId: string | null;
|
|
5
|
+
karrenVolgensMethode: number;
|
|
6
|
+
karrenOudeMethode: number;
|
|
7
|
+
wachtrij: Record<string, number>;
|
|
8
|
+
}
|
|
9
|
+
export declare function useWerkwijzeStatus(): {
|
|
10
|
+
status: WerkwijzeStatus | null;
|
|
11
|
+
loading: boolean;
|
|
12
|
+
busy: boolean;
|
|
13
|
+
error: string | null;
|
|
14
|
+
refresh: () => Promise<void>;
|
|
15
|
+
herindelen: () => Promise<number>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=useWerkwijzeStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWerkwijzeStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useWerkwijzeStatus.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAgB,kBAAkB;;;;;;sBAiCS,OAAO,CAAC,MAAM,CAAC;EAezD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/hooks/useWerkwijzeStatus.ts — welke indelingsmethode geldt er echt?
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// De Engine is de enige bron: alles komt uit public.logistics_layout_method_status
|
|
5
|
+
// en public.logistics_replan_all. Hier wordt niets zelf berekend.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { useCallback, useEffect, useState } from "react";
|
|
8
|
+
import { supabase } from "../integrations/supabase/moduleClient";
|
|
9
|
+
export function useWerkwijzeStatus() {
|
|
10
|
+
const [status, setStatus] = useState(null);
|
|
11
|
+
const [loading, setLoading] = useState(true);
|
|
12
|
+
const [busy, setBusy] = useState(false);
|
|
13
|
+
const [error, setError] = useState(null);
|
|
14
|
+
const load = useCallback(async () => {
|
|
15
|
+
setLoading(true);
|
|
16
|
+
setError(null);
|
|
17
|
+
try {
|
|
18
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_layout_method_status");
|
|
19
|
+
if (rpcError)
|
|
20
|
+
throw rpcError;
|
|
21
|
+
const raw = (data ?? {});
|
|
22
|
+
setStatus({
|
|
23
|
+
methode: raw["methode"] === "afmetingen" ? "afmetingen" : "belading",
|
|
24
|
+
actieveWerkwijze: raw["actieveWerkwijze"] ?? null,
|
|
25
|
+
actieveWerkwijzeId: raw["actieveWerkwijzeId"] ?? null,
|
|
26
|
+
karrenVolgensMethode: Number(raw["karrenVolgensMethode"] ?? 0),
|
|
27
|
+
karrenOudeMethode: Number(raw["karrenOudeMethode"] ?? 0),
|
|
28
|
+
wachtrij: raw["wachtrij"] ?? {},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
setError(e?.message ? String(e.message) : "Status kon niet worden opgehaald.");
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
setLoading(false);
|
|
36
|
+
}
|
|
37
|
+
}, []);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
void load();
|
|
40
|
+
}, [load]);
|
|
41
|
+
/** Alle open orders opnieuw laten indelen volgens de actieve methode. */
|
|
42
|
+
const herindelen = useCallback(async () => {
|
|
43
|
+
setBusy(true);
|
|
44
|
+
try {
|
|
45
|
+
const { data, error: rpcError } = await supabase.rpc("logistics_replan_all", {
|
|
46
|
+
p_reason: "handmatig_herindelen",
|
|
47
|
+
});
|
|
48
|
+
if (rpcError)
|
|
49
|
+
throw rpcError;
|
|
50
|
+
await load();
|
|
51
|
+
return Number(data?.aangemeld ?? 0);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
setBusy(false);
|
|
55
|
+
}
|
|
56
|
+
}, [load]);
|
|
57
|
+
return { status, loading, busy, error, refresh: load, herindelen };
|
|
58
|
+
}
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export { ConsistentieCard } from './components/ConsistentieCard';
|
|
|
13
13
|
export { KarplanStatusCard } from './components/KarplanStatusCard';
|
|
14
14
|
export { GeblokkeerdeOrdersCard } from './components/GeblokkeerdeOrdersCard';
|
|
15
15
|
export { AfmetingenBronnenCard } from './components/AfmetingenBronnenCard';
|
|
16
|
+
export { WerkwijzeHerindelingCard } from './components/WerkwijzeHerindelingCard';
|
|
17
|
+
export * from './hooks/useWerkwijzeStatus';
|
|
16
18
|
export * from './hooks/usePrintjobs';
|
|
17
19
|
export * from './components/VertragingMeldingenCard';
|
|
18
20
|
export * from './components/CapaciteitMeldingenCard';
|
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,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,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,cAAc,sBAAsB,CAAC;
|
|
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,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,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AAGrC,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,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,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;AAMpD,eAAO,MAAM,qBAAqB,EAAE,UAcnC,CAAC"}
|
package/dist-lib/index.js
CHANGED
|
@@ -16,6 +16,8 @@ export { ConsistentieCard } from './components/ConsistentieCard';
|
|
|
16
16
|
export { KarplanStatusCard } from './components/KarplanStatusCard';
|
|
17
17
|
export { GeblokkeerdeOrdersCard } from './components/GeblokkeerdeOrdersCard';
|
|
18
18
|
export { AfmetingenBronnenCard } from './components/AfmetingenBronnenCard';
|
|
19
|
+
export { WerkwijzeHerindelingCard } from './components/WerkwijzeHerindelingCard';
|
|
20
|
+
export * from './hooks/useWerkwijzeStatus';
|
|
19
21
|
export * from './hooks/usePrintjobs';
|
|
20
22
|
export * from './components/VertragingMeldingenCard';
|
|
21
23
|
export * from './components/CapaciteitMeldingenCard';
|
|
@@ -2155,6 +2155,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2155
2155
|
created_at: string;
|
|
2156
2156
|
currency: string;
|
|
2157
2157
|
distribute_over: string | null;
|
|
2158
|
+
external_id: string | null;
|
|
2159
|
+
external_synced_at: string | null;
|
|
2158
2160
|
group_type: string;
|
|
2159
2161
|
handling_fee: number | null;
|
|
2160
2162
|
id: string;
|
|
@@ -2167,6 +2169,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2167
2169
|
rounding: string;
|
|
2168
2170
|
rounding_step: number;
|
|
2169
2171
|
sort_order: number;
|
|
2172
|
+
source: string;
|
|
2170
2173
|
unit: string;
|
|
2171
2174
|
updated_at: string;
|
|
2172
2175
|
};
|
|
@@ -2177,6 +2180,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2177
2180
|
created_at?: string;
|
|
2178
2181
|
currency?: string;
|
|
2179
2182
|
distribute_over?: string | null;
|
|
2183
|
+
external_id?: string | null;
|
|
2184
|
+
external_synced_at?: string | null;
|
|
2180
2185
|
group_type?: string;
|
|
2181
2186
|
handling_fee?: number | null;
|
|
2182
2187
|
id?: string;
|
|
@@ -2189,6 +2194,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2189
2194
|
rounding?: string;
|
|
2190
2195
|
rounding_step?: number;
|
|
2191
2196
|
sort_order?: number;
|
|
2197
|
+
source?: string;
|
|
2192
2198
|
unit?: string;
|
|
2193
2199
|
updated_at?: string;
|
|
2194
2200
|
};
|
|
@@ -2199,6 +2205,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2199
2205
|
created_at?: string;
|
|
2200
2206
|
currency?: string;
|
|
2201
2207
|
distribute_over?: string | null;
|
|
2208
|
+
external_id?: string | null;
|
|
2209
|
+
external_synced_at?: string | null;
|
|
2202
2210
|
group_type?: string;
|
|
2203
2211
|
handling_fee?: number | null;
|
|
2204
2212
|
id?: string;
|
|
@@ -2211,6 +2219,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
2211
2219
|
rounding?: string;
|
|
2212
2220
|
rounding_step?: number;
|
|
2213
2221
|
sort_order?: number;
|
|
2222
|
+
source?: string;
|
|
2214
2223
|
unit?: string;
|
|
2215
2224
|
updated_at?: string;
|
|
2216
2225
|
};
|
|
@@ -9074,6 +9083,30 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
9074
9083
|
referencedColumns: ["id"];
|
|
9075
9084
|
}];
|
|
9076
9085
|
};
|
|
9086
|
+
job_locks: {
|
|
9087
|
+
Row: {
|
|
9088
|
+
created_at: string;
|
|
9089
|
+
lock_key: string;
|
|
9090
|
+
locked_until: string;
|
|
9091
|
+
owner: string | null;
|
|
9092
|
+
updated_at: string;
|
|
9093
|
+
};
|
|
9094
|
+
Insert: {
|
|
9095
|
+
created_at?: string;
|
|
9096
|
+
lock_key: string;
|
|
9097
|
+
locked_until: string;
|
|
9098
|
+
owner?: string | null;
|
|
9099
|
+
updated_at?: string;
|
|
9100
|
+
};
|
|
9101
|
+
Update: {
|
|
9102
|
+
created_at?: string;
|
|
9103
|
+
lock_key?: string;
|
|
9104
|
+
locked_until?: string;
|
|
9105
|
+
owner?: string | null;
|
|
9106
|
+
updated_at?: string;
|
|
9107
|
+
};
|
|
9108
|
+
Relationships: [];
|
|
9109
|
+
};
|
|
9077
9110
|
layout_logos: {
|
|
9078
9111
|
Row: {
|
|
9079
9112
|
bestand_url: string;
|
|
@@ -13619,6 +13652,27 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
13619
13652
|
};
|
|
13620
13653
|
Relationships: [];
|
|
13621
13654
|
};
|
|
13655
|
+
pick_buffer_event_cursor: {
|
|
13656
|
+
Row: {
|
|
13657
|
+
created_at: string;
|
|
13658
|
+
id: boolean;
|
|
13659
|
+
last_event_at: string;
|
|
13660
|
+
updated_at: string;
|
|
13661
|
+
};
|
|
13662
|
+
Insert: {
|
|
13663
|
+
created_at?: string;
|
|
13664
|
+
id?: boolean;
|
|
13665
|
+
last_event_at?: string;
|
|
13666
|
+
updated_at?: string;
|
|
13667
|
+
};
|
|
13668
|
+
Update: {
|
|
13669
|
+
created_at?: string;
|
|
13670
|
+
id?: boolean;
|
|
13671
|
+
last_event_at?: string;
|
|
13672
|
+
updated_at?: string;
|
|
13673
|
+
};
|
|
13674
|
+
Relationships: [];
|
|
13675
|
+
};
|
|
13622
13676
|
pick_countries: {
|
|
13623
13677
|
Row: {
|
|
13624
13678
|
active: boolean;
|
|
@@ -22135,6 +22189,17 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
22135
22189
|
};
|
|
22136
22190
|
Returns: boolean;
|
|
22137
22191
|
};
|
|
22192
|
+
floriday_adopt_connection: {
|
|
22193
|
+
Args: {
|
|
22194
|
+
p_new: string;
|
|
22195
|
+
p_old: string;
|
|
22196
|
+
};
|
|
22197
|
+
Returns: import("./types").Json;
|
|
22198
|
+
};
|
|
22199
|
+
floriday_autoheal_connections: {
|
|
22200
|
+
Args: never;
|
|
22201
|
+
Returns: import("./types").Json;
|
|
22202
|
+
};
|
|
22138
22203
|
floriday_capture_stock_snapshot: {
|
|
22139
22204
|
Args: never;
|
|
22140
22205
|
Returns: number;
|
|
@@ -22192,6 +22257,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
22192
22257
|
};
|
|
22193
22258
|
Returns: undefined;
|
|
22194
22259
|
};
|
|
22260
|
+
floriday_relink_products: {
|
|
22261
|
+
Args: {
|
|
22262
|
+
p_connection_id?: string;
|
|
22263
|
+
};
|
|
22264
|
+
Returns: import("./types").Json;
|
|
22265
|
+
};
|
|
22195
22266
|
floriday_requeue_dead_letters: {
|
|
22196
22267
|
Args: {
|
|
22197
22268
|
p_connection_id?: string;
|
|
@@ -22813,6 +22884,10 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
22813
22884
|
};
|
|
22814
22885
|
Returns: string;
|
|
22815
22886
|
};
|
|
22887
|
+
logistics_active_layout_method: {
|
|
22888
|
+
Args: never;
|
|
22889
|
+
Returns: string;
|
|
22890
|
+
};
|
|
22816
22891
|
logistics_active_pick_workdays: {
|
|
22817
22892
|
Args: never;
|
|
22818
22893
|
Returns: string[];
|
|
@@ -22902,6 +22977,39 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
22902
22977
|
};
|
|
22903
22978
|
Returns: import("./types").Json;
|
|
22904
22979
|
};
|
|
22980
|
+
logistics_buffer_detach_late_orders: {
|
|
22981
|
+
Args: {
|
|
22982
|
+
p_buffer?: string;
|
|
22983
|
+
};
|
|
22984
|
+
Returns: import("./types").Json;
|
|
22985
|
+
};
|
|
22986
|
+
logistics_buffer_frozen_order: {
|
|
22987
|
+
Args: {
|
|
22988
|
+
p_order_id: string;
|
|
22989
|
+
};
|
|
22990
|
+
Returns: boolean;
|
|
22991
|
+
};
|
|
22992
|
+
logistics_buffer_handled: {
|
|
22993
|
+
Args: {
|
|
22994
|
+
p_buffer: string;
|
|
22995
|
+
};
|
|
22996
|
+
Returns: boolean;
|
|
22997
|
+
};
|
|
22998
|
+
logistics_buffer_notify: {
|
|
22999
|
+
Args: {
|
|
23000
|
+
p_event_type: string;
|
|
23001
|
+
p_idempotency_key: string;
|
|
23002
|
+
p_order_ref: string;
|
|
23003
|
+
p_payload: import("./types").Json;
|
|
23004
|
+
};
|
|
23005
|
+
Returns: string;
|
|
23006
|
+
};
|
|
23007
|
+
logistics_buffer_open_key: {
|
|
23008
|
+
Args: {
|
|
23009
|
+
p_base_key: string;
|
|
23010
|
+
};
|
|
23011
|
+
Returns: string;
|
|
23012
|
+
};
|
|
22905
23013
|
logistics_buffer_simulate: {
|
|
22906
23014
|
Args: {
|
|
22907
23015
|
p_orders?: import("./types").Json;
|
|
@@ -23543,6 +23651,16 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
23543
23651
|
};
|
|
23544
23652
|
Returns: boolean;
|
|
23545
23653
|
};
|
|
23654
|
+
logistics_layout_method_status: {
|
|
23655
|
+
Args: never;
|
|
23656
|
+
Returns: import("./types").Json;
|
|
23657
|
+
};
|
|
23658
|
+
logistics_link_order_items: {
|
|
23659
|
+
Args: {
|
|
23660
|
+
p_order?: string;
|
|
23661
|
+
};
|
|
23662
|
+
Returns: import("./types").Json;
|
|
23663
|
+
};
|
|
23546
23664
|
logistics_live_carriers: {
|
|
23547
23665
|
Args: {
|
|
23548
23666
|
p_order_ref: string;
|
|
@@ -23569,6 +23687,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
23569
23687
|
};
|
|
23570
23688
|
Returns: string;
|
|
23571
23689
|
};
|
|
23690
|
+
logistics_normalize_product_label: {
|
|
23691
|
+
Args: {
|
|
23692
|
+
p_label: string;
|
|
23693
|
+
};
|
|
23694
|
+
Returns: string;
|
|
23695
|
+
};
|
|
23572
23696
|
logistics_not_past: {
|
|
23573
23697
|
Args: {
|
|
23574
23698
|
p_ts: string;
|
|
@@ -23816,6 +23940,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
23816
23940
|
};
|
|
23817
23941
|
Returns: import("./types").Json;
|
|
23818
23942
|
};
|
|
23943
|
+
logistics_replan_all: {
|
|
23944
|
+
Args: {
|
|
23945
|
+
p_reason?: string;
|
|
23946
|
+
};
|
|
23947
|
+
Returns: import("./types").Json;
|
|
23948
|
+
};
|
|
23819
23949
|
logistics_report_delay: {
|
|
23820
23950
|
Args: {
|
|
23821
23951
|
p_expected_date?: string;
|
|
@@ -23869,6 +23999,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
23869
23999
|
};
|
|
23870
24000
|
Returns: import("./types").Json;
|
|
23871
24001
|
};
|
|
24002
|
+
logistics_resolve_product_id: {
|
|
24003
|
+
Args: {
|
|
24004
|
+
p_label: string;
|
|
24005
|
+
};
|
|
24006
|
+
Returns: string;
|
|
24007
|
+
};
|
|
23872
24008
|
logistics_resolve_settings: {
|
|
23873
24009
|
Args: {
|
|
23874
24010
|
p_config_id: string;
|
|
@@ -24186,6 +24322,10 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
24186
24322
|
online: boolean;
|
|
24187
24323
|
}[];
|
|
24188
24324
|
};
|
|
24325
|
+
pick_apply_buffer_events: {
|
|
24326
|
+
Args: never;
|
|
24327
|
+
Returns: import("./types").Json;
|
|
24328
|
+
};
|
|
24189
24329
|
pick_available_pick_days: {
|
|
24190
24330
|
Args: {
|
|
24191
24331
|
_max_days?: number;
|
|
@@ -25113,6 +25253,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
25113
25253
|
};
|
|
25114
25254
|
Returns: boolean;
|
|
25115
25255
|
};
|
|
25256
|
+
release_job_lock: {
|
|
25257
|
+
Args: {
|
|
25258
|
+
_key: string;
|
|
25259
|
+
};
|
|
25260
|
+
Returns: undefined;
|
|
25261
|
+
};
|
|
25116
25262
|
release_local_pdf_job: {
|
|
25117
25263
|
Args: {
|
|
25118
25264
|
_job_id: string;
|
|
@@ -25801,6 +25947,14 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
|
|
|
25801
25947
|
row_count: number;
|
|
25802
25948
|
}[];
|
|
25803
25949
|
};
|
|
25950
|
+
try_acquire_job_lock: {
|
|
25951
|
+
Args: {
|
|
25952
|
+
_key: string;
|
|
25953
|
+
_owner?: string;
|
|
25954
|
+
_seconds?: number;
|
|
25955
|
+
};
|
|
25956
|
+
Returns: boolean;
|
|
25957
|
+
};
|
|
25804
25958
|
try_debtor_lock: {
|
|
25805
25959
|
Args: {
|
|
25806
25960
|
_group_key: string;
|