@flowselections/floriday-voorraad 1.0.40 → 1.0.41

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 (41) hide show
  1. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
  2. package/dist-lib/components/voorraad/ValidationOverviewTable.js +45 -14
  3. package/dist-lib/integrations/supabase/auth-middleware.d.ts +349 -0
  4. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  5. package/dist-lib/integrations/supabase/client.d.ts +349 -0
  6. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  7. package/dist-lib/integrations/supabase/client.server.d.ts +349 -0
  8. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  9. package/dist-lib/integrations/supabase/types.d.ts +349 -0
  10. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  11. package/dist-lib/lib/floricode-required-features.functions.d.ts +349 -0
  12. package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
  13. package/dist-lib/lib/floriday-customer-offer.functions.d.ts +349 -0
  14. package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -1
  15. package/dist-lib/lib/floriday-env.functions.d.ts +698 -0
  16. package/dist-lib/lib/floriday-env.functions.d.ts.map +1 -1
  17. package/dist-lib/lib/floriday-gateway.functions.d.ts +2094 -0
  18. package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
  19. package/dist-lib/lib/floriday-relink.d.ts +16 -0
  20. package/dist-lib/lib/floriday-relink.d.ts.map +1 -0
  21. package/dist-lib/lib/floriday-relink.js +14 -0
  22. package/dist-lib/lib/floriday-vbn-required.functions.d.ts +698 -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 +1047 -0
  25. package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
  26. package/dist-lib/lib/floriday-writes.functions.d.ts +698 -0
  27. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  28. package/dist-lib/lib/inventory-settings.functions.d.ts +698 -0
  29. package/dist-lib/lib/inventory-settings.functions.d.ts.map +1 -1
  30. package/dist-lib/lib/logistics-buffer-events.server.d.ts +13 -0
  31. package/dist-lib/lib/logistics-buffer-events.server.d.ts.map +1 -0
  32. package/dist-lib/lib/logistics-buffer-events.server.js +365 -0
  33. package/dist-lib/lib/logistics-events.d.ts.map +1 -1
  34. package/dist-lib/lib/logistics-events.js +36 -7
  35. package/dist-lib/lib/logistics-tasks.server.d.ts.map +1 -1
  36. package/dist-lib/lib/logistics-tasks.server.js +38 -6
  37. package/dist-lib/lib/module-health.functions.d.ts +698 -0
  38. package/dist-lib/lib/module-health.functions.d.ts.map +1 -1
  39. package/dist-lib/lib/stock-sync.functions.d.ts +698 -0
  40. package/dist-lib/lib/stock-sync.functions.d.ts.map +1 -1
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationOverviewTable.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ValidationOverviewTable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAM3D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,YAAY,EACZ,SAAS,GACV,EAAE;IACD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,2CAmHA"}
1
+ {"version":3,"file":"ValidationOverviewTable.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ValidationOverviewTable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAQ3D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,YAAY,EACZ,SAAS,GACV,EAAE;IACD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,2CA2KA"}
@@ -1,11 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo } from "react";
2
+ import { useMemo, useState } from "react";
3
3
  import { useNavigate } from "@tanstack/react-router";
4
4
  import { Badge, Button } from "@flowselections/core";
5
- import { Pencil, Send } from "lucide-react";
5
+ import { Link2, Loader2, Pencil, Send } from "lucide-react";
6
6
  import { validateDraftForPublish } from "../../lib/floriday-import-validator";
7
7
  import { updateDraftMeta } from "../../hooks/useLocalTradeItems";
8
8
  import { floriday } from "../../lib/floriday-client";
9
+ import { relinkProducts } from "../../lib/floriday-relink";
9
10
  import { toast } from "@flowselections/core";
10
11
  /**
11
12
  * Overzicht van producten die (nog) niet actief op Floriday staan. Er is geen concept-status
@@ -14,7 +15,36 @@ import { toast } from "@flowselections/core";
14
15
  */
15
16
  export function ValidationOverviewTable({ items, connectionId, onChanged, }) {
16
17
  const navigate = useNavigate();
18
+ const [relinking, setRelinking] = useState(false);
17
19
  const rows = useMemo(() => items.filter((i) => !i.floridayActive), [items]);
20
+ const runRelink = async () => {
21
+ setRelinking(true);
22
+ try {
23
+ const res = await relinkProducts(connectionId);
24
+ if (!res.ok) {
25
+ toast.error(res.reason ?? "Automatisch koppelen kon niet worden uitgevoerd");
26
+ }
27
+ else {
28
+ const total = (res.linked ?? 0) + (res.repaired ?? 0);
29
+ toast.success(total > 0
30
+ ? `${total} product(en) opnieuw gekoppeld aan Floriday`
31
+ : "Geen extra koppelingen gevonden");
32
+ }
33
+ await onChanged();
34
+ }
35
+ catch (e) {
36
+ toast.error(e?.message ?? "Automatisch koppelen mislukt");
37
+ }
38
+ finally {
39
+ setRelinking(false);
40
+ }
41
+ };
42
+ const reasonFor = (it) => {
43
+ if (it.floridayId) {
44
+ return "Verwijst naar een Floriday-artikel dat niet (meer) gevonden wordt";
45
+ }
46
+ return "Nog geen overeenkomend Floriday-artikel gevonden (streepjescode, artikelcode of naam)";
47
+ };
18
48
  const publish = async (item) => {
19
49
  const productId = item.productId ?? item.localId;
20
50
  if (!productId || !connectionId)
@@ -46,18 +76,19 @@ export function ValidationOverviewTable({ items, connectionId, onChanged, }) {
46
76
  await onChanged();
47
77
  }
48
78
  };
79
+ const relinkButton = (_jsxs(Button, { size: "sm", variant: "outline", onClick: runRelink, disabled: relinking, children: [relinking ? (_jsx(Loader2, { className: "h-3 w-3 mr-1 animate-spin" })) : (_jsx(Link2, { className: "h-3 w-3 mr-1" })), "Nu opnieuw koppelen"] }));
49
80
  if (rows.length === 0) {
50
- return (_jsx("div", { className: "p-8 text-center text-sm text-muted-foreground", children: "Alle producten staan actief op Floriday." }));
81
+ return (_jsxs("div", { className: "p-8 text-center text-sm text-muted-foreground space-y-3", children: [_jsx("div", { children: "Alle producten staan actief op Floriday." }), _jsx("div", { className: "flex justify-center", children: relinkButton })] }));
51
82
  }
52
- return (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: "bg-muted/50 text-left", children: _jsxs("tr", { children: [_jsx("th", { className: "p-3", children: "Artikelcode" }), _jsx("th", { className: "p-3", children: "Artikelnaam" }), _jsx("th", { className: "p-3", children: "Floriday-status" }), _jsx("th", { className: "p-3", children: "Ontbrekende Floriday-velden" }), _jsx("th", { className: "p-3 text-right", children: "Acties" })] }) }), _jsx("tbody", { children: rows.map((it) => {
53
- const payload = it.raw?.custom_fields?.floriday_payload ??
54
- it.raw?.floriday_payload ??
55
- it.raw?.data ??
56
- {};
57
- const v = validateDraftForPublish(payload);
58
- return (_jsxs("tr", { className: "border-t align-top", children: [_jsx("td", { className: "p-3 font-mono text-xs", children: it.articleNumber || "—" }), _jsx("td", { className: "p-3", children: it.name }), _jsx("td", { className: "p-3", children: _jsx(Badge, { className: "bg-slate-500/15 text-slate-700 border-slate-500/30", children: "Niet actief op Floriday" }) }), _jsx("td", { className: "p-3", children: v.missing.length === 0 ? (_jsx("span", { className: "text-xs text-emerald-700", children: "Klaar om te activeren" })) : (_jsx("div", { className: "flex flex-wrap gap-1", children: v.missing.map((m) => (_jsx(Badge, { variant: "outline", className: "text-[10px]", children: m }, m))) })) }), _jsx("td", { className: "p-3", children: _jsxs("div", { className: "flex justify-end gap-1", children: [_jsxs(Button, { size: "sm", variant: "outline", onClick: () => {
59
- const target = it.productId ?? it.localId ?? it.id;
60
- navigate({ to: "/voorraad/$id", params: { id: target } });
61
- }, children: [_jsx(Pencil, { className: "h-3 w-3 mr-1" }), "Bewerken"] }), _jsxs(Button, { size: "sm", onClick: () => publish(it), disabled: !v.ok, children: [_jsx(Send, { className: "h-3 w-3 mr-1" }), "Activeer op Floriday"] })] }) })] }, it.id));
62
- }) })] }) }));
83
+ return (_jsxs("div", { className: "overflow-x-auto", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 p-3 border-b", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Koppelen gebeurt automatisch zodra Floriday-artikelen binnenkomen en elk uur op de achtergrond." }), relinkButton] }), _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: "bg-muted/50 text-left", children: _jsxs("tr", { children: [_jsx("th", { className: "p-3", children: "Artikelcode" }), _jsx("th", { className: "p-3", children: "Artikelnaam" }), _jsx("th", { className: "p-3", children: "Floriday-status" }), _jsx("th", { className: "p-3", children: "Reden" }), _jsx("th", { className: "p-3", children: "Ontbrekende Floriday-velden" }), _jsx("th", { className: "p-3 text-right", children: "Acties" })] }) }), _jsx("tbody", { children: rows.map((it) => {
84
+ const payload = it.raw?.custom_fields?.floriday_payload ??
85
+ it.raw?.floriday_payload ??
86
+ it.raw?.data ??
87
+ {};
88
+ const v = validateDraftForPublish(payload);
89
+ return (_jsxs("tr", { className: "border-t align-top", children: [_jsx("td", { className: "p-3 font-mono text-xs", children: it.articleNumber || "—" }), _jsx("td", { className: "p-3", children: it.name }), _jsx("td", { className: "p-3", children: _jsx(Badge, { className: "bg-slate-500/15 text-slate-700 border-slate-500/30", children: "Niet actief op Floriday" }) }), _jsx("td", { className: "p-3 text-xs text-muted-foreground max-w-[260px]", children: reasonFor(it) }), _jsx("td", { className: "p-3", children: v.missing.length === 0 ? (_jsx("span", { className: "text-xs text-emerald-700", children: "Klaar om te activeren" })) : (_jsx("div", { className: "flex flex-wrap gap-1", children: v.missing.map((m) => (_jsx(Badge, { variant: "outline", className: "text-[10px]", children: m }, m))) })) }), _jsx("td", { className: "p-3", children: _jsxs("div", { className: "flex justify-end gap-1", children: [_jsxs(Button, { size: "sm", variant: "outline", onClick: () => {
90
+ const target = it.productId ?? it.localId ?? it.id;
91
+ navigate({ to: "/voorraad/$id", params: { id: target } });
92
+ }, children: [_jsx(Pencil, { className: "h-3 w-3 mr-1" }), "Bewerken"] }), _jsxs(Button, { size: "sm", onClick: () => publish(it), disabled: !v.ok, children: [_jsx(Send, { className: "h-3 w-3 mr-1" }), "Activeer op Floriday"] })] }) })] }, it.id));
93
+ }) })] })] }));
63
94
  }