@flowselections/floriday-voorraad 1.0.150 → 1.0.154
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/fs-ui/DataTable.d.ts +42 -0
- package/dist-lib/components/fs-ui/DataTable.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/DataTable.js +68 -0
- package/dist-lib/components/fs-ui/EmptyState.d.ts +9 -0
- package/dist-lib/components/fs-ui/EmptyState.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/EmptyState.js +5 -0
- package/dist-lib/components/fs-ui/FilterChips.d.ts +13 -0
- package/dist-lib/components/fs-ui/FilterChips.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/FilterChips.js +8 -0
- package/dist-lib/components/fs-ui/FilterPanel.d.ts +19 -0
- package/dist-lib/components/fs-ui/FilterPanel.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/FilterPanel.js +10 -0
- package/dist-lib/components/fs-ui/FiltersButton.d.ts +6 -0
- package/dist-lib/components/fs-ui/FiltersButton.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/FiltersButton.js +7 -0
- package/dist-lib/components/fs-ui/HeaderButton.d.ts +16 -0
- package/dist-lib/components/fs-ui/HeaderButton.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/HeaderButton.js +10 -0
- package/dist-lib/components/fs-ui/HoverTip.d.ts +15 -0
- package/dist-lib/components/fs-ui/HoverTip.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/HoverTip.js +24 -0
- package/dist-lib/components/fs-ui/InlineAlert.d.ts +12 -0
- package/dist-lib/components/fs-ui/InlineAlert.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/InlineAlert.js +15 -0
- package/dist-lib/components/fs-ui/KpiRow.d.ts +10 -0
- package/dist-lib/components/fs-ui/KpiRow.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/KpiRow.js +8 -0
- package/dist-lib/components/fs-ui/KpiTile.d.ts +21 -0
- package/dist-lib/components/fs-ui/KpiTile.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/KpiTile.js +40 -0
- package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts +13 -0
- package/dist-lib/components/fs-ui/MobilePrimaryAction.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/MobilePrimaryAction.js +10 -0
- package/dist-lib/components/fs-ui/NoticeBar.d.ts +10 -0
- package/dist-lib/components/fs-ui/NoticeBar.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/NoticeBar.js +16 -0
- package/dist-lib/components/fs-ui/PageHeader.d.ts +19 -0
- package/dist-lib/components/fs-ui/PageHeader.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/PageHeader.js +9 -0
- package/dist-lib/components/fs-ui/Pagination.d.ts +10 -0
- package/dist-lib/components/fs-ui/Pagination.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/Pagination.js +10 -0
- package/dist-lib/components/fs-ui/PillTabs.d.ts +17 -0
- package/dist-lib/components/fs-ui/PillTabs.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/PillTabs.js +28 -0
- package/dist-lib/components/fs-ui/RowMenu.d.ts +13 -0
- package/dist-lib/components/fs-ui/RowMenu.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/RowMenu.js +7 -0
- package/dist-lib/components/fs-ui/SearchInput.d.ts +11 -0
- package/dist-lib/components/fs-ui/SearchInput.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/SearchInput.js +55 -0
- package/dist-lib/components/fs-ui/ShortcutHelp.d.ts +8 -0
- package/dist-lib/components/fs-ui/ShortcutHelp.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/ShortcutHelp.js +6 -0
- package/dist-lib/components/fs-ui/StatusIcon.d.ts +13 -0
- package/dist-lib/components/fs-ui/StatusIcon.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/StatusIcon.js +15 -0
- package/dist-lib/components/fs-ui/TableSkeleton.d.ts +7 -0
- package/dist-lib/components/fs-ui/TableSkeleton.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/TableSkeleton.js +6 -0
- package/dist-lib/components/fs-ui/Toolbar.d.ts +12 -0
- package/dist-lib/components/fs-ui/Toolbar.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/Toolbar.js +8 -0
- package/dist-lib/components/fs-ui/UpdatedAt.d.ts +10 -0
- package/dist-lib/components/fs-ui/UpdatedAt.d.ts.map +1 -0
- package/dist-lib/components/fs-ui/UpdatedAt.js +18 -0
- package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelCompositionCard.js +46 -15
- package/dist-lib/components/voorraad/ArtikelWizard.js +4 -4
- package/dist-lib/components/voorraad/FloridayConnectionNotice.d.ts +7 -6
- package/dist-lib/components/voorraad/FloridayConnectionNotice.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayConnectionNotice.js +15 -12
- package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FustenPage.js +92 -26
- package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.js +2 -1
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +3 -1
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/OrderHistoryCard.js +26 -50
- package/dist-lib/components/voorraad/PublicatiesPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PublicatiesPage.js +42 -36
- package/dist-lib/components/voorraad/Sneltoetsen.d.ts +14 -0
- package/dist-lib/components/voorraad/Sneltoetsen.d.ts.map +1 -0
- package/dist-lib/components/voorraad/Sneltoetsen.js +44 -0
- package/dist-lib/components/voorraad/StockIntegrityAlert.d.ts +42 -1
- package/dist-lib/components/voorraad/StockIntegrityAlert.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockIntegrityAlert.js +38 -7
- package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockMutationHistoryCard.js +10 -46
- package/dist-lib/components/voorraad/StockPushMonitor.js +2 -2
- package/dist-lib/components/voorraad/TelmomentButton.d.ts +5 -1
- package/dist-lib/components/voorraad/TelmomentButton.d.ts.map +1 -1
- package/dist-lib/components/voorraad/TelmomentButton.js +13 -6
- package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ValidationOverviewTable.js +11 -40
- package/dist-lib/components/voorraad/ValidationPage.d.ts +1 -0
- package/dist-lib/components/voorraad/ValidationPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ValidationPage.js +33 -5
- package/dist-lib/components/voorraad/VoorraadBeheerCard.d.ts +4 -1
- package/dist-lib/components/voorraad/VoorraadBeheerCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadBeheerCard.js +26 -5
- package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadPage.js +67 -38
- package/dist-lib/components/voorraad/VoorraadSturingCard.js +1 -1
- package/dist-lib/components/voorraad/artikel/ArtikelPagina.d.ts.map +1 -1
- package/dist-lib/components/voorraad/artikel/ArtikelPagina.js +42 -19
- package/dist-lib/components/voorraad/lijst/ImporteerKnop.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/ImporteerKnop.js +1 -1
- package/dist-lib/components/voorraad/lijst/LijstExportKnop.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/LijstExportKnop.js +1 -1
- package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.d.ts +8 -2
- package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.d.ts.map +1 -1
- package/dist-lib/components/voorraad/lijst/VoorraadLijstTabel.js +62 -27
- package/dist-lib/hooks/useLocalTradeItems.d.ts +14 -0
- package/dist-lib/hooks/useLocalTradeItems.d.ts.map +1 -1
- package/dist-lib/hooks/useLocalTradeItems.js +5 -3
- package/dist-lib/hooks/useTradeItemStock.d.ts.map +1 -1
- package/dist-lib/hooks/useTradeItemStock.js +6 -3
- package/dist-lib/hooks/useVoorraadData.d.ts.map +1 -1
- package/dist-lib/hooks/useVoorraadData.js +16 -8
- package/dist-lib/hooks/useVoorraadLijst.d.ts +10 -0
- package/dist-lib/hooks/useVoorraadLijst.d.ts.map +1 -1
- package/dist-lib/hooks/useVoorraadLijst.js +22 -4
- package/dist-lib/integrations/supabase/types.d.ts +85 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/alle-rijen.d.ts +15 -0
- package/dist-lib/lib/alle-rijen.d.ts.map +1 -0
- package/dist-lib/lib/alle-rijen.js +17 -0
- package/dist-lib/lib/db-error-message.d.ts.map +1 -1
- package/dist-lib/lib/db-error-message.js +3 -1
- package/dist-lib/lib/labels.d.ts +42 -0
- package/dist-lib/lib/labels.d.ts.map +1 -0
- package/dist-lib/lib/labels.js +152 -0
- package/dist-lib/lib/notatie.d.ts +4 -0
- package/dist-lib/lib/notatie.d.ts.map +1 -0
- package/dist-lib/lib/notatie.js +18 -0
- package/dist-lib/lib/voorraad-lijst.d.ts +2 -0
- package/dist-lib/lib/voorraad-lijst.d.ts.map +1 -1
- package/dist-lib/lib/voorraad-lijst.js +14 -3
- package/package.json +2 -1
- package/sql/floriday-voorraad-schema.sql +315 -39
|
@@ -19,6 +19,19 @@ export interface LocalTradeItemRow {
|
|
|
19
19
|
last_floriday_sync_at?: string | null;
|
|
20
20
|
source?: string | null;
|
|
21
21
|
}
|
|
22
|
+
type ProductRow = {
|
|
23
|
+
id: string;
|
|
24
|
+
product: string | null;
|
|
25
|
+
article_number: string | null;
|
|
26
|
+
barcode: string | null;
|
|
27
|
+
image_url: string | null;
|
|
28
|
+
floriday_trade_item_id: string | null;
|
|
29
|
+
trade_item_key: string | null;
|
|
30
|
+
custom_fields: any;
|
|
31
|
+
updated_at: string;
|
|
32
|
+
created_at: string;
|
|
33
|
+
};
|
|
34
|
+
export declare function productToTradeItem(row: ProductRow): TradeItem;
|
|
22
35
|
/**
|
|
23
36
|
* `connectionId` wordt vandaag genegeerd: producten zijn niet meer per Floriday-connectie gescoped.
|
|
24
37
|
* De parameter blijft in de signatuur zodat bestaande callers zonder wijziging werken.
|
|
@@ -69,4 +82,5 @@ export declare function updateDraftMeta(id: string, meta: DraftMeta): Promise<vo
|
|
|
69
82
|
* De UI-flow moet dit alleen aanroepen bij een expliciete verwijderactie.
|
|
70
83
|
*/
|
|
71
84
|
export declare function deleteLocalTradeItem(id: string): Promise<void>;
|
|
85
|
+
export {};
|
|
72
86
|
//# sourceMappingURL=useLocalTradeItems.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalTradeItems.d.ts","sourceRoot":"","sources":["../../src/hooks/useLocalTradeItems.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useLocalTradeItems.d.ts","sourceRoot":"","sources":["../../src/hooks/useLocalTradeItems.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAwB,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIvG;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,KAAK,UAAU,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAQF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAgD7D;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;;;;EA6B9D;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA4BrF;AAED,MAAM,WAAW,SAAS;IACxB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC;CACpC;AAED,0FAA0F;AAC1F,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAWjF;AAqBD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0GlB;AAED,wEAAwE;AACxE,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAGD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhF;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { alleRijen } from "../lib/alle-rijen.js";
|
|
1
2
|
import { useCallback, useEffect, useState } from "react";
|
|
2
3
|
import { supabase } from "../integrations/supabase/client.js";
|
|
3
4
|
import { derivePrimaryPacking } from "../lib/floriday-client.js";
|
|
@@ -7,7 +8,7 @@ function asRecord(value) {
|
|
|
7
8
|
? value
|
|
8
9
|
: {};
|
|
9
10
|
}
|
|
10
|
-
function productToTradeItem(row) {
|
|
11
|
+
export function productToTradeItem(row) {
|
|
11
12
|
const cf = asRecord(row.custom_fields);
|
|
12
13
|
const payload = asRecord(cf.floriday_payload);
|
|
13
14
|
const floridayId = row.floriday_trade_item_id ||
|
|
@@ -62,11 +63,12 @@ export function useLocalTradeItems(_connectionId) {
|
|
|
62
63
|
const load = useCallback(async () => {
|
|
63
64
|
setLoading(true);
|
|
64
65
|
try {
|
|
65
|
-
const { data, error } = await supabase
|
|
66
|
+
const { data, error } = await alleRijen((van, tot) => supabase
|
|
66
67
|
.from("products")
|
|
67
68
|
.select(SELECT_COLS)
|
|
68
69
|
.order("updated_at", { ascending: false })
|
|
69
|
-
.
|
|
70
|
+
.order("id", { ascending: true })
|
|
71
|
+
.range(van, tot));
|
|
70
72
|
if (error)
|
|
71
73
|
throw error;
|
|
72
74
|
setItems((data ?? []).map(productToTradeItem));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTradeItemStock.d.ts","sourceRoot":"","sources":["../../src/hooks/useTradeItemStock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTradeItemStock.d.ts","sourceRoot":"","sources":["../../src/hooks/useTradeItemStock.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,MAAM,GAAG,IAAI,CAEhB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,MAAM,EAAE,CAUX;AAGD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACnC,MAAM,EAAE;IACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GACA,iBAAiB,GAAG,SAAS,CAa/B;AAGD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;;;mBA2Gb,iBAAiB,SACnB;QAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,KAC3E,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;;;;EA+EtC;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CA2BzC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { alleRijen } from "../lib/alle-rijen.js";
|
|
1
2
|
import { buildScopedStockMap } from "../lib/stock-scope.js";
|
|
2
3
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
4
|
import { supabase } from "../integrations/supabase/client.js";
|
|
@@ -240,12 +241,14 @@ export async function fetchStockMap(connectionId) {
|
|
|
240
241
|
if (!scopeId)
|
|
241
242
|
return new Map(); // nog nooit eigen voorraad opgeslagen
|
|
242
243
|
}
|
|
243
|
-
const { data, error } = await supabase
|
|
244
|
+
const { data, error } = await alleRijen((van, tot) => supabase
|
|
244
245
|
.from("trade_item_stock")
|
|
245
246
|
.select("connection_id,trade_item_key,physical_stock,minimum_stock,reserved_stock,incoming_stock,notes,updated_at")
|
|
246
|
-
.eq("connection_id", scopeId)
|
|
247
|
+
.eq("connection_id", scopeId)
|
|
248
|
+
.order("trade_item_key", { ascending: true })
|
|
249
|
+
.range(van, tot));
|
|
247
250
|
if (error)
|
|
248
|
-
throw new Error(error.message);
|
|
251
|
+
throw new Error(String(error.message ?? error));
|
|
249
252
|
const scoped = buildScopedStockMap((data ?? []), scopeId);
|
|
250
253
|
const map = new Map();
|
|
251
254
|
for (const [k, r] of scoped)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVoorraadData.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoorraadData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useVoorraadData.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoorraadData.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAsB5E;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;;;;;EA0V1D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { alleRijen } from "../lib/alle-rijen.js";
|
|
1
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
3
|
import { hideMirrorItems } from "../lib/mirror-products.js";
|
|
3
4
|
import { createBundler, pageRequestGuard } from "../lib/request-guard.js";
|
|
@@ -55,25 +56,32 @@ export function useVoorraadData(connectionId) {
|
|
|
55
56
|
const [pubRes, stock, groupsRes, bomRes, groupItemsRes] = await Promise.all([
|
|
56
57
|
// Zonder koppeling geen Floriday-kopie; eigen artikelen blijven zichtbaar.
|
|
57
58
|
connectionId
|
|
58
|
-
? supabase
|
|
59
|
+
? alleRijen((van, tot) => supabase
|
|
59
60
|
.from("floriday_trade_items_cache")
|
|
60
61
|
.select("data,floriday_id,is_deleted")
|
|
61
62
|
.eq("connection_id", connectionId)
|
|
62
63
|
.eq("is_deleted", false)
|
|
63
|
-
.
|
|
64
|
+
.order("floriday_id", { ascending: true })
|
|
65
|
+
.range(van, tot))
|
|
64
66
|
: Promise.resolve({ data: [], error: null }),
|
|
65
67
|
fetchStockMap(connectionId),
|
|
66
|
-
supabase
|
|
68
|
+
alleRijen((van, tot) => supabase
|
|
67
69
|
.from("product_groups")
|
|
68
70
|
.select("id,head_product_id,head_trade_item_floriday_id,updated_at")
|
|
69
71
|
.eq("is_active", true)
|
|
70
|
-
.order("updated_at", { ascending: true })
|
|
71
|
-
|
|
72
|
+
.order("updated_at", { ascending: true })
|
|
73
|
+
.order("id", { ascending: true })
|
|
74
|
+
.range(van, tot)),
|
|
75
|
+
alleRijen((van, tot) => supabase
|
|
72
76
|
.from("product_bom_items")
|
|
73
|
-
.select("parent_product_id,parent_trade_item_floriday_id")
|
|
74
|
-
|
|
77
|
+
.select("parent_product_id,parent_trade_item_floriday_id")
|
|
78
|
+
.order("id", { ascending: true })
|
|
79
|
+
.range(van, tot)),
|
|
80
|
+
alleRijen((van, tot) => supabase
|
|
75
81
|
.from("product_group_items")
|
|
76
|
-
.select("product_group_id,trade_item_id,quantity")
|
|
82
|
+
.select("product_group_id,trade_item_id,quantity")
|
|
83
|
+
.order("id", { ascending: true })
|
|
84
|
+
.range(van, tot)),
|
|
77
85
|
]);
|
|
78
86
|
if (pubRes.error)
|
|
79
87
|
throw pubRes.error;
|
|
@@ -7,6 +7,15 @@ export interface LijstVraag {
|
|
|
7
7
|
pagina: number;
|
|
8
8
|
grootte: number;
|
|
9
9
|
}
|
|
10
|
+
/** Kerncijfers van het eigen bedrijf; veranderen niet tijdens zoeken of filteren. */
|
|
11
|
+
export interface VoorraadKpi {
|
|
12
|
+
artikelen: number;
|
|
13
|
+
onder_minimum: number;
|
|
14
|
+
vrij: number;
|
|
15
|
+
inkomend: number;
|
|
16
|
+
bijgewerkt: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function haalVoorraadKpi(): Promise<VoorraadKpi>;
|
|
10
19
|
export declare function haalVoorraadLijst(v: LijstVraag): Promise<LijstAntwoord>;
|
|
11
20
|
/**
|
|
12
21
|
* Eén aanvraag per wijziging van zoeken/filter/sortering/pagina. Live-updates
|
|
@@ -14,6 +23,7 @@ export declare function haalVoorraadLijst(v: LijstVraag): Promise<LijstAntwoord>
|
|
|
14
23
|
*/
|
|
15
24
|
export declare function useVoorraadLijst(vraag: LijstVraag): {
|
|
16
25
|
data: LijstAntwoord | null;
|
|
26
|
+
kpi: VoorraadKpi | null;
|
|
17
27
|
loading: boolean;
|
|
18
28
|
error: string | null;
|
|
19
29
|
reload: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVoorraadLijst.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoorraadLijst.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAW7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU
|
|
1
|
+
{"version":3,"file":"useVoorraadLijst.d.ts","sourceRoot":"","sources":["../../src/hooks/useVoorraadLijst.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAC7H,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAI5D;AAGD,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAW7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU;;;;;;EAuDjD"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
2
|
import { supabase } from "../integrations/supabase/client.js";
|
|
3
3
|
import { createBundler, pageRequestGuard } from "../lib/request-guard.js";
|
|
4
|
+
export async function haalVoorraadKpi() {
|
|
5
|
+
const { data, error } = await supabase.rpc("voorraad_kpi");
|
|
6
|
+
if (error)
|
|
7
|
+
throw new Error(error.message);
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
// De lijst leest voorraad_lijst_v2 (1.0.151): zelfde uitkomst als voorraad_lijst, en "Onder minimum" ook voor samenstellingen.
|
|
4
11
|
export async function haalVoorraadLijst(v) {
|
|
5
|
-
const { data, error } = await supabase.rpc("
|
|
12
|
+
const { data, error } = await supabase.rpc("voorraad_lijst_v2", {
|
|
6
13
|
p_zoek: v.zoek.trim() || null,
|
|
7
14
|
p_filter: v.filter,
|
|
8
15
|
p_sort: v.sort,
|
|
@@ -20,11 +27,21 @@ export async function haalVoorraadLijst(v) {
|
|
|
20
27
|
*/
|
|
21
28
|
export function useVoorraadLijst(vraag) {
|
|
22
29
|
const [data, setData] = useState(null);
|
|
30
|
+
const [kpi, setKpi] = useState(null);
|
|
23
31
|
const [loading, setLoading] = useState(true);
|
|
24
32
|
const [error, setError] = useState(null);
|
|
25
33
|
const vraagRef = useRef(vraag);
|
|
26
34
|
vraagRef.current = vraag;
|
|
27
35
|
const seq = useRef(0);
|
|
36
|
+
const laadKpi = useCallback(async () => {
|
|
37
|
+
try {
|
|
38
|
+
setKpi(await haalVoorraadKpi());
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
console.warn("Kerncijfers voorraad niet geladen", e);
|
|
42
|
+
}
|
|
43
|
+
}, []);
|
|
44
|
+
useEffect(() => { void laadKpi(); }, [laadKpi]);
|
|
28
45
|
const laad = useCallback(async () => {
|
|
29
46
|
if (!pageRequestGuard.allow("voorraad_lijst"))
|
|
30
47
|
return;
|
|
@@ -52,7 +69,7 @@ export function useVoorraadLijst(vraag) {
|
|
|
52
69
|
void laad();
|
|
53
70
|
}, [key, laad]);
|
|
54
71
|
useEffect(() => {
|
|
55
|
-
const bundler = createBundler(() => void laad(), 3000);
|
|
72
|
+
const bundler = createBundler(() => { void laad(); void laadKpi(); }, 3000);
|
|
56
73
|
const trigger = () => bundler.trigger();
|
|
57
74
|
const channel = supabase
|
|
58
75
|
.channel(`voorraad-lijst-${Math.random().toString(36).slice(2)}`)
|
|
@@ -66,6 +83,7 @@ export function useVoorraadLijst(vraag) {
|
|
|
66
83
|
document.removeEventListener("visibilitychange", onVis);
|
|
67
84
|
supabase.removeChannel(channel);
|
|
68
85
|
};
|
|
69
|
-
}, [laad]);
|
|
70
|
-
|
|
86
|
+
}, [laad, laadKpi]);
|
|
87
|
+
const reload = useCallback(async () => { await Promise.all([laad(), laadKpi()]); }, [laad, laadKpi]);
|
|
88
|
+
return { data, kpi, loading, error, reload };
|
|
71
89
|
}
|
|
@@ -33034,6 +33034,12 @@ export type Database = {
|
|
|
33034
33034
|
};
|
|
33035
33035
|
Returns: Json;
|
|
33036
33036
|
};
|
|
33037
|
+
_mailbox_norm: {
|
|
33038
|
+
Args: {
|
|
33039
|
+
p: string;
|
|
33040
|
+
};
|
|
33041
|
+
Returns: string;
|
|
33042
|
+
};
|
|
33037
33043
|
_migrate_rewrite_stock_key: {
|
|
33038
33044
|
Args: {
|
|
33039
33045
|
_from_key: string;
|
|
@@ -41370,6 +41376,26 @@ export type Database = {
|
|
|
41370
41376
|
Args: never;
|
|
41371
41377
|
Returns: undefined;
|
|
41372
41378
|
};
|
|
41379
|
+
mailbox_kpis: {
|
|
41380
|
+
Args: {
|
|
41381
|
+
p_tz?: string;
|
|
41382
|
+
};
|
|
41383
|
+
Returns: Json;
|
|
41384
|
+
};
|
|
41385
|
+
mailbox_proposals_page: {
|
|
41386
|
+
Args: {
|
|
41387
|
+
p_date_field?: string;
|
|
41388
|
+
p_filter?: string;
|
|
41389
|
+
p_limit?: number;
|
|
41390
|
+
p_offset?: number;
|
|
41391
|
+
p_period?: string;
|
|
41392
|
+
p_search?: string;
|
|
41393
|
+
p_sort?: string;
|
|
41394
|
+
p_statuses: string[];
|
|
41395
|
+
p_tz?: string;
|
|
41396
|
+
};
|
|
41397
|
+
Returns: Json;
|
|
41398
|
+
};
|
|
41373
41399
|
mailbox_prune_ingest_runs: {
|
|
41374
41400
|
Args: {
|
|
41375
41401
|
p_limit?: number;
|
|
@@ -47019,6 +47045,14 @@ export type Database = {
|
|
|
47019
47045
|
Args: never;
|
|
47020
47046
|
Returns: Json;
|
|
47021
47047
|
};
|
|
47048
|
+
voorraad_groep_volgorde_opslaan: {
|
|
47049
|
+
Args: {
|
|
47050
|
+
p_group_id: string;
|
|
47051
|
+
p_nieuw: Json;
|
|
47052
|
+
p_oud: Json;
|
|
47053
|
+
};
|
|
47054
|
+
Returns: Json;
|
|
47055
|
+
};
|
|
47022
47056
|
voorraad_hook_base_url: {
|
|
47023
47057
|
Args: never;
|
|
47024
47058
|
Returns: string;
|
|
@@ -47062,6 +47096,10 @@ export type Database = {
|
|
|
47062
47096
|
Args: never;
|
|
47063
47097
|
Returns: Json;
|
|
47064
47098
|
};
|
|
47099
|
+
voorraad_kpi: {
|
|
47100
|
+
Args: never;
|
|
47101
|
+
Returns: Json;
|
|
47102
|
+
};
|
|
47065
47103
|
voorraad_lever_datum: {
|
|
47066
47104
|
Args: {
|
|
47067
47105
|
p: string;
|
|
@@ -47079,6 +47117,46 @@ export type Database = {
|
|
|
47079
47117
|
};
|
|
47080
47118
|
Returns: Json;
|
|
47081
47119
|
};
|
|
47120
|
+
voorraad_lijst_v2: {
|
|
47121
|
+
Args: {
|
|
47122
|
+
p_filter?: string;
|
|
47123
|
+
p_grootte?: number;
|
|
47124
|
+
p_oplopend?: boolean;
|
|
47125
|
+
p_pagina?: number;
|
|
47126
|
+
p_sort?: string;
|
|
47127
|
+
p_zoek?: string;
|
|
47128
|
+
};
|
|
47129
|
+
Returns: Json;
|
|
47130
|
+
};
|
|
47131
|
+
voorraad_lijst_v2_rijen: {
|
|
47132
|
+
Args: {
|
|
47133
|
+
p_zoek?: string;
|
|
47134
|
+
};
|
|
47135
|
+
Returns: {
|
|
47136
|
+
artikelnummer: string;
|
|
47137
|
+
barcode: string;
|
|
47138
|
+
eenheid: string;
|
|
47139
|
+
f_niet_gekoppeld: boolean;
|
|
47140
|
+
f_onder_minimum: boolean;
|
|
47141
|
+
f_prijs: boolean;
|
|
47142
|
+
f_verpakking: boolean;
|
|
47143
|
+
f_verwijderd_floriday: boolean;
|
|
47144
|
+
floriday_id: string;
|
|
47145
|
+
floriday_verwijderd_at: string;
|
|
47146
|
+
gearchiveerd_at: string;
|
|
47147
|
+
gereserveerd: number;
|
|
47148
|
+
id: string;
|
|
47149
|
+
inkomend: number;
|
|
47150
|
+
is_onderdeel: boolean;
|
|
47151
|
+
liggend: number;
|
|
47152
|
+
minimum: number;
|
|
47153
|
+
naam: string;
|
|
47154
|
+
prijs: number;
|
|
47155
|
+
soort: string;
|
|
47156
|
+
voorraad_sleutel: string;
|
|
47157
|
+
vrij: number;
|
|
47158
|
+
}[];
|
|
47159
|
+
};
|
|
47082
47160
|
voorraad_load_carriers: {
|
|
47083
47161
|
Args: never;
|
|
47084
47162
|
Returns: {
|
|
@@ -47225,6 +47303,13 @@ export type Database = {
|
|
|
47225
47303
|
};
|
|
47226
47304
|
Returns: Json;
|
|
47227
47305
|
};
|
|
47306
|
+
voorraad_validatie_pagina: {
|
|
47307
|
+
Args: {
|
|
47308
|
+
p_grootte?: number;
|
|
47309
|
+
p_pagina?: number;
|
|
47310
|
+
};
|
|
47311
|
+
Returns: Json;
|
|
47312
|
+
};
|
|
47228
47313
|
voorraad_vereis: {
|
|
47229
47314
|
Args: {
|
|
47230
47315
|
p_functie: string;
|