@flowselections/floriday-voorraad 1.0.38 → 1.0.40

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 (63) hide show
  1. package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
  2. package/dist-lib/components/voorraad/ArtikelWizard.js +34 -3
  3. package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
  4. package/dist-lib/components/voorraad/FustenPage.js +7 -1
  5. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +10 -0
  6. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts.map +1 -0
  7. package/dist-lib/components/voorraad/InventorySettingsDrawer.js +99 -0
  8. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +6 -0
  9. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts.map +1 -0
  10. package/dist-lib/components/voorraad/InventoryStatusBadge.js +43 -0
  11. package/dist-lib/components/voorraad/StockHistoryChart.d.ts +4 -0
  12. package/dist-lib/components/voorraad/StockHistoryChart.d.ts.map +1 -0
  13. package/dist-lib/components/voorraad/StockHistoryChart.js +53 -0
  14. package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
  15. package/dist-lib/components/voorraad/VoorraadPage.js +29 -1
  16. package/dist-lib/components/voorraad/VoorraadTable.d.ts +9 -1
  17. package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
  18. package/dist-lib/components/voorraad/VoorraadTable.js +17 -6
  19. package/dist-lib/hooks/useInventorySettings.d.ts +29 -0
  20. package/dist-lib/hooks/useInventorySettings.d.ts.map +1 -0
  21. package/dist-lib/hooks/useInventorySettings.js +62 -0
  22. package/dist-lib/hooks/useTradeItemStock.d.ts.map +1 -1
  23. package/dist-lib/hooks/useTradeItemStock.js +1 -0
  24. package/dist-lib/integrations/supabase/auth-middleware.d.ts +3833 -1196
  25. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  26. package/dist-lib/integrations/supabase/client.d.ts +3833 -1196
  27. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  28. package/dist-lib/integrations/supabase/client.server.d.ts +3833 -1196
  29. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  30. package/dist-lib/integrations/supabase/types.d.ts +3987 -1324
  31. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  32. package/dist-lib/integrations/supabase/types.js +1 -0
  33. package/dist-lib/lib/floricode-required-features.functions.d.ts +3833 -1196
  34. package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
  35. package/dist-lib/lib/floriday-2026v1.server.d.ts +77 -0
  36. package/dist-lib/lib/floriday-2026v1.server.d.ts.map +1 -0
  37. package/dist-lib/lib/floriday-2026v1.server.js +178 -0
  38. package/dist-lib/lib/floriday-customer-offer.functions.d.ts +3833 -1196
  39. package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -1
  40. package/dist-lib/lib/floriday-env.functions.d.ts +6593 -1319
  41. package/dist-lib/lib/floriday-env.functions.d.ts.map +1 -1
  42. package/dist-lib/lib/floriday-gateway.functions.d.ts +19621 -3799
  43. package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
  44. package/dist-lib/lib/floriday-stock-supply.server.d.ts +18 -7
  45. package/dist-lib/lib/floriday-stock-supply.server.d.ts.map +1 -1
  46. package/dist-lib/lib/floriday-stock-supply.server.js +70 -68
  47. package/dist-lib/lib/floriday-vbn-required.functions.d.ts +6593 -1319
  48. package/dist-lib/lib/floriday-vbn-required.functions.d.ts.map +1 -1
  49. package/dist-lib/lib/floriday-warehouse.functions.d.ts +9850 -1939
  50. package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
  51. package/dist-lib/lib/floriday-writes.functions.d.ts +6593 -1319
  52. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  53. package/dist-lib/lib/fusten.d.ts +1 -0
  54. package/dist-lib/lib/fusten.d.ts.map +1 -1
  55. package/dist-lib/lib/fusten.js +1 -1
  56. package/dist-lib/lib/inventory-settings.functions.d.ts +51709 -0
  57. package/dist-lib/lib/inventory-settings.functions.d.ts.map +1 -0
  58. package/dist-lib/lib/inventory-settings.functions.js +97 -0
  59. package/dist-lib/lib/module-health.functions.d.ts +6593 -1319
  60. package/dist-lib/lib/module-health.functions.d.ts.map +1 -1
  61. package/dist-lib/lib/stock-sync.functions.d.ts +6593 -1319
  62. package/dist-lib/lib/stock-sync.functions.d.ts.map +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Schrijven van de Floriday-voorraadsturing. Bewust server-side: de
3
+ * berekening van de gewenste stand en het inplannen van de push gebeuren in
4
+ * de database (`floriday_recompute_inventory`), die niet vanuit de browser
5
+ * aanroepbaar is.
6
+ */
7
+ import { createServerFn } from "@tanstack/react-start";
8
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
9
+ import { z } from "zod";
10
+ const modeSchema = z.enum(["FOLLOW_ERP", "MAX", "FIXED", "MANUAL", "DISABLED"]);
11
+ const settingsSchema = z.object({
12
+ connectionId: z.string().uuid(),
13
+ productIds: z.array(z.string().uuid()).min(1).max(500),
14
+ stockMode: modeSchema.optional(),
15
+ bufferQuantity: z.number().int().min(0).max(1000000).optional(),
16
+ maximumQuantity: z.number().int().min(0).max(10000000).nullable().optional(),
17
+ fixedQuantity: z.number().int().min(0).max(10000000).nullable().optional(),
18
+ manualQuantity: z.number().int().min(0).max(10000000).nullable().optional(),
19
+ });
20
+ export const saveInventorySettings = createServerFn({ method: "POST" })
21
+ .middleware([requireSupabaseAuth])
22
+ .inputValidator((data) => settingsSchema.parse(data))
23
+ .handler(async ({ data, context }) => {
24
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
25
+ const admin = supabaseAdmin;
26
+ // Alleen producten van deze gebruiker/connectie mogen worden gestuurd.
27
+ const { data: owned, error: ownErr } = await admin
28
+ .from("floriday_inventory_settings")
29
+ .select("id, product_id")
30
+ .eq("connection_id", data.connectionId)
31
+ .eq("user_id", context.userId)
32
+ .in("product_id", data.productIds);
33
+ if (ownErr)
34
+ throw new Error(ownErr.message);
35
+ const ids = (owned ?? []).map((r) => r.id);
36
+ if (ids.length === 0) {
37
+ throw new Error("Geen instelbare producten gevonden. Koppel het product eerst aan Floriday.");
38
+ }
39
+ const patch = { updated_at: new Date().toISOString(), updated_by: context.userId };
40
+ if (data.stockMode !== undefined)
41
+ patch.stock_mode = data.stockMode;
42
+ if (data.bufferQuantity !== undefined)
43
+ patch.buffer_quantity = data.bufferQuantity;
44
+ if (data.maximumQuantity !== undefined)
45
+ patch.maximum_quantity = data.maximumQuantity;
46
+ if (data.fixedQuantity !== undefined)
47
+ patch.fixed_quantity = data.fixedQuantity;
48
+ if (data.manualQuantity !== undefined)
49
+ patch.manual_quantity = data.manualQuantity;
50
+ const { error } = await admin
51
+ .from("floriday_inventory_settings")
52
+ .update(patch)
53
+ .in("id", ids);
54
+ if (error)
55
+ throw new Error(error.message);
56
+ // De trigger op deze tabel herberekent en plant de push in; expliciet
57
+ // forceren zorgt dat ook een ongewijzigde stand opnieuw wordt gepubliceerd.
58
+ for (const row of owned ?? []) {
59
+ await admin.rpc("floriday_recompute_inventory", {
60
+ p_connection_id: data.connectionId,
61
+ p_product_id: row.product_id,
62
+ p_force: false,
63
+ });
64
+ }
65
+ return { updated: ids.length };
66
+ });
67
+ /** Forceer een herpublicatie zonder de instellingen te wijzigen. */
68
+ export const republishInventory = createServerFn({ method: "POST" })
69
+ .middleware([requireSupabaseAuth])
70
+ .inputValidator((data) => z
71
+ .object({
72
+ connectionId: z.string().uuid(),
73
+ productIds: z.array(z.string().uuid()).min(1).max(500),
74
+ })
75
+ .parse(data))
76
+ .handler(async ({ data, context }) => {
77
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
78
+ const admin = supabaseAdmin;
79
+ const { data: owned, error } = await admin
80
+ .from("floriday_inventory_settings")
81
+ .select("product_id")
82
+ .eq("connection_id", data.connectionId)
83
+ .eq("user_id", context.userId)
84
+ .in("product_id", data.productIds);
85
+ if (error)
86
+ throw new Error(error.message);
87
+ let queued = 0;
88
+ for (const row of owned ?? []) {
89
+ await admin.rpc("floriday_recompute_inventory", {
90
+ p_connection_id: data.connectionId,
91
+ p_product_id: row.product_id,
92
+ p_force: true,
93
+ });
94
+ queued++;
95
+ }
96
+ return { queued };
97
+ });