@flowselections/floriday-voorraad 1.0.45 → 1.0.47

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 (144) hide show
  1. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +1 -1
  2. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -1
  3. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts +1 -1
  4. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts.map +1 -1
  5. package/dist-lib/components/voorraad/ArtikelWizard.d.ts +1 -1
  6. package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
  7. package/dist-lib/components/voorraad/ArtikelWizard.js +157 -9
  8. package/dist-lib/components/voorraad/EditArtikelPage.d.ts +1 -1
  9. package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
  10. package/dist-lib/components/voorraad/EditArtikelPage.js +2 -1
  11. package/dist-lib/components/voorraad/ExcelExportButton.d.ts +1 -1
  12. package/dist-lib/components/voorraad/ExcelExportButton.d.ts.map +1 -1
  13. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts +1 -1
  14. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts.map +1 -1
  15. package/dist-lib/components/voorraad/FustenPage.d.ts +1 -1
  16. package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
  17. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +1 -1
  18. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts.map +1 -1
  19. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +1 -1
  20. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts.map +1 -1
  21. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts +1 -1
  22. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts.map +1 -1
  23. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +1 -1
  24. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -1
  25. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +1 -1
  26. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -1
  27. package/dist-lib/components/voorraad/PriceStatusBadge.js +1 -1
  28. package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts +1 -1
  29. package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts.map +1 -1
  30. package/dist-lib/components/voorraad/ProductLinkCard.d.ts +1 -1
  31. package/dist-lib/components/voorraad/ProductLinkCard.d.ts.map +1 -1
  32. package/dist-lib/components/voorraad/PublicatiesPage.d.ts +1 -1
  33. package/dist-lib/components/voorraad/PublicatiesPage.d.ts.map +1 -1
  34. package/dist-lib/components/voorraad/PublishProgressCard.d.ts +1 -1
  35. package/dist-lib/components/voorraad/PublishProgressCard.d.ts.map +1 -1
  36. package/dist-lib/components/voorraad/PublishReadinessCard.d.ts +1 -1
  37. package/dist-lib/components/voorraad/PublishReadinessCard.d.ts.map +1 -1
  38. package/dist-lib/components/voorraad/StepSamenstelling.d.ts +1 -1
  39. package/dist-lib/components/voorraad/StepSamenstelling.d.ts.map +1 -1
  40. package/dist-lib/components/voorraad/StockBulkButtons.d.ts +1 -1
  41. package/dist-lib/components/voorraad/StockBulkButtons.d.ts.map +1 -1
  42. package/dist-lib/components/voorraad/StockHistoryChart.d.ts +1 -1
  43. package/dist-lib/components/voorraad/StockHistoryChart.d.ts.map +1 -1
  44. package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts +1 -1
  45. package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts.map +1 -1
  46. package/dist-lib/components/voorraad/StockPushMonitor.d.ts +1 -1
  47. package/dist-lib/components/voorraad/StockPushMonitor.d.ts.map +1 -1
  48. package/dist-lib/components/voorraad/StockSyncStatus.d.ts +1 -1
  49. package/dist-lib/components/voorraad/StockSyncStatus.d.ts.map +1 -1
  50. package/dist-lib/components/voorraad/TrayStickerCard.d.ts +5 -0
  51. package/dist-lib/components/voorraad/TrayStickerCard.d.ts.map +1 -0
  52. package/dist-lib/components/voorraad/TrayStickerCard.js +100 -0
  53. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts +1 -1
  54. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
  55. package/dist-lib/components/voorraad/ValidationPage.d.ts +1 -1
  56. package/dist-lib/components/voorraad/ValidationPage.d.ts.map +1 -1
  57. package/dist-lib/components/voorraad/VoorraadPage.d.ts +1 -1
  58. package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
  59. package/dist-lib/components/voorraad/VoorraadPagination.d.ts +1 -1
  60. package/dist-lib/components/voorraad/VoorraadPagination.d.ts.map +1 -1
  61. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +1 -1
  62. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
  63. package/dist-lib/components/voorraad/VoorraadTable.d.ts +1 -1
  64. package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
  65. package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts +1 -1
  66. package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts.map +1 -1
  67. package/dist-lib/hooks/useTradeItemSupplyLine.js +1 -1
  68. package/dist-lib/integrations/supabase/auth-middleware.d.ts +3255 -199
  69. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  70. package/dist-lib/integrations/supabase/client.d.ts +3255 -199
  71. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  72. package/dist-lib/integrations/supabase/client.js +1 -1
  73. package/dist-lib/integrations/supabase/client.server.d.ts +3255 -199
  74. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  75. package/dist-lib/integrations/supabase/client.server.js +1 -1
  76. package/dist-lib/integrations/supabase/previewAuthStorage.d.ts +1 -1
  77. package/dist-lib/integrations/supabase/previewAuthStorage.d.ts.map +1 -1
  78. package/dist-lib/integrations/supabase/previewAuthStorage.js +8 -1
  79. package/dist-lib/integrations/supabase/types.d.ts +3287 -192
  80. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  81. package/dist-lib/lib/floricode-required-features.functions.d.ts +3267 -217
  82. package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
  83. package/dist-lib/lib/floricode-required-features.functions.js +1 -1
  84. package/dist-lib/lib/floriday-customer-offer.functions.d.ts +3267 -211
  85. package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -1
  86. package/dist-lib/lib/floriday-env.functions.d.ts +6126 -14
  87. package/dist-lib/lib/floriday-env.functions.d.ts.map +1 -1
  88. package/dist-lib/lib/floriday-gateway.functions.d.ts +18378 -42
  89. package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
  90. package/dist-lib/lib/floriday-vbn-required.functions.d.ts +6126 -14
  91. package/dist-lib/lib/floriday-vbn-required.functions.d.ts.map +1 -1
  92. package/dist-lib/lib/floriday-warehouse.functions.d.ts +9189 -21
  93. package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
  94. package/dist-lib/lib/floriday-writes.functions.d.ts +6126 -14
  95. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  96. package/dist-lib/lib/inventory-settings.functions.d.ts +6126 -14
  97. package/dist-lib/lib/inventory-settings.functions.d.ts.map +1 -1
  98. package/dist-lib/lib/inventory-settings.functions.js +3 -3
  99. package/dist-lib/lib/logistics-buffer-events.server.js +1 -1
  100. package/dist-lib/lib/logistics-tasks.server.js +2 -2
  101. package/dist-lib/lib/module-runtime.server.js +1 -1
  102. package/dist-lib/lib/product-packing.d.ts +28 -0
  103. package/dist-lib/lib/product-packing.d.ts.map +1 -0
  104. package/dist-lib/lib/product-packing.js +90 -0
  105. package/dist-lib/lib/stock-sync.functions.d.ts +6126 -14
  106. package/dist-lib/lib/stock-sync.functions.d.ts.map +1 -1
  107. package/dist-lib/lib/stock-sync.functions.js +3 -3
  108. package/package.json +3 -3
  109. package/dist-lib/components/TemplatePage.d.ts +0 -2
  110. package/dist-lib/components/TemplatePage.d.ts.map +0 -1
  111. package/dist-lib/components/TemplatePage.js +0 -4
  112. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts +0 -2
  113. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts.map +0 -1
  114. package/dist-lib/components/settings/VoorraadSettingsCard.js +0 -39
  115. package/dist-lib/components/voorraad/ConnectionBadge.d.ts +0 -6
  116. package/dist-lib/components/voorraad/ConnectionBadge.d.ts.map +0 -1
  117. package/dist-lib/components/voorraad/ConnectionBadge.js +0 -12
  118. package/dist-lib/components/voorraad/ConnectionPicker.d.ts +0 -8
  119. package/dist-lib/components/voorraad/ConnectionPicker.d.ts.map +0 -1
  120. package/dist-lib/components/voorraad/ConnectionPicker.js +0 -8
  121. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts +0 -4
  122. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts.map +0 -1
  123. package/dist-lib/components/voorraad/FloridayStatusBadge.js +0 -8
  124. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts +0 -2
  125. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts.map +0 -1
  126. package/dist-lib/components/voorraad/ModuleHealthCard.js +0 -40
  127. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts +0 -10
  128. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts.map +0 -1
  129. package/dist-lib/components/voorraad/VoorraadDashboard.js +0 -53
  130. package/dist-lib/lib/floriday-field-sources.d.ts +0 -18
  131. package/dist-lib/lib/floriday-field-sources.d.ts.map +0 -1
  132. package/dist-lib/lib/floriday-field-sources.js +0 -45
  133. package/dist-lib/lib/floriday-schema-to-zod.d.ts +0 -9
  134. package/dist-lib/lib/floriday-schema-to-zod.d.ts.map +0 -1
  135. package/dist-lib/lib/floriday-schema-to-zod.js +0 -53
  136. package/dist-lib/lib/merge-products.d.ts +0 -8
  137. package/dist-lib/lib/merge-products.d.ts.map +0 -1
  138. package/dist-lib/lib/merge-products.js +0 -17
  139. package/dist-lib/lib/module-health.functions.d.ts +0 -53497
  140. package/dist-lib/lib/module-health.functions.d.ts.map +0 -1
  141. package/dist-lib/lib/module-health.functions.js +0 -261
  142. package/dist-lib/lib/validationSchemas.d.ts +0 -15
  143. package/dist-lib/lib/validationSchemas.d.ts.map +0 -1
  144. package/dist-lib/lib/validationSchemas.js +0 -25
@@ -4,12 +4,12 @@
4
4
  * gebeurt server-side zodat er geen schrijfrechten in de browser nodig zijn.
5
5
  */
6
6
  import { createServerFn } from "@tanstack/react-start";
7
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
7
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
8
8
  import { z } from "zod";
9
9
  export const retryFailedStockSync = createServerFn({ method: "POST" })
10
10
  .middleware([requireSupabaseAuth])
11
11
  .handler(async ({ context }) => {
12
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
12
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
13
13
  const admin = supabaseAdmin;
14
14
  // Eerst regels die bij een gecrashte verwerker zijn blijven hangen.
15
15
  await admin.rpc("reset_stalled_floriday_stock_queue", { p_include_failed: false });
@@ -40,7 +40,7 @@ export const enqueueTestStockPush = createServerFn({ method: "POST" })
40
40
  .middleware([requireSupabaseAuth])
41
41
  .inputValidator((data) => z.object({ tradeItemId: z.string().uuid() }).parse(data))
42
42
  .handler(async ({ data, context }) => {
43
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
43
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
44
44
  const admin = supabaseAdmin;
45
45
  const { data: stockRow, error: stockError } = await admin
46
46
  .from("trade_item_stock")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/floriday-voorraad",
3
- "version": "1.0.45",
3
+ "version": "1.0.47",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "./dist-lib/index.js",
@@ -44,8 +44,8 @@
44
44
  "devDependencies": {
45
45
  "@cloudflare/vite-plugin": "^1.25.5",
46
46
  "@eslint/js": "^9.32.0",
47
- "@flowselections/core": "1.0.18",
48
- "@lovable.dev/vite-tanstack-config": "2.13.1",
47
+ "@flowselections/core": "1.0.21",
48
+ "@lovable.dev/vite-tanstack-config": "2.23.1",
49
49
  "@rsbuild/core": "^1.0.0",
50
50
  "@tailwindcss/vite": "^4.2.1",
51
51
  "@tanstack/router-plugin": "^1.167.10",
@@ -1,2 +0,0 @@
1
- export declare function TemplatePage(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=TemplatePage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TemplatePage.d.ts","sourceRoot":"","sources":["../../src/components/TemplatePage.tsx"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,4CAS3B"}
@@ -1,4 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function TemplatePage() {
3
- return (_jsxs("div", { className: "p-6", children: [_jsx("h1", { className: "text-2xl font-semibold", children: "Module pagina" }), _jsx("p", { className: "text-muted-foreground mt-2", children: "Vervang dit component met de pagina's van jouw module." })] }));
4
- }
@@ -1,2 +0,0 @@
1
- export declare function VoorraadSettingsCard(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=VoorraadSettingsCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoorraadSettingsCard.d.ts","sourceRoot":"","sources":["../../../src/components/settings/VoorraadSettingsCard.tsx"],"names":[],"mappings":"AAeA,wBAAgB,oBAAoB,4CA8DnC"}
@@ -1,39 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { Card, CardContent, CardDescription, CardHeader, CardTitle, Button, Input, Label, supabase, toast, } from "@flowselections/core";
4
- import { Package } from "lucide-react";
5
- export function VoorraadSettingsCard() {
6
- const [lowStockThreshold, setLowStockThreshold] = useState("");
7
- const [loading, setLoading] = useState(true);
8
- const [saving, setSaving] = useState(false);
9
- useEffect(() => {
10
- (async () => {
11
- try {
12
- const { data } = await supabase
13
- .from("inventory_settings")
14
- .select("*")
15
- .limit(1)
16
- .maybeSingle();
17
- if (data && "low_stock_threshold" in data) {
18
- setLowStockThreshold(String(data.low_stock_threshold ?? ""));
19
- }
20
- }
21
- finally {
22
- setLoading(false);
23
- }
24
- })();
25
- }, []);
26
- const handleSave = async () => {
27
- setSaving(true);
28
- try {
29
- toast.success("Instellingen opgeslagen");
30
- }
31
- catch {
32
- toast.error("Fout bij het opslaan");
33
- }
34
- finally {
35
- setSaving(false);
36
- }
37
- };
38
- return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Package, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { children: "Voorraad Instellingen" })] }), _jsx(CardDescription, { children: "Beheer drempelwaarden en standaarden voor de voorraad module" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "threshold", children: "Lage-voorraad drempel" }), _jsx(Input, { id: "threshold", type: "number", value: lowStockThreshold, onChange: (e) => setLowStockThreshold(e.target.value), placeholder: "bv. 10", disabled: loading })] }), _jsx(Button, { onClick: handleSave, disabled: saving || loading, children: saving ? "Opslaan..." : "Opslaan" })] })] }));
39
- }
@@ -1,6 +0,0 @@
1
- import type { FloridayActiveConnection } from "../../lib/floriday-client";
2
- export declare function ConnectionBadge({ connection, loading, }: {
3
- connection: FloridayActiveConnection | null;
4
- loading?: boolean;
5
- }): import("react/jsx-runtime").JSX.Element;
6
- //# sourceMappingURL=ConnectionBadge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionBadge.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ConnectionBadge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,2CAqBA"}
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Badge } from "@flowselections/core";
3
- export function ConnectionBadge({ connection, loading, }) {
4
- if (loading) {
5
- return _jsx(Badge, { variant: "secondary", children: "Floriday laden..." });
6
- }
7
- if (!connection) {
8
- return (_jsx(Badge, { variant: "destructive", children: "Geen actieve Floriday-connectie" }));
9
- }
10
- const env = connection.active_environment || connection.environment;
11
- return (_jsxs(Badge, { variant: "secondary", className: "gap-1.5", children: [_jsx("span", { className: "font-medium", children: "Floriday" }), _jsx("span", { className: "opacity-60", children: "\u00B7" }), _jsx("span", { className: "uppercase tracking-wide text-[10px]", children: env }), _jsx("span", { className: "opacity-60", children: "\u00B7" }), _jsx("span", { children: connection.organization_name || connection.label })] }));
12
- }
@@ -1,8 +0,0 @@
1
- import type { FloridayConnection } from "../../lib/floriday-client";
2
- export declare function ConnectionPicker({ connections, activeId, onChange, disabled, }: {
3
- connections: FloridayConnection[];
4
- activeId: string | null;
5
- onChange: (id: string) => void;
6
- disabled?: boolean;
7
- }): import("react/jsx-runtime").JSX.Element;
8
- //# sourceMappingURL=ConnectionPicker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionPicker.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ConnectionPicker.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,2CAsBA"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@flowselections/core";
3
- export function ConnectionPicker({ connections, activeId, onChange, disabled, }) {
4
- if (connections.length === 0) {
5
- return (_jsx("div", { className: "text-sm text-muted-foreground", children: "Geen actieve Floriday-connecties" }));
6
- }
7
- return (_jsxs(Select, { value: activeId ?? undefined, onValueChange: onChange, disabled: disabled, children: [_jsx(SelectTrigger, { className: "w-[260px]", children: _jsx(SelectValue, { placeholder: "Kies Floriday-connectie" }) }), _jsx(SelectContent, { children: connections.map((c) => (_jsx(SelectItem, { value: c.id, children: c.organization_name || c.label }, c.id))) })] }));
8
- }
@@ -1,4 +0,0 @@
1
- export declare function FloridayStatusBadge({ active }: {
2
- active: boolean | undefined;
3
- }): import("react/jsx-runtime").JSX.Element;
4
- //# sourceMappingURL=FloridayStatusBadge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FloridayStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FloridayStatusBadge.tsx"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,2CAa9E"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Badge } from "@flowselections/core";
3
- export function FloridayStatusBadge({ active }) {
4
- if (active) {
5
- return (_jsx(Badge, { className: "bg-emerald-500/15 text-emerald-700 border-emerald-500/30", children: "Actief op Floriday" }));
6
- }
7
- return (_jsx(Badge, { className: "bg-slate-500/15 text-slate-700 border-slate-500/30", children: "Niet actief op Floriday" }));
8
- }
@@ -1,2 +0,0 @@
1
- export declare function ModuleHealthCard(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=ModuleHealthCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModuleHealthCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ModuleHealthCard.tsx"],"names":[],"mappings":"AAqBA,wBAAgB,gBAAgB,4CA8D/B"}
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Statuskaart in de instellingen: laat in gewone taal zien of de module in
4
- * déze omgeving volledig werkt, en biedt één knop om vastgelopen
5
- * voorraadwijzigingen weer op gang te helpen.
6
- */
7
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
8
- import { useServerFn } from "@tanstack/react-start";
9
- import { AlertTriangle, CheckCircle2, RotateCw, XCircle } from "lucide-react";
10
- import { toast } from "sonner";
11
- import { getModuleHealth, recoverStockQueue, } from "../../lib/module-health.functions";
12
- function StatusIcon({ status }) {
13
- if (status === "ok")
14
- return _jsx(CheckCircle2, { className: "mt-0.5 h-4 w-4 shrink-0 text-emerald-600" });
15
- if (status === "warn")
16
- return _jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0 text-amber-600" });
17
- return _jsx(XCircle, { className: "mt-0.5 h-4 w-4 shrink-0 text-destructive" });
18
- }
19
- export function ModuleHealthCard() {
20
- const fetchHealth = useServerFn(getModuleHealth);
21
- const recover = useServerFn(recoverStockQueue);
22
- const queryClient = useQueryClient();
23
- const { data, isLoading } = useQuery({
24
- queryKey: ["module-health"],
25
- queryFn: () => fetchHealth({}),
26
- refetchInterval: 60000,
27
- });
28
- const mutation = useMutation({
29
- mutationFn: () => recover({}),
30
- onSuccess: (res) => {
31
- toast.success(res?.restored
32
- ? `${res.restored} voorraadwijziging${res.restored === 1 ? "" : "en"} opnieuw ingepland.`
33
- : "Er stond niets vast.");
34
- void queryClient.invalidateQueries({ queryKey: ["module-health"] });
35
- void queryClient.invalidateQueries({ queryKey: ["stock-sync-health"] });
36
- },
37
- onError: (e) => toast.error(e?.message ?? "Herstellen is niet gelukt."),
38
- });
39
- return (_jsxs("section", { className: "rounded-lg border border-border bg-card p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-base font-semibold text-foreground", children: "Status van de voorraadmodule" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Controleert de koppeling, de achtergrondtaken en de synchronisatie naar Floriday." })] }), _jsxs("button", { type: "button", className: "inline-flex shrink-0 items-center rounded-md border border-border px-2.5 py-1.5 text-xs font-medium text-foreground hover:bg-muted disabled:opacity-50", disabled: mutation.isPending, onClick: () => mutation.mutate(), children: [_jsx(RotateCw, { className: `mr-1.5 h-3.5 w-3.5 ${mutation.isPending ? "animate-spin" : ""}` }), "Vastgelopen taken hervatten"] })] }), _jsxs("ul", { className: "mt-4 space-y-2.5", children: [isLoading && _jsx("li", { className: "text-sm text-muted-foreground", children: "Bezig met controleren\u2026" }), data?.checks.map((check) => (_jsxs("li", { className: "flex items-start gap-2 text-sm", children: [_jsx(StatusIcon, { status: check.status }), _jsxs("div", { className: "min-w-0", children: [_jsxs("span", { className: "font-medium text-foreground", children: [check.label, ": "] }), _jsx("span", { className: "text-muted-foreground break-words", children: check.detail }), check.hint && (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground/80 break-words", children: check.hint }))] })] }, check.id)))] })] }));
40
- }
@@ -1,10 +0,0 @@
1
- import type { TradeItem } from "../../lib/floriday-client";
2
- /**
3
- * Producten zijn altijd volwaardig. De dashboard-statistieken tonen alleen of ze op
4
- * Floriday actief zijn — geen concept-status meer.
5
- */
6
- export declare function VoorraadDashboard({ items, connectionId, }: {
7
- items: TradeItem[];
8
- connectionId: string | null;
9
- }): import("react/jsx-runtime").JSX.Element;
10
- //# sourceMappingURL=VoorraadDashboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoorraadDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/VoorraadDashboard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA4B3D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,YAAY,GACb,EAAE;IACD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,2CA0DA"}
@@ -1,53 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Link } from "@tanstack/react-router";
3
- import { Card } from "@flowselections/core";
4
- import { validateDraftForPublish } from "../../lib/floriday-import-validator";
5
- function Stat({ label, value, tone = "default", }) {
6
- const toneCls = tone === "danger"
7
- ? "text-destructive"
8
- : tone === "warn"
9
- ? "text-amber-600"
10
- : tone === "good"
11
- ? "text-emerald-600"
12
- : "text-foreground";
13
- return (_jsxs("div", { children: [_jsx("div", { className: "text-xs text-muted-foreground", children: label }), _jsx("div", { className: `text-2xl font-semibold tabular-nums ${toneCls}`, children: value })] }));
14
- }
15
- /**
16
- * Producten zijn altijd volwaardig. De dashboard-statistieken tonen alleen of ze op
17
- * Floriday actief zijn — geen concept-status meer.
18
- */
19
- export function VoorraadDashboard({ items, connectionId, }) {
20
- const total = items.length;
21
- const active = items.filter((i) => i.floridayActive).length;
22
- const inactive = total - active;
23
- const missingFields = items.filter((i) => {
24
- if (i.floridayActive)
25
- return false;
26
- const payload = i.raw?.custom_fields?.floriday_payload ??
27
- i.raw?.floriday_payload ??
28
- i.raw?.data ??
29
- {};
30
- return !validateDraftForPublish(payload).ok;
31
- }).length;
32
- // Nieuw sinds laatste import
33
- let lastImport = null;
34
- try {
35
- if (connectionId) {
36
- const s = localStorage.getItem(`voorraad_last_import_${connectionId}`);
37
- if (s)
38
- lastImport = new Date(s);
39
- }
40
- }
41
- catch {
42
- /* ignore */
43
- }
44
- const newSinceImport = lastImport
45
- ? items.filter((i) => {
46
- const raw = i.raw;
47
- const src = raw?.source ?? raw?.data?.source;
48
- const created = raw?.created_at ? new Date(raw.created_at) : null;
49
- return src === "excel_import" && created && created >= lastImport;
50
- }).length
51
- : 0;
52
- return (_jsxs(Card, { className: "p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 mb-3", children: [_jsxs("div", { children: [_jsx("div", { className: "text-sm font-medium", children: "Voorraad-overzicht" }), _jsx("div", { className: "text-xs text-muted-foreground", children: "Alle producten zijn volwaardig; alleen de Floriday-activatie verschilt." })] }), _jsx(Link, { to: "/voorraad/validatie", className: "text-xs text-primary hover:underline", children: "Producten zonder Floriday-activatie \u2192" })] }), _jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-4", children: [_jsx(Stat, { label: "Producten", value: total }), _jsx(Stat, { label: "Actief op Floriday", value: active, tone: "good" }), _jsx(Stat, { label: "Niet actief op Floriday", value: inactive }), _jsx(Stat, { label: "Ontbrekende Floriday-velden", value: missingFields, tone: "warn" }), _jsx(Stat, { label: "Nieuw sinds import", value: newSinceImport })] })] }));
53
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * Mapping van Floriday-veldnamen naar hun waarde-bron.
3
- *
4
- * - CODE_LIST_BY_FIELD: veld met vaste enum-waardes uit /gateway/code-list.
5
- * - REF_ENTITY_BY_FIELD: veld dat verwijst naar een rij in een stamdata-cache,
6
- * te lezen via /gateway/cached-list. Waarden zijn kebab-case Floriday-
7
- * resources (GatewayEntity) — NIET de Supabase-tabelnaam.
8
- * - REF_TABLE_BY_FIELD: identieke mapping naar de Supabase-cache-tabelnaam,
9
- * uitsluitend voor directe `supabase.from(...)` reads in deze module.
10
- */
11
- import { type GatewayEntity } from "./floriday-gateway-entities";
12
- export declare const CODE_LIST_BY_FIELD: Record<string, string>;
13
- export declare const REF_ENTITY_BY_FIELD: Record<string, GatewayEntity>;
14
- export declare const REF_TABLE_BY_FIELD: Record<string, string>;
15
- export declare function codeListFor(field: string): string | undefined;
16
- export declare function refEntityFor(field: string): GatewayEntity | undefined;
17
- export declare function refTableFor(field: string): string | undefined;
18
- //# sourceMappingURL=floriday-field-sources.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"floriday-field-sources.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-field-sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEnF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAM7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMrD,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAErE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7D"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Mapping van Floriday-veldnamen naar hun waarde-bron.
3
- *
4
- * - CODE_LIST_BY_FIELD: veld met vaste enum-waardes uit /gateway/code-list.
5
- * - REF_ENTITY_BY_FIELD: veld dat verwijst naar een rij in een stamdata-cache,
6
- * te lezen via /gateway/cached-list. Waarden zijn kebab-case Floriday-
7
- * resources (GatewayEntity) — NIET de Supabase-tabelnaam.
8
- * - REF_TABLE_BY_FIELD: identieke mapping naar de Supabase-cache-tabelnaam,
9
- * uitsluitend voor directe `supabase.from(...)` reads in deze module.
10
- */
11
- import { GATEWAY_ENTITIES } from "./floriday-gateway-entities";
12
- export const CODE_LIST_BY_FIELD = {
13
- currency: "Currency",
14
- salesUnit: "SalesUnit",
15
- auctionLocation: "AuctionLocation",
16
- supplyType: "SupplyType",
17
- loadCarrierType: "SupplyLoadCarrierType",
18
- packingType: "PackingType",
19
- qualityMark: "QualityMark",
20
- country: "Country",
21
- countryOfOrigin: "Country",
22
- };
23
- export const REF_ENTITY_BY_FIELD = {
24
- packingId: GATEWAY_ENTITIES.packings,
25
- warehouseId: GATEWAY_ENTITIES.warehouses,
26
- deliveryLocationId: GATEWAY_ENTITIES.deliveryLocations,
27
- priceGroupId: GATEWAY_ENTITIES.priceGroups,
28
- collectionId: GATEWAY_ENTITIES.collections,
29
- };
30
- export const REF_TABLE_BY_FIELD = {
31
- packingId: "floriday_packings_cache",
32
- warehouseId: "floriday_warehouses_cache",
33
- deliveryLocationId: "floriday_delivery_locations_cache",
34
- priceGroupId: "floriday_price_groups_cache",
35
- collectionId: "floriday_collections_cache",
36
- };
37
- export function codeListFor(field) {
38
- return CODE_LIST_BY_FIELD[field];
39
- }
40
- export function refEntityFor(field) {
41
- return REF_ENTITY_BY_FIELD[field];
42
- }
43
- export function refTableFor(field) {
44
- return REF_TABLE_BY_FIELD[field];
45
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * Bouwt een Zod-schema op basis van de fields[]-projectie van /gateway/schema.
3
- * Wordt gebruikt voor snelle client-side UX-feedback. De gateway valideert
4
- * altijd nogmaals server-side (validateEnums + Floriday zelf).
5
- */
6
- import { z, type ZodTypeAny } from "zod";
7
- import type { FloridaySchemaField } from "../hooks/useFloriday";
8
- export declare function buildZodFromFields(fields: FloridaySchemaField[]): z.ZodObject<Record<string, ZodTypeAny>>;
9
- //# sourceMappingURL=floriday-schema-to-zod.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"floriday-schema-to-zod.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-schema-to-zod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAmChE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,EAAE,GAC5B,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAIzC"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Bouwt een Zod-schema op basis van de fields[]-projectie van /gateway/schema.
3
- * Wordt gebruikt voor snelle client-side UX-feedback. De gateway valideert
4
- * altijd nogmaals server-side (validateEnums + Floriday zelf).
5
- */
6
- import { z } from "zod";
7
- function fieldToZod(f) {
8
- let schema;
9
- if (f.enum && f.enum.length > 0) {
10
- schema = z.enum(f.enum);
11
- }
12
- else if (f.type === "number" || f.type === "integer") {
13
- let n = z.number();
14
- if (typeof f.minimum === "number")
15
- n = n.min(f.minimum);
16
- if (typeof f.maximum === "number")
17
- n = n.max(f.maximum);
18
- if (f.type === "integer")
19
- n = n.int();
20
- schema = n;
21
- }
22
- else if (f.type === "boolean") {
23
- schema = z.boolean();
24
- }
25
- else if (f.type === "array") {
26
- schema = z.array(z.any());
27
- }
28
- else {
29
- let s = z.string();
30
- if (typeof f.minLength === "number")
31
- s = s.min(f.minLength);
32
- if (typeof f.maxLength === "number")
33
- s = s.max(f.maxLength);
34
- if (f.pattern) {
35
- try {
36
- s = s.regex(new RegExp(f.pattern));
37
- }
38
- catch {
39
- // ongeldige pattern uit schema → negeren
40
- }
41
- }
42
- schema = s;
43
- }
44
- if (!f.required)
45
- schema = schema.optional().nullable();
46
- return schema;
47
- }
48
- export function buildZodFromFields(fields) {
49
- const shape = {};
50
- for (const f of fields)
51
- shape[f.name] = fieldToZod(f);
52
- return z.object(shape);
53
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Voegt twee producten samen: alle voorraad, samenstellingen en orderregels
3
- * van `loserProductId` verhuizen naar `canonicalProductId`. Daarna wordt de
4
- * loser-rij verwijderd. Roept de `merge_products`-SQL-functie aan; audit-log
5
- * wordt automatisch bijgehouden in `product_merge_log`.
6
- */
7
- export declare function mergeProducts(canonicalProductId: string, loserProductId: string): Promise<void>;
8
- //# sourceMappingURL=merge-products.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-products.d.ts","sourceRoot":"","sources":["../../src/lib/merge-products.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,kBAAkB,EAAE,MAAM,EAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -1,17 +0,0 @@
1
- import { supabase } from "../integrations/supabase/client";
2
- /**
3
- * Voegt twee producten samen: alle voorraad, samenstellingen en orderregels
4
- * van `loserProductId` verhuizen naar `canonicalProductId`. Daarna wordt de
5
- * loser-rij verwijderd. Roept de `merge_products`-SQL-functie aan; audit-log
6
- * wordt automatisch bijgehouden in `product_merge_log`.
7
- */
8
- export async function mergeProducts(canonicalProductId, loserProductId) {
9
- if (canonicalProductId === loserProductId)
10
- return;
11
- const { error } = await supabase.rpc("merge_products", {
12
- _canonical: canonicalProductId,
13
- _loser: loserProductId,
14
- });
15
- if (error)
16
- throw new Error(error.message);
17
- }