@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.
- package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderKarindelingCard.js +7 -3
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +45 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +45 -0
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +45 -0
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +45 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cart-lock.functions.d.ts +45 -0
- package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
- package/dist-lib/lib/cart-planning-settings.functions.d.ts +495 -0
- package/dist-lib/lib/cart-planning-settings.functions.d.ts.map +1 -1
- package/dist-lib/lib/cart-replan.functions.d.ts +137 -26
- package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
- package/dist-lib/lib/cart-replan.functions.js +93 -63
- package/dist-lib/lib/create-order.functions.d.ts +765 -0
- package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +135 -0
- package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +45 -0
- package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-mirror.functions.d.ts +45 -0
- package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-public.functions.d.ts +315 -0
- package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-writes.functions.d.ts +225 -0
- package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
- package/dist-lib/lib/invoice-timing.functions.d.ts +180 -0
- package/dist-lib/lib/invoice-timing.functions.d.ts.map +1 -1
- package/dist-lib/lib/invoice-timing.functions.js +12 -6
- package/dist-lib/lib/load-carriers.functions.d.ts +45 -0
- package/dist-lib/lib/load-carriers.functions.d.ts.map +1 -1
- package/dist-lib/lib/logistics-engine.functions.d.ts +225 -0
- package/dist-lib/lib/logistics-engine.functions.d.ts.map +1 -1
- package/dist-lib/lib/logistics-engine.functions.js +10 -5
- package/dist-lib/lib/logistics-stock.functions.d.ts +90 -0
- package/dist-lib/lib/logistics-stock.functions.d.ts.map +1 -1
- package/dist-lib/lib/order-addresses.functions.d.ts +45 -0
- package/dist-lib/lib/order-addresses.functions.d.ts.map +1 -1
- package/dist-lib/lib/order-addresses.functions.js +15 -9
- package/dist-lib/lib/order-buffers.functions.d.ts +135 -0
- package/dist-lib/lib/order-buffers.functions.d.ts.map +1 -1
- package/dist-lib/lib/order-buffers.functions.js +10 -10
- package/dist-lib/lib/order-carrier.functions.d.ts +90 -0
- package/dist-lib/lib/order-carrier.functions.d.ts.map +1 -1
- package/dist-lib/lib/order-carrier.functions.js +20 -11
- package/dist-lib/lib/order-pickup.functions.d.ts +90 -0
- package/dist-lib/lib/order-pickup.functions.d.ts.map +1 -1
- package/dist-lib/lib/order-pickup.functions.js +20 -11
- package/dist-lib/lib/order-row.server.d.ts +24 -0
- package/dist-lib/lib/order-row.server.d.ts.map +1 -0
- package/dist-lib/lib/order-row.server.js +58 -0
- package/dist-lib/lib/order-shipments.functions.d.ts +180 -0
- package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -1
- package/dist-lib/lib/order-shipments.functions.js +11 -6
- package/dist-lib/lib/product-name.d.ts +3 -0
- package/dist-lib/lib/product-name.d.ts.map +1 -0
- package/dist-lib/lib/product-name.js +43 -0
- package/dist-lib/lib/salesorders-list.functions.d.ts +45 -0
- package/dist-lib/lib/salesorders-list.functions.d.ts.map +1 -1
- package/dist-lib/lib/salesorders.functions.d.ts +225 -0
- package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
- package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +90 -0
- package/dist-lib/lib/stock-consumption-alerts.functions.d.ts.map +1 -1
- package/dist-lib/lib/tradeitems.functions.d.ts +45 -0
- package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
- 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;
|
|
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 ===
|
|
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;
|