@flowselections/floriday-voorraad 1.0.16 → 1.0.17

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 (64) hide show
  1. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +9 -0
  2. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -0
  3. package/dist-lib/components/voorraad/AdditionalPackagingDialog.js +51 -0
  4. package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
  5. package/dist-lib/components/voorraad/ArtikelWizard.js +372 -30
  6. package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
  7. package/dist-lib/components/voorraad/EditArtikelPage.js +78 -4
  8. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +8 -0
  9. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -0
  10. package/dist-lib/components/voorraad/OrderHistoryCard.js +133 -0
  11. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +7 -0
  12. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -0
  13. package/dist-lib/components/voorraad/PriceStatusBadge.js +67 -0
  14. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +2 -1
  15. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
  16. package/dist-lib/components/voorraad/VoorraadStockCard.js +5 -4
  17. package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
  18. package/dist-lib/components/voorraad/VoorraadTable.js +6 -1
  19. package/dist-lib/hooks/useLocalTradeItems.d.ts.map +1 -1
  20. package/dist-lib/hooks/useLocalTradeItems.js +4 -0
  21. package/dist-lib/hooks/useTradeItemStock.d.ts +14 -1
  22. package/dist-lib/hooks/useTradeItemStock.d.ts.map +1 -1
  23. package/dist-lib/hooks/useTradeItemStock.js +76 -17
  24. package/dist-lib/hooks/useTradeItemSupplyLine.d.ts +21 -0
  25. package/dist-lib/hooks/useTradeItemSupplyLine.d.ts.map +1 -0
  26. package/dist-lib/hooks/useTradeItemSupplyLine.js +49 -0
  27. package/dist-lib/hooks/useVoorraadData.d.ts.map +1 -1
  28. package/dist-lib/hooks/useVoorraadData.js +35 -3
  29. package/dist-lib/integrations/supabase/auth-middleware.d.ts +473 -3
  30. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  31. package/dist-lib/integrations/supabase/client.d.ts +473 -3
  32. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  33. package/dist-lib/integrations/supabase/client.server.d.ts +473 -3
  34. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  35. package/dist-lib/integrations/supabase/types.d.ts +481 -3
  36. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  37. package/dist-lib/lib/floricode-required-features.functions.d.ts +480 -4
  38. package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
  39. package/dist-lib/lib/floricode-required-features.functions.js +20 -2
  40. package/dist-lib/lib/floriday-customer-offer.functions.d.ts +11264 -0
  41. package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -0
  42. package/dist-lib/lib/floriday-customer-offer.functions.js +175 -0
  43. package/dist-lib/lib/floriday-gateway.functions.d.ts +13155 -15
  44. package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
  45. package/dist-lib/lib/floriday-gateway.functions.js +150 -0
  46. package/dist-lib/lib/floriday-gateway.server.d.ts +22 -0
  47. package/dist-lib/lib/floriday-gateway.server.d.ts.map +1 -1
  48. package/dist-lib/lib/floriday-gateway.server.js +3 -0
  49. package/dist-lib/lib/floriday-payload.d.ts +60 -6
  50. package/dist-lib/lib/floriday-payload.d.ts.map +1 -1
  51. package/dist-lib/lib/floriday-payload.js +104 -7
  52. package/dist-lib/lib/floriday-supply-line.d.ts +53 -0
  53. package/dist-lib/lib/floriday-supply-line.d.ts.map +1 -0
  54. package/dist-lib/lib/floriday-supply-line.js +109 -0
  55. package/dist-lib/lib/floriday-warehouse.functions.d.ts +1420 -10
  56. package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
  57. package/dist-lib/lib/floriday-writes.functions.d.ts +947 -7
  58. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  59. package/dist-lib/lib/floriday-writes.functions.js +6 -1
  60. package/dist-lib/lib/vrs-catalog.d.ts +27 -0
  61. package/dist-lib/lib/vrs-catalog.d.ts.map +1 -0
  62. package/dist-lib/lib/vrs-catalog.js +98 -0
  63. package/package.json +3 -2
  64. package/public/flowselections-assets/Voorraad/floriday-logo.png +0 -0
@@ -0,0 +1,49 @@
1
+ import { useEffect } from "react";
2
+ import { useQuery, useQueryClient } from "@tanstack/react-query";
3
+ import { supabase } from "../integrations/supabase/client";
4
+ /**
5
+ * Leest de meest recente supply-line voor een trade item en luistert realtime
6
+ * op wijzigingen zodat de UI direct meebeweegt na een push naar Floriday.
7
+ */
8
+ export function useTradeItemSupplyLine(tradeItemId) {
9
+ const queryClient = useQueryClient();
10
+ const key = ["trade-item-supply-line", tradeItemId];
11
+ const query = useQuery({
12
+ queryKey: key,
13
+ enabled: Boolean(tradeItemId),
14
+ queryFn: async () => {
15
+ if (!tradeItemId)
16
+ return null;
17
+ const { data, error } = await supabase
18
+ .from("trade_item_supply_lines")
19
+ .select("id,supply_line_id,trade_item_id,price_per_piece,currency,available_quantity,period_start,period_end,packing_configuration_id,endpoint_family,year,week,updated_at")
20
+ .eq("trade_item_id", tradeItemId)
21
+ .order("updated_at", { ascending: false })
22
+ .limit(1)
23
+ .maybeSingle();
24
+ if (error)
25
+ throw error;
26
+ return data ?? null;
27
+ },
28
+ });
29
+ useEffect(() => {
30
+ if (!tradeItemId)
31
+ return;
32
+ const channel = supabase
33
+ .channel(`supply-line:${tradeItemId}`)
34
+ .on("postgres_changes", {
35
+ event: "*",
36
+ schema: "public",
37
+ table: "trade_item_supply_lines",
38
+ filter: `trade_item_id=eq.${tradeItemId}`,
39
+ }, () => {
40
+ queryClient.invalidateQueries({ queryKey: key });
41
+ })
42
+ .subscribe();
43
+ return () => {
44
+ supabase.removeChannel(channel);
45
+ };
46
+ // eslint-disable-next-line react-hooks/exhaustive-deps
47
+ }, [tradeItemId]);
48
+ return query;
49
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"useVoorraadData.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoorraadData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAkD5E;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;;;;;EA6E1D"}
1
+ {"version":3,"file":"useVoorraadData.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoorraadData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAkD5E;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;;;;;EA4H1D"}
@@ -74,7 +74,7 @@ export function useVoorraadData(connectionId) {
74
74
  supabase
75
75
  .from("products")
76
76
  .select("id,product,barcode,image_url,trade_item_key")
77
- .like("trade_item_key", "product:%")
77
+ .or("trade_item_key.is.null,trade_item_key.like.product:%")
78
78
  .limit(1000),
79
79
  fetchStockMap(connectionId),
80
80
  ]);
@@ -102,12 +102,44 @@ export function useVoorraadData(connectionId) {
102
102
  useEffect(() => {
103
103
  loadPublished();
104
104
  }, [loadPublished]);
105
+ // Realtime: refresh stock map whenever any trade_item_stock row for this
106
+ // connection changes (insert/update/delete). Keeps Voorraad in sync with
107
+ // reservations, order completions, wizard saves, imports, etc.
108
+ useEffect(() => {
109
+ if (!connectionId)
110
+ return;
111
+ const channel = supabase
112
+ .channel(`voorraad-stock-${connectionId}`)
113
+ .on("postgres_changes", {
114
+ event: "*",
115
+ schema: "public",
116
+ table: "trade_item_stock",
117
+ filter: `connection_id=eq.${connectionId}`,
118
+ }, () => {
119
+ fetchStockMap(connectionId).then(setStockMap).catch(() => { });
120
+ })
121
+ .on("postgres_changes", { event: "*", schema: "public", table: "products" }, () => {
122
+ loadPublished();
123
+ })
124
+ .on("postgres_changes", { event: "*", schema: "public", table: "floriday_trade_items_cache", filter: `connection_id=eq.${connectionId}` }, () => {
125
+ loadPublished();
126
+ })
127
+ .subscribe();
128
+ return () => {
129
+ supabase.removeChannel(channel);
130
+ };
131
+ }, [connectionId, loadPublished]);
105
132
  const reload = useCallback(async () => {
106
133
  await Promise.all([loadPublished(), reloadLocal()]);
107
134
  }, [loadPublished, reloadLocal]);
135
+ const linkedProductIds = new Set(localItems
136
+ .map((i) => i.productId)
137
+ .filter((id) => Boolean(id)));
108
138
  const merged = [
109
- ...erpItems.map((i) => applyStock(i, stockMap.get(i.tradeItemKey ?? ""))),
110
- ...localItems.map((i) => applyStock(i, stockMap.get(i.localId ? `draft:${i.localId}` : ""))),
139
+ ...erpItems
140
+ .filter((i) => !i.productId || !linkedProductIds.has(i.productId))
141
+ .map((i) => applyStock(i, stockMap.get(i.tradeItemKey ?? ""))),
142
+ ...localItems.map((i) => applyStock(i, stockMap.get(i.tradeItemKey ?? (i.localId ? `draft:${i.localId}` : "")))),
111
143
  ...publishedItems.map((i) => applyStock(i, stockMap.get(i.id))),
112
144
  ];
113
145
  return {