@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.
- package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.js +34 -3
- package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FustenPage.js +7 -1
- package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +10 -0
- package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts.map +1 -0
- package/dist-lib/components/voorraad/InventorySettingsDrawer.js +99 -0
- package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +6 -0
- package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts.map +1 -0
- package/dist-lib/components/voorraad/InventoryStatusBadge.js +43 -0
- package/dist-lib/components/voorraad/StockHistoryChart.d.ts +4 -0
- package/dist-lib/components/voorraad/StockHistoryChart.d.ts.map +1 -0
- package/dist-lib/components/voorraad/StockHistoryChart.js +53 -0
- package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadPage.js +29 -1
- package/dist-lib/components/voorraad/VoorraadTable.d.ts +9 -1
- package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.js +17 -6
- package/dist-lib/hooks/useInventorySettings.d.ts +29 -0
- package/dist-lib/hooks/useInventorySettings.d.ts.map +1 -0
- package/dist-lib/hooks/useInventorySettings.js +62 -0
- package/dist-lib/hooks/useTradeItemStock.d.ts.map +1 -1
- package/dist-lib/hooks/useTradeItemStock.js +1 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +3833 -1196
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +3833 -1196
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +3833 -1196
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +3987 -1324
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +1 -0
- package/dist-lib/lib/floricode-required-features.functions.d.ts +3833 -1196
- package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-2026v1.server.d.ts +77 -0
- package/dist-lib/lib/floriday-2026v1.server.d.ts.map +1 -0
- package/dist-lib/lib/floriday-2026v1.server.js +178 -0
- package/dist-lib/lib/floriday-customer-offer.functions.d.ts +3833 -1196
- package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-env.functions.d.ts +6593 -1319
- package/dist-lib/lib/floriday-env.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-gateway.functions.d.ts +19621 -3799
- package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-stock-supply.server.d.ts +18 -7
- package/dist-lib/lib/floriday-stock-supply.server.d.ts.map +1 -1
- package/dist-lib/lib/floriday-stock-supply.server.js +70 -68
- package/dist-lib/lib/floriday-vbn-required.functions.d.ts +6593 -1319
- package/dist-lib/lib/floriday-vbn-required.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-warehouse.functions.d.ts +9850 -1939
- package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-writes.functions.d.ts +6593 -1319
- package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
- package/dist-lib/lib/fusten.d.ts +1 -0
- package/dist-lib/lib/fusten.d.ts.map +1 -1
- package/dist-lib/lib/fusten.js +1 -1
- package/dist-lib/lib/inventory-settings.functions.d.ts +51709 -0
- package/dist-lib/lib/inventory-settings.functions.d.ts.map +1 -0
- package/dist-lib/lib/inventory-settings.functions.js +97 -0
- package/dist-lib/lib/module-health.functions.d.ts +6593 -1319
- package/dist-lib/lib/module-health.functions.d.ts.map +1 -1
- package/dist-lib/lib/stock-sync.functions.d.ts +6593 -1319
- package/dist-lib/lib/stock-sync.functions.d.ts.map +1 -1
- 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
|
+
});
|