@flowselections/floriday-verkoop-module 1.0.17 → 1.0.18

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 (57) hide show
  1. package/dist-lib/components/verkoop/CreateOrderPage.d.ts.map +1 -1
  2. package/dist-lib/components/verkoop/CreateOrderPage.js +6 -4
  3. package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts +6 -0
  4. package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts.map +1 -0
  5. package/dist-lib/components/verkoop/EditLocalOrderDialog.js +102 -0
  6. package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
  7. package/dist-lib/components/verkoop/OrderKarindelingCard.js +26 -28
  8. package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts +5 -0
  9. package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts.map +1 -0
  10. package/dist-lib/components/verkoop/OrderShipmentsCard.js +137 -0
  11. package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts.map +1 -1
  12. package/dist-lib/components/verkoop/SalesOrderDetailPage.js +8 -2
  13. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts.map +1 -1
  14. package/dist-lib/components/verkoop/SalesOrderDetailView.js +2 -1
  15. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +4 -1
  16. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts.map +1 -1
  17. package/dist-lib/components/verkoop/SalesOrdersTable.js +2 -2
  18. package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts.map +1 -1
  19. package/dist-lib/components/verkoop/VerkoopOrdersPage.js +43 -1
  20. package/dist-lib/integrations/supabase/auth-middleware.d.ts +381 -150
  21. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  22. package/dist-lib/integrations/supabase/client.d.ts +381 -150
  23. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  24. package/dist-lib/integrations/supabase/client.server.d.ts +381 -150
  25. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  26. package/dist-lib/integrations/supabase/types.d.ts +397 -154
  27. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  28. package/dist-lib/lib/cart-lock.functions.d.ts +381 -150
  29. package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
  30. package/dist-lib/lib/cart-replan.functions.d.ts +789 -327
  31. package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
  32. package/dist-lib/lib/create-order.functions.d.ts +38897 -1457
  33. package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
  34. package/dist-lib/lib/create-order.functions.js +792 -52
  35. package/dist-lib/lib/expand-group-order-items.d.ts +13 -0
  36. package/dist-lib/lib/expand-group-order-items.d.ts.map +1 -0
  37. package/dist-lib/lib/expand-group-order-items.js +216 -0
  38. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +1174 -481
  39. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
  40. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +381 -150
  41. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
  42. package/dist-lib/lib/floriday-public.functions.d.ts +2701 -1084
  43. package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
  44. package/dist-lib/lib/floriday-writes.functions.d.ts +1939 -784
  45. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  46. package/dist-lib/lib/order-shipments.functions.d.ts +47158 -0
  47. package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -0
  48. package/dist-lib/lib/order-shipments.functions.js +178 -0
  49. package/dist-lib/lib/salesorders-mapping.d.ts +1 -0
  50. package/dist-lib/lib/salesorders-mapping.d.ts.map +1 -1
  51. package/dist-lib/lib/salesorders.functions.d.ts +1174 -481
  52. package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
  53. package/dist-lib/lib/tradeitems.functions.d.ts +381 -150
  54. package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
  55. package/dist-lib/lib/useSalesOrdersQuery.d.ts.map +1 -1
  56. package/dist-lib/lib/useSalesOrdersQuery.js +39 -2
  57. package/package.json +2 -2
@@ -7,6 +7,7 @@ import { useNavigate } from "@tanstack/react-router";
7
7
  import { useQueryClient } from "@tanstack/react-query";
8
8
  import { supabase } from "../../integrations/supabase/client";
9
9
  import { runSalesOrdersSync } from "../../lib/salesorders.functions";
10
+ import { deleteLocalOrder } from "../../lib/create-order.functions";
10
11
  import { runTradeItemsSync } from "../../lib/tradeitems.functions";
11
12
  import { applyFilters, computeTotals, ordersToCsv, } from "../../lib/salesorders-mapping";
12
13
  import { useSalesOrdersQuery } from "../../lib/useSalesOrdersQuery";
@@ -14,6 +15,7 @@ import { AnalyticsCards } from "./AnalyticsCards";
14
15
  import { SalesOrdersFilters } from "./SalesOrdersFilters";
15
16
  import { SalesOrdersFilterPanel, countActiveFilters, } from "./SalesOrdersFilterPanel";
16
17
  import { SalesOrdersTable } from "./SalesOrdersTable";
18
+ import { EditLocalOrderDialog } from "./EditLocalOrderDialog";
17
19
  const STATUS_TABS = [
18
20
  { id: "all", label: "Alle" },
19
21
  { id: "open", label: "Open" },
@@ -57,6 +59,30 @@ export function VerkoopOrdersPage() {
57
59
  const queryClient = useQueryClient();
58
60
  const triggerSync = useServerFn(runSalesOrdersSync);
59
61
  const triggerTradeItemsSync = useServerFn(runTradeItemsSync);
62
+ const triggerDeleteOrder = useServerFn(deleteLocalOrder);
63
+ const [orderPendingDelete, setOrderPendingDelete] = useState(null);
64
+ const [deleting, setDeleting] = useState(false);
65
+ const [editOrderId, setEditOrderId] = useState(null);
66
+ const handleDeleteOrder = async () => {
67
+ if (!orderPendingDelete)
68
+ return;
69
+ const rawId = orderPendingDelete.id.startsWith("local:")
70
+ ? orderPendingDelete.id.slice("local:".length)
71
+ : orderPendingDelete.id;
72
+ try {
73
+ setDeleting(true);
74
+ const res = await triggerDeleteOrder({ data: { orderId: rawId } });
75
+ toast.success(`Bestelling verwijderd — ${res.reversalEntries} voorraadmutatie(s) teruggedraaid`);
76
+ setOrderPendingDelete(null);
77
+ await refetch();
78
+ }
79
+ catch (e) {
80
+ toast.error(e?.message ?? "Verwijderen mislukt");
81
+ }
82
+ finally {
83
+ setDeleting(false);
84
+ }
85
+ };
60
86
  const { data, isLoading, error, refetch, isFetching } = useSalesOrdersQuery();
61
87
  const orders = data?.orders ?? [];
62
88
  const activeEnvironment = data?.environment ?? "staging";
@@ -177,7 +203,23 @@ export function VerkoopOrdersPage() {
177
203
  }) }) }), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsx(SalesOrdersFilters, { value: filters, onChange: setFilters }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: () => setFilterPanelOpen(true), "aria-label": "Filters", children: [_jsx(Filter, { className: "mr-2 h-4 w-4" }), "Filters", activeFilterCount > 0 && (_jsx("span", { className: "ml-2 inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-[11px] font-semibold text-primary-foreground", children: activeFilterCount }))] }), _jsx(Button, { variant: "outline", size: "icon", onClick: handleSync, disabled: syncing, "aria-label": "Synchroniseren", title: "Synchroniseren", children: _jsx(RefreshCw, { className: "h-4 w-4 " + (syncing ? "animate-spin" : "") }) }), _jsxs(Button, { variant: "outline", size: "sm", onClick: handleExport, children: [_jsx(Download, { className: "mr-2 h-4 w-4" }), " Exporteren"] }), _jsxs(Button, { size: "sm", onClick: () => navigate({ to: "/floriday-verkoop/verkooporders/nieuw" }), children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), " Bestelling aanmaken"] })] })] }), _jsx(AnalyticsCards, { totals: totals, loading: isLoading }), error && (_jsxs("div", { className: "flex items-start gap-3 rounded-lg border border-destructive/30 bg-destructive/5 p-4 text-sm", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-5 w-5 shrink-0 text-destructive" }), _jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-medium text-destructive", children: "Floriday gegevens konden niet geladen worden" }), _jsx("div", { className: "mt-1 text-muted-foreground", children: error.message })] }), _jsx(Button, { size: "sm", variant: "outline", onClick: () => refetch(), disabled: isFetching, children: "Opnieuw proberen" })] })), _jsx(SalesOrdersTable, { orders: paged, loading: isLoading, onSelectOrder: (o) => navigate({
178
204
  to: "/floriday-verkoop/verkooporders/$salesOrderId",
179
205
  params: { salesOrderId: o.id },
180
- }) }), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground", children: [_jsx("div", { children: totalCount === 0
206
+ }), onDeleteOrder: (o) => {
207
+ if (!o.isLocal) {
208
+ toast.error("FO-orders kunnen niet verwijderd worden.");
209
+ return;
210
+ }
211
+ setOrderPendingDelete(o);
212
+ }, onEditOrder: (o) => {
213
+ if (!o.isLocal) {
214
+ toast.error("FO-orders kunnen niet bewerkt worden.");
215
+ return;
216
+ }
217
+ const rawId = o.id.startsWith("local:") ? o.id.slice("local:".length) : o.id;
218
+ setEditOrderId(rawId);
219
+ }, onConfirmOrder: (o) => navigate({
220
+ to: "/floriday-verkoop/verkooporders/$salesOrderId",
221
+ params: { salesOrderId: o.id },
222
+ }) }), orderPendingDelete && (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4", onClick: () => !deleting && setOrderPendingDelete(null), children: _jsxs("div", { className: "w-full max-w-md rounded-lg border border-border bg-card p-6 shadow-lg", onClick: (e) => e.stopPropagation(), children: [_jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Bestelling verwijderen?" }), _jsxs("p", { className: "mt-2 text-sm text-muted-foreground", children: ["Weet je zeker dat je bestelling", " ", _jsx("span", { className: "font-medium text-foreground", children: orderPendingDelete.orderNumber || orderPendingDelete.id }), " ", "wilt verwijderen? Alle voorraadmutaties van deze bestelling worden automatisch teruggedraaid."] }), _jsxs("div", { className: "mt-5 flex justify-end gap-2", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: () => setOrderPendingDelete(null), disabled: deleting, children: "Annuleren" }), _jsx(Button, { size: "sm", onClick: handleDeleteOrder, disabled: deleting, className: "bg-destructive text-destructive-foreground hover:bg-destructive/90", children: deleting ? "Bezig…" : "Verwijderen" })] })] }) })), editOrderId && (_jsx(EditLocalOrderDialog, { orderId: editOrderId, open: !!editOrderId, onOpenChange: (o) => !o && setEditOrderId(null) })), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground", children: [_jsx("div", { children: totalCount === 0
181
223
  ? "Geen resultaten"
182
224
  : totalCount === 1
183
225
  ? "1 resultaat"