@flowselections/floriday-voorraad 1.0.77 → 1.0.80
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 +1 -1
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.js +2 -2
- package/dist-lib/components/voorraad/ArtikelCompositionCard.js +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.js +40 -40
- package/dist-lib/components/voorraad/EditArtikelPage.js +4 -4
- package/dist-lib/components/voorraad/ExcelExportButton.d.ts +1 -1
- package/dist-lib/components/voorraad/ExcelExportButton.js +1 -1
- package/dist-lib/components/voorraad/FloridayInfoCard.js +2 -2
- package/dist-lib/components/voorraad/FloridaySentCard.js +2 -2
- package/dist-lib/components/voorraad/FustenPage.js +4 -4
- package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +1 -1
- package/dist-lib/components/voorraad/InventorySettingsDrawer.js +3 -3
- package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +2 -2
- package/dist-lib/components/voorraad/InventoryStatusBadge.js +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.js +3 -3
- package/dist-lib/components/voorraad/OrderHistoryCard.js +1 -1
- package/dist-lib/components/voorraad/ProductCustomFieldsCard.js +2 -2
- package/dist-lib/components/voorraad/ProductLinkCard.js +1 -1
- package/dist-lib/components/voorraad/ProductSalePriceField.js +2 -2
- package/dist-lib/components/voorraad/ProductStructureCard.js +3 -3
- package/dist-lib/components/voorraad/PublicatiesPage.js +2 -2
- package/dist-lib/components/voorraad/PublishProgressCard.d.ts +1 -1
- package/dist-lib/components/voorraad/PublishReadinessCard.d.ts +1 -1
- package/dist-lib/components/voorraad/StepSamenstelling.d.ts +1 -1
- package/dist-lib/components/voorraad/StepSamenstelling.js +1 -1
- package/dist-lib/components/voorraad/StockBulkButtons.d.ts +1 -1
- package/dist-lib/components/voorraad/StockBulkButtons.js +5 -5
- package/dist-lib/components/voorraad/StockHistoryChart.js +1 -1
- package/dist-lib/components/voorraad/StockIntegrityAlert.js +1 -1
- package/dist-lib/components/voorraad/StockMutationHistoryCard.js +2 -2
- package/dist-lib/components/voorraad/StockPushMonitor.js +3 -3
- package/dist-lib/components/voorraad/StockSyncStatus.js +2 -2
- package/dist-lib/components/voorraad/SupplyReadScopeAlert.js +1 -1
- package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts +1 -1
- package/dist-lib/components/voorraad/ValidationOverviewTable.js +5 -5
- package/dist-lib/components/voorraad/ValidationPage.js +3 -3
- package/dist-lib/components/voorraad/VoorraadPage.js +14 -14
- package/dist-lib/components/voorraad/VoorraadStockCard.js +3 -3
- package/dist-lib/components/voorraad/VoorraadTable.d.ts +2 -2
- package/dist-lib/components/voorraad/VoorraadTable.js +5 -5
- package/dist-lib/components/voorraad/VoorraadVeldenCard.js +2 -2
- package/dist-lib/hooks/useFloriday.d.ts +1 -1
- package/dist-lib/hooks/useFloriday.js +4 -4
- package/dist-lib/hooks/useFloridayConnection.d.ts +1 -1
- package/dist-lib/hooks/useFloridayConnection.js +1 -1
- package/dist-lib/hooks/useFloridayContinuousStock.js +1 -1
- package/dist-lib/hooks/useFloridayPriceGroups.js +1 -1
- package/dist-lib/hooks/useFloridayVbnRequired.js +1 -1
- package/dist-lib/hooks/useFlorydayCustomers.js +1 -1
- package/dist-lib/hooks/useFusten.d.ts +1 -1
- package/dist-lib/hooks/useFusten.js +2 -2
- package/dist-lib/hooks/useInventorySettings.d.ts +1 -1
- package/dist-lib/hooks/useInventorySettings.js +1 -1
- package/dist-lib/hooks/useLocalTradeItems.d.ts +2 -2
- package/dist-lib/hooks/useLocalTradeItems.js +3 -3
- package/dist-lib/hooks/usePublishJob.d.ts +1 -1
- package/dist-lib/hooks/usePublishJob.js +2 -2
- package/dist-lib/hooks/useStockPushJobs.js +1 -1
- package/dist-lib/hooks/useStockSyncHealth.js +1 -1
- package/dist-lib/hooks/useTradeItemSpec.d.ts +2 -2
- package/dist-lib/hooks/useTradeItemStock.js +3 -3
- package/dist-lib/hooks/useVbnRegulatoryFeatures.d.ts +1 -1
- package/dist-lib/hooks/useVbnRegulatoryFeatures.js +1 -1
- package/dist-lib/hooks/useVoorraadCustomFields.d.ts +1 -1
- package/dist-lib/hooks/useVoorraadCustomFields.js +1 -1
- package/dist-lib/hooks/useVoorraadData.d.ts +1 -1
- package/dist-lib/hooks/useVoorraadData.js +6 -6
- package/dist-lib/hooks-entry.d.ts +5 -5
- package/dist-lib/hooks-entry.js +5 -5
- package/dist-lib/index.d.ts +8 -11
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +9 -12
- package/dist-lib/integrations/supabase/auth-attacher.js +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +346 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/floricode-required-features.test.js +1 -1
- package/dist-lib/lib/__tests__/floriday-base-supply.test.js +1 -1
- package/dist-lib/lib/base-supply-reader.server.js +2 -2
- package/dist-lib/lib/ensure-article-codes.d.ts +1 -1
- package/dist-lib/lib/ensure-article-codes.js +1 -1
- package/dist-lib/lib/floricode-client.js +1 -1
- package/dist-lib/lib/floriday-2026v1.server.js +2 -2
- package/dist-lib/lib/floriday-client.d.ts +2 -2
- package/dist-lib/lib/floriday-client.js +2 -2
- package/dist-lib/lib/floriday-customer-offer.functions.d.ts +1 -1
- package/dist-lib/lib/floriday-customer-offer.functions.js +4 -4
- package/dist-lib/lib/floriday-env.functions.d.ts +4 -4
- package/dist-lib/lib/floriday-env.functions.js +4 -4
- package/dist-lib/lib/floriday-env.server.d.ts +2 -2
- package/dist-lib/lib/floriday-env.server.js +2 -2
- package/dist-lib/lib/floriday-gateway.functions.d.ts +10 -10
- package/dist-lib/lib/floriday-gateway.functions.js +14 -14
- package/dist-lib/lib/floriday-gateway.server.d.ts +1 -1
- package/dist-lib/lib/floriday-gateway.server.js +9 -9
- package/dist-lib/lib/floriday-import-validator.d.ts +1 -1
- package/dist-lib/lib/floriday-readiness.server.d.ts +1 -1
- package/dist-lib/lib/floriday-readiness.server.js +2 -2
- package/dist-lib/lib/floriday-relink.js +1 -1
- package/dist-lib/lib/floriday-stock-supply.server.d.ts +1 -1
- package/dist-lib/lib/floriday-stock-supply.server.js +1 -1
- package/dist-lib/lib/floriday-supply-line.js +2 -2
- package/dist-lib/lib/floriday-vbn-required.functions.d.ts +2 -2
- package/dist-lib/lib/floriday-vbn-required.functions.js +2 -2
- package/dist-lib/lib/floriday-warehouse.functions.d.ts +6 -6
- package/dist-lib/lib/floriday-warehouse.functions.js +7 -7
- package/dist-lib/lib/floriday-write-gate.server.js +1 -1
- package/dist-lib/lib/floriday-writes.functions.d.ts +2 -2
- package/dist-lib/lib/floriday-writes.functions.js +6 -6
- package/dist-lib/lib/fusten.d.ts +1 -1
- package/dist-lib/lib/fusten.js +2 -2
- package/dist-lib/lib/inventory-settings.functions.js +1 -1
- package/dist-lib/lib/logistics-buffer-events.server.js +2 -2
- package/dist-lib/lib/logistics-events.js +2 -2
- package/dist-lib/lib/logistics-tasks.server.js +5 -5
- package/dist-lib/lib/module-runtime-config.functions.d.ts +1 -1
- package/dist-lib/lib/module-runtime-config.functions.js +2 -2
- package/dist-lib/lib/module-runtime.server.js +1 -1
- package/dist-lib/lib/product-packing.js +1 -1
- package/dist-lib/lib/publish-pipeline.d.ts +1 -1
- package/dist-lib/lib/publish-pipeline.js +2 -2
- package/dist-lib/lib/publish-readiness.d.ts +2 -2
- package/dist-lib/lib/trade-item-prices.d.ts +1 -1
- package/dist-lib/lib/trade-item-prices.js +2 -2
- package/dist-lib/lib/voorraad-custom-fields.js +1 -1
- package/dist-lib/server-hooks/floriday-base-supply.js +1 -1
- package/dist-lib/server-hooks/floriday-continuous-stock-pull.js +1 -1
- package/dist-lib/server-hooks/floriday-continuous-stock.js +1 -1
- package/dist-lib/server-hooks/floriday-stock-reconcile.js +1 -1
- package/dist-lib/server-hooks/logistics-tasks-run.js +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo, useState, useEffect } from "react";
|
|
3
3
|
import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, Button, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@flowselections/core";
|
|
4
|
-
import { PACKAGING_SUPPLIERS, } from "../../lib/floriday-payload";
|
|
5
|
-
import { getMaterialTypesForSupplier, getMaterialsForSupplier, } from "../../lib/vrs-catalog";
|
|
4
|
+
import { PACKAGING_SUPPLIERS, } from "../../lib/floriday-payload.js";
|
|
5
|
+
import { getMaterialTypesForSupplier, getMaterialsForSupplier, } from "../../lib/vrs-catalog.js";
|
|
6
6
|
export function AdditionalPackagingDialog({ open, onOpenChange, onSave }) {
|
|
7
7
|
const [supplierId, setSupplierId] = useState("");
|
|
8
8
|
const [typeCode, setTypeCode] = useState("");
|
|
@@ -3,7 +3,7 @@ import { useCallback, useEffect, useState } from "react";
|
|
|
3
3
|
import { toast } from "sonner";
|
|
4
4
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle, Badge } from "@flowselections/core";
|
|
5
5
|
import { ArrowDown, ArrowUp, Loader2, Package } from "lucide-react";
|
|
6
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
6
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
7
7
|
async function loadStock(productIds, floridayIds) {
|
|
8
8
|
const out = new Map();
|
|
9
9
|
const idToProduct = new Map();
|
|
@@ -3,44 +3,44 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
|
3
3
|
import { Link, useNavigate } from "@tanstack/react-router";
|
|
4
4
|
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, Button, Card, CardContent, Checkbox, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Label, Popover, PopoverContent, PopoverTrigger, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Switch, toast, } from "@flowselections/core";
|
|
5
5
|
import { ArrowLeft, ArrowRight, Check, ChevronDown, ClipboardList, Info, Loader2, Plus, Search, Trash2, Upload, UploadCloud, Users, X, Star, } from "lucide-react";
|
|
6
|
-
import { useFloridayConnection } from "../../hooks/useFloridayConnection";
|
|
7
|
-
import { useFlorydayCustomers } from "../../hooks/useFlorydayCustomers";
|
|
8
|
-
import { floriday } from "../../lib/floriday-client";
|
|
9
|
-
import { listFloricode, listFloricodeByField } from "../../lib/floricode-client";
|
|
10
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
11
|
-
import { buildAddTradeItemPayload, buildUpdateTradeItemPayload, buildPrimaryPackingBase, emptyWizardData, floridayCacheToWizardData, isValidGtin13, normalizeFloridayProductGroup, PACKAGING_SUPPLIERS, validateStep, } from "../../lib/floriday-payload";
|
|
12
|
-
import { AdditionalPackagingDialog } from "./AdditionalPackagingDialog";
|
|
13
|
-
import { publishCustomerOfferFn } from "../../lib/floriday-customer-offer.functions";
|
|
14
|
-
import { upsertSupplyLineForTradeItem } from "../../lib/floriday-supply-line";
|
|
15
|
-
import { deleteLocalTradeItem, getLocalTradeItem, markLocalSyncStatus, readLocalSyncStatus, upsertLocalTradeItem, } from "../../hooks/useLocalTradeItems";
|
|
16
|
-
import { useTradeItemSpec } from "../../hooks/useTradeItemSpec";
|
|
17
|
-
import { useVbnRegulatoryFeatures } from "../../hooks/useVbnRegulatoryFeatures";
|
|
18
|
-
import { useFloridayVbnRequired } from "../../hooks/useFloridayVbnRequired";
|
|
19
|
-
import { saveFloridayVbnRequired } from "../../lib/floriday-vbn-required.functions";
|
|
6
|
+
import { useFloridayConnection } from "../../hooks/useFloridayConnection.js";
|
|
7
|
+
import { useFlorydayCustomers } from "../../hooks/useFlorydayCustomers.js";
|
|
8
|
+
import { floriday } from "../../lib/floriday-client.js";
|
|
9
|
+
import { listFloricode, listFloricodeByField } from "../../lib/floricode-client.js";
|
|
10
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
11
|
+
import { buildAddTradeItemPayload, buildUpdateTradeItemPayload, buildPrimaryPackingBase, emptyWizardData, floridayCacheToWizardData, isValidGtin13, normalizeFloridayProductGroup, PACKAGING_SUPPLIERS, validateStep, } from "../../lib/floriday-payload.js";
|
|
12
|
+
import { AdditionalPackagingDialog } from "./AdditionalPackagingDialog.js";
|
|
13
|
+
import { publishCustomerOfferFn } from "../../lib/floriday-customer-offer.functions.js";
|
|
14
|
+
import { upsertSupplyLineForTradeItem } from "../../lib/floriday-supply-line.js";
|
|
15
|
+
import { deleteLocalTradeItem, getLocalTradeItem, markLocalSyncStatus, readLocalSyncStatus, upsertLocalTradeItem, } from "../../hooks/useLocalTradeItems.js";
|
|
16
|
+
import { useTradeItemSpec } from "../../hooks/useTradeItemSpec.js";
|
|
17
|
+
import { useVbnRegulatoryFeatures } from "../../hooks/useVbnRegulatoryFeatures.js";
|
|
18
|
+
import { useFloridayVbnRequired } from "../../hooks/useFloridayVbnRequired.js";
|
|
19
|
+
import { saveFloridayVbnRequired } from "../../lib/floriday-vbn-required.functions.js";
|
|
20
20
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
21
|
-
import { useCodeList, useTradeItemFormSchema } from "../../hooks/useFloriday";
|
|
22
|
-
import { useFloridayPriceGroups } from "../../hooks/useFloridayPriceGroups";
|
|
23
|
-
import { readTradeItemPrices, syncTradeItemPrices } from "../../lib/trade-item-prices";
|
|
24
|
-
import { createPublishJob, finishPublishJob, markStepSkipped, rememberPublishRejection, runPublishStep, } from "../../lib/publish-pipeline";
|
|
25
|
-
import { translatePublishError, } from "../../lib/publish-errors";
|
|
26
|
-
import { buildReadinessReport } from "../../lib/publish-readiness";
|
|
27
|
-
import { usePublishJob } from "../../hooks/usePublishJob";
|
|
28
|
-
import { PublishReadinessCard } from "./PublishReadinessCard";
|
|
29
|
-
import { PublishProgressCard } from "./PublishProgressCard";
|
|
30
|
-
import { gatewayReadFn } from "../../lib/floriday-gateway.functions";
|
|
31
|
-
import { pickPrimaryPacking, readPackingStatus, writeConfirmedPacking, } from "../../lib/product-packing";
|
|
32
|
-
import { getFloridayReadinessFn } from "../../lib/floriday-env.functions";
|
|
21
|
+
import { useCodeList, useTradeItemFormSchema } from "../../hooks/useFloriday.js";
|
|
22
|
+
import { useFloridayPriceGroups } from "../../hooks/useFloridayPriceGroups.js";
|
|
23
|
+
import { readTradeItemPrices, syncTradeItemPrices } from "../../lib/trade-item-prices.js";
|
|
24
|
+
import { createPublishJob, finishPublishJob, markStepSkipped, rememberPublishRejection, runPublishStep, } from "../../lib/publish-pipeline.js";
|
|
25
|
+
import { translatePublishError, } from "../../lib/publish-errors.js";
|
|
26
|
+
import { buildReadinessReport } from "../../lib/publish-readiness.js";
|
|
27
|
+
import { usePublishJob } from "../../hooks/usePublishJob.js";
|
|
28
|
+
import { PublishReadinessCard } from "./PublishReadinessCard.js";
|
|
29
|
+
import { PublishProgressCard } from "./PublishProgressCard.js";
|
|
30
|
+
import { gatewayReadFn } from "../../lib/floriday-gateway.functions.js";
|
|
31
|
+
import { pickPrimaryPacking, readPackingStatus, writeConfirmedPacking, } from "../../lib/product-packing.js";
|
|
32
|
+
import { getFloridayReadinessFn } from "../../lib/floriday-env.functions.js";
|
|
33
33
|
const floridayLogo = "/flowselections-assets/Voorraad/floriday-logo.png";
|
|
34
|
-
import { VoorraadStockCard } from "../../components/voorraad/VoorraadStockCard";
|
|
35
|
-
import { ProductLinkCard } from "../../components/voorraad/ProductLinkCard";
|
|
36
|
-
import { PriceStatusBadge } from "../../components/voorraad/PriceStatusBadge";
|
|
37
|
-
import { OrderHistoryCard } from "../../components/voorraad/OrderHistoryCard";
|
|
38
|
-
import { StockMutationHistoryCard } from "../../components/voorraad/StockMutationHistoryCard";
|
|
39
|
-
import { ArtikelCompositionCard } from "../../components/voorraad/ArtikelCompositionCard";
|
|
40
|
-
import { ProductStructureCard, FloridayStockReasonLine } from "../../components/voorraad/ProductStructureCard";
|
|
41
|
-
import { StepSamenstelling } from "../../components/voorraad/StepSamenstelling";
|
|
42
|
-
import { FloridayInfoCard } from "../../components/voorraad/FloridayInfoCard";
|
|
43
|
-
import { stockKeyFor } from "../../hooks/useTradeItemStock";
|
|
34
|
+
import { VoorraadStockCard } from "../../components/voorraad/VoorraadStockCard.js";
|
|
35
|
+
import { ProductLinkCard } from "../../components/voorraad/ProductLinkCard.js";
|
|
36
|
+
import { PriceStatusBadge } from "../../components/voorraad/PriceStatusBadge.js";
|
|
37
|
+
import { OrderHistoryCard } from "../../components/voorraad/OrderHistoryCard.js";
|
|
38
|
+
import { StockMutationHistoryCard } from "../../components/voorraad/StockMutationHistoryCard.js";
|
|
39
|
+
import { ArtikelCompositionCard } from "../../components/voorraad/ArtikelCompositionCard.js";
|
|
40
|
+
import { ProductStructureCard, FloridayStockReasonLine } from "../../components/voorraad/ProductStructureCard.js";
|
|
41
|
+
import { StepSamenstelling } from "../../components/voorraad/StepSamenstelling.js";
|
|
42
|
+
import { FloridayInfoCard } from "../../components/voorraad/FloridayInfoCard.js";
|
|
43
|
+
import { stockKeyFor } from "../../hooks/useTradeItemStock.js";
|
|
44
44
|
const empty = emptyWizardData;
|
|
45
45
|
const LOAD_CARRIER_LABELS = {
|
|
46
46
|
AUCTION_TROLLEY: "Stapelwagen",
|
|
@@ -2086,8 +2086,8 @@ function StepArtikel({ data, update, collectionsList, setCollectionsList, articl
|
|
|
2086
2086
|
: "border-border hover:border-primary/50"}`, children: [_jsx("div", { className: "flex w-full items-start", children: _jsx("span", { className: `flex h-4 w-4 items-center justify-center rounded-full border ${active ? "border-primary-foreground" : "border-muted-foreground/50"}`, children: active && (_jsx("span", { className: "h-2 w-2 rounded-full bg-primary-foreground" })) }) }), _jsx(Icon, { className: "h-6 w-6" }), _jsx("div", { className: "font-medium", children: t.label }), _jsx("div", { className: `text-xs ${active ? "text-primary-foreground/80" : "text-muted-foreground"}`, children: t.description })] }, t.value));
|
|
2087
2087
|
}) })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("label", { className: "flex items-start gap-2 text-sm", children: [_jsx(Checkbox, { checked: data.visibleInExplorer, onCheckedChange: (v) => update("visibleInExplorer", v === true), className: "mt-0.5" }), _jsx("span", { children: "Artikel weergeven bij ontdekken in de Explorer voor kopers" })] }), _jsx("p", { className: "pl-6 text-xs text-muted-foreground", children: "Artikel is altijd zichtbaar via de customer API" })] }), parentProductId && (_jsx(ProductSalePriceField, { productId: parentProductId, onSaved: (p) => update("salePricePerPiece", p) }))] }));
|
|
2088
2088
|
}
|
|
2089
|
-
import { COUNTRIES } from "../../lib/countries";
|
|
2090
|
-
import { ProductSalePriceField } from "./ProductSalePriceField";
|
|
2089
|
+
import { COUNTRIES } from "../../lib/countries.js";
|
|
2090
|
+
import { ProductSalePriceField } from "./ProductSalePriceField.js";
|
|
2091
2091
|
function StepPaspoort({ data, update }) {
|
|
2092
2092
|
const [countryOpen, setCountryOpen] = useState(false);
|
|
2093
2093
|
const [countryQuery, setCountryQuery] = useState("");
|
|
@@ -2337,7 +2337,7 @@ function StepFotos({ data, update, activeId }) {
|
|
|
2337
2337
|
toast.error("Je bent niet ingelogd – kan geen foto's uploaden");
|
|
2338
2338
|
return;
|
|
2339
2339
|
}
|
|
2340
|
-
const { prepareFloridayImage, UnsupportedImageTypeError, ImageTooLargeError, ImageDecodeError, } = await import("../../lib/image-resize");
|
|
2340
|
+
const { prepareFloridayImage, UnsupportedImageTypeError, ImageTooLargeError, ImageDecodeError, } = await import("../../lib/image-resize.js");
|
|
2341
2341
|
const additions = [];
|
|
2342
2342
|
// Beperkte concurrency (2) voorkomt dat een drop van 10 bestanden de
|
|
2343
2343
|
// gateway overspoelt en tegelijk in throttling loopt.
|
|
@@ -2621,7 +2621,7 @@ function PackingConfigDialog({ open, onOpenChange, initial, isFirst, packagingTy
|
|
|
2621
2621
|
return;
|
|
2622
2622
|
setUploadingPhoto(true);
|
|
2623
2623
|
try {
|
|
2624
|
-
const { prepareFloridayImage } = await import("../../lib/image-resize");
|
|
2624
|
+
const { prepareFloridayImage } = await import("../../lib/image-resize.js");
|
|
2625
2625
|
const prepared = await prepareFloridayImage(file);
|
|
2626
2626
|
const res = await floriday.uploadImage(activeId, prepared, prepared.type || "image/jpeg", prepared.name);
|
|
2627
2627
|
if (!res.url)
|
|
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { Card } from "@flowselections/core";
|
|
4
4
|
import { Loader2 } from "lucide-react";
|
|
5
|
-
import { ArtikelWizard } from "./ArtikelWizard";
|
|
6
|
-
import { ProductCustomFieldsCard } from "./ProductCustomFieldsCard";
|
|
7
|
-
import { TrayStickerCard } from "./TrayStickerCard";
|
|
8
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
5
|
+
import { ArtikelWizard } from "./ArtikelWizard.js";
|
|
6
|
+
import { ProductCustomFieldsCard } from "./ProductCustomFieldsCard.js";
|
|
7
|
+
import { TrayStickerCard } from "./TrayStickerCard.js";
|
|
8
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
9
9
|
export function EditArtikelPage({ id, resumeJobId, }) {
|
|
10
10
|
const [resolved, setResolved] = useState(null);
|
|
11
11
|
useEffect(() => {
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import * as XLSX from "xlsx";
|
|
3
3
|
import { Button, toast } from "@flowselections/core";
|
|
4
4
|
import { Download } from "lucide-react";
|
|
5
|
-
import { ensureArticleCodes } from "../../lib/ensure-article-codes";
|
|
5
|
+
import { ensureArticleCodes } from "../../lib/ensure-article-codes.js";
|
|
6
6
|
export function ExcelExportButton({ items, filename = "voorraad", onExported, }) {
|
|
7
7
|
const handle = async () => {
|
|
8
8
|
let exportItems;
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { Card, CardContent, Badge } from "@flowselections/core";
|
|
4
4
|
import { AlertTriangle, ChevronDown, ChevronRight, ExternalLink } from "lucide-react";
|
|
5
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
6
|
-
import { floridayInfoFromCache, LOAD_CARRIER_LABELS, } from "../../lib/floriday-info";
|
|
5
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
6
|
+
import { floridayInfoFromCache, LOAD_CARRIER_LABELS, } from "../../lib/floriday-info.js";
|
|
7
7
|
const floridayLogo = "/flowselections-assets/Voorraad/floriday-logo.png";
|
|
8
8
|
function formatDate(iso) {
|
|
9
9
|
if (!iso)
|
|
@@ -7,8 +7,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
import { useEffect, useState } from "react";
|
|
8
8
|
import { Card, CardContent } from "@flowselections/core";
|
|
9
9
|
import { Send } from "lucide-react";
|
|
10
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
11
|
-
import { priceProblem } from "../../lib/floriday-base-supply";
|
|
10
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
11
|
+
import { priceProblem } from "../../lib/floriday-base-supply.js";
|
|
12
12
|
const MODE_LABEL = {
|
|
13
13
|
FOLLOW_ERP: "Volgt ERP",
|
|
14
14
|
MAXIMUM: "Maximum",
|
|
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { Boxes, Minus, Plus, RefreshCw, Search } from "lucide-react";
|
|
4
4
|
import { Button, Card, Input, Badge, toast } from "@flowselections/core";
|
|
5
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
6
|
-
import { useFloridayConnection } from "../../hooks/useFloridayConnection";
|
|
7
|
-
import { useFusten } from "../../hooks/useFusten";
|
|
8
|
-
import { fetchFustMutations, formatFustDimensions, } from "../../lib/fusten";
|
|
5
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
6
|
+
import { useFloridayConnection } from "../../hooks/useFloridayConnection.js";
|
|
7
|
+
import { useFusten } from "../../hooks/useFusten.js";
|
|
8
|
+
import { fetchFustMutations, formatFustDimensions, } from "../../lib/fusten.js";
|
|
9
9
|
/** Afmetingen tonen en handmatig aanvullen wanneer de catalogus ze niet kent. */
|
|
10
10
|
function DimensionCell({ fust, onSave, }) {
|
|
11
11
|
const [editing, setEditing] = useState(false);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InventorySetting } from "../../hooks/useInventorySettings";
|
|
1
|
+
import type { InventorySetting } from "../../hooks/useInventorySettings.js";
|
|
2
2
|
export declare function InventorySettingsDrawer({ open, onOpenChange, connectionId, productIds, current, onSaved, }: {
|
|
3
3
|
open: boolean;
|
|
4
4
|
onOpenChange: (v: boolean) => void;
|
|
@@ -7,9 +7,9 @@ import { useEffect, useState } from "react";
|
|
|
7
7
|
import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@flowselections/core";
|
|
8
8
|
import { useServerFn } from "@tanstack/react-start";
|
|
9
9
|
import { toast } from "sonner";
|
|
10
|
-
import { saveInventorySettings, republishInventory, } from "../../lib/inventory-settings.functions";
|
|
11
|
-
import { MissingPriceNotice } from "./ProductSalePriceField";
|
|
12
|
-
import { MODE_LABELS, ACTION_REASON_LABELS, publishedLabel, } from "../../lib/stock-modes";
|
|
10
|
+
import { saveInventorySettings, republishInventory, } from "../../lib/inventory-settings.functions.js";
|
|
11
|
+
import { MissingPriceNotice } from "./ProductSalePriceField.js";
|
|
12
|
+
import { MODE_LABELS, ACTION_REASON_LABELS, publishedLabel, } from "../../lib/stock-modes.js";
|
|
13
13
|
const MODE_HELP = {
|
|
14
14
|
FOLLOW_ERP: "Publiceert beschikbaar min gereserveerd min buffer, afgerond op hele verpakkingen.",
|
|
15
15
|
MAXIMUM: "Volgt het ERP (min buffer), maar publiceert nooit meer dan het maximum.",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { InventorySetting } from "../../hooks/useInventorySettings";
|
|
2
|
-
import { MODE_LABELS } from "../../lib/stock-modes";
|
|
1
|
+
import type { InventorySetting } from "../../hooks/useInventorySettings.js";
|
|
2
|
+
import { MODE_LABELS } from "../../lib/stock-modes.js";
|
|
3
3
|
export { MODE_LABELS };
|
|
4
4
|
export declare function InventoryStatusBadge({ setting }: {
|
|
5
5
|
setting: InventorySetting | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Badge } from "@flowselections/core";
|
|
3
|
-
import { MODE_LABELS, ACTION_REASON_LABELS } from "../../lib/stock-modes";
|
|
3
|
+
import { MODE_LABELS, ACTION_REASON_LABELS } from "../../lib/stock-modes.js";
|
|
4
4
|
export { MODE_LABELS };
|
|
5
5
|
const MODE_CLASSES = {
|
|
6
6
|
FOLLOW_ERP: "bg-primary/10 text-primary border-primary/30",
|
|
@@ -9,9 +9,9 @@ import { useRef, useState } from "react";
|
|
|
9
9
|
import { Link, useNavigate } from "@tanstack/react-router";
|
|
10
10
|
import { Button, Card, Input, Label, toast } from "@flowselections/core";
|
|
11
11
|
import { ArrowLeft, Check, Loader2, Send } from "lucide-react";
|
|
12
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
13
|
-
import { validateDraftForPublish } from "../../lib/floriday-import-validator";
|
|
14
|
-
import { ArtikelWizard } from "./ArtikelWizard";
|
|
12
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
13
|
+
import { validateDraftForPublish } from "../../lib/floriday-import-validator.js";
|
|
14
|
+
import { ArtikelWizard } from "./ArtikelWizard.js";
|
|
15
15
|
const STEPS = ["Naam en code", "Voorraad", "Prijs"];
|
|
16
16
|
export function NieuwArtikelPage() {
|
|
17
17
|
const navigate = useNavigate();
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { Card, CardContent, Badge } from "@flowselections/core";
|
|
4
4
|
import { Loader2, ClipboardList, ExternalLink } from "lucide-react";
|
|
5
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
5
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
6
6
|
const STATUS_TONE = {
|
|
7
7
|
"nog te picken": "bg-amber-100 text-amber-800 border-amber-200",
|
|
8
8
|
"klaar voor verzending": "bg-blue-100 text-blue-800 border-blue-200",
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Checkbox, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, toast, } from "@flowselections/core";
|
|
4
4
|
import { Loader2, Save } from "lucide-react";
|
|
5
|
-
import { useVoorraadCustomFields } from "../../hooks/useVoorraadCustomFields";
|
|
6
|
-
import { fetchProductCustomValues, saveProductCustomValues, } from "../../lib/voorraad-custom-fields";
|
|
5
|
+
import { useVoorraadCustomFields } from "../../hooks/useVoorraadCustomFields.js";
|
|
6
|
+
import { fetchProductCustomValues, saveProductCustomValues, } from "../../lib/voorraad-custom-fields.js";
|
|
7
7
|
/** Eigen voorraadvelden met `show_in_detail`, tonen en bewerken op de productpagina. */
|
|
8
8
|
export function ProductCustomFieldsCard({ productId }) {
|
|
9
9
|
const { fields, loading } = useVoorraadCustomFields();
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { Button, Card, CardContent, Input, toast, } from "@flowselections/core";
|
|
4
4
|
import { Link2, Loader2, RefreshCw, Trash2, Wand2 } from "lucide-react";
|
|
5
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
5
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
6
6
|
/**
|
|
7
7
|
* Koppelt ERP-`products` rijen aan één Floriday-voorraadrij (`trade_item_key`).
|
|
8
8
|
* Zonder koppeling doen bestel-triggers niets voor mailbox/manual-orders.
|
|
@@ -10,8 +10,8 @@ import { useEffect, useState } from "react";
|
|
|
10
10
|
import { Link } from "@tanstack/react-router";
|
|
11
11
|
import { Button, Input, Label, toast } from "@flowselections/core";
|
|
12
12
|
import { AlertTriangle, Loader2 } from "lucide-react";
|
|
13
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
14
|
-
import { priceProblem } from "../../lib/floriday-base-supply";
|
|
13
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
14
|
+
import { priceProblem } from "../../lib/floriday-base-supply.js";
|
|
15
15
|
function isPieceUnit(unit) {
|
|
16
16
|
const u = String(unit ?? "").trim().toLowerCase();
|
|
17
17
|
return u === "" || u === "stuks" || u === "stuk";
|
|
@@ -8,9 +8,9 @@ import { useEffect, useState } from "react";
|
|
|
8
8
|
import { Link } from "@tanstack/react-router";
|
|
9
9
|
import { Badge, Card, CardContent, CardDescription, CardHeader, CardTitle } from "@flowselections/core";
|
|
10
10
|
import { Info, Loader2 } from "lucide-react";
|
|
11
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
12
|
-
import { PRODUCT_TYPE_CLASSES, PRODUCT_TYPE_HELP, PRODUCT_TYPE_LABELS, floridayPendingReason, toStructureType, } from "../../lib/product-types";
|
|
13
|
-
import { ACTION_REASON_LABELS, publishedLabel } from "../../lib/stock-modes";
|
|
11
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
12
|
+
import { PRODUCT_TYPE_CLASSES, PRODUCT_TYPE_HELP, PRODUCT_TYPE_LABELS, floridayPendingReason, toStructureType, } from "../../lib/product-types.js";
|
|
13
|
+
import { ACTION_REASON_LABELS, publishedLabel } from "../../lib/stock-modes.js";
|
|
14
14
|
export function ProductStructureCard({ productId }) {
|
|
15
15
|
const [loading, setLoading] = useState(true);
|
|
16
16
|
const [totals, setTotals] = useState(null);
|
|
@@ -3,8 +3,8 @@ import { Link } from "@tanstack/react-router";
|
|
|
3
3
|
import { Card, Button } from "@flowselections/core";
|
|
4
4
|
import { ArrowLeft, Check, AlertTriangle, Loader2, RefreshCw } from "lucide-react";
|
|
5
5
|
import { useEffect, useState } from "react";
|
|
6
|
-
import { usePublishJobs } from "../../hooks/usePublishJob";
|
|
7
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
6
|
+
import { usePublishJobs } from "../../hooks/usePublishJob.js";
|
|
7
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
8
8
|
const STATUS_LABEL = {
|
|
9
9
|
running: "Bezig",
|
|
10
10
|
succeeded: "Gepubliceerd",
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { Button, Input, Popover, PopoverContent, PopoverTrigger, toast, } from "@flowselections/core";
|
|
4
4
|
import { Loader2, Package, Plus, Search, Trash2 } from "lucide-react";
|
|
5
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
5
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
6
6
|
/** Vanaf dit aantal per stuk vragen we of de verhouding klopt. */
|
|
7
7
|
const RATIO_WARN_THRESHOLD = 10;
|
|
8
8
|
const MAX_DEPTH = 6;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TradeItem } from "../../lib/floriday-client";
|
|
1
|
+
import type { TradeItem } from "../../lib/floriday-client.js";
|
|
2
2
|
export declare function StockBulkButtons({ items, activeConnectionId, onImported, }: {
|
|
3
3
|
items: TradeItem[];
|
|
4
4
|
activeConnectionId: string | null;
|
|
@@ -3,11 +3,11 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
|
3
3
|
import * as XLSX from "xlsx";
|
|
4
4
|
import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, toast, } from "@flowselections/core";
|
|
5
5
|
import { Download, FileDown, Upload, Loader2, Undo2, Play } from "lucide-react";
|
|
6
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
7
|
-
import { emptyWizardData } from "../../lib/floriday-payload";
|
|
8
|
-
import { validateDraftForPublish } from "../../lib/floriday-import-validator";
|
|
9
|
-
import { ensureArticleCodes } from "../../lib/ensure-article-codes";
|
|
10
|
-
import { useVoorraadCustomFields } from "../../hooks/useVoorraadCustomFields";
|
|
6
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
7
|
+
import { emptyWizardData } from "../../lib/floriday-payload.js";
|
|
8
|
+
import { validateDraftForPublish } from "../../lib/floriday-import-validator.js";
|
|
9
|
+
import { ensureArticleCodes } from "../../lib/ensure-article-codes.js";
|
|
10
|
+
import { useVoorraadCustomFields } from "../../hooks/useVoorraadCustomFields.js";
|
|
11
11
|
/**
|
|
12
12
|
* Voorraadimport in porties (Voorraad-module).
|
|
13
13
|
* De browser leest het bestand en controleert de rijen; de database verwerkt
|
|
@@ -7,7 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
import { useEffect, useState } from "react";
|
|
8
8
|
import { Card } from "@flowselections/core";
|
|
9
9
|
import { CartesianGrid, Line, LineChart, ResponsiveContainer, Tooltip, XAxis, YAxis, } from "recharts";
|
|
10
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
10
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
11
11
|
export function StockHistoryChart({ connectionId }) {
|
|
12
12
|
const [points, setPoints] = useState([]);
|
|
13
13
|
const [loading, setLoading] = useState(false);
|
|
@@ -7,7 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
import { useCallback, useEffect, useState } from "react";
|
|
8
8
|
import { AlertOctagon } from "lucide-react";
|
|
9
9
|
import { toast } from "sonner";
|
|
10
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
10
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
11
11
|
const keyToProductId = (k) => k.replace(/^product:/, "");
|
|
12
12
|
function label(it, names) {
|
|
13
13
|
const found = names.get(it.trade_item_key);
|
|
@@ -7,8 +7,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
7
7
|
import { useEffect, useState } from "react";
|
|
8
8
|
import { Card, CardContent, Badge, Button } from "@flowselections/core";
|
|
9
9
|
import { ChevronDown, ChevronUp, Loader2, History } from "lucide-react";
|
|
10
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
11
|
-
import { CollapsibleText } from "./CollapsibleText";
|
|
10
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
11
|
+
import { CollapsibleText } from "./CollapsibleText.js";
|
|
12
12
|
const TYPE_LABEL = {
|
|
13
13
|
consumption: { label: "Afboeking (verkoop)", tone: "bg-rose-100 text-rose-800 border-rose-200" },
|
|
14
14
|
consumption_blocked: { label: "Afboeking geblokkeerd", tone: "bg-amber-100 text-amber-800 border-amber-200" },
|
|
@@ -13,9 +13,9 @@ import { useServerFn } from "@tanstack/react-start";
|
|
|
13
13
|
import { toast } from "sonner";
|
|
14
14
|
import { ChevronDown, ChevronRight, RefreshCw, Send } from "lucide-react";
|
|
15
15
|
import { Button, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@flowselections/core";
|
|
16
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
17
|
-
import { useStockPushJobs, useCentralAuthBlockade } from "../../hooks/useStockPushJobs";
|
|
18
|
-
import { enqueueTestStockPush } from "../../lib/stock-sync.functions";
|
|
16
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
17
|
+
import { useStockPushJobs, useCentralAuthBlockade } from "../../hooks/useStockPushJobs.js";
|
|
18
|
+
import { enqueueTestStockPush } from "../../lib/stock-sync.functions.js";
|
|
19
19
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
20
20
|
/** Een verwerker houdt een regel maximaal 5 minuten vast. */
|
|
21
21
|
const LOCK_STALE_MS = 5 * 60000;
|
|
@@ -8,8 +8,8 @@ import { AlertTriangle, RotateCw } from "lucide-react";
|
|
|
8
8
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
9
9
|
import { useServerFn } from "@tanstack/react-start";
|
|
10
10
|
import { toast } from "sonner";
|
|
11
|
-
import { useStockSyncHealth } from "../../hooks/useStockSyncHealth";
|
|
12
|
-
import { retryFailedStockSync } from "../../lib/stock-sync.functions";
|
|
11
|
+
import { useStockSyncHealth } from "../../hooks/useStockSyncHealth.js";
|
|
12
|
+
import { retryFailedStockSync } from "../../lib/stock-sync.functions.js";
|
|
13
13
|
export function StockSyncStatus() {
|
|
14
14
|
const { data } = useStockSyncHealth();
|
|
15
15
|
const queryClient = useQueryClient();
|
|
@@ -5,7 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
*/
|
|
6
6
|
import { useEffect, useState } from "react";
|
|
7
7
|
import { ShieldAlert } from "lucide-react";
|
|
8
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
8
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
9
9
|
export function SupplyReadScopeAlert() {
|
|
10
10
|
const [run, setRun] = useState(null);
|
|
11
11
|
useEffect(() => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TradeItem } from "../../lib/floriday-client";
|
|
1
|
+
import type { TradeItem } from "../../lib/floriday-client.js";
|
|
2
2
|
/**
|
|
3
3
|
* Overzicht van producten die (nog) niet actief op Floriday staan. Er is geen concept-status
|
|
4
4
|
* meer — het gaat puur om welke Floriday-velden ontbreken en of het product klaar is om te
|
|
@@ -3,10 +3,10 @@ import { useMemo, useState } from "react";
|
|
|
3
3
|
import { useNavigate } from "@tanstack/react-router";
|
|
4
4
|
import { Badge, Button } from "@flowselections/core";
|
|
5
5
|
import { Link2, Loader2, Pencil, Send } from "lucide-react";
|
|
6
|
-
import { validateDraftForPublish } from "../../lib/floriday-import-validator";
|
|
7
|
-
import { updateDraftMeta } from "../../hooks/useLocalTradeItems";
|
|
8
|
-
import { floriday } from "../../lib/floriday-client";
|
|
9
|
-
import { relinkProducts } from "../../lib/floriday-relink";
|
|
6
|
+
import { validateDraftForPublish } from "../../lib/floriday-import-validator.js";
|
|
7
|
+
import { updateDraftMeta } from "../../hooks/useLocalTradeItems.js";
|
|
8
|
+
import { floriday } from "../../lib/floriday-client.js";
|
|
9
|
+
import { relinkProducts } from "../../lib/floriday-relink.js";
|
|
10
10
|
import { toast } from "@flowselections/core";
|
|
11
11
|
/**
|
|
12
12
|
* Overzicht van producten die (nog) niet actief op Floriday staan. Er is geen concept-status
|
|
@@ -59,7 +59,7 @@ export function ValidationOverviewTable({ items, connectionId, onChanged, }) {
|
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
try {
|
|
62
|
-
const { buildAddTradeItemPayload } = await import("../../lib/floriday-payload");
|
|
62
|
+
const { buildAddTradeItemPayload } = await import("../../lib/floriday-payload.js");
|
|
63
63
|
const built = buildAddTradeItemPayload(payload);
|
|
64
64
|
const res = await floriday.createTradeItem(connectionId, built);
|
|
65
65
|
await updateDraftMeta(productId, {
|
|
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Link } from "@tanstack/react-router";
|
|
3
3
|
import { Card } from "@flowselections/core";
|
|
4
4
|
import { ArrowLeft } from "lucide-react";
|
|
5
|
-
import { useFloridayConnection } from "../../hooks/useFloridayConnection";
|
|
6
|
-
import { useVoorraadData } from "../../hooks/useVoorraadData";
|
|
7
|
-
import { ValidationOverviewTable } from "./ValidationOverviewTable";
|
|
5
|
+
import { useFloridayConnection } from "../../hooks/useFloridayConnection.js";
|
|
6
|
+
import { useVoorraadData } from "../../hooks/useVoorraadData.js";
|
|
7
|
+
import { ValidationOverviewTable } from "./ValidationOverviewTable.js";
|
|
8
8
|
export function ValidationPage() {
|
|
9
9
|
const { activeId } = useFloridayConnection();
|
|
10
10
|
const { items, loading, reload } = useVoorraadData(activeId);
|
|
@@ -3,20 +3,20 @@ import { useEffect, useMemo, useState } from "react";
|
|
|
3
3
|
import { Link } from "@tanstack/react-router";
|
|
4
4
|
import { Button, Card, Input, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, useAuthState, } from "@flowselections/core";
|
|
5
5
|
import { AlertTriangle, CheckCircle2, FileText, PackageX, Plus, Search, } from "lucide-react";
|
|
6
|
-
import { useFloridayConnection } from "../../hooks/useFloridayConnection";
|
|
7
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
8
|
-
import { useVoorraadData } from "../../hooks/useVoorraadData";
|
|
9
|
-
import { StockSyncStatus } from "./StockSyncStatus";
|
|
10
|
-
import { StockIntegrityAlert } from "./StockIntegrityAlert";
|
|
11
|
-
import { SupplyReadScopeAlert } from "./SupplyReadScopeAlert";
|
|
12
|
-
import { StockPushMonitor } from "./StockPushMonitor";
|
|
13
|
-
import { ExcelExportButton } from "./ExcelExportButton";
|
|
14
|
-
import { StockBulkButtons } from "./StockBulkButtons";
|
|
15
|
-
import { VoorraadTable } from "./VoorraadTable";
|
|
16
|
-
import { VoorraadPagination } from "./VoorraadPagination";
|
|
17
|
-
import { StockHistoryChart } from "./StockHistoryChart";
|
|
18
|
-
import { InventorySettingsDrawer } from "./InventorySettingsDrawer";
|
|
19
|
-
import { useInventorySettings } from "../../hooks/useInventorySettings";
|
|
6
|
+
import { useFloridayConnection } from "../../hooks/useFloridayConnection.js";
|
|
7
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
8
|
+
import { useVoorraadData } from "../../hooks/useVoorraadData.js";
|
|
9
|
+
import { StockSyncStatus } from "./StockSyncStatus.js";
|
|
10
|
+
import { StockIntegrityAlert } from "./StockIntegrityAlert.js";
|
|
11
|
+
import { SupplyReadScopeAlert } from "./SupplyReadScopeAlert.js";
|
|
12
|
+
import { StockPushMonitor } from "./StockPushMonitor.js";
|
|
13
|
+
import { ExcelExportButton } from "./ExcelExportButton.js";
|
|
14
|
+
import { StockBulkButtons } from "./StockBulkButtons.js";
|
|
15
|
+
import { VoorraadTable } from "./VoorraadTable.js";
|
|
16
|
+
import { VoorraadPagination } from "./VoorraadPagination.js";
|
|
17
|
+
import { StockHistoryChart } from "./StockHistoryChart.js";
|
|
18
|
+
import { InventorySettingsDrawer } from "./InventorySettingsDrawer.js";
|
|
19
|
+
import { useInventorySettings } from "../../hooks/useInventorySettings.js";
|
|
20
20
|
function isLinkedToFloriday(i) {
|
|
21
21
|
return Boolean(i.floridayId) || i.source === "published";
|
|
22
22
|
}
|
|
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { Button, Card, CardContent, Input, Label, Textarea, toast, } from "@flowselections/core";
|
|
4
4
|
import { Loader2, Package, Check } from "lucide-react";
|
|
5
|
-
import { useTradeItemStock, stockKeysFor } from "../../hooks/useTradeItemStock";
|
|
6
|
-
import { supabase } from "../../integrations/supabase/client";
|
|
7
|
-
import { FloridaySentCard } from "./FloridaySentCard";
|
|
5
|
+
import { useTradeItemStock, stockKeysFor } from "../../hooks/useTradeItemStock.js";
|
|
6
|
+
import { supabase } from "../../integrations/supabase/client.js";
|
|
7
|
+
import { FloridaySentCard } from "./FloridaySentCard.js";
|
|
8
8
|
export function VoorraadStockCard({ connectionId, tradeItemId, draftId, productId }) {
|
|
9
9
|
const keys = stockKeysFor({
|
|
10
10
|
tradeItemId,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TradeItem } from "../../lib/floriday-client";
|
|
2
|
-
import type { InventorySetting } from "../../hooks/useInventorySettings";
|
|
1
|
+
import type { TradeItem } from "../../lib/floriday-client.js";
|
|
2
|
+
import type { InventorySetting } from "../../hooks/useInventorySettings.js";
|
|
3
3
|
/** Sleutel waarmee een rij aan zijn Floriday-voorraadinstelling wordt gekoppeld. */
|
|
4
4
|
export declare function settingKeyOf(item: TradeItem): string | null;
|
|
5
5
|
export declare function VoorraadTable({ items, loading, settingsByKey, selected, onToggleSelect, onToggleAll, onOpenSettings, }: {
|