@flowselections/logistiek-engine 1.0.191 → 1.0.193

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.
@@ -31636,4 +31636,199 @@ BEGIN
31636
31636
  SELECT b.d, b.print_plek_id, b.breedte_mm, b.hoogte_mm, sum(greatest(coalesce(b.kopieen, 1), 1))::integer
31637
31637
  FROM b WHERE b.d BETWEEN p_van AND p_tot
31638
31638
  GROUP BY 1, 2, 3, 4 ORDER BY 1, 2, 3, 4;
31639
- END $function$;
31639
+ END $function$;
31640
+ -- ===== 1.0.192: inplannen in porties (db/migrations/20261023190000) =====
31641
+ -- Logistiek Engine 1.0.192: taken opnieuw inplannen in porties met vingerafdruk per order.
31642
+ -- Herhaalbaar. Geen datacorrecties, geen deletes. Bestaande functies (o.a. logistics_schedule_tasks)
31643
+ -- blijven ongewijzigd, zodat gepubliceerde 1.0.190 blijft werken.
31644
+
31645
+ CREATE TABLE IF NOT EXISTS public.logistics_schedule_fp (
31646
+ order_ref text PRIMARY KEY,
31647
+ fp text NOT NULL,
31648
+ ingepland_at timestamptz NOT NULL DEFAULT now()
31649
+ );
31650
+ GRANT SELECT ON public.logistics_schedule_fp TO authenticated;
31651
+ GRANT ALL ON public.logistics_schedule_fp TO service_role;
31652
+ ALTER TABLE public.logistics_schedule_fp ENABLE ROW LEVEL SECURITY;
31653
+ DROP POLICY IF EXISTS "Ingelogd mag inplan-vingerafdruk lezen" ON public.logistics_schedule_fp;
31654
+ CREATE POLICY "Ingelogd mag inplan-vingerafdruk lezen" ON public.logistics_schedule_fp
31655
+ FOR SELECT TO authenticated USING (true);
31656
+
31657
+ CREATE TABLE IF NOT EXISTS public.logistics_schedule_werklijst (
31658
+ run_id uuid NOT NULL,
31659
+ order_ref text NOT NULL,
31660
+ verwerkt_at timestamptz,
31661
+ uitkomst text,
31662
+ PRIMARY KEY (run_id, order_ref)
31663
+ );
31664
+ GRANT SELECT ON public.logistics_schedule_werklijst TO authenticated;
31665
+ GRANT ALL ON public.logistics_schedule_werklijst TO service_role;
31666
+ ALTER TABLE public.logistics_schedule_werklijst ENABLE ROW LEVEL SECURITY;
31667
+ DROP POLICY IF EXISTS "Ingelogd mag inplan-werklijst lezen" ON public.logistics_schedule_werklijst;
31668
+ CREATE POLICY "Ingelogd mag inplan-werklijst lezen" ON public.logistics_schedule_werklijst
31669
+ FOR SELECT TO authenticated USING (true);
31670
+
31671
+ CREATE TABLE IF NOT EXISTS public.logistics_schedule_voortgang (
31672
+ id boolean PRIMARY KEY DEFAULT true CHECK (id),
31673
+ run_id uuid,
31674
+ gestart_at timestamptz,
31675
+ bijgewerkt_at timestamptz,
31676
+ totaal integer NOT NULL DEFAULT 0,
31677
+ verwerkt integer NOT NULL DEFAULT 0,
31678
+ ingepland integer NOT NULL DEFAULT 0,
31679
+ overgeslagen integer NOT NULL DEFAULT 0,
31680
+ fouten integer NOT NULL DEFAULT 0,
31681
+ laatste_fout text,
31682
+ klaar boolean NOT NULL DEFAULT true,
31683
+ duur_ms integer
31684
+ );
31685
+ GRANT SELECT ON public.logistics_schedule_voortgang TO authenticated;
31686
+ GRANT ALL ON public.logistics_schedule_voortgang TO service_role;
31687
+ ALTER TABLE public.logistics_schedule_voortgang ENABLE ROW LEVEL SECURITY;
31688
+ DROP POLICY IF EXISTS "Ingelogd mag inplan-voortgang lezen" ON public.logistics_schedule_voortgang;
31689
+ CREATE POLICY "Ingelogd mag inplan-voortgang lezen" ON public.logistics_schedule_voortgang
31690
+ FOR SELECT TO authenticated USING (true);
31691
+
31692
+ CREATE TABLE IF NOT EXISTS public.logistics_index_log (
31693
+ index_naam text PRIMARY KEY,
31694
+ tabel text NOT NULL,
31695
+ rijen bigint,
31696
+ duur_ms integer,
31697
+ aangemaakt_at timestamptz NOT NULL DEFAULT now()
31698
+ );
31699
+ GRANT SELECT ON public.logistics_index_log TO authenticated;
31700
+ GRANT ALL ON public.logistics_index_log TO service_role;
31701
+ ALTER TABLE public.logistics_index_log ENABLE ROW LEVEL SECURITY;
31702
+ DROP POLICY IF EXISTS "Ingelogd mag indexlog lezen" ON public.logistics_index_log;
31703
+ CREATE POLICY "Ingelogd mag indexlog lezen" ON public.logistics_index_log
31704
+ FOR SELECT TO authenticated USING (true);
31705
+
31706
+ -- Index voor "open taken per order", met gemeten duur (schrijfblokkade op logistics_tasks zolang hij loopt).
31707
+ DO $idx$
31708
+ DECLARE t0 timestamptz; n bigint;
31709
+ BEGIN
31710
+ IF to_regclass('public.idx_logistics_tasks_open_order') IS NULL THEN
31711
+ SELECT count(*) INTO n FROM public.logistics_tasks;
31712
+ t0 := clock_timestamp();
31713
+ CREATE INDEX idx_logistics_tasks_open_order ON public.logistics_tasks (order_ref)
31714
+ WHERE status IN ('planned', 'ready') AND order_ref IS NOT NULL;
31715
+ INSERT INTO public.logistics_index_log (index_naam, tabel, rijen, duur_ms)
31716
+ VALUES ('idx_logistics_tasks_open_order', 'logistics_tasks', n,
31717
+ (extract(epoch FROM clock_timestamp() - t0) * 1000)::int)
31718
+ ON CONFLICT (index_naam) DO NOTHING;
31719
+ END IF;
31720
+ END $idx$;
31721
+
31722
+ -- Algemene invoer van het inplannen: werkwijze, werktijden, afwijkende dagen, capaciteit,
31723
+ -- ladingdragers, ophaalmomenten (vervoerders) en het lopende uur (taken mogen niet in het verleden starten).
31724
+ CREATE OR REPLACE FUNCTION public.logistics_schedule_global_fp()
31725
+ RETURNS text LANGUAGE plpgsql STABLE SECURITY DEFINER SET search_path TO 'public' AS $$
31726
+ DECLARE
31727
+ v_tab text; v_h text; v_all text := '';
31728
+ BEGIN
31729
+ PERFORM public.logistics_acc_guard('ingelogd', 'logistics_schedule_global_fp');
31730
+ FOREACH v_tab IN ARRAY ARRAY['logistics_time_settings','logistics_opening_hours','logistics_opening_exceptions',
31731
+ 'logistics_rule_configs','cart_planning_settings','cart_planning_pick_times','cart_types','carriers'] LOOP
31732
+ IF to_regclass('public.' || v_tab) IS NOT NULL THEN
31733
+ EXECUTE format('SELECT md5(coalesce(string_agg(x, ''|'' ORDER BY x), '''')) FROM (SELECT to_jsonb(t)::text AS x FROM public.%I t) s', v_tab)
31734
+ INTO v_h;
31735
+ v_all := v_all || v_tab || ':' || coalesce(v_h, '') || ';';
31736
+ END IF;
31737
+ END LOOP;
31738
+ v_all := v_all || 'uur:' || to_char(now() AT TIME ZONE coalesce(public.logistics_tz(), 'UTC'), 'YYYY-MM-DD HH24');
31739
+ RETURN md5(v_all);
31740
+ END $$;
31741
+ REVOKE ALL ON FUNCTION public.logistics_schedule_global_fp() FROM PUBLIC, anon;
31742
+ GRANT EXECUTE ON FUNCTION public.logistics_schedule_global_fp() TO authenticated, service_role;
31743
+
31744
+ CREATE OR REPLACE FUNCTION public.logistics_schedule_order_fp(p_order_ref text, p_global text)
31745
+ RETURNS text LANGUAGE plpgsql STABLE SECURITY DEFINER SET search_path TO 'public' AS $$
31746
+ DECLARE v_o text; v_t text; v_c text;
31747
+ BEGIN
31748
+ PERFORM public.logistics_acc_guard('ingelogd', 'logistics_schedule_order_fp');
31749
+ SELECT (to_jsonb(o) - 'updated_at')::text, array_to_string(public.logistics_order_cart_ids(o.id), ',')
31750
+ INTO v_o, v_c FROM public.orders o WHERE o.order_number = p_order_ref;
31751
+ SELECT string_agg(t.id::text || t.task_type || t.status, ',' ORDER BY t.id) INTO v_t
31752
+ FROM public.logistics_tasks t WHERE t.order_ref = p_order_ref AND t.status IN ('planned', 'ready');
31753
+ RETURN md5(coalesce(p_global, '') || '#' || coalesce(v_o, '') || '#' || coalesce(v_t, '') || '#' || coalesce(v_c, ''));
31754
+ END $$;
31755
+ REVOKE ALL ON FUNCTION public.logistics_schedule_order_fp(text, text) FROM PUBLIC, anon;
31756
+ GRANT EXECUTE ON FUNCTION public.logistics_schedule_order_fp(text, text) TO authenticated, service_role;
31757
+
31758
+ -- Portie-inplanner. Opties (jsonb): start (bool), run_id (uuid), max_orders (int, 25), budget_ms (int, 20000), force (bool).
31759
+ -- Per order een eigen subtransactie: lukt het niet, dan blijft de oude planning staan.
31760
+ CREATE OR REPLACE FUNCTION public.logistics_schedule_tasks_batch(p_opties jsonb)
31761
+ RETURNS jsonb LANGUAGE plpgsql SECURITY DEFINER SET search_path TO 'public' AS $$
31762
+ DECLARE
31763
+ v_start timestamptz := clock_timestamp();
31764
+ v_run uuid := nullif(p_opties->>'run_id', '')::uuid;
31765
+ v_max int := greatest(1, least(coalesce((p_opties->>'max_orders')::int, 25), 500));
31766
+ v_budget int := greatest(1000, least(coalesce((p_opties->>'budget_ms')::int, 20000), 120000));
31767
+ v_force boolean := coalesce((p_opties->>'force')::boolean, false);
31768
+ v_since timestamptz; v_160 timestamptz;
31769
+ v_global text; v_fp text; v_old text; r record;
31770
+ v_done int := 0; v_plan int := 0; v_skip int := 0; v_err int := 0; v_fouten jsonb := '[]'::jsonb;
31771
+ v_totaal int; v_rest int;
31772
+ BEGIN
31773
+ PERFORM public.logistics_acc_guard('ingelogd', 'logistics_schedule_tasks_batch');
31774
+ IF v_run IS NULL OR coalesce((p_opties->>'start')::boolean, false) THEN
31775
+ v_run := gen_random_uuid();
31776
+ SELECT departure_rule_since, rule_160_since INTO v_since, v_160
31777
+ FROM public.logistics_time_settings ORDER BY updated_at DESC NULLS LAST LIMIT 1;
31778
+ INSERT INTO public.logistics_schedule_werklijst (run_id, order_ref)
31779
+ SELECT v_run, o.order_number FROM public.orders o
31780
+ WHERE o.deleted_at IS NULL AND o.order_number IS NOT NULL
31781
+ AND EXISTS (SELECT 1 FROM public.logistics_tasks t WHERE t.order_ref = o.order_number AND t.status IN ('planned','ready'))
31782
+ AND NOT (v_since IS NOT NULL AND v_160 IS NOT NULL AND o.created_at >= v_since AND o.created_at < v_160)
31783
+ ON CONFLICT DO NOTHING;
31784
+ GET DIAGNOSTICS v_totaal = ROW_COUNT;
31785
+ INSERT INTO public.logistics_schedule_voortgang (id, run_id, gestart_at, bijgewerkt_at, totaal, verwerkt, ingepland, overgeslagen, fouten, laatste_fout, klaar, duur_ms)
31786
+ VALUES (true, v_run, now(), now(), v_totaal, 0, 0, 0, 0, NULL, v_totaal = 0, NULL)
31787
+ ON CONFLICT (id) DO UPDATE SET run_id = EXCLUDED.run_id, gestart_at = EXCLUDED.gestart_at, bijgewerkt_at = EXCLUDED.bijgewerkt_at,
31788
+ totaal = EXCLUDED.totaal, verwerkt = 0, ingepland = 0, overgeslagen = 0, fouten = 0, laatste_fout = NULL,
31789
+ klaar = EXCLUDED.klaar, duur_ms = NULL;
31790
+ END IF;
31791
+
31792
+ v_global := public.logistics_schedule_global_fp();
31793
+ FOR r IN SELECT w.order_ref FROM public.logistics_schedule_werklijst w
31794
+ WHERE w.run_id = v_run AND w.verwerkt_at IS NULL ORDER BY w.order_ref LIMIT v_max LOOP
31795
+ EXIT WHEN (extract(epoch FROM clock_timestamp() - v_start) * 1000) > v_budget;
31796
+ v_fp := public.logistics_schedule_order_fp(r.order_ref, v_global);
31797
+ SELECT f.fp INTO v_old FROM public.logistics_schedule_fp f WHERE f.order_ref = r.order_ref;
31798
+ IF NOT v_force AND v_old IS NOT DISTINCT FROM v_fp THEN
31799
+ v_skip := v_skip + 1;
31800
+ UPDATE public.logistics_schedule_werklijst SET verwerkt_at = now(), uitkomst = 'ongewijzigd'
31801
+ WHERE run_id = v_run AND order_ref = r.order_ref;
31802
+ ELSE
31803
+ BEGIN
31804
+ PERFORM public.logistics_schedule_tasks(p_order_ref => r.order_ref);
31805
+ INSERT INTO public.logistics_schedule_fp (order_ref, fp, ingepland_at) VALUES (r.order_ref, v_fp, now())
31806
+ ON CONFLICT (order_ref) DO UPDATE SET fp = EXCLUDED.fp, ingepland_at = EXCLUDED.ingepland_at;
31807
+ v_plan := v_plan + 1;
31808
+ UPDATE public.logistics_schedule_werklijst SET verwerkt_at = now(), uitkomst = 'ingepland'
31809
+ WHERE run_id = v_run AND order_ref = r.order_ref;
31810
+ EXCEPTION WHEN OTHERS THEN
31811
+ v_err := v_err + 1;
31812
+ v_fouten := v_fouten || jsonb_build_object('order', r.order_ref, 'fout', left(SQLERRM, 300));
31813
+ UPDATE public.logistics_schedule_werklijst SET verwerkt_at = now(), uitkomst = 'fout: ' || left(SQLERRM, 300)
31814
+ WHERE run_id = v_run AND order_ref = r.order_ref;
31815
+ END;
31816
+ END IF;
31817
+ v_done := v_done + 1;
31818
+ END LOOP;
31819
+
31820
+ SELECT count(*) FILTER (WHERE verwerkt_at IS NULL), count(*) INTO v_rest, v_totaal
31821
+ FROM public.logistics_schedule_werklijst WHERE run_id = v_run;
31822
+ UPDATE public.logistics_schedule_voortgang
31823
+ SET bijgewerkt_at = now(), verwerkt = v_totaal - v_rest, ingepland = ingepland + v_plan,
31824
+ overgeslagen = overgeslagen + v_skip, fouten = fouten + v_err,
31825
+ laatste_fout = CASE WHEN v_err > 0 THEN (v_fouten->0->>'order') || ': ' || (v_fouten->0->>'fout') ELSE laatste_fout END,
31826
+ klaar = (v_rest = 0),
31827
+ duur_ms = CASE WHEN v_rest = 0 THEN (extract(epoch FROM now() - gestart_at) * 1000)::int ELSE duur_ms END
31828
+ WHERE id AND run_id = v_run;
31829
+ RETURN jsonb_build_object('runId', v_run, 'totaal', v_totaal, 'verwerkt', v_totaal - v_rest, 'resterend', v_rest,
31830
+ 'ingepland', v_plan, 'overgeslagen', v_skip, 'fouten', v_fouten,
31831
+ 'durationMs', (extract(epoch FROM clock_timestamp() - v_start) * 1000)::int);
31832
+ END $$;
31833
+ REVOKE ALL ON FUNCTION public.logistics_schedule_tasks_batch(jsonb) FROM PUBLIC, anon;
31834
+ GRANT EXECUTE ON FUNCTION public.logistics_schedule_tasks_batch(jsonb) TO authenticated, service_role;
@@ -0,0 +1,16 @@
1
+ type Voortgang = {
2
+ totaal: number;
3
+ verwerkt: number;
4
+ ingepland: number;
5
+ overgeslagen: number;
6
+ fouten: number;
7
+ laatste_fout: string | null;
8
+ klaar: boolean;
9
+ gestart_at: string | null;
10
+ bijgewerkt_at: string | null;
11
+ duur_ms: number | null;
12
+ };
13
+ export declare function voortgangTekst(v: Pick<Voortgang, "verwerkt" | "totaal">): string;
14
+ export declare function InplanVoortgangCard(): import("react").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=InplanVoortgangCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InplanVoortgangCard.d.ts","sourceRoot":"","sources":["../../src/components/InplanVoortgangCard.tsx"],"names":[],"mappings":"AAKA,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,QAAQ,CAAC,GAAG,MAAM,CAEhF;AAED,wBAAgB,mBAAmB,gCAgDlC"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // 1.0.192: voortgang van "Taken opnieuw inplannen" (x van y).
3
+ // GEEN <Header /> hier — die levert de shell.
4
+ import { useEffect, useState } from "react";
5
+ import { Badge, Card, CardContent, CardDescription, CardHeader, CardTitle, supabase } from "@flowselections/core";
6
+ export function voortgangTekst(v) {
7
+ return `${v.verwerkt} van ${v.totaal} opnieuw ingepland`;
8
+ }
9
+ export function InplanVoortgangCard() {
10
+ const [v, setV] = useState(null);
11
+ const [fout, setFout] = useState(null);
12
+ useEffect(() => {
13
+ let actief = true;
14
+ const laad = async () => {
15
+ const { data, error } = await supabase
16
+ .from("logistics_schedule_voortgang")
17
+ .select("totaal, verwerkt, ingepland, overgeslagen, fouten, laatste_fout, klaar, gestart_at, bijgewerkt_at, duur_ms")
18
+ .limit(1);
19
+ if (!actief)
20
+ return;
21
+ if (error)
22
+ setFout(String(error.message));
23
+ const rij = Array.isArray(data) ? data[0] : null;
24
+ setV(rij ? rij : null);
25
+ };
26
+ void laad();
27
+ const t = setInterval(() => void laad(), 15000);
28
+ return () => {
29
+ actief = false;
30
+ clearInterval(t);
31
+ };
32
+ }, []);
33
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Taken opnieuw inplannen" }), _jsx(CardDescription, { children: "Voortgang van de laatste herberekening. Ongewijzigde orders worden overgeslagen." })] }), _jsxs(CardContent, { className: "space-y-2 text-sm", children: [fout ? _jsx("p", { className: "text-destructive", children: fout }) : null, !v && !fout ? _jsx("p", { className: "text-muted-foreground", children: "Nog geen herberekening uitgevoerd." }) : null, v ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "font-medium", children: voortgangTekst(v) }), v.klaar ? _jsx(Badge, { variant: "secondary", children: "klaar" }) : _jsx(Badge, { children: "bezig" }), v.fouten > 0 ? _jsxs(Badge, { variant: "destructive", children: [v.fouten, " niet gelukt"] }) : null] }), _jsxs("p", { className: "text-muted-foreground", children: [v.ingepland, " ingepland, ", v.overgeslagen, " ongewijzigd", v.klaar && v.duur_ms != null ? `, duur ${Math.round(v.duur_ms / 1000)} s` : ""] }), v.laatste_fout ? _jsxs("p", { className: "text-muted-foreground", children: ["Laatste fout: ", v.laatste_fout] }) : null] })) : null] })] }));
34
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"RegiePage.d.ts","sourceRoot":"","sources":["../../src/components/RegiePage.tsx"],"names":[],"mappings":"AAkCA,wBAAgB,SAAS,gCA8FxB"}
1
+ {"version":3,"file":"RegiePage.d.ts","sourceRoot":"","sources":["../../src/components/RegiePage.tsx"],"names":[],"mappings":"AAmCA,wBAAgB,SAAS,gCA+FxB"}
@@ -14,6 +14,7 @@ import { ConsistentieCard } from "./ConsistentieCard.js";
14
14
  import { KarplanStatusCard } from "./KarplanStatusCard.js";
15
15
  import { KardekkingCard } from "./KardekkingCard.js";
16
16
  import { OrdersZonderKarCard } from "./OrdersZonderKarCard.js";
17
+ import { InplanVoortgangCard } from "./InplanVoortgangCard.js";
17
18
  import { MisluktVerzendbrievenCard } from "./MisluktVerzendbrievenCard.js";
18
19
  import { PlannerDiffCard } from "./PlannerDiffCard.js";
19
20
  import { BeladingsafwijkingenCard } from "./BeladingsafwijkingenCard.js";
@@ -37,5 +38,5 @@ export function RegiePage() {
37
38
  useEffect(() => {
38
39
  void laden();
39
40
  }, [laden]);
40
- return (_jsxs("div", { className: "space-y-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsxs("h1", { className: "flex items-center gap-2 text-2xl font-semibold tracking-tight", children: [_jsx(Workflow, { className: "h-6 w-6 text-primary" }), "Overzicht & meldingen"] }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Wat er vandaag klaarstaat en waar aandacht voor nodig is." })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "outline", asChild: true, children: _jsx(Link, { to: "/logistiek-engine", children: "Terug naar overzicht" }) }), _jsxs(Button, { variant: "outline", onClick: () => void laden(), disabled: loading, children: [_jsx(RefreshCw, { className: "mr-2 h-4 w-4" }), "Vernieuwen"] })] })] }), _jsx(MinuutrondeCard, {}), _jsx(InklapbaarVenster, { titel: "Binnengekomen orders", omschrijving: "Klik een order open voor elke stap, beslissing, foutmelding en elk document.", standaardOpen: true, children: _jsx(OrderLogboek, { titel: "Binnengekomen orders" }) }), _jsx(InklapbaarVenster, { titel: "Consistentie", omschrijving: "Controle of alle modules hetzelfde tonen.", children: _jsx(ConsistentieCard, {}) }), _jsx(InklapbaarVenster, { titel: "Beladingsafwijkingen", omschrijving: "Verschillen tussen onze belading en de laatste Floriday-gegevens.", children: _jsx(BeladingsafwijkingenCard, {}) }), _jsx(InklapbaarVenster, { titel: "Karplanstatus", omschrijving: "Stand van de karrenindeling.", children: _jsx(KarplanStatusCard, {}) }), _jsxs(InklapbaarVenster, { titel: "Kardekking", omschrijving: "Staat elke bestelregel correct op een kar?", children: [_jsx(KardekkingCard, {}), _jsx(OrdersZonderKarCard, {}), _jsx(MisluktVerzendbrievenCard, {})] }), _jsx(InklapbaarVenster, { titel: "Vergelijkende planner", omschrijving: "Proefvergelijking: blijft de karindeling gelijk?", children: _jsx(PlannerDiffCard, {}) }), _jsxs(InklapbaarVenster, { titel: "Taken per module", omschrijving: "Openstaande en geplande taken.", children: [telFout && _jsxs("p", { className: "mb-2 text-sm text-destructive", children: ["Telling niet beschikbaar: ", telFout] }), _jsx("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: Object.keys(LOGISTICS_MODULES).map((key) => (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-2", children: [_jsx(CardDescription, { children: LOGISTICS_MODULES[key] }), _jsx(CardTitle, { className: "text-2xl", children: perModule[key] ?? 0 })] }), _jsx(CardContent, { className: "text-muted-foreground text-xs", children: "openstaande en geplande taken" })] }, key))) })] })] }));
41
+ return (_jsxs("div", { className: "space-y-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsxs("h1", { className: "flex items-center gap-2 text-2xl font-semibold tracking-tight", children: [_jsx(Workflow, { className: "h-6 w-6 text-primary" }), "Overzicht & meldingen"] }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Wat er vandaag klaarstaat en waar aandacht voor nodig is." })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "outline", asChild: true, children: _jsx(Link, { to: "/logistiek-engine", children: "Terug naar overzicht" }) }), _jsxs(Button, { variant: "outline", onClick: () => void laden(), disabled: loading, children: [_jsx(RefreshCw, { className: "mr-2 h-4 w-4" }), "Vernieuwen"] })] })] }), _jsx(MinuutrondeCard, {}), _jsx(InklapbaarVenster, { titel: "Binnengekomen orders", omschrijving: "Klik een order open voor elke stap, beslissing, foutmelding en elk document.", standaardOpen: true, children: _jsx(OrderLogboek, { titel: "Binnengekomen orders" }) }), _jsx(InklapbaarVenster, { titel: "Consistentie", omschrijving: "Controle of alle modules hetzelfde tonen.", children: _jsx(ConsistentieCard, {}) }), _jsx(InklapbaarVenster, { titel: "Beladingsafwijkingen", omschrijving: "Verschillen tussen onze belading en de laatste Floriday-gegevens.", children: _jsx(BeladingsafwijkingenCard, {}) }), _jsx(InklapbaarVenster, { titel: "Karplanstatus", omschrijving: "Stand van de karrenindeling.", children: _jsx(KarplanStatusCard, {}) }), _jsxs(InklapbaarVenster, { titel: "Kardekking", omschrijving: "Staat elke bestelregel correct op een kar?", children: [_jsx(KardekkingCard, {}), _jsx(InplanVoortgangCard, {}), _jsx(OrdersZonderKarCard, {}), _jsx(MisluktVerzendbrievenCard, {})] }), _jsx(InklapbaarVenster, { titel: "Vergelijkende planner", omschrijving: "Proefvergelijking: blijft de karindeling gelijk?", children: _jsx(PlannerDiffCard, {}) }), _jsxs(InklapbaarVenster, { titel: "Taken per module", omschrijving: "Openstaande en geplande taken.", children: [telFout && _jsxs("p", { className: "mb-2 text-sm text-destructive", children: ["Telling niet beschikbaar: ", telFout] }), _jsx("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: Object.keys(LOGISTICS_MODULES).map((key) => (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-2", children: [_jsx(CardDescription, { children: LOGISTICS_MODULES[key] }), _jsx(CardTitle, { className: "text-2xl", children: perModule[key] ?? 0 })] }), _jsx(CardContent, { className: "text-muted-foreground text-xs", children: "openstaande en geplande taken" })] }, key))) })] })] }));
41
42
  }
@@ -3,6 +3,7 @@ export * from './_core-safelist.js';
3
3
  export * from './components/LogistiekEnginePage.js';
4
4
  export * from './components/RuleEnginePage.js';
5
5
  export * from './components/RegiePage.js';
6
+ export { InplanVoortgangCard } from './components/InplanVoortgangCard.js';
6
7
  export * from './components/ModulePromptsPage.js';
7
8
  export * from './components/LadingdragersPage.js';
8
9
  export * from './components/BeladingIndelingCard.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist-lib/index.js CHANGED
@@ -6,6 +6,7 @@ export * from './_core-safelist.js';
6
6
  export * from './components/LogistiekEnginePage.js';
7
7
  export * from './components/RuleEnginePage.js';
8
8
  export * from './components/RegiePage.js';
9
+ export { InplanVoortgangCard } from './components/InplanVoortgangCard.js';
9
10
  export * from './components/ModulePromptsPage.js';
10
11
  export * from './components/LadingdragersPage.js';
11
12
  export * from './components/BeladingIndelingCard.js';
@@ -13486,6 +13486,30 @@ export type Database = {
13486
13486
  }
13487
13487
  ];
13488
13488
  };
13489
+ logistics_index_log: {
13490
+ Row: {
13491
+ aangemaakt_at: string;
13492
+ duur_ms: number | null;
13493
+ index_naam: string;
13494
+ rijen: number | null;
13495
+ tabel: string;
13496
+ };
13497
+ Insert: {
13498
+ aangemaakt_at?: string;
13499
+ duur_ms?: number | null;
13500
+ index_naam: string;
13501
+ rijen?: number | null;
13502
+ tabel: string;
13503
+ };
13504
+ Update: {
13505
+ aangemaakt_at?: string;
13506
+ duur_ms?: number | null;
13507
+ index_naam?: string;
13508
+ rijen?: number | null;
13509
+ tabel?: string;
13510
+ };
13511
+ Relationships: [];
13512
+ };
13489
13513
  logistics_layer_override_log: {
13490
13514
  Row: {
13491
13515
  cart_id: string;
@@ -14530,6 +14554,90 @@ export type Database = {
14530
14554
  }
14531
14555
  ];
14532
14556
  };
14557
+ logistics_schedule_fp: {
14558
+ Row: {
14559
+ fp: string;
14560
+ ingepland_at: string;
14561
+ order_ref: string;
14562
+ };
14563
+ Insert: {
14564
+ fp: string;
14565
+ ingepland_at?: string;
14566
+ order_ref: string;
14567
+ };
14568
+ Update: {
14569
+ fp?: string;
14570
+ ingepland_at?: string;
14571
+ order_ref?: string;
14572
+ };
14573
+ Relationships: [];
14574
+ };
14575
+ logistics_schedule_voortgang: {
14576
+ Row: {
14577
+ bijgewerkt_at: string | null;
14578
+ duur_ms: number | null;
14579
+ fouten: number;
14580
+ gestart_at: string | null;
14581
+ id: boolean;
14582
+ ingepland: number;
14583
+ klaar: boolean;
14584
+ laatste_fout: string | null;
14585
+ overgeslagen: number;
14586
+ run_id: string | null;
14587
+ totaal: number;
14588
+ verwerkt: number;
14589
+ };
14590
+ Insert: {
14591
+ bijgewerkt_at?: string | null;
14592
+ duur_ms?: number | null;
14593
+ fouten?: number;
14594
+ gestart_at?: string | null;
14595
+ id?: boolean;
14596
+ ingepland?: number;
14597
+ klaar?: boolean;
14598
+ laatste_fout?: string | null;
14599
+ overgeslagen?: number;
14600
+ run_id?: string | null;
14601
+ totaal?: number;
14602
+ verwerkt?: number;
14603
+ };
14604
+ Update: {
14605
+ bijgewerkt_at?: string | null;
14606
+ duur_ms?: number | null;
14607
+ fouten?: number;
14608
+ gestart_at?: string | null;
14609
+ id?: boolean;
14610
+ ingepland?: number;
14611
+ klaar?: boolean;
14612
+ laatste_fout?: string | null;
14613
+ overgeslagen?: number;
14614
+ run_id?: string | null;
14615
+ totaal?: number;
14616
+ verwerkt?: number;
14617
+ };
14618
+ Relationships: [];
14619
+ };
14620
+ logistics_schedule_werklijst: {
14621
+ Row: {
14622
+ order_ref: string;
14623
+ run_id: string;
14624
+ uitkomst: string | null;
14625
+ verwerkt_at: string | null;
14626
+ };
14627
+ Insert: {
14628
+ order_ref: string;
14629
+ run_id: string;
14630
+ uitkomst?: string | null;
14631
+ verwerkt_at?: string | null;
14632
+ };
14633
+ Update: {
14634
+ order_ref?: string;
14635
+ run_id?: string;
14636
+ uitkomst?: string | null;
14637
+ verwerkt_at?: string | null;
14638
+ };
14639
+ Relationships: [];
14640
+ };
14533
14641
  logistics_shipping_note_scan: {
14534
14642
  Row: {
14535
14643
  barcode: string;
@@ -30638,6 +30746,16 @@ export type Database = {
30638
30746
  Args: never;
30639
30747
  Returns: boolean;
30640
30748
  };
30749
+ _layouts_toegang_besluit: {
30750
+ Args: {
30751
+ p_alleen_beheer: boolean;
30752
+ p_beheerder: boolean;
30753
+ p_ingelogd: boolean;
30754
+ p_request_path: string;
30755
+ p_server: boolean;
30756
+ };
30757
+ Returns: string;
30758
+ };
30641
30759
  _layouts_toegang_server_of_ingelogd: {
30642
30760
  Args: {
30643
30761
  p_alleen_beheer: boolean;
@@ -33584,6 +33702,26 @@ export type Database = {
33584
33702
  rijen: number;
33585
33703
  }[];
33586
33704
  };
33705
+ layouts_install_check: {
33706
+ Args: never;
33707
+ Returns: Json;
33708
+ };
33709
+ layouts_kies_sticker_route: {
33710
+ Args: {
33711
+ p_a4_printer: string;
33712
+ p_a4_vel: Json;
33713
+ p_etiketten: Json;
33714
+ p_heeft_barcode: boolean;
33715
+ p_instelling: Json;
33716
+ p_sticker_breedte_mm: number;
33717
+ p_sticker_hoogte_mm: number;
33718
+ };
33719
+ Returns: Json;
33720
+ };
33721
+ layouts_sticker_verkleinen: {
33722
+ Args: never;
33723
+ Returns: Json;
33724
+ };
33587
33725
  layouts_vroege_sticker_waarschuwing: {
33588
33726
  Args: {
33589
33727
  p_tot: string;
@@ -33595,6 +33733,10 @@ export type Database = {
33595
33733
  Args: never;
33596
33734
  Returns: Json;
33597
33735
  };
33736
+ layouts_zorg_voor_sticker_verkleinen: {
33737
+ Args: never;
33738
+ Returns: Json;
33739
+ };
33598
33740
  list_medewerkers: {
33599
33741
  Args: never;
33600
33742
  Returns: {
@@ -36715,6 +36857,17 @@ export type Database = {
36715
36857
  };
36716
36858
  Returns: Json;
36717
36859
  };
36860
+ logistics_schedule_global_fp: {
36861
+ Args: never;
36862
+ Returns: string;
36863
+ };
36864
+ logistics_schedule_order_fp: {
36865
+ Args: {
36866
+ p_global: string;
36867
+ p_order_ref: string;
36868
+ };
36869
+ Returns: string;
36870
+ };
36718
36871
  logistics_schedule_tasks: {
36719
36872
  Args: never;
36720
36873
  Returns: number;
@@ -36724,6 +36877,12 @@ export type Database = {
36724
36877
  };
36725
36878
  Returns: number;
36726
36879
  };
36880
+ logistics_schedule_tasks_batch: {
36881
+ Args: {
36882
+ p_opties: Json;
36883
+ };
36884
+ Returns: Json;
36885
+ };
36727
36886
  logistics_set_components_scaled: {
36728
36887
  Args: {
36729
36888
  p_order_item_id: string;
@@ -42399,6 +42558,13 @@ export type Database = {
42399
42558
  Args: never;
42400
42559
  Returns: boolean;
42401
42560
  };
42561
+ voorraad_reverse_order_mutations: {
42562
+ Args: {
42563
+ p_order_id: string;
42564
+ p_reason: string;
42565
+ };
42566
+ Returns: Json;
42567
+ };
42402
42568
  voorraad_schema_ddl: {
42403
42569
  Args: {
42404
42570
  p_functions: string[];
@@ -42424,6 +42590,13 @@ export type Database = {
42424
42590
  };
42425
42591
  Returns: boolean;
42426
42592
  };
42593
+ voorraad_withdraw_stock_row: {
42594
+ Args: {
42595
+ p_key: string;
42596
+ p_reason: string;
42597
+ };
42598
+ Returns: Json;
42599
+ };
42427
42600
  wake_print_queue: {
42428
42601
  Args: {
42429
42602
  _min_interval_ms?: number;