@flowselections/logistiek-engine 1.0.112 → 1.0.113

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":"MisluktVerzendbrievenCard.d.ts","sourceRoot":"","sources":["../../src/components/MisluktVerzendbrievenCard.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,yBAAyB,gCAqExC"}
1
+ {"version":3,"file":"MisluktVerzendbrievenCard.d.ts","sourceRoot":"","sources":["../../src/components/MisluktVerzendbrievenCard.tsx"],"names":[],"mappings":"AAoBA,wBAAgB,yBAAyB,gCAwExC"}
@@ -15,7 +15,7 @@ export function MisluktVerzendbrievenCard() {
15
15
  const laad = useCallback(async () => {
16
16
  const { data, error } = await supabase
17
17
  .from("logistics_slip_shipping_note")
18
- .select("id, order_number, error, error_code, updated_at")
18
+ .select("id, order_number, error, error_code, updated_at, voor_herstel")
19
19
  .eq("status", "mislukt")
20
20
  .order("updated_at", { ascending: false })
21
21
  .limit(25);
@@ -35,7 +35,7 @@ export function MisluktVerzendbrievenCard() {
35
35
  const { data, error } = await supabase.rpc("logistics_slip_note_retry", { _id: id });
36
36
  const res = (data ?? {});
37
37
  if (error || !res.ok) {
38
- toast.error(error?.message ?? res.error ?? "Opnieuw proberen is niet gelukt.");
38
+ toast.error(error?.message ?? res.error ?? "Opnieuw starten is niet gelukt.");
39
39
  }
40
40
  else {
41
41
  toast.success("De verzendbrief wordt opnieuw aangevraagd.");
@@ -46,5 +46,5 @@ export function MisluktVerzendbrievenCard() {
46
46
  setBezig(null);
47
47
  }
48
48
  };
49
- return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Mislukte verzendbrieven" }), _jsx(CardDescription, { children: "Floriday-verzendbrieven bij een pakbon die niet geprint konden worden. Los de oorzaak op en druk op \"Opnieuw proberen\"; de kar hoeft niet opnieuw gescand te worden." })] }), _jsxs(CardContent, { className: "space-y-2", children: [fout && _jsx("p", { className: "text-sm text-destructive", children: fout }), !fout && regels.length === 0 && (_jsx("p", { className: "text-sm text-muted-foreground", children: "Geen mislukte verzendbrieven." })), regels.map((r) => (_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border py-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-sm font-medium", children: r.order_number ?? "Onbekende order" }), _jsx("p", { className: "text-xs text-muted-foreground break-words", children: r.error ?? r.error_code ?? "Onbekende fout" })] }), _jsxs(Button, { size: "sm", variant: "outline", disabled: bezig === r.id, onClick: () => void opnieuw(r.id), children: [_jsx(RefreshCw, { className: "mr-1 h-3 w-3" }), "Opnieuw proberen"] })] }, r.id)))] })] }));
49
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Mislukte verzendbrieven" }), _jsx(CardDescription, { children: "Floriday-verzendbrieven bij een pakbon die niet geprint konden worden. Opnieuw starten kan alleen bij een open order met een goedgekeurde controlescan; de kar hoeft niet opnieuw gescand te worden." })] }), _jsxs(CardContent, { className: "space-y-2", children: [fout && _jsx("p", { className: "text-sm text-destructive", children: fout }), !fout && regels.length === 0 && (_jsx("p", { className: "text-sm text-muted-foreground", children: "Geen mislukte verzendbrieven." })), regels.map((r) => (_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border py-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("p", { className: "text-sm font-medium", children: [r.order_number ?? "Onbekende order", r.voor_herstel && _jsx("span", { className: "ml-2 text-xs text-muted-foreground", children: "oud, v\u00F3\u00F3r herstel" })] }), _jsx("p", { className: "text-xs text-muted-foreground break-words", children: r.error ?? r.error_code ?? "Onbekende fout" })] }), _jsxs(Button, { size: "sm", variant: "outline", disabled: bezig === r.id, onClick: () => void opnieuw(r.id), children: [_jsx(RefreshCw, { className: "mr-1 h-3 w-3" }), "Opnieuw starten"] })] }, r.id)))] })] }));
50
50
  }
@@ -8,6 +8,8 @@ export interface ShippingNoteStatus {
8
8
  shippingNoteJobId: string | null;
9
9
  cartId: string | null;
10
10
  orderNumber: string | null;
11
+ /** Wacht op goedgekeurde controlescan/vrijgave; geen fout na de pollimiet. */
12
+ wachtOpVrijgave?: boolean;
11
13
  }
12
14
  /** Zet een nog wachtende status om naar een expliciete fout na de pollimiet. */
13
15
  export declare function timedOutStatus(current: ShippingNoteStatus, maxPollMs: number): ShippingNoteStatus;
@@ -18,7 +20,7 @@ export declare function timedOutStatus(current: ShippingNoteStatus, maxPollMs: n
18
20
  * aanvraag of printopdracht. Ontbreekt de sleutel, dan gebeurt er niets extra
19
21
  * en blijft de gewone achtergrondverwerking de status bijwerken.
20
22
  */
21
- export declare function kickShippingNoteQueue(): Promise<void>;
23
+ export declare function kickShippingNoteQueue(slipJobId?: string | null): Promise<void>;
22
24
  export declare function useShippingNoteStatus(slipJobId: string | null, cartId: string | null, options?: {
23
25
  pollMs?: number;
24
26
  maxPollMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"useShippingNoteStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useShippingNoteStatus.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,sBAAsB,GAC9B,kBAAkB,GAClB,mBAAmB,GACnB,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAOpB;AA6BD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAe3D;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO;;;;EAyD1E"}
1
+ {"version":3,"file":"useShippingNoteStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useShippingNoteStatus.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,sBAAsB,GAC9B,kBAAkB,GAClB,mBAAmB,GACnB,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAID,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAQpB;AA8BD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1F;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO;;;;EAyD1E"}
@@ -7,6 +7,8 @@ import { supabase } from "@flowselections/core";
7
7
  const WAITING = new Set(["klaar_voor_print", "wacht_op_floriday"]);
8
8
  /** Zet een nog wachtende status om naar een expliciete fout na de pollimiet. */
9
9
  export function timedOutStatus(current, maxPollMs) {
10
+ if (current.wachtOpVrijgave)
11
+ return current;
10
12
  const minuten = Math.round(maxPollMs / 60000);
11
13
  return {
12
14
  ...current,
@@ -34,6 +36,7 @@ function safeStatus(value) {
34
36
  shippingNoteJobId: typeof row["shippingNoteJobId"] === "string" ? row["shippingNoteJobId"] : null,
35
37
  cartId: typeof row["cartId"] === "string" ? row["cartId"] : null,
36
38
  orderNumber: typeof row["orderNumber"] === "string" ? row["orderNumber"] : null,
39
+ wachtOpVrijgave: row["wachtOpVrijgave"] === true,
37
40
  };
38
41
  }
39
42
  /**
@@ -43,7 +46,7 @@ function safeStatus(value) {
43
46
  * aanvraag of printopdracht. Ontbreekt de sleutel, dan gebeurt er niets extra
44
47
  * en blijft de gewone achtergrondverwerking de status bijwerken.
45
48
  */
46
- export async function kickShippingNoteQueue() {
49
+ export async function kickShippingNoteQueue(slipJobId = null) {
47
50
  const apikey = import.meta.env["VITE_SUPABASE_PUBLISHABLE_KEY"] ??
48
51
  import.meta.env["VITE_SUPABASE_ANON_KEY"] ??
49
52
  "";
@@ -53,7 +56,7 @@ export async function kickShippingNoteQueue() {
53
56
  await fetch("/api/public/hooks/logistics-shipping-note-now", {
54
57
  method: "POST",
55
58
  headers: { apikey, "Content-Type": "application/json" },
56
- body: "{}",
59
+ body: JSON.stringify(slipJobId ? { slipJobId } : {}),
57
60
  });
58
61
  }
59
62
  catch {
@@ -100,7 +103,7 @@ export function useShippingNoteStatus(slipJobId, cartId, options = {}) {
100
103
  return;
101
104
  void (async () => {
102
105
  if (fetchNow)
103
- await kickShippingNoteQueue();
106
+ await kickShippingNoteQueue(slipJobId);
104
107
  await reload();
105
108
  })();
106
109
  }, [cartId, fetchNow, reload, slipJobId]);
@@ -12845,6 +12845,7 @@ export type Database = {
12845
12845
  slip_job_id: string;
12846
12846
  status: string;
12847
12847
  updated_at: string;
12848
+ voor_herstel: boolean;
12848
12849
  };
12849
12850
  Insert: {
12850
12851
  attempts?: number;
@@ -12865,6 +12866,7 @@ export type Database = {
12865
12866
  slip_job_id: string;
12866
12867
  status?: string;
12867
12868
  updated_at?: string;
12869
+ voor_herstel?: boolean;
12868
12870
  };
12869
12871
  Update: {
12870
12872
  attempts?: number;
@@ -12885,6 +12887,7 @@ export type Database = {
12885
12887
  slip_job_id?: string;
12886
12888
  status?: string;
12887
12889
  updated_at?: string;
12890
+ voor_herstel?: boolean;
12888
12891
  };
12889
12892
  Relationships: [];
12890
12893
  };
@@ -19088,7 +19091,7 @@ export type Database = {
19088
19091
  id?: string;
19089
19092
  product_group_id: string;
19090
19093
  quantity?: number;
19091
- sort_order?: number;
19094
+ sort_order: number;
19092
19095
  trade_item_id: string;
19093
19096
  };
19094
19097
  Update: {
@@ -30801,6 +30804,16 @@ export type Database = {
30801
30804
  };
30802
30805
  Returns: string;
30803
30806
  };
30807
+ logistics_shipping_note_max_attempts: {
30808
+ Args: never;
30809
+ Returns: number;
30810
+ };
30811
+ logistics_shipping_note_release: {
30812
+ Args: {
30813
+ _order_number?: string;
30814
+ };
30815
+ Returns: number;
30816
+ };
30804
30817
  logistics_shipping_note_status: {
30805
30818
  Args: {
30806
30819
  p_cart_id?: string;
@@ -30808,6 +30821,12 @@ export type Database = {
30808
30821
  };
30809
30822
  Returns: Json;
30810
30823
  };
30824
+ logistics_shipping_note_wake: {
30825
+ Args: {
30826
+ _slip_job_id: string;
30827
+ };
30828
+ Returns: number;
30829
+ };
30811
30830
  logistics_shipping_notes_wake_all: {
30812
30831
  Args: never;
30813
30832
  Returns: Json;
@@ -30842,6 +30861,7 @@ export type Database = {
30842
30861
  slip_job_id: string;
30843
30862
  status: string;
30844
30863
  updated_at: string;
30864
+ voor_herstel: boolean;
30845
30865
  }[];
30846
30866
  SetofOptions: {
30847
30867
  from: "*";
@@ -30862,6 +30882,13 @@ export type Database = {
30862
30882
  };
30863
30883
  Returns: undefined;
30864
30884
  };
30885
+ logistics_slip_note_hold: {
30886
+ Args: {
30887
+ _id: string;
30888
+ _reason: string;
30889
+ };
30890
+ Returns: undefined;
30891
+ };
30865
30892
  logistics_slip_note_keep_waiting: {
30866
30893
  Args: {
30867
30894
  _class?: string;