@flowselections/floriday-voorraad 1.0.15 → 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.
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +9 -0
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -0
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.js +51 -0
- package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.js +411 -28
- package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/EditArtikelPage.js +78 -4
- package/dist-lib/components/voorraad/ExcelExportButton.d.ts +2 -1
- package/dist-lib/components/voorraad/ExcelExportButton.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ExcelExportButton.js +24 -5
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +8 -0
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -0
- package/dist-lib/components/voorraad/OrderHistoryCard.js +133 -0
- package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +7 -0
- package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -0
- package/dist-lib/components/voorraad/PriceStatusBadge.js +67 -0
- package/dist-lib/components/voorraad/ProductLinkCard.d.ts +13 -0
- package/dist-lib/components/voorraad/ProductLinkCard.d.ts.map +1 -0
- package/dist-lib/components/voorraad/ProductLinkCard.js +159 -0
- package/dist-lib/components/voorraad/StockBulkButtons.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockBulkButtons.js +88 -7
- package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +2 -1
- package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadStockCard.js +5 -4
- package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.js +6 -1
- package/dist-lib/hooks/useLocalTradeItems.d.ts.map +1 -1
- package/dist-lib/hooks/useLocalTradeItems.js +4 -0
- package/dist-lib/hooks/useTradeItemSpec.d.ts.map +1 -1
- package/dist-lib/hooks/useTradeItemSpec.js +4 -1
- package/dist-lib/hooks/useTradeItemStock.d.ts +14 -1
- package/dist-lib/hooks/useTradeItemStock.d.ts.map +1 -1
- package/dist-lib/hooks/useTradeItemStock.js +76 -17
- package/dist-lib/hooks/useTradeItemSupplyLine.d.ts +21 -0
- package/dist-lib/hooks/useTradeItemSupplyLine.d.ts.map +1 -0
- package/dist-lib/hooks/useTradeItemSupplyLine.js +49 -0
- package/dist-lib/hooks/useVoorraadData.d.ts +5 -4
- package/dist-lib/hooks/useVoorraadData.d.ts.map +1 -1
- package/dist-lib/hooks/useVoorraadData.js +73 -7
- package/dist-lib/index.d.ts +1 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +1 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1307 -94
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +1307 -94
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1307 -94
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +1328 -87
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/ensure-article-codes.d.ts +8 -0
- package/dist-lib/lib/ensure-article-codes.d.ts.map +1 -0
- package/dist-lib/lib/ensure-article-codes.js +78 -0
- package/dist-lib/lib/floricode-required-features.functions.d.ts +1313 -94
- package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
- package/dist-lib/lib/floricode-required-features.functions.js +20 -2
- package/dist-lib/lib/floriday-client.d.ts +6 -0
- package/dist-lib/lib/floriday-client.d.ts.map +1 -1
- package/dist-lib/lib/floriday-customer-offer.functions.d.ts +11264 -0
- package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -0
- package/dist-lib/lib/floriday-customer-offer.functions.js +175 -0
- package/dist-lib/lib/floriday-gateway.functions.d.ts +16129 -17
- package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-gateway.functions.js +150 -0
- package/dist-lib/lib/floriday-gateway.server.d.ts +22 -0
- package/dist-lib/lib/floriday-gateway.server.d.ts.map +1 -1
- package/dist-lib/lib/floriday-gateway.server.js +3 -0
- package/dist-lib/lib/floriday-payload.d.ts +76 -8
- package/dist-lib/lib/floriday-payload.d.ts.map +1 -1
- package/dist-lib/lib/floriday-payload.js +209 -39
- package/dist-lib/lib/floriday-supply-line.d.ts +53 -0
- package/dist-lib/lib/floriday-supply-line.d.ts.map +1 -0
- package/dist-lib/lib/floriday-supply-line.js +109 -0
- package/dist-lib/lib/floriday-warehouse.functions.d.ts +33638 -0
- package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -0
- package/dist-lib/lib/floriday-warehouse.functions.js +98 -0
- package/dist-lib/lib/floriday-writes.functions.d.ts +2707 -281
- package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-writes.functions.js +39 -6
- package/dist-lib/lib/vrs-catalog.d.ts +27 -0
- package/dist-lib/lib/vrs-catalog.d.ts.map +1 -0
- package/dist-lib/lib/vrs-catalog.js +98 -0
- package/package.json +3 -2
- package/public/flowselections-assets/Voorraad/floriday-logo.png +0 -0
|
@@ -19,14 +19,37 @@ function applyStock(item, s) {
|
|
|
19
19
|
economicQuantity: available + s.incoming_stock,
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
+
function erpToTradeItem(row) {
|
|
23
|
+
const key = row.trade_item_key ?? `product:${row.id}`;
|
|
24
|
+
return {
|
|
25
|
+
id: `erp:${row.id}`,
|
|
26
|
+
productId: row.id,
|
|
27
|
+
tradeItemKey: key,
|
|
28
|
+
source: "erp",
|
|
29
|
+
name: row.product || "(naamloos product)",
|
|
30
|
+
articleNumber: row.barcode || "",
|
|
31
|
+
imageUrl: row.image_url,
|
|
32
|
+
quantity: 0,
|
|
33
|
+
minQuantity: 0,
|
|
34
|
+
reservedQuantity: 0,
|
|
35
|
+
availableQuantity: 0,
|
|
36
|
+
incomingQuantity: 0,
|
|
37
|
+
economicQuantity: 0,
|
|
38
|
+
raw: row,
|
|
39
|
+
published: false,
|
|
40
|
+
linkStatus: "unlinked",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
22
43
|
/**
|
|
23
|
-
* Reads trade items from
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
44
|
+
* Reads trade items from three sources and merges them into one voorraad list:
|
|
45
|
+
* 1. `products` rows tied to a `product:<id>` key (pure ERP items).
|
|
46
|
+
* 2. `trade_item_drafts` (lokaal concept, mogelijk in publiceerflow).
|
|
47
|
+
* 3. `floriday_trade_items_cache` (gepubliceerd artikel).
|
|
48
|
+
* Voorraadwaarden komen uit `trade_item_stock` en overschrijven cache-defaults.
|
|
27
49
|
*/
|
|
28
50
|
export function useVoorraadData(connectionId) {
|
|
29
51
|
const [publishedItems, setPublishedItems] = useState([]);
|
|
52
|
+
const [erpItems, setErpItems] = useState([]);
|
|
30
53
|
const [stockMap, setStockMap] = useState(new Map());
|
|
31
54
|
const [loading, setLoading] = useState(false);
|
|
32
55
|
const [error, setError] = useState(null);
|
|
@@ -34,33 +57,43 @@ export function useVoorraadData(connectionId) {
|
|
|
34
57
|
const loadPublished = useCallback(async () => {
|
|
35
58
|
if (!connectionId) {
|
|
36
59
|
setPublishedItems([]);
|
|
60
|
+
setErpItems([]);
|
|
37
61
|
setStockMap(new Map());
|
|
38
62
|
return;
|
|
39
63
|
}
|
|
40
64
|
setLoading(true);
|
|
41
65
|
setError(null);
|
|
42
66
|
try {
|
|
43
|
-
const [pubRes, stock] = await Promise.all([
|
|
67
|
+
const [pubRes, erpRes, stock] = await Promise.all([
|
|
44
68
|
supabase
|
|
45
69
|
.from("floriday_trade_items_cache")
|
|
46
70
|
.select("data,floriday_id,is_deleted")
|
|
47
71
|
.eq("connection_id", connectionId)
|
|
48
72
|
.eq("is_deleted", false)
|
|
49
73
|
.limit(1000),
|
|
74
|
+
supabase
|
|
75
|
+
.from("products")
|
|
76
|
+
.select("id,product,barcode,image_url,trade_item_key")
|
|
77
|
+
.or("trade_item_key.is.null,trade_item_key.like.product:%")
|
|
78
|
+
.limit(1000),
|
|
50
79
|
fetchStockMap(connectionId),
|
|
51
80
|
]);
|
|
52
81
|
if (pubRes.error)
|
|
53
82
|
throw pubRes.error;
|
|
83
|
+
if (erpRes.error)
|
|
84
|
+
throw erpRes.error;
|
|
54
85
|
const normalised = (pubRes.data ?? [])
|
|
55
86
|
.map((row) => normaliseTradeItem({ ...row.data, id: row.floriday_id }))
|
|
56
87
|
.filter((i) => i.id)
|
|
57
|
-
.map((i) => ({ ...i, published: true }));
|
|
88
|
+
.map((i) => ({ ...i, published: true, source: "published", tradeItemKey: i.id }));
|
|
58
89
|
setPublishedItems(normalised);
|
|
90
|
+
setErpItems((erpRes.data ?? []).map((r) => erpToTradeItem(r)));
|
|
59
91
|
setStockMap(stock);
|
|
60
92
|
}
|
|
61
93
|
catch (e) {
|
|
62
94
|
setError(e.message);
|
|
63
95
|
setPublishedItems([]);
|
|
96
|
+
setErpItems([]);
|
|
64
97
|
}
|
|
65
98
|
finally {
|
|
66
99
|
setLoading(false);
|
|
@@ -69,11 +102,44 @@ export function useVoorraadData(connectionId) {
|
|
|
69
102
|
useEffect(() => {
|
|
70
103
|
loadPublished();
|
|
71
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]);
|
|
72
132
|
const reload = useCallback(async () => {
|
|
73
133
|
await Promise.all([loadPublished(), reloadLocal()]);
|
|
74
134
|
}, [loadPublished, reloadLocal]);
|
|
135
|
+
const linkedProductIds = new Set(localItems
|
|
136
|
+
.map((i) => i.productId)
|
|
137
|
+
.filter((id) => Boolean(id)));
|
|
75
138
|
const merged = [
|
|
76
|
-
...
|
|
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}` : "")))),
|
|
77
143
|
...publishedItems.map((i) => applyStock(i, stockMap.get(i.id))),
|
|
78
144
|
];
|
|
79
145
|
return {
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -5,5 +5,6 @@ export { NieuwArtikelPage } from './components/voorraad/NieuwArtikelPage';
|
|
|
5
5
|
export { EditArtikelPage } from './components/voorraad/EditArtikelPage';
|
|
6
6
|
export { ValidationPage } from './components/voorraad/ValidationPage';
|
|
7
7
|
export { ArtikelWizard } from './components/voorraad/ArtikelWizard';
|
|
8
|
+
export { ProductLinkCard } from './components/voorraad/ProductLinkCard';
|
|
8
9
|
export declare const floridayVoorraadModule: FlowModule;
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,eAAO,MAAM,sBAAsB,EAAE,UAUpC,CAAC"}
|
package/dist-lib/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export { NieuwArtikelPage } from './components/voorraad/NieuwArtikelPage';
|
|
|
8
8
|
export { EditArtikelPage } from './components/voorraad/EditArtikelPage';
|
|
9
9
|
export { ValidationPage } from './components/voorraad/ValidationPage';
|
|
10
10
|
export { ArtikelWizard } from './components/voorraad/ArtikelWizard';
|
|
11
|
+
export { ProductLinkCard } from './components/voorraad/ProductLinkCard';
|
|
11
12
|
export const floridayVoorraadModule = {
|
|
12
13
|
id: "voorraad",
|
|
13
14
|
name: "Voorraad",
|