@flowselections/floriday-voorraad 1.0.44 → 1.0.46

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.
Files changed (32) hide show
  1. package/dist-lib/components/voorraad/StockPushMonitor.d.ts.map +1 -1
  2. package/dist-lib/components/voorraad/StockPushMonitor.js +31 -2
  3. package/dist-lib/hooks/useStockPushJobs.d.ts +2 -0
  4. package/dist-lib/hooks/useStockPushJobs.d.ts.map +1 -1
  5. package/dist-lib/hooks/useStockPushJobs.js +3 -1
  6. package/dist-lib/integrations/supabase/auth-middleware.d.ts +84 -0
  7. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  8. package/dist-lib/integrations/supabase/client.d.ts +84 -0
  9. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  10. package/dist-lib/integrations/supabase/client.server.d.ts +84 -0
  11. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  12. package/dist-lib/integrations/supabase/types.d.ts +84 -0
  13. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  14. package/dist-lib/lib/floricode-required-features.functions.d.ts +84 -0
  15. package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
  16. package/dist-lib/lib/floriday-customer-offer.functions.d.ts +84 -0
  17. package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -1
  18. package/dist-lib/lib/floriday-env.functions.d.ts +168 -0
  19. package/dist-lib/lib/floriday-env.functions.d.ts.map +1 -1
  20. package/dist-lib/lib/floriday-gateway.functions.d.ts +504 -0
  21. package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
  22. package/dist-lib/lib/floriday-vbn-required.functions.d.ts +168 -0
  23. package/dist-lib/lib/floriday-vbn-required.functions.d.ts.map +1 -1
  24. package/dist-lib/lib/floriday-warehouse.functions.d.ts +252 -0
  25. package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
  26. package/dist-lib/lib/floriday-writes.functions.d.ts +168 -0
  27. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  28. package/dist-lib/lib/inventory-settings.functions.d.ts +168 -0
  29. package/dist-lib/lib/inventory-settings.functions.d.ts.map +1 -1
  30. package/dist-lib/lib/stock-sync.functions.d.ts +168 -0
  31. package/dist-lib/lib/stock-sync.functions.d.ts.map +1 -1
  32. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"StockPushMonitor.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/StockPushMonitor.tsx"],"names":[],"mappings":"AAqKA,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,2CA+LjF"}
1
+ {"version":3,"file":"StockPushMonitor.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/StockPushMonitor.tsx"],"names":[],"mappings":"AAmMA,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,2CA2MjF"}
@@ -108,6 +108,34 @@ function timeLabel(iso) {
108
108
  const d = new Date(iso);
109
109
  return Number.isNaN(d.getTime()) ? "—" : d.toLocaleTimeString("nl-NL");
110
110
  }
111
+ /** ISO-weeknummer van vandaag, om "deze week" te kunnen tonen. */
112
+ function isoWeekNow() {
113
+ const d = new Date();
114
+ const t = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
115
+ const day = t.getUTCDay() || 7;
116
+ t.setUTCDate(t.getUTCDate() + 4 - day);
117
+ const start = new Date(Date.UTC(t.getUTCFullYear(), 0, 1));
118
+ const week = Math.ceil(((t.getTime() - start.getTime()) / 86400000 + 1) / 7);
119
+ return { year: t.getUTCFullYear(), week };
120
+ }
121
+ /**
122
+ * Eén voorraadwijziging levert bewust meerdere berichten op: het actuele aantal
123
+ * stuks én per week de verwachte beschikbaarheid. Dit maakt dat zichtbaar.
124
+ */
125
+ function scopeLabel(job) {
126
+ if (job.targetWeek == null || job.targetYear == null) {
127
+ return {
128
+ label: "Actuele voorraad",
129
+ hint: "Het aantal stuks dat nu op voorraad ligt (continuous stock).",
130
+ };
131
+ }
132
+ const now = isoWeekNow();
133
+ const isThisWeek = now.year === job.targetYear && now.week === job.targetWeek;
134
+ return {
135
+ label: `Week ${job.targetWeek}${isThisWeek ? " (deze week)" : ""} · ${job.targetYear}`,
136
+ hint: "De verwachte beschikbaarheid voor deze week (weekaanbod).",
137
+ };
138
+ }
111
139
  function useLinkedTradeItems(connectionId) {
112
140
  return useQuery({
113
141
  queryKey: ["linked-trade-items", connectionId],
@@ -180,9 +208,10 @@ export function StockPushMonitor({ connectionId }) {
180
208
  return `laatste: ${displayStatus(last).label} om ${timeLabel(last.createdAt)}`;
181
209
  }, [rows]);
182
210
  const stuckCount = rows.filter((r) => displayStatus(r).label === "Vastgelopen").length;
183
- return (_jsxs("section", { className: "rounded-lg border bg-card", children: [_jsxs("button", { type: "button", className: "flex w-full items-center gap-2 px-4 py-3 text-left text-sm font-medium", onClick: () => setOpen((v) => !v), children: [open ? (_jsx(ChevronDown, { className: "h-4 w-4 text-muted-foreground" })) : (_jsx(ChevronRight, { className: "h-4 w-4 text-muted-foreground" })), "Voorraadsync naar Floriday testen", _jsx("span", { className: "ml-auto text-xs font-normal text-muted-foreground", children: summary })] }), open && (_jsxs("div", { className: "space-y-4 border-t px-4 py-4 text-sm", children: [_jsx("p", { className: "text-muted-foreground", children: "Elke voorraadwijziging van een gekoppeld artikel zet automatisch een opdracht in de wachtrij. De Floriday-Authenticatiemodule verwerkt die elke minuut en stuurt dan het aantal stuks en de beschikbaarheid naar Floriday. Hieronder plan je een testopdracht in met de huidige voorraadstand, zonder iets te wijzigen." }), blockade.data?.blocked && (_jsxs("div", { className: "rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-destructive", children: [_jsx("span", { className: "font-medium", children: "Actie nodig: " }), "de Floriday-Authenticatiemodule krijgt geen geldig token, dus elke push mislukt meteen. Dit lost zichzelf niet op \u2014 controleer daar het adres van Central Auth en de actieve inloggegevens voor deze omgeving.", blockade.data.message && (_jsxs("span", { className: "block opacity-80", children: ["Melding: ", blockade.data.message] }))] })), stuckCount > 0 && (_jsxs("div", { className: "rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-amber-800", children: [stuckCount === 1 ? "Eén opdracht is" : `${stuckCount} opdrachten zijn`, " door de verwerker opgepakt maar nooit afgerond. Ze worden na vijf minuten automatisch opnieuw opgepakt."] })), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Select, { value: selected, onValueChange: setSelected, disabled: !connectionId || items.isLoading || itemList.length === 0, children: [_jsx(SelectTrigger, { className: "h-9 w-[22rem]", children: _jsx(SelectValue, { placeholder: items.isLoading ? "Artikelen laden…" : "Geen gekoppelde artikelen gevonden" }) }), _jsx(SelectContent, { className: "max-h-72", children: itemList.map((i) => (_jsx(SelectItem, { value: i.id, children: _jsxs("span", { className: "flex w-full items-center justify-between gap-3", children: [_jsx("span", { className: "truncate", children: i.name }), _jsxs("span", { className: "tabular-nums text-muted-foreground", children: [i.stock, " stuks"] })] }) }, i.id))) })] }), _jsxs(Button, { type: "button", disabled: !selected || mutation.isPending, onClick: () => selected && mutation.mutate(selected), children: [_jsx(Send, { className: "mr-2 h-4 w-4" }), "Testpush uitvoeren"] }), _jsxs(Button, { type: "button", variant: "outline", disabled: jobs.isFetching, onClick: () => void jobs.refetch(), children: [_jsx(RefreshCw, { className: `mr-2 h-4 w-4 ${jobs.isFetching ? "animate-spin" : ""}` }), "Ververs"] })] }), _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-left text-xs", children: [_jsx("thead", { className: "text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-1 pr-3 font-medium", children: "Artikel" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Stuks" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Status" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Pogingen" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Aangemaakt" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Bijgewerkt" }), _jsx("th", { className: "py-1 font-medium", children: "Melding" })] }) }), _jsxs("tbody", { children: [rows.length === 0 && (_jsx("tr", { children: _jsx("td", { colSpan: 7, className: "py-3 text-muted-foreground", children: "Er staan nog geen push-opdrachten in de wachtrij." }) })), rows.map((r) => {
211
+ return (_jsxs("section", { className: "rounded-lg border bg-card", children: [_jsxs("button", { type: "button", className: "flex w-full items-center gap-2 px-4 py-3 text-left text-sm font-medium", onClick: () => setOpen((v) => !v), children: [open ? (_jsx(ChevronDown, { className: "h-4 w-4 text-muted-foreground" })) : (_jsx(ChevronRight, { className: "h-4 w-4 text-muted-foreground" })), "Voorraadsync naar Floriday testen", _jsx("span", { className: "ml-auto text-xs font-normal text-muted-foreground", children: summary })] }), open && (_jsxs("div", { className: "space-y-4 border-t px-4 py-4 text-sm", children: [_jsx("p", { className: "text-muted-foreground", children: "Elke voorraadwijziging van een gekoppeld artikel zet automatisch opdrachten in de wachtrij. De Floriday-Authenticatiemodule verwerkt die elke minuut. Hieronder plan je een testopdracht in met de huidige voorraadstand, zonder iets te wijzigen." }), _jsxs("p", { className: "rounded-md border bg-muted/40 px-3 py-2 text-muted-foreground", children: ["E\u00E9n wijziging levert bewust meerdere berichten op: \u00E9\u00E9n met de", " ", _jsx("span", { className: "font-medium text-foreground", children: "actuele voorraad" }), " en daarnaast \u00E9\u00E9n per week met de ", _jsx("span", { className: "font-medium text-foreground", children: "verwachte beschikbaarheid" }), " voor de komende weken. Ze lijken op elkaar, maar gaan elk over een andere periode \u2014 zie de kolom \u201CGeldt voor\u201D. Plan je opnieuw een wijziging in, dan wordt een nog wachtende opdracht voor dezelfde week vervangen."] }), blockade.data?.blocked && (_jsxs("div", { className: "rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-destructive", children: [_jsx("span", { className: "font-medium", children: "Actie nodig: " }), "de Floriday-Authenticatiemodule krijgt geen geldig token, dus elke push mislukt meteen. Dit lost zichzelf niet op \u2014 controleer daar het adres van Central Auth en de actieve inloggegevens voor deze omgeving.", blockade.data.message && (_jsxs("span", { className: "block opacity-80", children: ["Melding: ", blockade.data.message] }))] })), stuckCount > 0 && (_jsxs("div", { className: "rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-amber-800", children: [stuckCount === 1 ? "Eén opdracht is" : `${stuckCount} opdrachten zijn`, " door de verwerker opgepakt maar nooit afgerond. Ze worden na vijf minuten automatisch opnieuw opgepakt."] })), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Select, { value: selected, onValueChange: setSelected, disabled: !connectionId || items.isLoading || itemList.length === 0, children: [_jsx(SelectTrigger, { className: "h-9 w-[22rem]", children: _jsx(SelectValue, { placeholder: items.isLoading ? "Artikelen laden…" : "Geen gekoppelde artikelen gevonden" }) }), _jsx(SelectContent, { className: "max-h-72", children: itemList.map((i) => (_jsx(SelectItem, { value: i.id, children: _jsxs("span", { className: "flex w-full items-center justify-between gap-3", children: [_jsx("span", { className: "truncate", children: i.name }), _jsxs("span", { className: "tabular-nums text-muted-foreground", children: [i.stock, " stuks"] })] }) }, i.id))) })] }), _jsxs(Button, { type: "button", disabled: !selected || mutation.isPending, onClick: () => selected && mutation.mutate(selected), children: [_jsx(Send, { className: "mr-2 h-4 w-4" }), "Testpush uitvoeren"] }), _jsxs(Button, { type: "button", variant: "outline", disabled: jobs.isFetching, onClick: () => void jobs.refetch(), children: [_jsx(RefreshCw, { className: `mr-2 h-4 w-4 ${jobs.isFetching ? "animate-spin" : ""}` }), "Ververs"] })] }), _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-left text-xs", children: [_jsx("thead", { className: "text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-1 pr-3 font-medium", children: "Artikel" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Geldt voor" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Stuks" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Status" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Pogingen" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Aangemaakt" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Bijgewerkt" }), _jsx("th", { className: "py-1 font-medium", children: "Melding" })] }) }), _jsxs("tbody", { children: [rows.length === 0 && (_jsx("tr", { children: _jsx("td", { colSpan: 8, className: "py-3 text-muted-foreground", children: "Er staan nog geen push-opdrachten in de wachtrij." }) })), rows.map((r) => {
184
212
  const status = displayStatus(r);
185
213
  const detail = explainError(r.lastError);
186
- return (_jsxs("tr", { className: "border-t align-top", children: [_jsx("td", { className: "py-1.5 pr-3", children: r.name }), _jsx("td", { className: "py-1.5 pr-3 tabular-nums", children: r.numberOfPieces }), _jsx("td", { className: "py-1.5 pr-3", children: _jsx("span", { className: `rounded px-1.5 py-0.5 ${toneClass(status.tone)}`, title: status.hint ?? "", children: status.label }) }), _jsx("td", { className: "py-1.5 pr-3 tabular-nums", children: r.attempts }), _jsx("td", { className: "py-1.5 pr-3 whitespace-nowrap", children: timeLabel(r.createdAt) }), _jsx("td", { className: "py-1.5 pr-3 whitespace-nowrap", children: timeLabel(r.updatedAt ?? r.createdAt) }), _jsx("td", { className: "py-1.5 max-w-[26rem] text-muted-foreground", children: detail ? (_jsxs("span", { title: r.lastError ?? "", children: [_jsx("span", { className: "block truncate", children: detail.text }), detail.action && (_jsxs("span", { className: "block text-[11px] text-foreground/70", children: ["Wat te doen: ", detail.action] }))] })) : ("—") })] }, r.id));
214
+ const scope = scopeLabel(r);
215
+ return (_jsxs("tr", { className: "border-t align-top", children: [_jsx("td", { className: "py-1.5 pr-3", children: r.name }), _jsx("td", { className: "py-1.5 pr-3 whitespace-nowrap", title: scope.hint, children: scope.label }), _jsx("td", { className: "py-1.5 pr-3 tabular-nums", children: r.numberOfPieces }), _jsx("td", { className: "py-1.5 pr-3", children: _jsx("span", { className: `rounded px-1.5 py-0.5 ${toneClass(status.tone)}`, title: status.hint ?? "", children: status.label }) }), _jsx("td", { className: "py-1.5 pr-3 tabular-nums", children: r.attempts }), _jsx("td", { className: "py-1.5 pr-3 whitespace-nowrap", children: timeLabel(r.createdAt) }), _jsx("td", { className: "py-1.5 pr-3 whitespace-nowrap", children: timeLabel(r.updatedAt ?? r.createdAt) }), _jsx("td", { className: "py-1.5 max-w-[26rem] text-muted-foreground", children: detail ? (_jsxs("span", { title: r.lastError ?? "", children: [_jsx("span", { className: "block truncate", children: detail.text }), detail.action && (_jsxs("span", { className: "block text-[11px] text-foreground/70", children: ["Wat te doen: ", detail.action] }))] })) : ("—") })] }, r.id));
187
216
  })] })] }) })] }))] }));
188
217
  }
@@ -12,6 +12,8 @@ export interface StockPushJob {
12
12
  sentAt: string | null;
13
13
  lockedAt: string | null;
14
14
  lockedBy: string | null;
15
+ targetYear: number | null;
16
+ targetWeek: number | null;
15
17
  }
16
18
  export declare function useStockPushJobs(limit?: number): import("@tanstack/react-query").UseQueryResult<StockPushJob[], Error>;
17
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useStockPushJobs.d.ts","sourceRoot":"","sources":["../../src/hooks/useStockPushJobs.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAwBD,wBAAgB,gBAAgB,CAAC,KAAK,SAAK,yEAgD1C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB;aACT,OAAO;aAAW,MAAM,GAAG,IAAI;UAoB3D"}
1
+ {"version":3,"file":"useStockPushJobs.d.ts","sourceRoot":"","sources":["../../src/hooks/useStockPushJobs.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAwBD,wBAAgB,gBAAgB,CAAC,KAAK,SAAK,yEAkD1C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB;aACT,OAAO;aAAW,MAAM,GAAG,IAAI;UAoB3D"}
@@ -32,7 +32,7 @@ export function useStockPushJobs(limit = 10) {
32
32
  queryFn: async () => {
33
33
  const { data, error } = await supabase
34
34
  .from("floriday_continuous_stock_queue")
35
- .select("id, trade_item_id, number_of_pieces, desired_available, status, attempts, last_error, created_at, updated_at, sent_at, locked_at, locked_by")
35
+ .select("id, trade_item_id, number_of_pieces, desired_available, status, attempts, last_error, created_at, updated_at, sent_at, locked_at, locked_by, target_year, target_week")
36
36
  .order("created_at", { ascending: false })
37
37
  .limit(limit);
38
38
  if (error)
@@ -65,6 +65,8 @@ export function useStockPushJobs(limit = 10) {
65
65
  sentAt: r.sent_at ?? null,
66
66
  lockedAt: r.locked_at ?? null,
67
67
  lockedBy: r.locked_by ?? null,
68
+ targetYear: r.target_year == null ? null : Number(r.target_year),
69
+ targetWeek: r.target_week == null ? null : Number(r.target_week),
68
70
  }));
69
71
  },
70
72
  });
@@ -1823,6 +1823,42 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
1823
1823
  };
1824
1824
  Relationships: [];
1825
1825
  };
1826
+ customer_assortment_items: {
1827
+ Row: {
1828
+ created_at: string;
1829
+ customer_key: string;
1830
+ id: string;
1831
+ in_assortment: boolean;
1832
+ manual_override: boolean;
1833
+ source: string;
1834
+ synced_at: string | null;
1835
+ trade_item_key: string;
1836
+ updated_at: string;
1837
+ };
1838
+ Insert: {
1839
+ created_at?: string;
1840
+ customer_key: string;
1841
+ id?: string;
1842
+ in_assortment?: boolean;
1843
+ manual_override?: boolean;
1844
+ source?: string;
1845
+ synced_at?: string | null;
1846
+ trade_item_key: string;
1847
+ updated_at?: string;
1848
+ };
1849
+ Update: {
1850
+ created_at?: string;
1851
+ customer_key?: string;
1852
+ id?: string;
1853
+ in_assortment?: boolean;
1854
+ manual_override?: boolean;
1855
+ source?: string;
1856
+ synced_at?: string | null;
1857
+ trade_item_key?: string;
1858
+ updated_at?: string;
1859
+ };
1860
+ Relationships: [];
1861
+ };
1826
1862
  customer_audit_log: {
1827
1863
  Row: {
1828
1864
  action: string;
@@ -2227,40 +2263,58 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
2227
2263
  };
2228
2264
  customer_product_stickers: {
2229
2265
  Row: {
2266
+ content_hash: string | null;
2230
2267
  created_at: string;
2231
2268
  customer_key: string;
2232
2269
  file_name: string;
2233
2270
  file_path: string;
2234
2271
  file_size: number | null;
2272
+ floriday_sticker_id: string | null;
2273
+ floriday_synced_at: string | null;
2274
+ height_mm: number | null;
2235
2275
  id: string;
2236
2276
  mime_type: string | null;
2277
+ source: string;
2237
2278
  trade_item_key: string;
2238
2279
  updated_at: string;
2239
2280
  uploaded_by: string | null;
2281
+ width_mm: number | null;
2240
2282
  };
2241
2283
  Insert: {
2284
+ content_hash?: string | null;
2242
2285
  created_at?: string;
2243
2286
  customer_key: string;
2244
2287
  file_name: string;
2245
2288
  file_path: string;
2246
2289
  file_size?: number | null;
2290
+ floriday_sticker_id?: string | null;
2291
+ floriday_synced_at?: string | null;
2292
+ height_mm?: number | null;
2247
2293
  id?: string;
2248
2294
  mime_type?: string | null;
2295
+ source?: string;
2249
2296
  trade_item_key: string;
2250
2297
  updated_at?: string;
2251
2298
  uploaded_by?: string | null;
2299
+ width_mm?: number | null;
2252
2300
  };
2253
2301
  Update: {
2302
+ content_hash?: string | null;
2254
2303
  created_at?: string;
2255
2304
  customer_key?: string;
2256
2305
  file_name?: string;
2257
2306
  file_path?: string;
2258
2307
  file_size?: number | null;
2308
+ floriday_sticker_id?: string | null;
2309
+ floriday_synced_at?: string | null;
2310
+ height_mm?: number | null;
2259
2311
  id?: string;
2260
2312
  mime_type?: string | null;
2313
+ source?: string;
2261
2314
  trade_item_key?: string;
2262
2315
  updated_at?: string;
2263
2316
  uploaded_by?: string | null;
2317
+ width_mm?: number | null;
2264
2318
  };
2265
2319
  Relationships: [];
2266
2320
  };
@@ -11568,6 +11622,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11568
11622
  Row: {
11569
11623
  actor: string | null;
11570
11624
  attempts: number;
11625
+ calc: import("./types").Json | null;
11571
11626
  cart_ref: string | null;
11572
11627
  created_at: string;
11573
11628
  db_action: string | null;
@@ -11578,6 +11633,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11578
11633
  decision: string | null;
11579
11634
  duration_ms: number | null;
11580
11635
  error: string | null;
11636
+ error_class: string | null;
11581
11637
  external_action: string | null;
11582
11638
  external_ref: string | null;
11583
11639
  external_response: import("./types").Json | null;
@@ -11586,6 +11642,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11586
11642
  id: string;
11587
11643
  input: import("./types").Json | null;
11588
11644
  next_attempt_at: string | null;
11645
+ next_step: string | null;
11646
+ node_id: string | null;
11589
11647
  order_ref: string | null;
11590
11648
  order_source: string | null;
11591
11649
  output: import("./types").Json | null;
@@ -11602,6 +11660,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11602
11660
  Insert: {
11603
11661
  actor?: string | null;
11604
11662
  attempts?: number;
11663
+ calc?: import("./types").Json | null;
11605
11664
  cart_ref?: string | null;
11606
11665
  created_at?: string;
11607
11666
  db_action?: string | null;
@@ -11612,6 +11671,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11612
11671
  decision?: string | null;
11613
11672
  duration_ms?: number | null;
11614
11673
  error?: string | null;
11674
+ error_class?: string | null;
11615
11675
  external_action?: string | null;
11616
11676
  external_ref?: string | null;
11617
11677
  external_response?: import("./types").Json | null;
@@ -11620,6 +11680,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11620
11680
  id?: string;
11621
11681
  input?: import("./types").Json | null;
11622
11682
  next_attempt_at?: string | null;
11683
+ next_step?: string | null;
11684
+ node_id?: string | null;
11623
11685
  order_ref?: string | null;
11624
11686
  order_source?: string | null;
11625
11687
  output?: import("./types").Json | null;
@@ -11636,6 +11698,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11636
11698
  Update: {
11637
11699
  actor?: string | null;
11638
11700
  attempts?: number;
11701
+ calc?: import("./types").Json | null;
11639
11702
  cart_ref?: string | null;
11640
11703
  created_at?: string;
11641
11704
  db_action?: string | null;
@@ -11646,6 +11709,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11646
11709
  decision?: string | null;
11647
11710
  duration_ms?: number | null;
11648
11711
  error?: string | null;
11712
+ error_class?: string | null;
11649
11713
  external_action?: string | null;
11650
11714
  external_ref?: string | null;
11651
11715
  external_response?: import("./types").Json | null;
@@ -11654,6 +11718,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
11654
11718
  id?: string;
11655
11719
  input?: import("./types").Json | null;
11656
11720
  next_attempt_at?: string | null;
11721
+ next_step?: string | null;
11722
+ node_id?: string | null;
11657
11723
  order_ref?: string | null;
11658
11724
  order_source?: string | null;
11659
11725
  output?: import("./types").Json | null;
@@ -25171,6 +25237,24 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
25171
25237
  };
25172
25238
  Returns: number;
25173
25239
  };
25240
+ logistics_trace_order_overview: {
25241
+ Args: {
25242
+ p_error_class?: string;
25243
+ p_limit?: number;
25244
+ p_search?: string;
25245
+ p_since?: string;
25246
+ p_source?: string;
25247
+ p_state?: string;
25248
+ p_step?: string;
25249
+ };
25250
+ Returns: import("./types").Json;
25251
+ };
25252
+ logistics_trace_order_state: {
25253
+ Args: {
25254
+ p_order_ref: string;
25255
+ };
25256
+ Returns: import("./types").Json;
25257
+ };
25174
25258
  logistics_trace_orders: {
25175
25259
  Args: {
25176
25260
  p_limit?: number;