@flowselections/floriday-verkoop-module 1.0.17 → 1.0.19
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/CreateOrderPage.d.ts.map +1 -1
- package/dist-lib/components/verkoop/CreateOrderPage.js +6 -4
- package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts +6 -0
- package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts.map +1 -0
- package/dist-lib/components/verkoop/EditLocalOrderDialog.js +102 -0
- package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderKarindelingCard.js +26 -28
- package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts +5 -0
- package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts.map +1 -0
- package/dist-lib/components/verkoop/OrderShipmentsCard.js +137 -0
- package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailPage.js +8 -2
- package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailView.js +2 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +4 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.js +2 -2
- package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts.map +1 -1
- package/dist-lib/components/verkoop/VerkoopOrdersPage.js +43 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +436 -149
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +436 -149
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +436 -149
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +452 -153
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cart-lock.functions.d.ts +436 -149
- package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
- package/dist-lib/lib/cart-replan.functions.d.ts +884 -310
- package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
- package/dist-lib/lib/create-order.functions.d.ts +39491 -1379
- package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
- package/dist-lib/lib/create-order.functions.js +814 -64
- package/dist-lib/lib/expand-group-order-items.d.ts +13 -0
- package/dist-lib/lib/expand-group-order-items.d.ts.map +1 -0
- package/dist-lib/lib/expand-group-order-items.js +216 -0
- package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +1321 -460
- package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +436 -149
- package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-public.functions.d.ts +3052 -1043
- package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-writes.functions.d.ts +2180 -745
- package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
- package/dist-lib/lib/order-shipments.functions.d.ts +47382 -0
- package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -0
- package/dist-lib/lib/order-shipments.functions.js +178 -0
- package/dist-lib/lib/salesorders-mapping.d.ts +1 -0
- package/dist-lib/lib/salesorders-mapping.d.ts.map +1 -1
- package/dist-lib/lib/salesorders.functions.d.ts +1321 -460
- package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
- package/dist-lib/lib/tradeitems.functions.d.ts +436 -149
- package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
- package/dist-lib/lib/useSalesOrdersQuery.d.ts.map +1 -1
- package/dist-lib/lib/useSalesOrdersQuery.js +39 -2
- package/package.json +2 -2
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// Bezorgmomenten / deelleveringen voor bestellingen (m.n. reserveringen).
|
|
2
|
+
// - listOrderShipments : haalt shipments + items + totalen per order-item op
|
|
3
|
+
// - createShipment : maakt een nieuw bezorgmoment aan
|
|
4
|
+
// - updateShipmentItem : wijzigt aantallen van een geplande levering
|
|
5
|
+
// - deleteShipment : annuleert een geplande levering
|
|
6
|
+
// - markShipmentShipped : boekt voorraad af via RPC (fysiek + gereserveerd)
|
|
7
|
+
import { createServerFn } from "@tanstack/react-start";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
|
|
10
|
+
const ShipmentItemInput = z.object({
|
|
11
|
+
orderItemId: z.string().uuid(),
|
|
12
|
+
productId: z.string().uuid().nullable().optional(),
|
|
13
|
+
productName: z.string().min(1),
|
|
14
|
+
quantity: z.number().positive(),
|
|
15
|
+
});
|
|
16
|
+
const CreateShipmentInput = z.object({
|
|
17
|
+
orderId: z.string().uuid(),
|
|
18
|
+
deliveryDate: z.string().min(1).nullable().optional(),
|
|
19
|
+
carrierId: z.string().uuid().nullable().optional(),
|
|
20
|
+
deliveryLocationId: z.string().uuid().nullable().optional(),
|
|
21
|
+
notes: z.string().max(2000).nullable().optional(),
|
|
22
|
+
items: z.array(ShipmentItemInput).min(1),
|
|
23
|
+
});
|
|
24
|
+
async function assertRemainingCapacity(supabase, orderId, incoming, ignoreShipmentId) {
|
|
25
|
+
const { data: items } = await supabase
|
|
26
|
+
.from("order_items")
|
|
27
|
+
.select("id, product_name, quantity")
|
|
28
|
+
.eq("order_id", orderId);
|
|
29
|
+
const orderMap = new Map();
|
|
30
|
+
for (const it of items ?? []) {
|
|
31
|
+
orderMap.set(String(it.id), {
|
|
32
|
+
name: String(it.product_name ?? ""),
|
|
33
|
+
qty: Number(it.quantity ?? 0),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const orderItemIds = Array.from(orderMap.keys());
|
|
37
|
+
if (orderItemIds.length === 0)
|
|
38
|
+
throw new Error("Bestelling heeft geen regels.");
|
|
39
|
+
const { data: existing } = await supabase
|
|
40
|
+
.from("order_shipment_items")
|
|
41
|
+
.select("order_item_id, quantity, shipment_id, order_shipments!inner(id, status)")
|
|
42
|
+
.in("order_item_id", orderItemIds);
|
|
43
|
+
const already = new Map();
|
|
44
|
+
for (const row of existing ?? []) {
|
|
45
|
+
const st = row.order_shipments?.status;
|
|
46
|
+
if (st === "cancelled")
|
|
47
|
+
continue;
|
|
48
|
+
if (ignoreShipmentId && row.shipment_id === ignoreShipmentId)
|
|
49
|
+
continue;
|
|
50
|
+
const k = String(row.order_item_id);
|
|
51
|
+
already.set(k, (already.get(k) ?? 0) + Number(row.quantity ?? 0));
|
|
52
|
+
}
|
|
53
|
+
for (const inc of incoming) {
|
|
54
|
+
const meta = orderMap.get(inc.orderItemId);
|
|
55
|
+
if (!meta)
|
|
56
|
+
throw new Error(`Order-regel ${inc.orderItemId} niet gevonden.`);
|
|
57
|
+
const used = already.get(inc.orderItemId) ?? 0;
|
|
58
|
+
const remaining = Math.max(0, meta.qty - used);
|
|
59
|
+
if (inc.quantity > remaining + 1e-6) {
|
|
60
|
+
throw new Error(`Te leveren aantal voor "${meta.name}" (${inc.quantity}) overschrijdt het openstaande aantal (${remaining}).`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export const listOrderShipments = createServerFn({ method: "GET" })
|
|
65
|
+
.middleware([requireSupabaseAuth])
|
|
66
|
+
.inputValidator((input) => z.object({ orderId: z.string().uuid() }).parse(input))
|
|
67
|
+
.handler(async ({ data, context }) => {
|
|
68
|
+
const { data: shipments } = await context.supabase
|
|
69
|
+
.from("order_shipments")
|
|
70
|
+
.select("id, order_id, shipment_number, delivery_date, carrier_id, delivery_location_id, status, shipped_at, notes, created_at, order_shipment_items(id, order_item_id, product_id, product_name, quantity)")
|
|
71
|
+
.eq("order_id", data.orderId)
|
|
72
|
+
.order("shipment_number");
|
|
73
|
+
const { data: items } = await context.supabase
|
|
74
|
+
.from("order_items")
|
|
75
|
+
.select("id, product_id, product_name, quantity, unit, products(plants_per_crate)")
|
|
76
|
+
.eq("order_id", data.orderId);
|
|
77
|
+
// Totalen per order-item: besteld, geleverd (shipped), gepland (planned).
|
|
78
|
+
const shipped = new Map();
|
|
79
|
+
const planned = new Map();
|
|
80
|
+
for (const s of shipments ?? []) {
|
|
81
|
+
const status = s.status;
|
|
82
|
+
const rows = s.order_shipment_items ?? [];
|
|
83
|
+
for (const r of rows) {
|
|
84
|
+
const k = String(r.order_item_id);
|
|
85
|
+
const q = Number(r.quantity ?? 0);
|
|
86
|
+
if (status === "shipped")
|
|
87
|
+
shipped.set(k, (shipped.get(k) ?? 0) + q);
|
|
88
|
+
else if (status === "planned")
|
|
89
|
+
planned.set(k, (planned.get(k) ?? 0) + q);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const totals = (items ?? []).map((it) => {
|
|
93
|
+
const id = String(it.id);
|
|
94
|
+
const ordered = Number(it.quantity ?? 0);
|
|
95
|
+
const del = shipped.get(id) ?? 0;
|
|
96
|
+
const pln = planned.get(id) ?? 0;
|
|
97
|
+
const ppc = Math.max(1, Number(it.products?.plants_per_crate ?? 1));
|
|
98
|
+
return {
|
|
99
|
+
order_item_id: id,
|
|
100
|
+
product_id: it.product_id,
|
|
101
|
+
product_name: String(it.product_name ?? ""),
|
|
102
|
+
unit: String(it.unit ?? "stuks"),
|
|
103
|
+
plants_per_crate: ppc,
|
|
104
|
+
ordered,
|
|
105
|
+
shipped: del,
|
|
106
|
+
planned: pln,
|
|
107
|
+
remaining: Math.max(0, ordered - del - pln),
|
|
108
|
+
outstanding: Math.max(0, ordered - del),
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
return { shipments: shipments ?? [], totals };
|
|
112
|
+
});
|
|
113
|
+
export const createShipment = createServerFn({ method: "POST" })
|
|
114
|
+
.middleware([requireSupabaseAuth])
|
|
115
|
+
.inputValidator((input) => CreateShipmentInput.parse(input))
|
|
116
|
+
.handler(async ({ data, context }) => {
|
|
117
|
+
await assertRemainingCapacity(context.supabase, data.orderId, data.items.map((i) => ({ orderItemId: i.orderItemId, quantity: i.quantity })));
|
|
118
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server");
|
|
119
|
+
const { data: shipment, error } = await supabaseAdmin.from("order_shipments")
|
|
120
|
+
.insert({
|
|
121
|
+
order_id: data.orderId,
|
|
122
|
+
delivery_date: data.deliveryDate ?? null,
|
|
123
|
+
carrier_id: data.carrierId ?? null,
|
|
124
|
+
delivery_location_id: data.deliveryLocationId ?? null,
|
|
125
|
+
notes: data.notes ?? null,
|
|
126
|
+
status: "planned",
|
|
127
|
+
})
|
|
128
|
+
.select("id")
|
|
129
|
+
.single();
|
|
130
|
+
if (error)
|
|
131
|
+
throw new Error(error.message);
|
|
132
|
+
const rows = data.items.map((i) => ({
|
|
133
|
+
shipment_id: shipment.id,
|
|
134
|
+
order_item_id: i.orderItemId,
|
|
135
|
+
product_id: i.productId ?? null,
|
|
136
|
+
product_name: i.productName,
|
|
137
|
+
quantity: i.quantity,
|
|
138
|
+
}));
|
|
139
|
+
const { error: itemsErr } = await supabaseAdmin.from("order_shipment_items").insert(rows);
|
|
140
|
+
if (itemsErr) {
|
|
141
|
+
await supabaseAdmin.from("order_shipments").delete().eq("id", shipment.id);
|
|
142
|
+
throw new Error(itemsErr.message);
|
|
143
|
+
}
|
|
144
|
+
return { ok: true, shipmentId: shipment.id };
|
|
145
|
+
});
|
|
146
|
+
export const markShipmentShipped = createServerFn({ method: "POST" })
|
|
147
|
+
.middleware([requireSupabaseAuth])
|
|
148
|
+
.inputValidator((input) => z.object({ shipmentId: z.string().uuid() }).parse(input))
|
|
149
|
+
.handler(async ({ data }) => {
|
|
150
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server");
|
|
151
|
+
const { error } = await supabaseAdmin.rpc("mark_shipment_shipped", {
|
|
152
|
+
p_shipment_id: data.shipmentId,
|
|
153
|
+
});
|
|
154
|
+
if (error)
|
|
155
|
+
throw new Error(error.message);
|
|
156
|
+
return { ok: true };
|
|
157
|
+
});
|
|
158
|
+
export const cancelShipment = createServerFn({ method: "POST" })
|
|
159
|
+
.middleware([requireSupabaseAuth])
|
|
160
|
+
.inputValidator((input) => z.object({ shipmentId: z.string().uuid() }).parse(input))
|
|
161
|
+
.handler(async ({ data, context }) => {
|
|
162
|
+
// Alleen planned mag geannuleerd / verwijderd worden — shipped is definitief.
|
|
163
|
+
const { data: s } = await context.supabase
|
|
164
|
+
.from("order_shipments")
|
|
165
|
+
.select("status")
|
|
166
|
+
.eq("id", data.shipmentId)
|
|
167
|
+
.maybeSingle();
|
|
168
|
+
if (!s)
|
|
169
|
+
throw new Error("Bezorgmoment niet gevonden.");
|
|
170
|
+
if (s.status === "shipped") {
|
|
171
|
+
throw new Error("Reeds verzonden bezorgmomenten kunnen niet worden geannuleerd.");
|
|
172
|
+
}
|
|
173
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server");
|
|
174
|
+
const { error } = await supabaseAdmin.from("order_shipments").delete().eq("id", data.shipmentId);
|
|
175
|
+
if (error)
|
|
176
|
+
throw new Error(error.message);
|
|
177
|
+
return { ok: true };
|
|
178
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salesorders-mapping.d.ts","sourceRoot":"","sources":["../../src/lib/salesorders-mapping.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"salesorders-mapping.d.ts","sourceRoot":"","sources":["../../src/lib/salesorders-mapping.ts"],"names":[],"mappings":"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"}
|