@flowselections/layout-maker 1.58.1 → 1.59.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/components/ComputersLijst.d.ts +1 -0
- package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
- package/dist-lib/components/ComputersLijst.js +9 -5
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +8 -5
- package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekDetailPage.js +4 -2
- package/dist-lib/components/PrintplekkenPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekkenPage.js +10 -2
- package/dist-lib/components/TestprintDialog.d.ts.map +1 -1
- package/dist-lib/components/TestprintDialog.js +5 -1
- package/dist-lib/components/WerkplekkenTab.d.ts.map +1 -1
- package/dist-lib/components/WerkplekkenTab.js +4 -3
- package/dist-lib/integrations/supabase/types.d.ts +108 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.js +26 -3
- package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
- package/dist-lib/lib/pakbonHtml.js +6 -1
- package/dist-lib/lib/printQueue.server.d.ts +6 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +25 -2
- package/dist-lib/lib/printRoutering.d.ts +3 -1
- package/dist-lib/lib/printRoutering.d.ts.map +1 -1
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/printService.functions.js +3 -1
- package/dist-lib/lib/printnodeStatus.d.ts.map +1 -1
- package/dist-lib/lib/printnodeStatus.js +4 -0
- package/dist-lib/lib/printnodeWebhook.d.ts +2 -0
- package/dist-lib/lib/printnodeWebhook.d.ts.map +1 -1
- package/dist-lib/lib/printnodeWebhook.js +31 -1
- package/dist-lib/lib/printnodeWebhookBeheer.server.d.ts +2 -0
- package/dist-lib/lib/printnodeWebhookBeheer.server.d.ts.map +1 -1
- package/dist-lib/lib/printnodeWebhookBeheer.server.js +12 -2
- package/dist-lib/lib/productiebonHtml.d.ts.map +1 -1
- package/dist-lib/lib/productiebonHtml.js +7 -1
- package/dist-lib/lib/testprint.d.ts +5 -1
- package/dist-lib/lib/testprint.d.ts.map +1 -1
- package/dist-lib/lib/testprint.js +55 -11
- package/dist-lib/lib/waaromPrinter.d.ts +2 -0
- package/dist-lib/lib/waaromPrinter.d.ts.map +1 -1
- package/dist-lib/lib/waaromPrinter.js +13 -0
- package/package.json +4 -4
|
@@ -9,6 +9,7 @@ export declare function useComputers(): {
|
|
|
9
9
|
computers: ComputerModel[];
|
|
10
10
|
loading: boolean;
|
|
11
11
|
fout: string | null;
|
|
12
|
+
gecontroleerd: Date | null;
|
|
12
13
|
reload: (stil?: boolean) => Promise<void>;
|
|
13
14
|
};
|
|
14
15
|
export declare function ComputersLijst({ computers, loading, fout, onVernieuw, onPrintersToevoegen, toevoegenOpen, onToevoegenOpenChange, alleenDialog, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComputersLijst.d.ts","sourceRoot":"","sources":["../../src/components/ComputersLijst.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY
|
|
1
|
+
{"version":3,"file":"ComputersLijst.d.ts","sourceRoot":"","sources":["../../src/components/ComputersLijst.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,YAAY;;;;;;EAuD3B;AAED,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,OAAO,EACP,IAAI,EACJ,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,YAAoB,GACrB,EAAE;IACD,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,+BA0IA"}
|
|
@@ -13,6 +13,7 @@ export function useComputers() {
|
|
|
13
13
|
const [computers, setComputers] = useState([]);
|
|
14
14
|
const [loading, setLoading] = useState(true);
|
|
15
15
|
const [fout, setFout] = useState(null);
|
|
16
|
+
const [gecontroleerd, setGecontroleerd] = useState(null);
|
|
16
17
|
const load = useCallback(async (stil = false) => {
|
|
17
18
|
if (!stil)
|
|
18
19
|
setLoading(true);
|
|
@@ -26,8 +27,13 @@ export function useComputers() {
|
|
|
26
27
|
const printers = p.ok && Array.isArray(p.printers) ? p.printers : [];
|
|
27
28
|
const genegeerd = new Set((Array.isArray(g) ? g : []).map((x) => x.computer_naam));
|
|
28
29
|
const lijst = (c.ok && Array.isArray(c.computers) ? c.computers : []).filter((comp) => !genegeerd.has(comp.naam));
|
|
29
|
-
if (!c.ok)
|
|
30
|
-
|
|
30
|
+
if (!c.ok) {
|
|
31
|
+
// PrintNode niet bereikbaar: vorige status laten staan en de reden tonen,
|
|
32
|
+
// in plaats van alle computers als "niet aangemeld" te tonen.
|
|
33
|
+
setFout(c.fout ?? "PrintNode gaf geen computerlijst terug.");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
setGecontroleerd(new Date());
|
|
31
37
|
setComputers(lijst.map((comp) => ({
|
|
32
38
|
id: String(comp.id),
|
|
33
39
|
naam: comp.naam,
|
|
@@ -40,8 +46,6 @@ export function useComputers() {
|
|
|
40
46
|
setFout(/401|unauthorized|authorization/i.test(melding)
|
|
41
47
|
? "Je sessie is verlopen. Log opnieuw in en probeer het nog eens."
|
|
42
48
|
: "Er kon geen verbinding worden gemaakt met de printdienst.");
|
|
43
|
-
if (!stil)
|
|
44
|
-
setComputers([]);
|
|
45
49
|
}
|
|
46
50
|
finally {
|
|
47
51
|
setLoading(false);
|
|
@@ -50,7 +54,7 @@ export function useComputers() {
|
|
|
50
54
|
useEffect(() => {
|
|
51
55
|
void load();
|
|
52
56
|
}, [load]);
|
|
53
|
-
return { computers, loading, fout, reload: load };
|
|
57
|
+
return { computers, loading, fout, gecontroleerd, reload: load };
|
|
54
58
|
}
|
|
55
59
|
export function ComputersLijst({ computers, loading, fout, onVernieuw, onPrintersToevoegen, toevoegenOpen, onToevoegenOpenChange, alleenDialog = false, }) {
|
|
56
60
|
const [wachtOp, setWachtOp] = useState([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrintQueuePage.d.ts","sourceRoot":"","sources":["../../src/components/PrintQueuePage.tsx"],"names":[],"mappings":"AAoFA,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"PrintQueuePage.d.ts","sourceRoot":"","sources":["../../src/components/PrintQueuePage.tsx"],"names":[],"mappings":"AAoFA,wBAAgB,cAAc,gCA4Z7B"}
|
|
@@ -78,15 +78,18 @@ export function PrintQueuePage() {
|
|
|
78
78
|
return true;
|
|
79
79
|
});
|
|
80
80
|
// Echte tellingen over alle opdrachten (de lijst toont alleen de laatste 200).
|
|
81
|
-
const [tellingen, setTellingen] = useState(
|
|
81
|
+
const [tellingen, setTellingen] = useState(null);
|
|
82
|
+
const [tellingFout, setTellingFout] = useState(null);
|
|
82
83
|
const herlaadTellingen = async () => {
|
|
83
84
|
try {
|
|
84
85
|
const t = await printTellingen();
|
|
85
|
-
if (t && typeof t === "object")
|
|
86
|
+
if (t && typeof t === "object") {
|
|
86
87
|
setTellingen(t);
|
|
88
|
+
setTellingFout(null);
|
|
89
|
+
}
|
|
87
90
|
}
|
|
88
|
-
catch {
|
|
89
|
-
|
|
91
|
+
catch (e) {
|
|
92
|
+
setTellingFout(e instanceof Error ? e.message : "Tellen is niet gelukt");
|
|
90
93
|
}
|
|
91
94
|
};
|
|
92
95
|
const printerById = useMemo(() => new Map(printers.map((p) => [p.id, p])), [printers]);
|
|
@@ -182,7 +185,7 @@ export function PrintQueuePage() {
|
|
|
182
185
|
setAnnuleertAlles(false);
|
|
183
186
|
await reload(true);
|
|
184
187
|
}
|
|
185
|
-
}, children: [_jsx(XCircle, { className: "mr-2 h-4 w-4" }), annuleertAlles ? "Bezig…" : `Alles annuleren (${openJobs.length})`] })] })] }), _jsx(PrintStatusBanner, { fout: tickFout }), _jsx("div", { className: "grid gap-4 md:grid-cols-4", children: ["wachtend", "bezig", "voltooid", "mislukt"].map((s) => (_jsx(Card, { children: _jsxs(CardHeader, { className: "pb-2", children: [_jsx(CardDescription, { className: "capitalize", children: s }), _jsx(CardTitle, { className: "text-2xl", children: tellingen[s] ?? 0 })] }) }, s))) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Opdrachten" }), _jsx(CardDescription, { children: loading ? "Laden…" : `${gefilterd.length} opdrachten` })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-4", children: [_jsxs("div", { className: "relative md:col-span-2", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek op document of gebruiker", value: zoek, onChange: (e) => setZoek(e.target.value) })] }), _jsxs(Select, { value: status, onValueChange: setStatus, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle statussen" }), ["wachtend", "bezig", "voltooid", "mislukt", "geannuleerd"].map((s) => (_jsx(SelectItem, { value: s, children: s }, s)))] })] }), _jsxs(Select, { value: plekFilter, onValueChange: setPlekFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle printplekken" }), plekOpties.map((p) => (_jsx(SelectItem, { value: p, children: p }, p))), _jsx(SelectItem, { value: "\u2014", children: "Zonder printplek" })] })] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Document" }), _jsx(TableHead, { children: "Printplek" }), _jsx(TableHead, { children: "Layout (aangeleverd \u2192 gebruikt)" }), _jsx(TableHead, { children: "Printer" }), _jsx(TableHead, { children: "Status" }), _jsx(TableHead, { children: "Tijdstip" }), _jsx(TableHead, { className: "text-right", children: "Acties" })] }) }), _jsxs(TableBody, { children: [gefilterd.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 7, className: "py-10 text-center text-sm text-muted-foreground", children: "Geen printopdrachten." }) })), gefilterd.map((j) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { children: [_jsx("span", { className: "font-medium", children: j.documentnaam ?? documentTypeLabel(j.documenttype) }), j.is_herprint && (_jsx(Badge, { variant: "outline", className: "ml-2", children: "herprint" })), !heeftOrderKenmerk(j) && (_jsx(Badge, { variant: "outline", className: "ml-2 text-amber-600", children: "geen orderkenmerk" })), j.foutmelding && (_jsx("span", { className: "block text-xs text-destructive", children: j.foutmelding }))] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: plekPerJob.get(j.id) || "—" }), _jsxs(TableCell, { className: "text-sm text-muted-foreground", children: [_jsx("span", { title: "Aangeleverd door de module", children: j.layout_id ? layoutNaam.get(j.layout_id) ?? "Onbekende layout" : "geen" }), _jsxs("span", { className: "block text-xs", children: ["\u2192", " ", _jsx("span", { title: "Layout die de wachtrij gebruikte", children: j.gebruikte_layout_id
|
|
188
|
+
}, children: [_jsx(XCircle, { className: "mr-2 h-4 w-4" }), annuleertAlles ? "Bezig…" : `Alles annuleren (${openJobs.length})`] })] })] }), _jsx(PrintStatusBanner, { fout: tickFout }), _jsx("div", { className: "grid gap-4 md:grid-cols-4", children: ["wachtend", "bezig", "voltooid", "mislukt"].map((s) => (_jsx(Card, { children: _jsxs(CardHeader, { className: "pb-2", children: [_jsx(CardDescription, { className: "capitalize", children: s }), _jsx(CardTitle, { className: "text-2xl", title: tellingFout ?? undefined, children: tellingFout && !tellingen ? "—" : tellingen ? (tellingen[s] ?? 0) : "laden…" }), tellingFout ? _jsx("p", { className: "text-destructive text-xs", children: tellingFout }) : null] }) }, s))) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Opdrachten" }), _jsx(CardDescription, { children: loading ? "Laden…" : `${gefilterd.length} opdrachten` })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-4", children: [_jsxs("div", { className: "relative md:col-span-2", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek op document of gebruiker", value: zoek, onChange: (e) => setZoek(e.target.value) })] }), _jsxs(Select, { value: status, onValueChange: setStatus, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle statussen" }), ["wachtend", "bezig", "voltooid", "mislukt", "geannuleerd"].map((s) => (_jsx(SelectItem, { value: s, children: s }, s)))] })] }), _jsxs(Select, { value: plekFilter, onValueChange: setPlekFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle printplekken" }), plekOpties.map((p) => (_jsx(SelectItem, { value: p, children: p }, p))), _jsx(SelectItem, { value: "\u2014", children: "Zonder printplek" })] })] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Document" }), _jsx(TableHead, { children: "Printplek" }), _jsx(TableHead, { children: "Layout (aangeleverd \u2192 gebruikt)" }), _jsx(TableHead, { children: "Printer" }), _jsx(TableHead, { children: "Status" }), _jsx(TableHead, { children: "Tijdstip" }), _jsx(TableHead, { className: "text-right", children: "Acties" })] }) }), _jsxs(TableBody, { children: [gefilterd.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 7, className: "py-10 text-center text-sm text-muted-foreground", children: "Geen printopdrachten." }) })), gefilterd.map((j) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { children: [_jsx("span", { className: "font-medium", children: j.documentnaam ?? documentTypeLabel(j.documenttype) }), j.is_herprint && (_jsx(Badge, { variant: "outline", className: "ml-2", children: "herprint" })), !heeftOrderKenmerk(j) && (_jsx(Badge, { variant: "outline", className: "ml-2 text-amber-600", children: "geen orderkenmerk" })), j.foutmelding && (_jsx("span", { className: "block text-xs text-destructive", children: j.foutmelding }))] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: plekPerJob.get(j.id) || "—" }), _jsxs(TableCell, { className: "text-sm text-muted-foreground", children: [_jsx("span", { title: "Aangeleverd door de module", children: j.layout_id ? layoutNaam.get(j.layout_id) ?? "Onbekende layout" : "geen" }), _jsxs("span", { className: "block text-xs", children: ["\u2192", " ", _jsx("span", { title: "Layout die de wachtrij gebruikte", children: j.gebruikte_layout_id
|
|
186
189
|
? layoutNaam.get(j.gebruikte_layout_id) ?? "Onbekende layout"
|
|
187
190
|
: j.gebruikte_bron
|
|
188
191
|
? "geen layout"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrintplekDetailPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekDetailPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PrintplekDetailPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekDetailPage.tsx"],"names":[],"mappings":"AAkEA,wBAAgB,mBAAmB,gCA0oBlC"}
|
|
@@ -15,12 +15,13 @@ import { ComputerVerwijderenDialog } from "./ComputerVerwijderenDialog.js";
|
|
|
15
15
|
import { usePrinters } from "../lib/useDocumentData.js";
|
|
16
16
|
import { useNetwerkPrinters } from "../lib/useNetwerkPrinters.js";
|
|
17
17
|
import { useComputers } from "./ComputersLijst.js";
|
|
18
|
-
import { DOCUMENT_TYPES, documentTypeLabel } from "../lib/documentTypes.js";
|
|
18
|
+
import { DOCUMENT_TYPES, documentTypeLabel, isEtiketSoort } from "../lib/documentTypes.js";
|
|
19
19
|
import { drukTestpaginaAf } from "../lib/testpagina.js";
|
|
20
20
|
import { TestprintDialog } from "./TestprintDialog.js";
|
|
21
21
|
import { leesbareFout } from "../lib/foutTekst.js";
|
|
22
22
|
import { supabase } from "../lib/supabaseClient.js";
|
|
23
23
|
import { useRouteringOverzicht } from "../lib/printRoutering.js";
|
|
24
|
+
import { routeringMeldingTekst } from "../lib/waaromPrinter.js";
|
|
24
25
|
const BRON_LABEL = {
|
|
25
26
|
werkplek_formaat: "Werkplek (papierformaat)",
|
|
26
27
|
werkplek_afwijking: "Werkplek (afwijking)",
|
|
@@ -114,6 +115,7 @@ export function PrintplekDetailPage() {
|
|
|
114
115
|
const { uitkomsten, laden: routeringLaden, reload: reloadRoutering } = useRouteringOverzicht(plekId, DOCUMENT_TYPES.map((d) => d.value), pcNamen);
|
|
115
116
|
const uitkomstVoor = (t, pc) => uitkomsten[`${t}::${pc ?? ""}`] ?? null;
|
|
116
117
|
const routeringZichtbaar = DOCUMENT_TYPES.filter((d) => alleDocumenten ||
|
|
118
|
+
isEtiketSoort(d.value) ||
|
|
117
119
|
(pcNamen.length ? pcNamen : [null]).some((pc) => {
|
|
118
120
|
const u = uitkomstVoor(d.value, pc);
|
|
119
121
|
return !!u && (u.bron !== "geen" || u.overgeslagen.length > 0);
|
|
@@ -156,7 +158,7 @@ export function PrintplekDetailPage() {
|
|
|
156
158
|
return _jsx("td", { colSpan: 3 });
|
|
157
159
|
const n = printerNaam(u.printer_id);
|
|
158
160
|
const status = !u.printer_id ? "geen" : n ? (printerOnline(u.printer_id) ? "online" : "offline") : "ontbreekt";
|
|
159
|
-
return (_jsxs(_Fragment, { children: [_jsx("td", { className: "py-2 pr-3 text-xs text-muted-foreground", children: u.papierformaat ?? "—" }), _jsxs("td", { className: "py-2 pr-3", children: [_jsxs(Badge, { variant: u.bron === "geen" ? "destructive" : "secondary", "data-bron": u.bron, children: [BRON_LABEL[u.bron], u.bron === "werkplek" && u.werkplek ? ` (${u.werkplek})` : ""] }), u.overgeslagen.map((o) => (_jsxs("div", { className: "text-destructive mt-1 flex items-center gap-1 text-xs", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " ", BRON_LABEL[o.bron], " overgeslagen: printer", " ", o.reden === "ontbreekt" ? "ontbreekt" : o.reden === "inactief" ? "inactief" : "niet (meer) aan deze plek gekoppeld"] }, o.regel_id)))] }), _jsxs("td", { className: "py-2 pr-3", children: [u.printer_id ? (_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("span", { className: `h-2 w-2 rounded-full ${status === "online" ? "bg-emerald-500" : status === "offline" ? "bg-muted-foreground" : "bg-destructive"}` }), n ?? "Onbekende printer", _jsx("span", { className: "text-muted-foreground text-xs", children: status })] })) : (_jsx("span", { className: "text-destructive text-xs", children: "geen printer \u2014 opdrachten blijven wachten" })), _jsx("div", { children: _jsx(BronLink, { u: u }) })] })] }));
|
|
161
|
+
return (_jsxs(_Fragment, { children: [_jsx("td", { className: "py-2 pr-3 text-xs text-muted-foreground", children: u.papierformaat ?? "—" }), _jsxs("td", { className: "py-2 pr-3", children: [_jsxs(Badge, { variant: u.bron === "geen" ? "destructive" : "secondary", "data-bron": u.bron, children: [BRON_LABEL[u.bron], u.bron === "werkplek" && u.werkplek ? ` (${u.werkplek})` : ""] }), u.overgeslagen.map((o) => (_jsxs("div", { className: "text-destructive mt-1 flex items-center gap-1 text-xs", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " ", BRON_LABEL[o.bron], " overgeslagen: printer", " ", o.reden === "ontbreekt" ? "ontbreekt" : o.reden === "inactief" ? "inactief" : o.reden === "geen_labelprinter" ? "is geen labelprinter (etiketsoort)" : "niet (meer) aan deze plek gekoppeld"] }, o.regel_id))), routeringMeldingTekst(u.melding) ? (_jsxs("div", { className: "text-destructive mt-1 flex items-center gap-1 text-xs", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " ", routeringMeldingTekst(u.melding)] })) : null] }), _jsxs("td", { className: "py-2 pr-3", children: [u.printer_id ? (_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("span", { className: `h-2 w-2 rounded-full ${status === "online" ? "bg-emerald-500" : status === "offline" ? "bg-muted-foreground" : "bg-destructive"}` }), n ?? "Onbekende printer", _jsx("span", { className: "text-muted-foreground text-xs", children: status })] })) : (_jsx("span", { className: "text-destructive text-xs", children: "geen printer \u2014 opdrachten blijven wachten" })), _jsx("div", { children: _jsx(BronLink, { u: u }) })] })] }));
|
|
160
162
|
}
|
|
161
163
|
const bronnen = koppelingen.filter((k) => k.print_plek_id === plekId);
|
|
162
164
|
const bestaandePlekIds = new Set(plekken.map((p) => p.id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrintplekkenPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekkenPage.tsx"],"names":[],"mappings":"AAsDA,wBAAgB,gBAAgB,CAAC,EAAE,OAAe,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,+
|
|
1
|
+
{"version":3,"file":"PrintplekkenPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekkenPage.tsx"],"names":[],"mappings":"AAsDA,wBAAgB,gBAAgB,CAAC,EAAE,OAAe,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,+BA+e/E"}
|
|
@@ -22,7 +22,7 @@ import { bijgewerktTekst, useAutoRefresh } from "../lib/useAutoRefresh.js";
|
|
|
22
22
|
import { documentTypeLabel } from "../lib/documentTypes.js";
|
|
23
23
|
export function PrintplekkenPage({ ingebed = false } = {}) {
|
|
24
24
|
const { plekken, computers: plekComputers, regels, koppelingen, fout, reload } = usePrintplekken();
|
|
25
|
-
const { computers, loading: computersLaden, fout: computersFout, reload: herlaadComputers, } = useComputers();
|
|
25
|
+
const { computers, loading: computersLaden, fout: computersFout, gecontroleerd: computersGecontroleerd, reload: herlaadComputers, } = useComputers();
|
|
26
26
|
const { printers, reload: herlaadPrinters } = usePrinters();
|
|
27
27
|
const { gevonden, zoek } = useNetwerkPrinters();
|
|
28
28
|
const { genegeerd, reload: herlaadGenegeerd } = useGenegeerdeComputers();
|
|
@@ -101,7 +101,15 @@ export function PrintplekkenPage({ ingebed = false } = {}) {
|
|
|
101
101
|
const Wrapper = ingebed ? "div" : "main";
|
|
102
102
|
return (_jsxs(Wrapper, { className: ingebed ? "space-y-6" : "space-y-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [!ingebed && (_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold", children: "Printplekken" }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Een printplek is een fysieke plek in het bedrijf, bijvoorbeeld een pickstation. Alle computers en printers op die plek horen bij elkaar." })] })), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", onClick: () => setComputerToevoegen(true), children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), " Computer aanmelden"] }), _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Wand2, { className: "mr-2 h-4 w-4" }), " Printplek instellen"] })] })] }), _jsx(PrintStatusBanner, { fout: computersFout, offlineWerkplekken: computers.filter((c) => !c.online).map((c) => c.naam), toonWerkplekLink: false }), fout ? (_jsx("div", { className: "border-destructive/40 bg-destructive/10 text-destructive rounded-xl border p-3 text-sm", children: fout })) : null, _jsxs("div", { className: "flex flex-wrap items-center gap-3 rounded-xl border p-3", children: [_jsxs("div", { className: "relative min-w-[220px] flex-1", children: [_jsx(Search, { className: "text-muted-foreground absolute top-2.5 left-3 h-4 w-4" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek printplek of computer\u2026", value: zoekterm, onChange: (e) => setZoekterm(e.target.value) })] }), _jsxs("span", { className: "text-muted-foreground text-sm", children: [plekken.length, " plek", plekken.length === 1 ? "" : "ken", " \u00B7 ", computers.length, " computer", computers.length === 1 ? "" : "s", " (", computersOnline, " aan) \u00B7 ", totaalPrinters, " printer", totaalPrinters === 1 ? "" : "s"] }), _jsx("span", { className: "text-muted-foreground ml-auto text-xs", children: bijgewerktTekst(bijgewerkt) })] }), kaarten.length === 0 ? (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { className: "text-base", children: plekken.length === 0 ? "Nog geen printplekken" : "Geen resultaten" }), _jsx(CardDescription, { children: plekken.length === 0
|
|
103
103
|
? 'Maak er één aan per plek waar geprint wordt, bijvoorbeeld "Pickstation 1".'
|
|
104
|
-
: "Geen printplek of computer gevonden met deze zoekterm." })] }), _jsx(CardContent, { className: "flex flex-wrap gap-2", children: _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Wand2, { className: "mr-2 h-4 w-4" }), " Printplek instellen"] }) })] })) : (_jsx("div", { className: "grid gap-4 xl:grid-cols-2", children: kaarten.map((k) => (_jsxs("div", { className: "rounded-xl border p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MapPin, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "truncate font-medium", children: k.plek.naam }), _jsx("span", { className: `h-2.5 w-2.5 shrink-0 rounded-full ${k.klaar ? "bg-emerald-500" : "bg-destructive"}`, "aria-label": k.klaar ? "Klaar om te printen" : "Nog niet compleet" })] }), k.plek.omschrijving ? (_jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: k.plek.omschrijving })) : null] }), _jsxs("div", { className: "flex shrink-0 items-center gap-3", children: [_jsxs("button", { type: "button", className: "text-primary flex items-center text-xs", onClick: () => setTestprint({ id: k.plek.id, naam: k.plek.naam }), children: [_jsx(Printer, { className: "mr-1 h-3.5 w-3.5" }), " Testprint"] }), _jsxs("button", { type: "button", className: "text-destructive flex items-center text-xs", onClick: () => setTeVerwijderen({ id: k.plek.id, naam: k.plek.naam }), children: [_jsx(Trash2, { className: "mr-1 h-3.5 w-3.5" }), " Verwijderen"] }), _jsxs(Link, { to: "/layouts-printers/printplekken/$printplekId", params: { printplekId: k.plek.id }, className: "text-primary flex items-center text-xs", children: ["Instellen ", _jsx(ChevronRight, { className: "ml-1 h-3.5 w-3.5" })] })] })] }), _jsx("div", { className: "mt-3 space-y-2", children: k.computerLijst.length === 0 ? (_jsxs("div", { className: "text-muted-foreground flex flex-wrap items-center gap-2 rounded-lg border border-dashed p-3 text-sm", children: ["Nog geen computer gekoppeld", nietGekoppeld.length > 0 ? (_jsxs(Select, { onValueChange: (naam) => void koppel(k.plek.id, naam), children: [_jsx(SelectTrigger, { className: "h-8 w-[190px]", children: _jsx(SelectValue, { placeholder: "Computer koppelen" }) }), _jsx(SelectContent, { children: nietGekoppeld.map((c) => (_jsx(SelectItem, { value: c.naam, children: c.naam }, c.id))) })] })) : (_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setComputerToevoegen(true), children: "Computer aanmelden" }))] })) : (k.computerLijst.map((c) => (_jsxs("div", { className: "bg-muted/40 flex flex-wrap items-center gap-3 rounded-lg px-3 py-2 text-sm", children: [_jsx(Monitor, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: c.naam }), _jsx("span", { className: `rounded-full px-2 py-0.5 text-xs font-medium ${c.online ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"}`, children: c.aangemeld
|
|
104
|
+
: "Geen printplek of computer gevonden met deze zoekterm." })] }), _jsx(CardContent, { className: "flex flex-wrap gap-2", children: _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Wand2, { className: "mr-2 h-4 w-4" }), " Printplek instellen"] }) })] })) : (_jsx("div", { className: "grid gap-4 xl:grid-cols-2", children: kaarten.map((k) => (_jsxs("div", { className: "rounded-xl border p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MapPin, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "truncate font-medium", children: k.plek.naam }), _jsx("span", { className: `h-2.5 w-2.5 shrink-0 rounded-full ${k.klaar ? "bg-emerald-500" : "bg-destructive"}`, "aria-label": k.klaar ? "Klaar om te printen" : "Nog niet compleet" })] }), k.plek.omschrijving ? (_jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: k.plek.omschrijving })) : null] }), _jsxs("div", { className: "flex shrink-0 items-center gap-3", children: [_jsxs("button", { type: "button", className: "text-primary flex items-center text-xs", onClick: () => setTestprint({ id: k.plek.id, naam: k.plek.naam }), children: [_jsx(Printer, { className: "mr-1 h-3.5 w-3.5" }), " Testprint"] }), _jsxs("button", { type: "button", className: "text-destructive flex items-center text-xs", onClick: () => setTeVerwijderen({ id: k.plek.id, naam: k.plek.naam }), children: [_jsx(Trash2, { className: "mr-1 h-3.5 w-3.5" }), " Verwijderen"] }), _jsxs(Link, { to: "/layouts-printers/printplekken/$printplekId", params: { printplekId: k.plek.id }, className: "text-primary flex items-center text-xs", children: ["Instellen ", _jsx(ChevronRight, { className: "ml-1 h-3.5 w-3.5" })] })] })] }), _jsx("div", { className: "mt-3 space-y-2", children: k.computerLijst.length === 0 ? (_jsxs("div", { className: "text-muted-foreground flex flex-wrap items-center gap-2 rounded-lg border border-dashed p-3 text-sm", children: ["Nog geen computer gekoppeld", nietGekoppeld.length > 0 ? (_jsxs(Select, { onValueChange: (naam) => void koppel(k.plek.id, naam), children: [_jsx(SelectTrigger, { className: "h-8 w-[190px]", children: _jsx(SelectValue, { placeholder: "Computer koppelen" }) }), _jsx(SelectContent, { children: nietGekoppeld.map((c) => (_jsx(SelectItem, { value: c.naam, children: c.naam }, c.id))) })] })) : (_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setComputerToevoegen(true), children: "Computer aanmelden" }))] })) : (k.computerLijst.map((c) => (_jsxs("div", { className: "bg-muted/40 flex flex-wrap items-center gap-3 rounded-lg px-3 py-2 text-sm", children: [_jsx(Monitor, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: c.naam }), _jsx("span", { className: `rounded-full px-2 py-0.5 text-xs font-medium ${c.online ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"}`, children: c.aangemeld
|
|
105
|
+
? c.online
|
|
106
|
+
? "Aan"
|
|
107
|
+
: "Uit"
|
|
108
|
+
: computersFout || !computersGecontroleerd
|
|
109
|
+
? computersLaden && !computersFout
|
|
110
|
+
? "Status laden…"
|
|
111
|
+
: "Status onbekend"
|
|
112
|
+
: "Niet aangemeld" }), !c.aangemeld && computersFout ? (_jsx("span", { className: "text-destructive text-xs", children: computersFout })) : null, computersGecontroleerd ? (_jsxs("span", { className: "text-muted-foreground text-xs", children: ["PrintNode gecontroleerd om", " ", computersGecontroleerd.toLocaleTimeString("nl-NL", { hour: "2-digit", minute: "2-digit", second: "2-digit" })] })) : null, _jsxs("span", { className: "text-muted-foreground text-xs", children: [c.ingesteld, " printer", c.ingesteld === 1 ? "" : "s", " \u00B7 ", c.gevonden, " gevonden"] }), _jsx(Button, { variant: "ghost", size: "sm", disabled: !c.id, onClick: () => naarComputer(c.id), children: "Printers toevoegen" })] }, c.koppelingId)))) }), _jsxs("div", { className: "text-muted-foreground mt-3 flex items-start gap-2 text-xs", children: [_jsx(Printer, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }), _jsx("span", { children: k.documentRegels.length === 0
|
|
105
113
|
? "Nog geen document aan een printer gekoppeld"
|
|
106
114
|
: k.documentRegels
|
|
107
115
|
.map((r) => `${documentTypeLabel(r.documenttype)} → ${printerNaam.get(r.printer_id ?? "") ?? "onbekende printer"}`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestprintDialog.d.ts","sourceRoot":"","sources":["../../src/components/TestprintDialog.tsx"],"names":[],"mappings":"AAsCA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,+
|
|
1
|
+
{"version":3,"file":"TestprintDialog.d.ts","sourceRoot":"","sources":["../../src/components/TestprintDialog.tsx"],"names":[],"mappings":"AAsCA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,+BAwKA"}
|
|
@@ -89,6 +89,10 @@ export function TestprintDialog({ open, onOpenChange, printplekId, printplekNaam
|
|
|
89
89
|
? "default"
|
|
90
90
|
: st.status === "mislukt" || st.status === "geannuleerd"
|
|
91
91
|
? "destructive"
|
|
92
|
-
: "secondary", children: [st.status === "voltooid" ? _jsx(Check, { className: "mr-1 h-3 w-3" }) : null, st.status === "mislukt" ? _jsx(X, { className: "mr-1 h-3 w-3" }) : null,
|
|
92
|
+
: "secondary", children: [st.status === "voltooid" ? _jsx(Check, { className: "mr-1 h-3 w-3" }) : null, st.status === "mislukt" ? _jsx(X, { className: "mr-1 h-3 w-3" }) : null, st.status === "mislukt" && st.fout?.startsWith("FORMAAT_PAST_NIET")
|
|
93
|
+
? "Geweigerd – past niet"
|
|
94
|
+
: st.status === "mislukt" && st.fout?.startsWith("GEEN_GELADEN_ETIKET")
|
|
95
|
+
? "Geweigerd – geen etiket geladen"
|
|
96
|
+
: STATUS_LABEL[st.status] ?? st.status] })) : null, _jsxs(Button, { size: "sm", variant: "outline", disabled: !r.printerId || st?.bezig || alles, onClick: () => void test(r.documenttype), children: [st?.bezig ? _jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }) : null, "Test afdrukken"] })] })] }, r.documenttype));
|
|
93
97
|
}) }))] }) }));
|
|
94
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WerkplekkenTab.d.ts","sourceRoot":"","sources":["../../src/components/WerkplekkenTab.tsx"],"names":[],"mappings":"AAcA,OAAO,EAUL,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAM5B,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,+
|
|
1
|
+
{"version":3,"file":"WerkplekkenTab.d.ts","sourceRoot":"","sources":["../../src/components/WerkplekkenTab.tsx"],"names":[],"mappings":"AAcA,OAAO,EAUL,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAM5B,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,+BAyC5G;AAqPD,wBAAgB,cAAc,gCA4E7B"}
|
|
@@ -18,9 +18,10 @@ const selectKlasse = "border-input bg-background rounded-md border px-2 py-1 tex
|
|
|
18
18
|
const db = supabase;
|
|
19
19
|
export function GeladenEtiketKeuze({ printer, onGewijzigd }) {
|
|
20
20
|
const opties = useMemo(() => etiketOpties(printer.ondersteunde_formaten), [printer.ondersteunde_formaten]);
|
|
21
|
-
|
|
21
|
+
// Namen uit PrintNode kunnen spaties aan begin of eind hebben: vergelijk getrimd.
|
|
22
|
+
const huidig = (printer.geladen_etiket?.naam ?? "").trim();
|
|
22
23
|
return (_jsxs("div", { className: "flex flex-wrap items-center gap-2 text-sm", id: `etiket-${printer.id}`, children: [_jsx("span", { className: "text-muted-foreground", children: "Geladen etiket:" }), _jsxs("select", { className: selectKlasse, value: huidig, onChange: async (e) => {
|
|
23
|
-
const keuze = opties.find((o) => o.naam === e.target.value) ?? null;
|
|
24
|
+
const keuze = opties.find((o) => o.naam.trim() === e.target.value) ?? null;
|
|
24
25
|
try {
|
|
25
26
|
await zetPrinterVelden(printer.id, { geladen_etiket: keuze });
|
|
26
27
|
toast.success("Geladen etiket opgeslagen");
|
|
@@ -29,7 +30,7 @@ export function GeladenEtiketKeuze({ printer, onGewijzigd }) {
|
|
|
29
30
|
catch (err) {
|
|
30
31
|
toast.error(leesbareFout(err, "Opslaan mislukt"));
|
|
31
32
|
}
|
|
32
|
-
}, children: [_jsx("option", { value: "", children: "\u2014 kies het etiket dat in de printer zit \u2014" }), opties.map((o) => (_jsxs("option", { value: o.naam, children: [o.naam.trim(), " (", maatTekst(o.breedte_mm, o.hoogte_mm), ")"] }, o.naam)))] }), !huidig ? (_jsxs("span", { className: "text-destructive flex items-center gap-1 text-xs", children: [_jsx(AlertTriangle, { className: "h-3 w-3" }), " Niet ingesteld: er wordt niets naar deze labelprinter geprint."] })) : null, !opties.length ? _jsx("span", { className: "text-muted-foreground text-xs", children: "PrintNode meldt nog geen formaten voor deze printer." }) : null] }));
|
|
33
|
+
}, children: [_jsx("option", { value: "", children: "\u2014 kies het etiket dat in de printer zit \u2014" }), huidig && !opties.some((o) => o.naam.trim() === huidig) && printer.geladen_etiket ? (_jsxs("option", { value: huidig, children: [huidig, " (", maatTekst(printer.geladen_etiket.breedte_mm, printer.geladen_etiket.hoogte_mm), ")"] })) : null, opties.map((o) => (_jsxs("option", { value: o.naam.trim(), children: [o.naam.trim(), " (", maatTekst(o.breedte_mm, o.hoogte_mm), ")"] }, o.naam)))] }), !huidig ? (_jsxs("span", { className: "text-destructive flex items-center gap-1 text-xs", children: [_jsx(AlertTriangle, { className: "h-3 w-3" }), " Niet ingesteld: er wordt niets naar deze labelprinter geprint."] })) : null, !opties.length ? _jsx("span", { className: "text-muted-foreground text-xs", children: "PrintNode meldt nog geen formaten voor deze printer." }) : null] }));
|
|
33
34
|
}
|
|
34
35
|
function PrinterSelect({ printers, value, onChange, leeg = "— geen —", }) {
|
|
35
36
|
return (_jsxs("select", { className: selectKlasse, value: value ?? "", onChange: (e) => onChange(e.target.value || null), children: [_jsx("option", { value: "", children: leeg }), printers.map((p) => (_jsxs("option", { value: p.id, children: [printerTitel(p), p.locatie ? ` · ${p.locatie}` : "", p.online === false ? " (offline)" : ""] }, p.id)))] }));
|
|
@@ -18514,6 +18514,7 @@ export type Database = {
|
|
|
18514
18514
|
created_at: string;
|
|
18515
18515
|
default_end: string;
|
|
18516
18516
|
default_start: string;
|
|
18517
|
+
eigen_vervoer: boolean;
|
|
18517
18518
|
end_address: string | null;
|
|
18518
18519
|
home_address: string | null;
|
|
18519
18520
|
id: string;
|
|
@@ -18525,6 +18526,7 @@ export type Database = {
|
|
|
18525
18526
|
created_at?: string;
|
|
18526
18527
|
default_end?: string;
|
|
18527
18528
|
default_start?: string;
|
|
18529
|
+
eigen_vervoer?: boolean;
|
|
18528
18530
|
end_address?: string | null;
|
|
18529
18531
|
home_address?: string | null;
|
|
18530
18532
|
id?: string;
|
|
@@ -18536,6 +18538,7 @@ export type Database = {
|
|
|
18536
18538
|
created_at?: string;
|
|
18537
18539
|
default_end?: string;
|
|
18538
18540
|
default_start?: string;
|
|
18541
|
+
eigen_vervoer?: boolean;
|
|
18539
18542
|
end_address?: string | null;
|
|
18540
18543
|
home_address?: string | null;
|
|
18541
18544
|
id?: string;
|
|
@@ -26938,6 +26941,54 @@ export type Database = {
|
|
|
26938
26941
|
};
|
|
26939
26942
|
Relationships: [];
|
|
26940
26943
|
};
|
|
26944
|
+
werkbon_standby_tijdvakken: {
|
|
26945
|
+
Row: {
|
|
26946
|
+
created_at: string;
|
|
26947
|
+
datum: string;
|
|
26948
|
+
eind_tijd: string;
|
|
26949
|
+
id: string;
|
|
26950
|
+
monteur_id: string;
|
|
26951
|
+
start_tijd: string;
|
|
26952
|
+
updated_at: string;
|
|
26953
|
+
werkbon_id: string;
|
|
26954
|
+
};
|
|
26955
|
+
Insert: {
|
|
26956
|
+
created_at?: string;
|
|
26957
|
+
datum: string;
|
|
26958
|
+
eind_tijd: string;
|
|
26959
|
+
id?: string;
|
|
26960
|
+
monteur_id: string;
|
|
26961
|
+
start_tijd: string;
|
|
26962
|
+
updated_at?: string;
|
|
26963
|
+
werkbon_id: string;
|
|
26964
|
+
};
|
|
26965
|
+
Update: {
|
|
26966
|
+
created_at?: string;
|
|
26967
|
+
datum?: string;
|
|
26968
|
+
eind_tijd?: string;
|
|
26969
|
+
id?: string;
|
|
26970
|
+
monteur_id?: string;
|
|
26971
|
+
start_tijd?: string;
|
|
26972
|
+
updated_at?: string;
|
|
26973
|
+
werkbon_id?: string;
|
|
26974
|
+
};
|
|
26975
|
+
Relationships: [
|
|
26976
|
+
{
|
|
26977
|
+
foreignKeyName: "werkbon_standby_tijdvakken_werkbon_id_fkey";
|
|
26978
|
+
columns: ["werkbon_id"];
|
|
26979
|
+
isOneToOne: false;
|
|
26980
|
+
referencedRelation: "werkbonnen";
|
|
26981
|
+
referencedColumns: ["id"];
|
|
26982
|
+
},
|
|
26983
|
+
{
|
|
26984
|
+
foreignKeyName: "werkbon_standby_tijdvakken_werkbon_id_fkey";
|
|
26985
|
+
columns: ["werkbon_id"];
|
|
26986
|
+
isOneToOne: false;
|
|
26987
|
+
referencedRelation: "wo_overview";
|
|
26988
|
+
referencedColumns: ["id"];
|
|
26989
|
+
}
|
|
26990
|
+
];
|
|
26991
|
+
};
|
|
26941
26992
|
werkbon_time_logs: {
|
|
26942
26993
|
Row: {
|
|
26943
26994
|
activity: string;
|
|
@@ -31942,6 +31993,10 @@ export type Database = {
|
|
|
31942
31993
|
};
|
|
31943
31994
|
Returns: Json;
|
|
31944
31995
|
};
|
|
31996
|
+
logistics_orphan_carts_summary: {
|
|
31997
|
+
Args: never;
|
|
31998
|
+
Returns: Json;
|
|
31999
|
+
};
|
|
31945
32000
|
logistics_packing_autofix: {
|
|
31946
32001
|
Args: {
|
|
31947
32002
|
p_limit?: number;
|
|
@@ -31999,6 +32054,16 @@ export type Database = {
|
|
|
31999
32054
|
};
|
|
32000
32055
|
Returns: boolean;
|
|
32001
32056
|
};
|
|
32057
|
+
logistics_pakbon_old_order_row: {
|
|
32058
|
+
Args: {
|
|
32059
|
+
p_ids: string[];
|
|
32060
|
+
};
|
|
32061
|
+
Returns: boolean;
|
|
32062
|
+
};
|
|
32063
|
+
logistics_pakbon_oude_orderregels: {
|
|
32064
|
+
Args: never;
|
|
32065
|
+
Returns: Json;
|
|
32066
|
+
};
|
|
32002
32067
|
logistics_parse_pickup: {
|
|
32003
32068
|
Args: {
|
|
32004
32069
|
p_value: string;
|
|
@@ -34246,6 +34311,10 @@ export type Database = {
|
|
|
34246
34311
|
isSetofReturn: true;
|
|
34247
34312
|
};
|
|
34248
34313
|
};
|
|
34314
|
+
planning_mijn_eigen_vervoer: {
|
|
34315
|
+
Args: never;
|
|
34316
|
+
Returns: boolean;
|
|
34317
|
+
};
|
|
34249
34318
|
planning_set_assistants: {
|
|
34250
34319
|
Args: {
|
|
34251
34320
|
_monteur_ids: string[];
|
|
@@ -34284,6 +34353,12 @@ export type Database = {
|
|
|
34284
34353
|
};
|
|
34285
34354
|
Returns: boolean;
|
|
34286
34355
|
};
|
|
34356
|
+
print_is_labelprinter: {
|
|
34357
|
+
Args: {
|
|
34358
|
+
_printer_id: string;
|
|
34359
|
+
};
|
|
34360
|
+
Returns: boolean;
|
|
34361
|
+
};
|
|
34287
34362
|
print_job_status_uitgebreid: {
|
|
34288
34363
|
Args: {
|
|
34289
34364
|
_job_id: string;
|
|
@@ -35836,6 +35911,12 @@ export type Database = {
|
|
|
35836
35911
|
};
|
|
35837
35912
|
Returns: undefined;
|
|
35838
35913
|
};
|
|
35914
|
+
uren_overuren_intrekken: {
|
|
35915
|
+
Args: {
|
|
35916
|
+
_datum: string;
|
|
35917
|
+
};
|
|
35918
|
+
Returns: undefined;
|
|
35919
|
+
};
|
|
35839
35920
|
uren_pagina_toegang_instellen: {
|
|
35840
35921
|
Args: {
|
|
35841
35922
|
_toegang: boolean;
|
|
@@ -36239,6 +36320,13 @@ export type Database = {
|
|
|
36239
36320
|
Args: never;
|
|
36240
36321
|
Returns: Json;
|
|
36241
36322
|
};
|
|
36323
|
+
wo_boek_standby_tijdvakken: {
|
|
36324
|
+
Args: {
|
|
36325
|
+
_tijdvakken: Json;
|
|
36326
|
+
_werkbon_id: string;
|
|
36327
|
+
};
|
|
36328
|
+
Returns: Json;
|
|
36329
|
+
};
|
|
36242
36330
|
wo_boek_standby_uren: {
|
|
36243
36331
|
Args: {
|
|
36244
36332
|
_datum: string;
|
|
@@ -36354,6 +36442,26 @@ export type Database = {
|
|
|
36354
36442
|
};
|
|
36355
36443
|
Returns: Json;
|
|
36356
36444
|
};
|
|
36445
|
+
wo_standby_dag_herberekenen: {
|
|
36446
|
+
Args: {
|
|
36447
|
+
_datum: string;
|
|
36448
|
+
_monteur: string;
|
|
36449
|
+
};
|
|
36450
|
+
Returns: Json;
|
|
36451
|
+
};
|
|
36452
|
+
wo_standby_ov_dag: {
|
|
36453
|
+
Args: {
|
|
36454
|
+
_dienst: Json;
|
|
36455
|
+
_dow: number;
|
|
36456
|
+
_feest: boolean;
|
|
36457
|
+
_vakken: Json;
|
|
36458
|
+
};
|
|
36459
|
+
Returns: Json;
|
|
36460
|
+
};
|
|
36461
|
+
wo_standby_tijdzone: {
|
|
36462
|
+
Args: never;
|
|
36463
|
+
Returns: string;
|
|
36464
|
+
};
|
|
36357
36465
|
};
|
|
36358
36466
|
Enums: {
|
|
36359
36467
|
ai_import_status: "nieuw" | "verwerken" | "bevestigen" | "klaar" | "mislukt";
|