@flowselections/floriday-verkoop-module 1.0.54 → 1.0.56

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 (69) hide show
  1. package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
  2. package/dist-lib/components/verkoop/OrderKarindelingCard.js +7 -3
  3. package/dist-lib/integrations/supabase/auth-middleware.d.ts +45 -0
  4. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  5. package/dist-lib/integrations/supabase/client.d.ts +45 -0
  6. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  7. package/dist-lib/integrations/supabase/client.server.d.ts +45 -0
  8. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  9. package/dist-lib/integrations/supabase/types.d.ts +45 -0
  10. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  11. package/dist-lib/lib/cart-lock.functions.d.ts +45 -0
  12. package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
  13. package/dist-lib/lib/cart-planning-settings.functions.d.ts +495 -0
  14. package/dist-lib/lib/cart-planning-settings.functions.d.ts.map +1 -1
  15. package/dist-lib/lib/cart-replan.functions.d.ts +137 -26
  16. package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
  17. package/dist-lib/lib/cart-replan.functions.js +93 -63
  18. package/dist-lib/lib/create-order.functions.d.ts +765 -0
  19. package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
  20. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +135 -0
  21. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
  22. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +45 -0
  23. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
  24. package/dist-lib/lib/floriday-mirror.functions.d.ts +45 -0
  25. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  26. package/dist-lib/lib/floriday-public.functions.d.ts +315 -0
  27. package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
  28. package/dist-lib/lib/floriday-writes.functions.d.ts +225 -0
  29. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  30. package/dist-lib/lib/invoice-timing.functions.d.ts +180 -0
  31. package/dist-lib/lib/invoice-timing.functions.d.ts.map +1 -1
  32. package/dist-lib/lib/invoice-timing.functions.js +12 -6
  33. package/dist-lib/lib/load-carriers.functions.d.ts +45 -0
  34. package/dist-lib/lib/load-carriers.functions.d.ts.map +1 -1
  35. package/dist-lib/lib/logistics-engine.functions.d.ts +225 -0
  36. package/dist-lib/lib/logistics-engine.functions.d.ts.map +1 -1
  37. package/dist-lib/lib/logistics-engine.functions.js +10 -5
  38. package/dist-lib/lib/logistics-stock.functions.d.ts +90 -0
  39. package/dist-lib/lib/logistics-stock.functions.d.ts.map +1 -1
  40. package/dist-lib/lib/order-addresses.functions.d.ts +45 -0
  41. package/dist-lib/lib/order-addresses.functions.d.ts.map +1 -1
  42. package/dist-lib/lib/order-addresses.functions.js +15 -9
  43. package/dist-lib/lib/order-buffers.functions.d.ts +135 -0
  44. package/dist-lib/lib/order-buffers.functions.d.ts.map +1 -1
  45. package/dist-lib/lib/order-buffers.functions.js +10 -10
  46. package/dist-lib/lib/order-carrier.functions.d.ts +90 -0
  47. package/dist-lib/lib/order-carrier.functions.d.ts.map +1 -1
  48. package/dist-lib/lib/order-carrier.functions.js +20 -11
  49. package/dist-lib/lib/order-pickup.functions.d.ts +90 -0
  50. package/dist-lib/lib/order-pickup.functions.d.ts.map +1 -1
  51. package/dist-lib/lib/order-pickup.functions.js +20 -11
  52. package/dist-lib/lib/order-row.server.d.ts +24 -0
  53. package/dist-lib/lib/order-row.server.d.ts.map +1 -0
  54. package/dist-lib/lib/order-row.server.js +58 -0
  55. package/dist-lib/lib/order-shipments.functions.d.ts +180 -0
  56. package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -1
  57. package/dist-lib/lib/order-shipments.functions.js +11 -6
  58. package/dist-lib/lib/product-name.d.ts +3 -0
  59. package/dist-lib/lib/product-name.d.ts.map +1 -0
  60. package/dist-lib/lib/product-name.js +43 -0
  61. package/dist-lib/lib/salesorders-list.functions.d.ts +45 -0
  62. package/dist-lib/lib/salesorders-list.functions.d.ts.map +1 -1
  63. package/dist-lib/lib/salesorders.functions.d.ts +225 -0
  64. package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
  65. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +90 -0
  66. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts.map +1 -1
  67. package/dist-lib/lib/tradeitems.functions.d.ts +45 -0
  68. package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
  69. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"OrderKarindelingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderKarindelingCard.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA4C/D,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,2CA+KvE"}
1
+ {"version":3,"file":"OrderKarindelingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderKarindelingCard.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA6C/D,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,2CA8LvE"}
@@ -14,6 +14,7 @@ import { CheckCircle2, Lock } from "lucide-react";
14
14
  import { supabase } from "../../integrations/supabase/client";
15
15
  import { formatBeladingNotation } from "../../lib/load-carrier-labels";
16
16
  import { listOrderCarts } from "../../lib/cart-replan.functions";
17
+ import { resolveProductName } from "../../lib/product-name";
17
18
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
18
19
  function belading(i) {
19
20
  // Eén notatie in de hele module: lagen × fusten/laag × planten/fust
@@ -34,10 +35,11 @@ export function OrderKarindelingCard({ order }) {
34
35
  const fetchCarts = useServerFn(listOrderCarts);
35
36
  const queryClient = useQueryClient();
36
37
  const queryKey = ["order-carts", orderId];
37
- const { data, isLoading } = useQuery({
38
+ const { data, isLoading, error } = useQuery({
38
39
  queryKey,
39
40
  enabled: !!orderId,
40
41
  staleTime: 15000,
42
+ retry: false,
41
43
  queryFn: async () => fetchCarts({ data: { orderId: orderId } }),
42
44
  });
43
45
  // Realtime op de karren zelf — niet meer op products/order_items, want die
@@ -60,6 +62,8 @@ export function OrderKarindelingCard({ order }) {
60
62
  const orders = data?.orders ?? [];
61
63
  const lockedAt = data?.planLockedAt ?? null;
62
64
  const blocked = data?.blocked ?? null;
65
+ // De DB-order-id (verschilt van de DTO-id bij Floriday-orders).
66
+ const dbOrderId = data?.orderId ?? null;
63
67
  const orderNumberByItem = useMemo(() => {
64
68
  const numberByOrder = new Map();
65
69
  for (const o of orders)
@@ -80,11 +84,11 @@ export function OrderKarindelingCard({ order }) {
80
84
  }, [carts]);
81
85
  const lockedDate = lockedAt ? new Date(lockedAt).toLocaleString("nl-NL") : null;
82
86
  const multiOrder = orders.length > 1;
83
- return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-center justify-between", children: [_jsx(CardTitle, { className: "text-base", children: "Karindeling" }), _jsxs("div", { className: "flex items-center gap-2", children: [lockedAt && (_jsxs(Badge, { variant: "outline", className: "gap-1", children: [_jsx(Lock, { className: "h-3 w-3" }), "Vergrendeld \u2014 pakbon geprint ", lockedDate] })), multiOrder && (_jsxs(Badge, { variant: "outline", title: orders.map((o) => o.order_number ?? o.id).join(", "), children: ["Buffer \u00B7 ", orders.length, " orders"] })), _jsxs(Badge, { variant: "secondary", children: [carts.length, " kar(ren)", sourceLabel ? ` · bron: ${sourceLabel}` : ""] })] })] }), _jsx(CardContent, { children: isLoading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Karindeling laden\u2026" })) : carts.length === 0 ? (_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Nog geen karindeling beschikbaar voor deze order." }), blocked && (blocked.explanation || blocked.reason) && (_jsxs("p", { className: "text-sm text-destructive", children: [blocked.explanation ?? blocked.reason, blocked.at ? ` (${new Date(blocked.at).toLocaleString("nl-NL")})` : ""] }))] })) : (_jsx("div", { className: "space-y-4", children: carts.map((c) => (_jsxs("div", { className: "rounded-md border border-border", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-border bg-muted/30 px-3 py-2 text-sm", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("span", { className: "font-mono font-medium", children: ["Kar ", c.cart_number] }), _jsxs(Badge, { variant: c.is_complete ? "default" : "secondary", className: "gap-1", children: [c.is_complete && _jsx(CheckCircle2, { className: "h-3 w-3" }), c.is_complete ? "Volledig" : "Deels"] }), c.order_id === null && multiOrder && (_jsx(Badge, { variant: "outline", children: "Gedeelde kar" })), c.carrier_type && (_jsxs(Badge, { variant: "outline", className: "font-mono text-[10px]", children: [c.carrier_type, c.max_layers ? ` · ${c.max_layers} lagen` : ""] }))] }), _jsxs("div", { className: "text-muted-foreground", children: [Number(c.total_layers_used ?? 0), " lagen \u00B7 benutting", " ", Math.round(Number(c.occupancy_pct ?? 0) * 10) / 10, "%"] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Artikel" }), _jsx(TableHead, { className: "text-right", children: "Planten" }), _jsx(TableHead, { className: "text-right", children: "Fusten" }), _jsx(TableHead, { children: "Belading" }), _jsx(TableHead, { className: "text-right", children: "Laag-aandeel" })] }) }), _jsx(TableBody, { children: (c.order_cart_items ?? []).map((i) => {
87
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-center justify-between", children: [_jsx(CardTitle, { className: "text-base", children: "Karindeling" }), _jsxs("div", { className: "flex items-center gap-2", children: [lockedAt && (_jsxs(Badge, { variant: "outline", className: "gap-1", children: [_jsx(Lock, { className: "h-3 w-3" }), "Vergrendeld \u2014 pakbon geprint ", lockedDate] })), multiOrder && (_jsxs(Badge, { variant: "outline", title: orders.map((o) => o.order_number ?? o.id).join(", "), children: ["Buffer \u00B7 ", orders.length, " orders"] })), !error && (_jsxs(Badge, { variant: "secondary", children: [carts.length, " kar(ren)", sourceLabel ? ` · bron: ${sourceLabel}` : ""] }))] })] }), _jsx(CardContent, { children: isLoading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "Karindeling laden\u2026" })) : error ? (_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm font-medium text-destructive", children: "Kon de karindeling niet laden." }), _jsx("p", { className: "text-sm text-muted-foreground", children: error.message })] })) : carts.length === 0 ? (_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "Nog geen karindeling beschikbaar voor deze order." }), blocked && (blocked.explanation || blocked.reason) && (_jsxs("p", { className: "text-sm text-destructive", children: [blocked.explanation ?? blocked.reason, blocked.at ? ` (${new Date(blocked.at).toLocaleString("nl-NL")})` : ""] }))] })) : (_jsx("div", { className: "space-y-4", children: carts.map((c) => (_jsxs("div", { className: "rounded-md border border-border", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-border bg-muted/30 px-3 py-2 text-sm", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("span", { className: "font-mono font-medium", children: ["Kar ", c.cart_number] }), _jsxs(Badge, { variant: c.is_complete ? "default" : "secondary", className: "gap-1", children: [c.is_complete && _jsx(CheckCircle2, { className: "h-3 w-3" }), c.is_complete ? "Volledig" : "Deels"] }), c.order_id === null && multiOrder && (_jsx(Badge, { variant: "outline", children: "Gedeelde kar" })), c.carrier_type && (_jsxs(Badge, { variant: "outline", className: "font-mono text-[10px]", children: [c.carrier_type, c.max_layers ? ` · ${c.max_layers} lagen` : ""] }))] }), _jsxs("div", { className: "text-muted-foreground", children: [Number(c.total_layers_used ?? 0), " lagen \u00B7 benutting", " ", Math.round(Number(c.occupancy_pct ?? 0) * 10) / 10, "%"] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Artikel" }), _jsx(TableHead, { className: "text-right", children: "Planten" }), _jsx(TableHead, { className: "text-right", children: "Fusten" }), _jsx(TableHead, { children: "Belading" }), _jsx(TableHead, { className: "text-right", children: "Laag-aandeel" })] }) }), _jsx(TableBody, { children: (c.order_cart_items ?? []).map((i) => {
84
88
  const own = i.order_item_id
85
89
  ? orderNumberByItem.get(i.order_item_id)
86
90
  : undefined;
87
91
  const crates = Number(i.crates ?? 0);
88
- return (_jsxs(TableRow, { children: [_jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { children: i.product_name ?? "—" }), multiOrder && own?.orderNumber && (_jsx(Badge, { variant: own.orderId === orderId ? "default" : "outline", className: "text-[10px]", children: own.orderNumber }))] }) }), _jsx(TableCell, { className: "text-right", children: crates * Number(i.plants_per_crate ?? 0) }), _jsx(TableCell, { className: "text-right", children: crates }), _jsx(TableCell, { className: "font-mono text-xs", children: belading(i) }), _jsxs(TableCell, { className: "text-right", children: [Math.round(Number(i.layer_share_pct ?? 0) * 10) / 10, "%"] })] }, i.id));
92
+ return (_jsxs(TableRow, { children: [_jsx(TableCell, { children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { children: resolveProductName(i.product_name) ?? "—" }), multiOrder && own?.orderNumber && (_jsx(Badge, { variant: own.orderId === dbOrderId ? "default" : "outline", className: "text-[10px]", children: own.orderNumber }))] }) }), _jsx(TableCell, { className: "text-right", children: crates * Number(i.plants_per_crate ?? 0) }), _jsx(TableCell, { className: "text-right", children: crates }), _jsx(TableCell, { className: "font-mono text-xs", children: belading(i) }), _jsxs(TableCell, { className: "text-right", children: [Math.round(Number(i.layer_share_pct ?? 0) * 10) / 10, "%"] })] }, i.id));
89
93
  }) })] })] }, c.id))) })) })] }));
90
94
  }
@@ -10736,6 +10736,24 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
10736
10736
  };
10737
10737
  Relationships: [];
10738
10738
  };
10739
+ maps_job_lease: {
10740
+ Row: {
10741
+ job: string;
10742
+ locked_until: string;
10743
+ updated_at: string;
10744
+ };
10745
+ Insert: {
10746
+ job: string;
10747
+ locked_until?: string;
10748
+ updated_at?: string;
10749
+ };
10750
+ Update: {
10751
+ job?: string;
10752
+ locked_until?: string;
10753
+ updated_at?: string;
10754
+ };
10755
+ Relationships: [];
10756
+ };
10739
10757
  maps_request_queue: {
10740
10758
  Row: {
10741
10759
  attempts: number;
@@ -10797,6 +10815,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
10797
10815
  last_error: string | null;
10798
10816
  last_error_at: string | null;
10799
10817
  last_success_at: string | null;
10818
+ provider: string;
10800
10819
  updated_at: string;
10801
10820
  };
10802
10821
  Insert: {
@@ -10808,6 +10827,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
10808
10827
  last_error?: string | null;
10809
10828
  last_error_at?: string | null;
10810
10829
  last_success_at?: string | null;
10830
+ provider?: string;
10811
10831
  updated_at?: string;
10812
10832
  };
10813
10833
  Update: {
@@ -10819,6 +10839,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
10819
10839
  last_error?: string | null;
10820
10840
  last_error_at?: string | null;
10821
10841
  last_success_at?: string | null;
10842
+ provider?: string;
10822
10843
  updated_at?: string;
10823
10844
  };
10824
10845
  Relationships: [];
@@ -13597,6 +13618,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
13597
13618
  foutmelding: string | null;
13598
13619
  gebruiker_id: string | null;
13599
13620
  gebruiker_naam: string;
13621
+ gebruikte_bron: string | null;
13622
+ gebruikte_layout_id: string | null;
13600
13623
  gestart_op: string | null;
13601
13624
  herkomst: string | null;
13602
13625
  id: string;
@@ -13627,6 +13650,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
13627
13650
  foutmelding?: string | null;
13628
13651
  gebruiker_id?: string | null;
13629
13652
  gebruiker_naam?: string;
13653
+ gebruikte_bron?: string | null;
13654
+ gebruikte_layout_id?: string | null;
13630
13655
  gestart_op?: string | null;
13631
13656
  herkomst?: string | null;
13632
13657
  id?: string;
@@ -13657,6 +13682,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
13657
13682
  foutmelding?: string | null;
13658
13683
  gebruiker_id?: string | null;
13659
13684
  gebruiker_naam?: string;
13685
+ gebruikte_bron?: string | null;
13686
+ gebruikte_layout_id?: string | null;
13660
13687
  gestart_op?: string | null;
13661
13688
  herkomst?: string | null;
13662
13689
  id?: string;
@@ -20326,6 +20353,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
20326
20353
  foutmelding: string | null;
20327
20354
  gebruiker_id: string | null;
20328
20355
  gebruiker_naam: string;
20356
+ gebruikte_bron: string | null;
20357
+ gebruikte_layout_id: string | null;
20329
20358
  gestart_op: string | null;
20330
20359
  herkomst: string | null;
20331
20360
  id: string;
@@ -20447,6 +20476,8 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
20447
20476
  foutmelding: string | null;
20448
20477
  gebruiker_id: string | null;
20449
20478
  gebruiker_naam: string;
20479
+ gebruikte_bron: string | null;
20480
+ gebruikte_layout_id: string | null;
20450
20481
  gestart_op: string | null;
20451
20482
  herkomst: string | null;
20452
20483
  id: string;
@@ -21503,6 +21534,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
21503
21534
  };
21504
21535
  Returns: string;
21505
21536
  };
21537
+ logistics_document_type_map: {
21538
+ Args: {
21539
+ _document_code: string;
21540
+ };
21541
+ Returns: Database["public"]["Enums"]["doc_layout_type"][];
21542
+ };
21506
21543
  logistics_emit_event: {
21507
21544
  Args: {
21508
21545
  p_event_type: string;
@@ -22583,6 +22620,14 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
22583
22620
  };
22584
22621
  Returns: undefined;
22585
22622
  };
22623
+ replace_order_carts: {
22624
+ Args: {
22625
+ p_buffer_id: string;
22626
+ p_carts: import("./types").Json;
22627
+ p_order_id: string;
22628
+ };
22629
+ Returns: import("./types").Json;
22630
+ };
22586
22631
  reset_floriday_sync_cursor: {
22587
22632
  Args: {
22588
22633
  p_connection_id: string;