@flowselections/logistiek-engine 1.0.240 → 1.0.242

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.
@@ -1 +1 @@
1
- {"version":3,"file":"StandaardgegevensCard.d.ts","sourceRoot":"","sources":["../../src/components/StandaardgegevensCard.tsx"],"names":[],"mappings":"AAcA,wBAAgB,qBAAqB,gCAkDpC"}
1
+ {"version":3,"file":"StandaardgegevensCard.d.ts","sourceRoot":"","sources":["../../src/components/StandaardgegevensCard.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,qBAAqB,gCAoDpC"}
@@ -7,7 +7,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
7
7
  // GEEN <Header /> hier — die levert de shell.
8
8
  // ============================================================================
9
9
  import { useEffect, useState } from "react";
10
- import { Badge, Card, CardContent, CardDescription, CardHeader, CardTitle, formatDatumTijd, supabase } from "@flowselections/core";
10
+ import { Badge, Card, CardContent, CardDescription, CardHeader, CardTitle, formatDatum, formatDatumTijd, supabase } from "@flowselections/core";
11
+ import { ophaalmomentMeldingen } from "../lib/ophaalmomentTeksten.js";
12
+ import { karindelingInfo, karindelingMeldingen } from "../lib/karindelingBewakingTeksten.js";
11
13
  import { Database } from "lucide-react";
12
14
  import { meldingGewoneTaal, schemaVersieOud, VERWACHTE_SCHEMA_VERSIE } from "../lib/engineStatusTeksten.js";
13
15
  import { aangevuldeOnderdelen, useEngineZelfherstel } from "../hooks/useEngineZelfherstel.js";
@@ -25,7 +27,7 @@ export function StandaardgegevensCard() {
25
27
  const eerder = aangevuldeOnderdelen(laatste);
26
28
  const meldingen = Array.isArray(resultaat?.meldingen) ? resultaat.meldingen : [];
27
29
  return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-base", children: [_jsx(Database, { className: "h-4 w-4" }), " Standaardgegevens", fout ? _jsx(Badge, { variant: "destructive", children: "Controle mislukt" })
28
- : resultaat ? _jsx(Badge, { variant: "secondary", children: nu.length ? "Aangevuld" : "Compleet" }) : null] }), _jsx(CardDescription, { children: "Ladingdragers, Floriday-vertalingen, planinstellingen, tijdinstelling en strategie." })] }), _jsxs(CardContent, { className: "space-y-2 text-sm", children: [fout && _jsxs("p", { className: "text-destructive", children: ["Kon niet controleren: ", fout] }), nu.length > 0 && (_jsxs("div", { children: [_jsx("p", { className: "font-medium", children: "Zojuist aangevuld:" }), _jsx("ul", { className: "list-disc pl-5", children: nu.map((t) => _jsx("li", { children: t }, t)) })] })), nu.length === 0 && eerder.length > 0 && laatste?.op && (_jsxs("div", { children: [_jsxs("p", { className: "text-muted-foreground", children: ["Laatst aangevuld op ", new Date(laatste.op).toLocaleString("nl-NL"), ":"] }), _jsx("ul", { className: "list-disc pl-5 text-muted-foreground", children: eerder.map((t) => _jsx("li", { children: t }, t)) })] })), resultaat && nu.length === 0 && eerder.length === 0 && _jsx("p", { className: "text-muted-foreground", children: "Alle standaardgegevens zijn aanwezig." }), meldingen.map((m) => _jsx("p", { className: "text-destructive", children: meldingGewoneTaal(m) }, m)), _jsx(SchemaVersieStatus, {}), _jsx(OnderhoudStatus, {}), _jsx(ProductiebonStatus, {}), _jsx(SamenvoeggroepenStatus, {}), _jsx(StickerSyncStatus, {}), _jsx(SamenvoegenStatus, {})] })] }));
30
+ : resultaat ? _jsx(Badge, { variant: "secondary", children: nu.length ? "Aangevuld" : "Compleet" }) : null] }), _jsx(CardDescription, { children: "Ladingdragers, Floriday-vertalingen, planinstellingen, tijdinstelling en strategie." })] }), _jsxs(CardContent, { className: "space-y-2 text-sm", children: [fout && _jsxs("p", { className: "text-destructive", children: ["Kon niet controleren: ", fout] }), nu.length > 0 && (_jsxs("div", { children: [_jsx("p", { className: "font-medium", children: "Zojuist aangevuld:" }), _jsx("ul", { className: "list-disc pl-5", children: nu.map((t) => _jsx("li", { children: t }, t)) })] })), nu.length === 0 && eerder.length > 0 && laatste?.op && (_jsxs("div", { children: [_jsxs("p", { className: "text-muted-foreground", children: ["Laatst aangevuld op ", new Date(laatste.op).toLocaleString("nl-NL"), ":"] }), _jsx("ul", { className: "list-disc pl-5 text-muted-foreground", children: eerder.map((t) => _jsx("li", { children: t }, t)) })] })), resultaat && nu.length === 0 && eerder.length === 0 && _jsx("p", { className: "text-muted-foreground", children: "Alle standaardgegevens zijn aanwezig." }), meldingen.map((m) => _jsx("p", { className: "text-destructive", children: meldingGewoneTaal(m) }, m)), _jsx(SchemaVersieStatus, {}), _jsx(OnderhoudStatus, {}), _jsx(ProductiebonStatus, {}), _jsx(SamenvoeggroepenStatus, {}), _jsx(StickerSyncStatus, {}), _jsx(SamenvoegenStatus, {}), _jsx(OphaalmomentStatus, {}), _jsx(KarindelingStatus, {})] })] }));
29
31
  }
30
32
  // 1.0.228: wachtrij per status, oudste trace-regel en laatste opruimronde.
31
33
  function OnderhoudStatus() {
@@ -133,6 +135,51 @@ function SamenvoegenStatus() {
133
135
  const fouten = Number(info.fouten ?? 0);
134
136
  return (_jsxs("div", { className: "border-t pt-2", children: [_jsx("p", { className: "font-medium", children: "Orders combineren" }), teGroot === 0 && verwijderd === 0 && fouten === 0 && _jsx("p", { className: "text-muted-foreground", children: "Geen meldingen." }), teGroot > 0 && _jsxs("p", { className: "text-destructive", children: [teGroot, " orders zijn samengevoegd in een groep van meer dan 20."] }), verwijderd > 0 && (_jsxs("p", { className: "text-destructive", children: [verwijderd, " nieuwe orders zijn als verwijderd binnengekomen; ze krijgen geen karindeling."] })), fouten > 0 && (_jsxs("p", { className: "text-destructive", children: ["Combineren lukte ", fouten, " keer niet", info.laatsteFout?.melding ? `; laatste: ${info.laatsteFout.melding}` : "", ". De order wordt dan los ingedeeld."] }))] }));
135
137
  }
138
+ // Ophaalmomenten: orders zonder moment en of de momenten ver genoeg vooruit bekend zijn (alleen meldingen).
139
+ function OphaalmomentStatus() {
140
+ const [info, setInfo] = useState(null);
141
+ const [fout, setFout] = useState(null);
142
+ useEffect(() => {
143
+ supabase.rpc("logistics_pickup_status").then(({ data, error }) => {
144
+ if (error) {
145
+ console.error("logistics_pickup_status", error);
146
+ if (error.code !== "42501")
147
+ setFout(error.message);
148
+ return;
149
+ }
150
+ setInfo(data && typeof data === "object" ? data : null);
151
+ });
152
+ }, []);
153
+ if (fout)
154
+ return _jsx("p", { className: "border-t pt-2 text-destructive", children: "Ophaalmomenten: status kon niet worden gelezen." });
155
+ if (!info)
156
+ return null;
157
+ const regels = ophaalmomentMeldingen(info, (d) => formatDatum(d));
158
+ return (_jsxs("div", { className: "border-t pt-2", children: [_jsx("p", { className: "font-medium", children: "Ophaalmomenten" }), regels.length === 0 && _jsx("p", { className: "text-muted-foreground", children: "Geen meldingen." }), regels.map((t, i) => (_jsx("p", { className: "text-destructive", children: t }, i)))] }));
159
+ }
160
+ // Karindeling: achterstand en duur van het lezen van productmaten.
161
+ function KarindelingStatus() {
162
+ const [info, setInfo] = useState(null);
163
+ const [fout, setFout] = useState(null);
164
+ useEffect(() => {
165
+ supabase.rpc("logistics_karindeling_bewaking").then(({ data, error }) => {
166
+ if (error) {
167
+ console.error("logistics_karindeling_bewaking", error);
168
+ if (error.code !== "42501" && error.code !== "PGRST202")
169
+ setFout(error.message);
170
+ return;
171
+ }
172
+ setInfo(data && typeof data === "object" ? data : null);
173
+ });
174
+ }, []);
175
+ if (fout)
176
+ return _jsx("p", { className: "border-t pt-2 text-destructive", children: "Karindeling: status kon niet worden gelezen." });
177
+ if (!info)
178
+ return null;
179
+ const meldingen = karindelingMeldingen(info);
180
+ const info2 = karindelingInfo(info);
181
+ return (_jsxs("div", { className: "border-t pt-2", children: [_jsx("p", { className: "font-medium", children: "Karindeling" }), meldingen.length === 0 && info2.length === 0 && _jsx("p", { className: "text-muted-foreground", children: "Geen meldingen." }), meldingen.map((t, i) => (_jsx("p", { className: "text-destructive", children: t }, `m${i}`))), info2.map((t, i) => (_jsx("p", { className: "text-muted-foreground", children: t }, `i${i}`)))] }));
182
+ }
136
183
  // Punt 8: is de database van deze shell bijgewerkt voor deze moduleversie?
137
184
  function SchemaVersieStatus() {
138
185
  const [oud, setOud] = useState(null);
@@ -11809,6 +11809,7 @@ export type Database = {
11809
11809
  last_send_outbox_id: string | null;
11810
11810
  merged_into: string | null;
11811
11811
  note: string | null;
11812
+ note_important: boolean;
11812
11813
  paid_at: string | null;
11813
11814
  payment_term_days: number;
11814
11815
  reference: string | null;
@@ -11848,6 +11849,7 @@ export type Database = {
11848
11849
  last_send_outbox_id?: string | null;
11849
11850
  merged_into?: string | null;
11850
11851
  note?: string | null;
11852
+ note_important?: boolean;
11851
11853
  paid_at?: string | null;
11852
11854
  payment_term_days?: number;
11853
11855
  reference?: string | null;
@@ -11887,6 +11889,7 @@ export type Database = {
11887
11889
  last_send_outbox_id?: string | null;
11888
11890
  merged_into?: string | null;
11889
11891
  note?: string | null;
11892
+ note_important?: boolean;
11890
11893
  paid_at?: string | null;
11891
11894
  payment_term_days?: number;
11892
11895
  reference?: string | null;
@@ -15665,35 +15668,47 @@ export type Database = {
15665
15668
  };
15666
15669
  logistics_pickup_moments: {
15667
15670
  Row: {
15671
+ carrier_id: string | null;
15668
15672
  carrier_ref: string | null;
15669
15673
  created_at: string;
15670
15674
  id: string;
15671
15675
  label: string | null;
15672
15676
  moment_date: string;
15677
+ pickup_days: number | null;
15673
15678
  pickup_time: string;
15674
15679
  sequence: number;
15680
+ signup_days: number | null;
15681
+ signup_time: string | null;
15675
15682
  updated_at: string;
15676
15683
  user_id: string;
15677
15684
  };
15678
15685
  Insert: {
15686
+ carrier_id?: string | null;
15679
15687
  carrier_ref?: string | null;
15680
15688
  created_at?: string;
15681
15689
  id?: string;
15682
15690
  label?: string | null;
15683
15691
  moment_date: string;
15692
+ pickup_days?: number | null;
15684
15693
  pickup_time: string;
15685
15694
  sequence?: number;
15695
+ signup_days?: number | null;
15696
+ signup_time?: string | null;
15686
15697
  updated_at?: string;
15687
15698
  user_id?: string;
15688
15699
  };
15689
15700
  Update: {
15701
+ carrier_id?: string | null;
15690
15702
  carrier_ref?: string | null;
15691
15703
  created_at?: string;
15692
15704
  id?: string;
15693
15705
  label?: string | null;
15694
15706
  moment_date?: string;
15707
+ pickup_days?: number | null;
15695
15708
  pickup_time?: string;
15696
15709
  sequence?: number;
15710
+ signup_days?: number | null;
15711
+ signup_time?: string | null;
15697
15712
  updated_at?: string;
15698
15713
  user_id?: string;
15699
15714
  };
@@ -32764,6 +32779,7 @@ export type Database = {
32764
32779
  body: string;
32765
32780
  created_at: string;
32766
32781
  id: string;
32782
+ is_important: boolean;
32767
32783
  updated_at: string;
32768
32784
  user_id: string;
32769
32785
  werkbon_id: string;
@@ -32772,6 +32788,7 @@ export type Database = {
32772
32788
  body: string;
32773
32789
  created_at?: string;
32774
32790
  id?: string;
32791
+ is_important?: boolean;
32775
32792
  updated_at?: string;
32776
32793
  user_id?: string;
32777
32794
  werkbon_id: string;
@@ -32780,6 +32797,7 @@ export type Database = {
32780
32797
  body?: string;
32781
32798
  created_at?: string;
32782
32799
  id?: string;
32800
+ is_important?: boolean;
32783
32801
  updated_at?: string;
32784
32802
  user_id?: string;
32785
32803
  werkbon_id?: string;
@@ -37179,6 +37197,14 @@ export type Database = {
37179
37197
  };
37180
37198
  Returns: undefined;
37181
37199
  };
37200
+ facturatie_auto_invoice_skip_reason: {
37201
+ Args: {
37202
+ p_custom_fields: Json;
37203
+ p_delivery_date: string;
37204
+ p_start: string;
37205
+ };
37206
+ Returns: string;
37207
+ };
37182
37208
  facturatie_ensure_cron: {
37183
37209
  Args: never;
37184
37210
  Returns: string;
@@ -38478,6 +38504,7 @@ export type Database = {
38478
38504
  };
38479
38505
  invoice_set_note: {
38480
38506
  Args: {
38507
+ _important?: boolean;
38481
38508
  _invoice_id: string;
38482
38509
  _note: string;
38483
38510
  };
@@ -41322,6 +41349,14 @@ export type Database = {
41322
41349
  };
41323
41350
  Returns: string;
41324
41351
  };
41352
+ logistics_karindeling_bewaking: {
41353
+ Args: never;
41354
+ Returns: Json;
41355
+ };
41356
+ logistics_karindeling_onderhoud: {
41357
+ Args: never;
41358
+ Returns: Json;
41359
+ };
41325
41360
  logistics_key_product: {
41326
41361
  Args: {
41327
41362
  p_key: string;
@@ -41620,6 +41655,12 @@ export type Database = {
41620
41655
  };
41621
41656
  Returns: boolean;
41622
41657
  };
41658
+ logistics_order_buffer_ref: {
41659
+ Args: {
41660
+ p_order_id: string;
41661
+ };
41662
+ Returns: string;
41663
+ };
41623
41664
  logistics_order_carrier_id: {
41624
41665
  Args: {
41625
41666
  p_order_id: string;
@@ -42346,14 +42387,61 @@ export type Database = {
42346
42387
  };
42347
42388
  Returns: Json;
42348
42389
  };
42390
+ logistics_pickup_carrier_uit_naam: {
42391
+ Args: {
42392
+ p_naam: string;
42393
+ };
42394
+ Returns: string;
42395
+ };
42396
+ logistics_pickup_cf_nieuw: {
42397
+ Args: {
42398
+ p_cancelled_at: string;
42399
+ p_carrier_id: string;
42400
+ p_cf: Json;
42401
+ p_deleted_at: string;
42402
+ p_delivery_date: string;
42403
+ p_plan_locked_at: string;
42404
+ p_regel?: Json;
42405
+ };
42406
+ Returns: Json;
42407
+ };
42349
42408
  logistics_pickup_herbereken: {
42350
42409
  Args: never;
42351
42410
  Returns: Json;
42352
42411
  };
42412
+ logistics_pickup_herwijs: {
42413
+ Args: {
42414
+ p_carrier_ids: string[];
42415
+ p_max?: number;
42416
+ };
42417
+ Returns: Json;
42418
+ };
42419
+ logistics_pickup_moment_kies: {
42420
+ Args: {
42421
+ p_carrier_id: string;
42422
+ p_leverdag: string;
42423
+ p_levertijd: string;
42424
+ p_marge_uren: number;
42425
+ p_regel: string;
42426
+ };
42427
+ Returns: Json;
42428
+ };
42429
+ logistics_pickup_moments_koppel: {
42430
+ Args: never;
42431
+ Returns: number;
42432
+ };
42353
42433
  logistics_pickup_moments_today: {
42354
42434
  Args: never;
42355
42435
  Returns: Json;
42356
42436
  };
42437
+ logistics_pickup_regel: {
42438
+ Args: never;
42439
+ Returns: Json;
42440
+ };
42441
+ logistics_pickup_status: {
42442
+ Args: never;
42443
+ Returns: Json;
42444
+ };
42357
42445
  logistics_pickup_ts: {
42358
42446
  Args: {
42359
42447
  p_delivery_date: string;
@@ -42361,6 +42449,16 @@ export type Database = {
42361
42449
  };
42362
42450
  Returns: string;
42363
42451
  };
42452
+ logistics_pickup_vul_uitvoeren: {
42453
+ Args: {
42454
+ p_max?: number;
42455
+ };
42456
+ Returns: Json;
42457
+ };
42458
+ logistics_pickup_vul_voorbeeld: {
42459
+ Args: never;
42460
+ Returns: Json;
42461
+ };
42364
42462
  logistics_plan_all: {
42365
42463
  Args: {
42366
42464
  p_user_id?: string;
@@ -42463,6 +42561,27 @@ export type Database = {
42463
42561
  };
42464
42562
  Returns: number;
42465
42563
  };
42564
+ logistics_plan_gegevens_codes: {
42565
+ Args: never;
42566
+ Returns: string[];
42567
+ };
42568
+ logistics_plan_gegevens_opnieuw: {
42569
+ Args: {
42570
+ p_order_ids: string[];
42571
+ p_reden: string;
42572
+ };
42573
+ Returns: number;
42574
+ };
42575
+ logistics_plan_gegevens_vangnet: {
42576
+ Args: {
42577
+ p_force?: boolean;
42578
+ };
42579
+ Returns: Json;
42580
+ };
42581
+ logistics_plan_herstel_tijdelijk: {
42582
+ Args: never;
42583
+ Returns: Json;
42584
+ };
42466
42585
  logistics_plan_housekeeping: {
42467
42586
  Args: never;
42468
42587
  Returns: Json;
@@ -42483,6 +42602,12 @@ export type Database = {
42483
42602
  };
42484
42603
  Returns: string;
42485
42604
  };
42605
+ logistics_plan_is_tijdelijk: {
42606
+ Args: {
42607
+ p_text: string;
42608
+ };
42609
+ Returns: boolean;
42610
+ };
42486
42611
  logistics_plan_kick: {
42487
42612
  Args: never;
42488
42613
  Returns: undefined;
@@ -42602,6 +42727,19 @@ export type Database = {
42602
42727
  };
42603
42728
  Returns: Json;
42604
42729
  };
42730
+ logistics_plan_tijdelijk_opnieuw: {
42731
+ Args: {
42732
+ p_order_ids: string[];
42733
+ p_reason: string;
42734
+ };
42735
+ Returns: string[];
42736
+ };
42737
+ logistics_plan_tijdelijk_wacht: {
42738
+ Args: {
42739
+ p_attempts: number;
42740
+ };
42741
+ Returns: string;
42742
+ };
42605
42743
  logistics_plan_timeout_running: {
42606
42744
  Args: never;
42607
42745
  Returns: number;
@@ -42671,6 +42809,16 @@ export type Database = {
42671
42809
  };
42672
42810
  Returns: Json;
42673
42811
  };
42812
+ logistics_prestatietest: {
42813
+ Args: {
42814
+ p_deel?: string;
42815
+ p_fusten?: number;
42816
+ p_orders?: number;
42817
+ p_producten?: number;
42818
+ p_triggers_uit?: boolean;
42819
+ };
42820
+ Returns: Json;
42821
+ };
42674
42822
  logistics_print_job_state: {
42675
42823
  Args: {
42676
42824
  p_job_id: string;
@@ -49706,6 +49854,12 @@ export type Database = {
49706
49854
  };
49707
49855
  Returns: undefined;
49708
49856
  };
49857
+ verkoop_latest_delivery_aanvullen: {
49858
+ Args: {
49859
+ p_max?: number;
49860
+ };
49861
+ Returns: Json;
49862
+ };
49709
49863
  verkoop_packing_drift_apply: {
49710
49864
  Args: {
49711
49865
  p_order_ids: string[];