@flowselections/floriday-verkoop-module 1.0.47 → 1.0.49

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 (72) hide show
  1. package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
  2. package/dist-lib/components/verkoop/OrderKarindelingCard.js +5 -1
  3. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts.map +1 -1
  4. package/dist-lib/components/verkoop/SalesOrderDetailView.js +10 -17
  5. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts.map +1 -1
  6. package/dist-lib/components/verkoop/SalesOrdersTable.js +5 -1
  7. package/dist-lib/integrations/supabase/auth-middleware.d.ts +8 -0
  8. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  9. package/dist-lib/integrations/supabase/client.d.ts +8 -0
  10. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  11. package/dist-lib/integrations/supabase/client.server.d.ts +8 -0
  12. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  13. package/dist-lib/integrations/supabase/types.d.ts +8 -0
  14. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  15. package/dist-lib/lib/cart-lock.functions.d.ts +8 -0
  16. package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
  17. package/dist-lib/lib/cart-planning-settings.functions.d.ts +88 -0
  18. package/dist-lib/lib/cart-planning-settings.functions.d.ts.map +1 -1
  19. package/dist-lib/lib/cart-replan.functions.d.ts +24 -0
  20. package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
  21. package/dist-lib/lib/create-order.functions.d.ts +136 -0
  22. package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
  23. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +24 -0
  24. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
  25. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +8 -0
  26. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
  27. package/dist-lib/lib/floriday-mirror.functions.d.ts +8 -0
  28. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  29. package/dist-lib/lib/floriday-mirror.functions.js +11 -0
  30. package/dist-lib/lib/floriday-public.functions.d.ts +56 -0
  31. package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
  32. package/dist-lib/lib/floriday-writes.functions.d.ts +40 -0
  33. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  34. package/dist-lib/lib/invoice-timing.functions.d.ts +32 -0
  35. package/dist-lib/lib/invoice-timing.functions.d.ts.map +1 -1
  36. package/dist-lib/lib/load-carrier-labels.d.ts +13 -0
  37. package/dist-lib/lib/load-carrier-labels.d.ts.map +1 -1
  38. package/dist-lib/lib/load-carrier-labels.js +20 -0
  39. package/dist-lib/lib/load-carriers.functions.d.ts +8 -0
  40. package/dist-lib/lib/load-carriers.functions.d.ts.map +1 -1
  41. package/dist-lib/lib/logistics-engine.functions.d.ts +40 -0
  42. package/dist-lib/lib/logistics-engine.functions.d.ts.map +1 -1
  43. package/dist-lib/lib/logistics-stock.functions.d.ts +16 -0
  44. package/dist-lib/lib/logistics-stock.functions.d.ts.map +1 -1
  45. package/dist-lib/lib/order-addresses.functions.d.ts +8 -0
  46. package/dist-lib/lib/order-addresses.functions.d.ts.map +1 -1
  47. package/dist-lib/lib/order-buffers.functions.d.ts +24 -0
  48. package/dist-lib/lib/order-buffers.functions.d.ts.map +1 -1
  49. package/dist-lib/lib/order-carrier.functions.d.ts +16 -0
  50. package/dist-lib/lib/order-carrier.functions.d.ts.map +1 -1
  51. package/dist-lib/lib/order-pickup.functions.d.ts +16 -0
  52. package/dist-lib/lib/order-pickup.functions.d.ts.map +1 -1
  53. package/dist-lib/lib/order-shipments.functions.d.ts +32 -0
  54. package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -1
  55. package/dist-lib/lib/order-status.d.ts +7 -10
  56. package/dist-lib/lib/order-status.d.ts.map +1 -1
  57. package/dist-lib/lib/order-status.js +6 -3
  58. package/dist-lib/lib/salesorders-list.functions.d.ts +8 -0
  59. package/dist-lib/lib/salesorders-list.functions.d.ts.map +1 -1
  60. package/dist-lib/lib/salesorders-list.server.d.ts.map +1 -1
  61. package/dist-lib/lib/salesorders-list.server.js +24 -23
  62. package/dist-lib/lib/salesorders-mapping.d.ts +24 -0
  63. package/dist-lib/lib/salesorders-mapping.d.ts.map +1 -1
  64. package/dist-lib/lib/salesorders-mapping.js +64 -13
  65. package/dist-lib/lib/salesorders.functions.d.ts +40 -0
  66. package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
  67. package/dist-lib/lib/salesorders.functions.js +43 -9
  68. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +16 -0
  69. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts.map +1 -1
  70. package/dist-lib/lib/tradeitems.functions.d.ts +8 -0
  71. package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
  72. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"OrderKarindelingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderKarindelingCard.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAuG/D,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,2CA4OvE"}
1
+ {"version":3,"file":"OrderKarindelingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderKarindelingCard.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA6G/D,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,2CA4OvE"}
@@ -8,6 +8,7 @@ import { useEffect, useMemo, useState } from "react";
8
8
  import { Badge, Card, CardContent, CardHeader, CardTitle, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@flowselections/core";
9
9
  import { CheckCircle2, Lock } from "lucide-react";
10
10
  import { supabase } from "../../integrations/supabase/client";
11
+ import { formatBeladingNotation } from "../../lib/load-carrier-labels";
11
12
  import { planCarts } from "../../lib/cart-planner";
12
13
  import { expandOrderItemsForPlanner } from "../../lib/expand-group-order-items";
13
14
  function deriveCartsFromFloriday(order) {
@@ -64,7 +65,10 @@ function deriveCartsFromFloriday(order) {
64
65
  return carts;
65
66
  }
66
67
  function belading(i) {
67
- return `${i.plants_per_crate}×${i.crates_per_layer}×${i.layers_per_cart}`;
68
+ // Eén notatie in de hele module: lagen × fusten/laag × planten/fust
69
+ // (Floriday-UI-volgorde, bewust anders dan de API-veldvolgorde).
70
+ return (formatBeladingNotation(i.layers_per_cart, i.crates_per_layer, i.plants_per_crate) ??
71
+ `${i.layers_per_cart}×${i.crates_per_layer}×${i.plants_per_crate}`);
68
72
  }
69
73
  export function OrderKarindelingCard({ order }) {
70
74
  // Lokale/mailbox-orders hebben een prefix (`local:`, `mailbox-proposal:`) in
@@ -1 +1 @@
1
- {"version":3,"file":"SalesOrderDetailView.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/SalesOrderDetailView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAiKnE,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,cAAc,EACd,eAAuB,GACxB,EAAE;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,2CAoVA"}
1
+ {"version":3,"file":"SalesOrderDetailView.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/SalesOrderDetailView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AA0JnE,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,cAAc,EACd,eAAuB,GACxB,EAAE;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,2CAuWA"}
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { CheckCircle2, ImageIcon, MapPin, Truck } from "lucide-react";
3
3
  import { useQuery } from "@tanstack/react-query";
4
4
  import { useServerFn } from "@tanstack/react-start";
5
- import { formatLoadUnits } from "../../lib/load-carrier-labels";
5
+ import { formatBeladingNotation, formatLoadUnits } from "../../lib/load-carrier-labels";
6
+ import { orderStageLabel, orderStageBadgeClass } from "../../lib/order-status";
6
7
  import { getOrderAddresses } from "../../lib/order-addresses.functions";
7
8
  import { OrderKarindelingCard } from "./OrderKarindelingCard";
8
9
  import { OrderAfleverbrievenCard } from "./OrderAfleverbrievenCard";
@@ -93,14 +94,6 @@ const PAYMENT_PROVIDER_LABELS = {
93
94
  PLANTION: "Plantion",
94
95
  DIRECT: "Direct",
95
96
  };
96
- const STATUS_LABELS = {
97
- COMMITTED: "Order bevestigd",
98
- CONFIRMED: "Order bevestigd",
99
- SHIPPED: "Verzonden",
100
- DELIVERED: "Geleverd",
101
- CANCELLED: "Geannuleerd",
102
- OPEN: "Open",
103
- };
104
97
  function initials(name) {
105
98
  return name
106
99
  .split(/\s+/)
@@ -143,9 +136,11 @@ export function SalesOrderDetailView({ order, sellerFallback, hideKarindeling =
143
136
  const beladingParts = [];
144
137
  if (vbnCode)
145
138
  beladingParts.push(String(vbnCode));
146
- if (layersPerLoadCarrier && packagesPerLayer && piecesPerPackage) {
147
- beladingParts.push(`${piecesPerPackage}×${packagesPerLayer}×${layersPerLoadCarrier}`);
148
- }
139
+ // Notatie = lagen × verpakkingen/laag × stuks/verpakking (Floriday-UI-volgorde,
140
+ // bewust anders dan de API-veldvolgorde). Zie formatBeladingNotation.
141
+ const beladingNotation = formatBeladingNotation(layersPerLoadCarrier, packagesPerLayer, piecesPerPackage);
142
+ if (beladingNotation)
143
+ beladingParts.push(beladingNotation);
149
144
  if (lcShort)
150
145
  beladingParts.push(lcShort);
151
146
  const belading = beladingParts.length > 0 ? beladingParts.join(" - ") : "—";
@@ -226,10 +221,8 @@ export function SalesOrderDetailView({ order, sellerFallback, hideKarindeling =
226
221
  pickStr(cRaw.rfhCompanyAccountId) ??
227
222
  "—";
228
223
  const customerPhone = pickStr(c.phone) ?? pickStr(c.phone_number) ?? pickStr(c.contact_person?.phone) ?? "—";
229
- const statusKey = String(o.status ?? "").toUpperCase();
230
- const bestellingLabel = order.status.isCancelled
231
- ? "Geannuleerd"
232
- : STATUS_LABELS[statusKey] ?? (order.status.isShipped ? "Verzonden" : order.status.isConfirmed ? "Order bevestigd" : "Open");
224
+ // Centrale weergavestatus (orders.status is leidend, zie order-status.ts).
225
+ const bestellingLabel = orderStageLabel(order.stage ?? (order.status.isCancelled ? "cancelled" : "incoming"));
233
226
  return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex items-center gap-3 rounded-md border border-border bg-muted/30 p-3", children: [_jsx("div", { className: "flex h-12 w-12 shrink-0 items-center justify-center overflow-hidden rounded-md bg-muted", children: order.imageUrl ? (_jsx("img", { src: order.imageUrl, alt: "", className: "h-full w-full object-cover" })) : (_jsx(ImageIcon, { className: "h-6 w-6 text-muted-foreground" })) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "truncate text-base font-semibold text-foreground", children: [order.productName, o.tradeItemVersion ? (_jsxs("span", { className: "ml-2 text-xs font-normal text-muted-foreground", children: ["\u00B7 v", o.tradeItemVersion] })) : null] }), _jsx("div", { className: "truncate text-xs text-muted-foreground", children: order.orderNumber || order.sku || "—" })] })] }), _jsxs("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-[1fr_360px]", children: [_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx(SectionTitle, { children: "Verkooporder" }), _jsx(Row, { label: "Ordernummer", children: order.orderNumber || "—" }), _jsx(Row, { label: "Handelsvorm", children: tradingType }), _jsx(Row, { label: "Bestelmoment", children: fmtDateTime(order.orderedAt) }), _jsx(Row, { label: "Aantal", children: _jsxs("div", { className: "flex flex-wrap gap-4", children: [_jsxs("div", { children: [formatLoadUnits(order.fustCount, order.crateTypeName), " fusten"] }), _jsxs("div", { children: [formatLoadUnits(order.karCount, order.cartTypeName), " karren"] })] }) }), _jsx(Row, { label: "Belading", children: belading }), _jsx(Row, { label: "Klant referentie", children: klantReferentie }), _jsx(Row, { label: "Floriday-referentie", children: floridayRef }), _jsx(Row, { label: "Verkoopkanaal", children: verkoopkanaal }), _jsx(Row, { label: "Financi\u00EBle afhandeling", children: financial }), _jsx(Row, { label: "Verkoper", children: sellerName ? (_jsxs("span", { className: "inline-flex items-center gap-2", children: [_jsx("span", { className: "inline-flex h-6 w-6 items-center justify-center rounded-full bg-muted text-[10px] font-semibold text-muted-foreground", children: initials(sellerName) }), sellerName] })) : ("—") })] }), _jsxs("div", { children: [_jsx(SectionTitle, { children: "Levering" }), _jsx(Row, { label: "Afleverdatum", children: fmtDateTime(order.deliveryAt) }), _jsx(Row, { label: "Incoterm", children: incoterm }), _jsx(Row, { label: "Afleveradres", children: _jsx(AddressCard, { icon: _jsx(MapPin, { className: "h-5 w-5" }), lines: resolvedAddresses?.delivery
234
227
  ? [
235
228
  resolvedAddresses.delivery.name,
@@ -252,5 +245,5 @@ export function SalesOrderDetailView({ order, sellerFallback, hideKarindeling =
252
245
  .join(" "),
253
246
  resolvedAddresses.pickup.country,
254
247
  ].filter((v) => !!v && v.trim().length > 0)
255
- : [], extra: resolvedAddresses?.pickup?.gln ?? null }) }), _jsx(Row, { label: "Vervoerder", children: _jsx(OrderCarrierPicker, { orderId: String(order.id), locked: !!order.isReservation }) }), _jsx(Row, { label: "Ophaalmoment", children: _jsx(OrderPickupMomentPicker, { orderId: String(order.id) }) })] }), _jsxs("div", { children: [_jsx(SectionTitle, { children: "Klant" }), _jsx(Row, { label: "Naam", children: _jsx("span", { className: "font-medium", children: customerName }) }), _jsx(Row, { label: "GLN", children: customerGln }), _jsx(Row, { label: "Administratienummer", children: customerAdmin }), _jsx(Row, { label: "Telefoonnummer", children: customerPhone })] })] }), _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "rounded-md border border-border p-4", children: [_jsx("div", { className: "mb-3 text-sm font-semibold", children: "Prijs per stuk" }), _jsxs("div", { className: "space-y-2 text-sm", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Product" }), _jsxs("span", { children: [oldProductPrice !== null && (_jsx("span", { className: "mr-2 text-destructive line-through", children: eurFlex.format(oldProductPrice) })), eurFlex.format(productUnit)] })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Transportkosten" }), _jsx("span", { children: eurFlex.format(transportPerPiece) })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Inkoopprijs" }), _jsx("span", { children: eurFlex.format(purchaseUnit) })] }), _jsxs("div", { className: "mt-2 flex justify-between border-t border-border pt-2 font-semibold", children: [_jsx("span", { children: "Totaal" }), _jsxs("span", { children: [_jsxs("span", { className: "mr-2 text-xs font-normal text-muted-foreground", children: ["(", packages, " \u00D7 ", piecesPerPackage, " \u00D7 ", eurFlex.format(productUnit), ")"] }), eurFlex.format(totalAmount)] })] })] })] }), _jsxs("div", { className: "rounded-md border border-border p-4", children: [_jsx("div", { className: "mb-3 text-sm font-semibold", children: "Status" }), _jsxs("div", { className: "space-y-3 text-sm", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-muted-foreground", children: "Bestelling" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CheckCircle2, { className: "h-4 w-4 text-emerald-600" }), bestellingLabel] })] }), hasCorrection && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-muted-foreground", children: "Correctie" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CheckCircle2, { className: "h-4 w-4 text-emerald-600" }), "Correctie is verwerkt"] })] }))] })] })] })] }), _jsx(OrderShipmentsCard, { order: order }), !hideKarindeling && _jsx(OrderKarindelingCard, { order: order }), o?.salesOrderId ? (_jsxs(_Fragment, { children: [_jsx(OrderControlStatusCard, { floridayId: String(o.salesOrderId), isControlled: order.status.isControlled, controlledAt: order.status.controlledAt }), _jsx(AutoFulfillmentStatusCard, { salesOrderId: String(o.salesOrderId) }), _jsx(OrderAfleverbrievenCard, { salesOrderId: String(o.salesOrderId), orderNumber: order.orderNumber ?? undefined })] })) : null] }));
248
+ : [], extra: resolvedAddresses?.pickup?.gln ?? null }) }), _jsx(Row, { label: "Vervoerder", children: _jsx(OrderCarrierPicker, { orderId: String(order.id), locked: !!order.isReservation }) }), _jsx(Row, { label: "Ophaalmoment", children: _jsx(OrderPickupMomentPicker, { orderId: String(order.id) }) })] }), _jsxs("div", { children: [_jsx(SectionTitle, { children: "Klant" }), _jsx(Row, { label: "Naam", children: _jsx("span", { className: "font-medium", children: customerName }) }), _jsx(Row, { label: "GLN", children: customerGln }), _jsx(Row, { label: "Administratienummer", children: customerAdmin }), _jsx(Row, { label: "Telefoonnummer", children: customerPhone })] })] }), _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "rounded-md border border-border p-4", children: [_jsx("div", { className: "mb-3 text-sm font-semibold", children: "Prijs per stuk" }), _jsxs("div", { className: "space-y-2 text-sm", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Product" }), _jsxs("span", { children: [oldProductPrice !== null && (_jsx("span", { className: "mr-2 text-destructive line-through", children: eurFlex.format(oldProductPrice) })), eurFlex.format(productUnit)] })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Transportkosten" }), _jsx("span", { children: eurFlex.format(transportPerPiece) })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Inkoopprijs" }), _jsx("span", { children: eurFlex.format(purchaseUnit) })] }), _jsxs("div", { className: "mt-2 flex justify-between border-t border-border pt-2 font-semibold", children: [_jsx("span", { children: "Totaal" }), _jsxs("span", { children: [_jsxs("span", { className: "mr-2 text-xs font-normal text-muted-foreground", children: ["(", packages, " \u00D7 ", piecesPerPackage, " \u00D7 ", eurFlex.format(productUnit), ")"] }), eurFlex.format(totalAmount)] })] })] })] }), _jsxs("div", { className: "rounded-md border border-border p-4", children: [_jsx("div", { className: "mb-3 text-sm font-semibold", children: "Status" }), _jsxs("div", { className: "space-y-3 text-sm", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-muted-foreground", children: "Bestelling" }), _jsx("span", { className: `rounded-full px-2 py-0.5 text-xs font-medium ${orderStageBadgeClass(order.stage ?? "incoming")}`, children: bestellingLabel })] }), order.floridayFulfilled && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-muted-foreground", children: "Floriday" }), _jsx("span", { className: "rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground", title: "Administratief doorgegeven aan Floriday. Dit bepaalt de orderstatus niet.", children: "Doorgegeven aan Floriday" })] })), hasCorrection && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-muted-foreground", children: "Correctie" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CheckCircle2, { className: "h-4 w-4 text-emerald-600" }), "Correctie is verwerkt"] })] }))] })] })] })] }), _jsx(OrderShipmentsCard, { order: order }), !hideKarindeling && _jsx(OrderKarindelingCard, { order: order }), o?.salesOrderId ? (_jsxs(_Fragment, { children: [_jsx(OrderControlStatusCard, { floridayId: String(o.salesOrderId), isControlled: order.status.isControlled, controlledAt: order.status.controlledAt }), _jsx(AutoFulfillmentStatusCard, { salesOrderId: String(o.salesOrderId) }), _jsx(OrderAfleverbrievenCard, { salesOrderId: String(o.salesOrderId), orderNumber: order.orderNumber ?? undefined })] })) : null] }));
256
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SalesOrdersTable.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/SalesOrdersTable.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAmCnE,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAG1D;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,OAAO,EACP,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,EAAE;IACD,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7C,2CAkPA"}
1
+ {"version":3,"file":"SalesOrdersTable.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/SalesOrdersTable.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAmDnE,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAG1D;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,OAAO,EACP,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,EAAE;IACD,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7C,2CAkPA"}
@@ -34,7 +34,11 @@ function formatDelivery(iso) {
34
34
  }
35
35
  function StatusTag({ order }) {
36
36
  const stage = order.stage ?? "incoming";
37
- return (_jsx(Badge, { variant: "outline", className: `border-transparent ${orderStageBadgeClass(stage)}`, children: orderStageLabel(stage) }));
37
+ const bufferSize = order.bufferSize ?? 1;
38
+ const fulfilledCount = order.floridayFulfilledCount ?? (order.floridayFulfilled ? 1 : 0);
39
+ return (_jsxs("div", { className: "flex flex-col items-start gap-1", children: [_jsx(Badge, { variant: "outline", className: `border-transparent ${orderStageBadgeClass(stage)}`, children: orderStageLabel(stage) }), fulfilledCount > 0 && (_jsx(Badge, { variant: "outline", className: "border-transparent bg-muted text-[11px] font-normal text-muted-foreground", title: "Administratief doorgegeven aan Floriday. Dit bepaalt de orderstatus niet.", children: bufferSize > 1
40
+ ? `${fulfilledCount} van ${bufferSize} doorgegeven aan Floriday`
41
+ : "Doorgegeven aan Floriday" }))] }));
38
42
  }
39
43
  /** Stabiele rij-id: buffers zijn serverside al samengevouwen tot één rij. */
40
44
  export function salesOrderRowId(row) {
@@ -21439,6 +21439,14 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
21439
21439
  };
21440
21440
  Returns: import("./types").Json;
21441
21441
  };
21442
+ logistics_plan_block: {
21443
+ Args: {
21444
+ p_details?: import("./types").Json;
21445
+ p_order_ids: string[];
21446
+ p_reason: string;
21447
+ };
21448
+ Returns: number;
21449
+ };
21442
21450
  logistics_plan_buffer_sql: {
21443
21451
  Args: {
21444
21452
  p_buffer_id: string;