@flowselections/logistiek-engine 1.0.111 → 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]);