@flowselections/floriday-verkoop-module 1.0.94 → 1.0.98

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 (174) hide show
  1. package/dist-lib/components/verkoop/AnalyticsCards.d.ts +1 -1
  2. package/dist-lib/components/verkoop/AnalyticsCards.d.ts.map +1 -1
  3. package/dist-lib/components/verkoop/CartAssignmentWizard.d.ts +1 -1
  4. package/dist-lib/components/verkoop/CartAssignmentWizard.d.ts.map +1 -1
  5. package/dist-lib/components/verkoop/CartLayersDialog.d.ts +1 -1
  6. package/dist-lib/components/verkoop/CartLayersDialog.d.ts.map +1 -1
  7. package/dist-lib/components/verkoop/CreateOrderPage.d.ts +1 -1
  8. package/dist-lib/components/verkoop/CreateOrderPage.d.ts.map +1 -1
  9. package/dist-lib/components/verkoop/CreateOrderPage.js +82 -43
  10. package/dist-lib/components/verkoop/DiagnoseConnectionDialog.d.ts +1 -1
  11. package/dist-lib/components/verkoop/DiagnoseConnectionDialog.d.ts.map +1 -1
  12. package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts +1 -1
  13. package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts.map +1 -1
  14. package/dist-lib/components/verkoop/EngineBufferCard.d.ts +1 -1
  15. package/dist-lib/components/verkoop/EngineBufferCard.d.ts.map +1 -1
  16. package/dist-lib/components/verkoop/FloridayStageLine.d.ts +2 -2
  17. package/dist-lib/components/verkoop/FloridayStageLine.d.ts.map +1 -1
  18. package/dist-lib/components/verkoop/InvoiceTimingSettings.d.ts +1 -1
  19. package/dist-lib/components/verkoop/InvoiceTimingSettings.d.ts.map +1 -1
  20. package/dist-lib/components/verkoop/OrderAfleverbrievenCard.d.ts +1 -1
  21. package/dist-lib/components/verkoop/OrderAfleverbrievenCard.d.ts.map +1 -1
  22. package/dist-lib/components/verkoop/OrderCarrierPicker.d.ts +1 -1
  23. package/dist-lib/components/verkoop/OrderCarrierPicker.d.ts.map +1 -1
  24. package/dist-lib/components/verkoop/OrderControlStatusCard.d.ts +1 -1
  25. package/dist-lib/components/verkoop/OrderControlStatusCard.d.ts.map +1 -1
  26. package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts +1 -1
  27. package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
  28. package/dist-lib/components/verkoop/OrderKarindelingCard.js +1 -1
  29. package/dist-lib/components/verkoop/OrderLinePackingCard.d.ts +1 -1
  30. package/dist-lib/components/verkoop/OrderLinePackingCard.d.ts.map +1 -1
  31. package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts +1 -1
  32. package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts.map +1 -1
  33. package/dist-lib/components/verkoop/OrderPickupMomentPicker.js +2 -1
  34. package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts +1 -1
  35. package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts.map +1 -1
  36. package/dist-lib/components/verkoop/PlanCoverageBadge.d.ts +1 -1
  37. package/dist-lib/components/verkoop/PlanCoverageBadge.d.ts.map +1 -1
  38. package/dist-lib/components/verkoop/PlanCoverageBadge.js +7 -5
  39. package/dist-lib/components/verkoop/ProductDimensionsSettings.d.ts +1 -1
  40. package/dist-lib/components/verkoop/ProductDimensionsSettings.d.ts.map +1 -1
  41. package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts +1 -1
  42. package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts.map +1 -1
  43. package/dist-lib/components/verkoop/SalesOrderDetailPage.js +6 -6
  44. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts +1 -1
  45. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts.map +1 -1
  46. package/dist-lib/components/verkoop/SalesOrderDetailView.js +2 -1
  47. package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts +1 -1
  48. package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts.map +1 -1
  49. package/dist-lib/components/verkoop/SalesOrdersFilters.d.ts +1 -1
  50. package/dist-lib/components/verkoop/SalesOrdersFilters.d.ts.map +1 -1
  51. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +2 -1
  52. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts.map +1 -1
  53. package/dist-lib/components/verkoop/SearchableSelect.d.ts +1 -1
  54. package/dist-lib/components/verkoop/SearchableSelect.d.ts.map +1 -1
  55. package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.d.ts +1 -1
  56. package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.d.ts.map +1 -1
  57. package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts +1 -1
  58. package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts.map +1 -1
  59. package/dist-lib/components/verkoop/WeekCalendar.d.ts +1 -1
  60. package/dist-lib/components/verkoop/WeekCalendar.d.ts.map +1 -1
  61. package/dist-lib/integrations/supabase/client.js +1 -1
  62. package/dist-lib/integrations/supabase/client.server.js +1 -1
  63. package/dist-lib/integrations/supabase/types.d.ts +253 -0
  64. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  65. package/dist-lib/lib/carrier-availability.d.ts +0 -28
  66. package/dist-lib/lib/carrier-availability.d.ts.map +1 -1
  67. package/dist-lib/lib/carrier-availability.js +3 -141
  68. package/dist-lib/lib/cart-replan.functions.d.ts +5 -0
  69. package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
  70. package/dist-lib/lib/cart-replan.functions.js +25 -1
  71. package/dist-lib/lib/create-order.functions.d.ts +5 -0
  72. package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
  73. package/dist-lib/lib/create-order.functions.js +81 -54
  74. package/dist-lib/lib/departure-preview.check.d.ts +2 -0
  75. package/dist-lib/lib/departure-preview.check.d.ts.map +1 -0
  76. package/dist-lib/lib/departure-preview.check.js +37 -0
  77. package/dist-lib/lib/departure-preview.d.ts +47 -0
  78. package/dist-lib/lib/departure-preview.d.ts.map +1 -0
  79. package/dist-lib/lib/departure-preview.functions.d.ts +13 -0
  80. package/dist-lib/lib/departure-preview.functions.d.ts.map +1 -0
  81. package/dist-lib/lib/departure-preview.functions.js +17 -0
  82. package/dist-lib/lib/departure-preview.js +70 -0
  83. package/dist-lib/lib/departure-preview.server.d.ts +10 -0
  84. package/dist-lib/lib/departure-preview.server.d.ts.map +1 -0
  85. package/dist-lib/lib/departure-preview.server.js +29 -0
  86. package/dist-lib/lib/floriday-external-fulfillment.check.d.ts +2 -0
  87. package/dist-lib/lib/floriday-external-fulfillment.check.d.ts.map +1 -0
  88. package/dist-lib/lib/floriday-external-fulfillment.check.js +21 -0
  89. package/dist-lib/lib/floriday-external-fulfillment.d.ts +19 -0
  90. package/dist-lib/lib/floriday-external-fulfillment.d.ts.map +1 -0
  91. package/dist-lib/lib/floriday-external-fulfillment.js +24 -0
  92. package/dist-lib/lib/floriday-external-fulfillment.server.d.ts +5 -0
  93. package/dist-lib/lib/floriday-external-fulfillment.server.d.ts.map +1 -0
  94. package/dist-lib/lib/floriday-external-fulfillment.server.js +110 -0
  95. package/dist-lib/lib/floriday-fulfillment-status.server.d.ts +2 -0
  96. package/dist-lib/lib/floriday-fulfillment-status.server.d.ts.map +1 -1
  97. package/dist-lib/lib/floriday-fulfillment-status.server.js +3 -0
  98. package/dist-lib/lib/floriday-line-key.check.d.ts +2 -0
  99. package/dist-lib/lib/floriday-line-key.check.d.ts.map +1 -0
  100. package/dist-lib/lib/floriday-line-key.check.js +31 -0
  101. package/dist-lib/lib/floriday-line-key.d.ts +12 -0
  102. package/dist-lib/lib/floriday-line-key.d.ts.map +1 -0
  103. package/dist-lib/lib/floriday-line-key.js +20 -0
  104. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  105. package/dist-lib/lib/floriday-mirror.functions.js +38 -2
  106. package/dist-lib/lib/logistics-engine.functions.d.ts +1 -1
  107. package/dist-lib/lib/order-cart-count.server.d.ts +8 -0
  108. package/dist-lib/lib/order-cart-count.server.d.ts.map +1 -0
  109. package/dist-lib/lib/order-cart-count.server.js +69 -0
  110. package/dist-lib/lib/order-departure.server.d.ts +1 -0
  111. package/dist-lib/lib/order-departure.server.d.ts.map +1 -1
  112. package/dist-lib/lib/order-departure.server.js +16 -4
  113. package/dist-lib/lib/order-pickup.functions.d.ts +4 -0
  114. package/dist-lib/lib/order-pickup.functions.d.ts.map +1 -1
  115. package/dist-lib/lib/order-pickup.functions.js +7 -0
  116. package/dist-lib/lib/plan-coverage.d.ts +13 -1
  117. package/dist-lib/lib/plan-coverage.d.ts.map +1 -1
  118. package/dist-lib/lib/plan-coverage.js +20 -1
  119. package/dist-lib/lib/salesorders-list.server.d.ts.map +1 -1
  120. package/dist-lib/lib/salesorders-list.server.js +6 -6
  121. package/dist-lib/lib/salesorders-mapping.d.ts +5 -0
  122. package/dist-lib/lib/salesorders-mapping.d.ts.map +1 -1
  123. package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
  124. package/dist-lib/lib/salesorders.functions.js +6 -0
  125. package/dist-lib/lib/tradeitems.functions.d.ts +1117 -12
  126. package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
  127. package/dist-lib/lib/useBufferEvents.d.ts +2 -2
  128. package/dist-lib/lib/useBufferEvents.d.ts.map +1 -1
  129. package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts +2 -2
  130. package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts.map +1 -1
  131. package/dist-lib/lib/useSalesOrderDetailQuery.d.ts +1 -1
  132. package/dist-lib/lib/useSalesOrderDetailQuery.d.ts.map +1 -1
  133. package/dist-lib/lib/useSalesOrdersQuery.d.ts +1 -1
  134. package/dist-lib/lib/useSalesOrdersQuery.d.ts.map +1 -1
  135. package/package.json +1 -1
  136. package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts +0 -9
  137. package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts.map +0 -1
  138. package/dist-lib/components/floriday/FlorydaySyncHealthBanner.js +0 -26
  139. package/dist-lib/components/karindeling/AfmetingenTab.d.ts +0 -6
  140. package/dist-lib/components/karindeling/AfmetingenTab.d.ts.map +0 -1
  141. package/dist-lib/components/karindeling/AfmetingenTab.js +0 -128
  142. package/dist-lib/components/karindeling/KarindelingPage.d.ts +0 -2
  143. package/dist-lib/components/karindeling/KarindelingPage.d.ts.map +0 -1
  144. package/dist-lib/components/karindeling/KarindelingPage.js +0 -102
  145. package/dist-lib/components/ui/dropdown-menu.d.ts +0 -9
  146. package/dist-lib/components/ui/dropdown-menu.d.ts.map +0 -1
  147. package/dist-lib/components/ui/dropdown-menu.js +0 -14
  148. package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.d.ts +0 -4
  149. package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.d.ts.map +0 -1
  150. package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.js +0 -95
  151. package/dist-lib/components/verkoop/CreateOrderDialog.d.ts +0 -5
  152. package/dist-lib/components/verkoop/CreateOrderDialog.d.ts.map +0 -1
  153. package/dist-lib/components/verkoop/CreateOrderDialog.js +0 -33
  154. package/dist-lib/lib/cron/mirror-floriday-orders.d.ts +0 -4
  155. package/dist-lib/lib/cron/mirror-floriday-orders.d.ts.map +0 -1
  156. package/dist-lib/lib/cron/mirror-floriday-orders.js +0 -23
  157. package/dist-lib/lib/cron/push-order-statuses.d.ts +0 -4
  158. package/dist-lib/lib/cron/push-order-statuses.d.ts.map +0 -1
  159. package/dist-lib/lib/cron/push-order-statuses.js +0 -23
  160. package/dist-lib/lib/floriday/floriday.server.d.ts +0 -14
  161. package/dist-lib/lib/floriday/floriday.server.d.ts.map +0 -1
  162. package/dist-lib/lib/floriday/floriday.server.js +0 -92
  163. package/dist-lib/lib/floriday/sales-orders.functions.d.ts +0 -4736
  164. package/dist-lib/lib/floriday/sales-orders.functions.d.ts.map +0 -1
  165. package/dist-lib/lib/floriday/sales-orders.functions.js +0 -193
  166. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +0 -77581
  167. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +0 -1
  168. package/dist-lib/lib/floriday-auto-fulfillment.functions.js +0 -65
  169. package/dist-lib/lib/floriday-auto-fulfillment.server.d.ts +0 -21
  170. package/dist-lib/lib/floriday-auto-fulfillment.server.d.ts.map +0 -1
  171. package/dist-lib/lib/floriday-auto-fulfillment.server.js +0 -352
  172. package/dist-lib/lib/floriday-status-sync.server.d.ts +0 -14
  173. package/dist-lib/lib/floriday-status-sync.server.d.ts.map +0 -1
  174. package/dist-lib/lib/floriday-status-sync.server.js +0 -130
@@ -5,5 +5,5 @@ export declare function AnalyticsCards({ totals, loading, }: {
5
5
  orderCount: number;
6
6
  };
7
7
  loading?: boolean;
8
- }): import("react/jsx-runtime").JSX.Element;
8
+ }): import("react").JSX.Element;
9
9
  //# sourceMappingURL=AnalyticsCards.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyticsCards.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/AnalyticsCards.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,GACR,EAAE;IACD,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,2CAwBA"}
1
+ {"version":3,"file":"AnalyticsCards.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/AnalyticsCards.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,GACR,EAAE;IACD,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,+BAwBA"}
@@ -2,5 +2,5 @@ export declare function CartAssignmentWizard({ orderId, open, onClose, }: {
2
2
  orderId: string | null;
3
3
  open: boolean;
4
4
  onClose: () => void;
5
- }): import("react/jsx-runtime").JSX.Element;
5
+ }): import("react").JSX.Element;
6
6
  //# sourceMappingURL=CartAssignmentWizard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CartAssignmentWizard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/CartAssignmentWizard.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EAAE,IAAI,EAAE,OAAO,GACvB,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,2CA4ThE"}
1
+ {"version":3,"file":"CartAssignmentWizard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/CartAssignmentWizard.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EAAE,IAAI,EAAE,OAAO,GACvB,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,+BA4ThE"}
@@ -4,6 +4,6 @@ interface Props {
4
4
  open: boolean;
5
5
  onOpenChange: (open: boolean) => void;
6
6
  }
7
- export declare function CartLayersDialog({ cartId, cartNumber, open, onOpenChange }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export declare function CartLayersDialog({ cartId, cartNumber, open, onOpenChange }: Props): import("react").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=CartLayersDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CartLayersDialog.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/CartLayersDialog.tsx"],"names":[],"mappings":"AA4BA,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AA2ID,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,2CAyMjF"}
1
+ {"version":3,"file":"CartLayersDialog.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/CartLayersDialog.tsx"],"names":[],"mappings":"AA4BA,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AA2ID,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,+BAyMjF"}
@@ -1,2 +1,2 @@
1
- export declare function CreateOrderPage(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function CreateOrderPage(): import("react").JSX.Element;
2
2
  //# sourceMappingURL=CreateOrderPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateOrderPage.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/CreateOrderPage.tsx"],"names":[],"mappings":"AAqFA,wBAAgB,eAAe,4CAyzB9B"}
1
+ {"version":3,"file":"CreateOrderPage.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/CreateOrderPage.tsx"],"names":[],"mappings":"AAuFA,wBAAgB,eAAe,gCAq3B9B"}
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // Handmatig aanmaken van een bestelling — gebruikt exact dezelfde workflow,
3
3
  // server-fns en validaties als de Mailbox-module. Beide modules leunen op
4
4
  // gedeelde queries (klanten, producten met voorraad, afleverlocaties,
5
- // afhaallocaties, vervoerders, orderpicktijd) en dezelfde eerstmogelijke-
6
- // leverdatum-berekening. Zie src/lib/create-order.functions.ts.
5
+ // afhaallocaties, vervoerders). Ophaalmoment en haalbare leverdatum komen
6
+ // van de Logistiek Engine (logistics_departure_preview).
7
7
  import { useEffect, useMemo, useRef, useState } from "react";
8
8
  import { Button, Card, CardContent, CardHeader, CardTitle, Input, Label, Textarea, toast, } from "@flowselections/core";
9
9
  import { Link, useNavigate } from "@tanstack/react-router";
@@ -11,7 +11,9 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
11
11
  import { ArrowLeft, Plus, Trash2 } from "lucide-react";
12
12
  import { useServerFn } from "@tanstack/react-start";
13
13
  import { SearchableSelect } from "./SearchableSelect.js";
14
- import { computeEarliestDelivery } from "../../lib/carrier-availability.js";
14
+ import { toISODate } from "../../lib/carrier-availability.js";
15
+ import { getDeparturePreview } from "../../lib/departure-preview.functions.js";
16
+ import { decidePreview, momentLabel, LATE_CONFIRM } from "../../lib/departure-preview.js";
15
17
  import { listCustomersForCreateOrder, ensureCustomerFromTwinfield, listProductsForCreateOrder, listDeliveryLocationsForCustomerCO, listPickupLocationsCO, listCarriersForCreateOrder, getOrderPickDaysCO, listBeladingOptionsForProducts, createManualOrder, getEffectivePrices, } from "../../lib/create-order.functions.js";
16
18
  import { checkOrderStockAllowed } from "../../lib/logistics-stock.functions.js";
17
19
  import { useAllowedLoadCarriers } from "../../lib/useAllowedLoadCarriers.js";
@@ -74,7 +76,6 @@ export function CreateOrderPage() {
74
76
  const products = productsQ.data?.items ?? [];
75
77
  const pickupLocations = pickupQ.data?.items ?? [];
76
78
  const carriers = carriersQ.data?.items ?? [];
77
- const pickDays = Math.max(0, Number(pickDaysQ.data?.pickDays ?? 0));
78
79
  const [customerId, setCustomerId] = useState(null);
79
80
  // Twinfield-only klanten (id `twinfield:<code>`) worden bij selectie eerst
80
81
  // geïmporteerd naar een lokale customers-rij; daarna gaat de flow normaal door.
@@ -187,10 +188,8 @@ export function CreateOrderPage() {
187
188
  if (deliveryLocationId !== lastLocRef.current) {
188
189
  lastLocRef.current = deliveryLocationId;
189
190
  const loc = deliveryLocations.find((l) => l.id === deliveryLocationId);
190
- if (loc?.carrier_id)
191
- setCarrierId(loc.carrier_id);
192
- else if (deliveryLocationId === null)
193
- setCarrierId(null);
191
+ // Zonder standaardvervoerder kiest de Engine er een (voorbeeldversie).
192
+ setCarrierId(loc?.carrier_id ? loc.carrier_id : null);
194
193
  }
195
194
  // eslint-disable-next-line react-hooks/exhaustive-deps
196
195
  }, [deliveryLocationId, deliveryLocations.length]);
@@ -203,31 +202,64 @@ export function CreateOrderPage() {
203
202
  setLoadCarrierType(loadCarriersEngine.default ?? allowed[0]);
204
203
  }
205
204
  }, [loadCarriersEngine.allowed.join(","), loadCarriersEngine.default]);
206
- const selectedCarrier = carriers.find((c) => c.id === carrierId) ?? null;
207
- const carrierDeliveryDays = Math.max(0, Number(selectedCarrier?.delivery_days ?? 0));
208
- const canPickDate = !!customerId && !!deliveryLocationId && !!pickupLocationId && !!carrierId;
209
- const earliest = useMemo(() => computeEarliestDelivery(selectedCarrier, pickDays, new Date()), [selectedCarrier, pickDays]);
210
- const earliestISO = earliest.deliveryISO;
211
- const earliestDate = useMemo(() => {
212
- const [y, m, d] = earliestISO.split("-").map(Number);
213
- return new Date(y, (m ?? 1) - 1, d ?? 1);
214
- }, [earliestISO]);
215
- const earliestLabel = earliestDate.toLocaleDateString("nl-NL", {
216
- weekday: "long", day: "numeric", month: "long", year: "numeric",
205
+ const canPickDate = !!customerId && !!deliveryLocationId && !!pickupLocationId;
206
+ const [momentKey, setMomentKey] = useState(null);
207
+ // ---- Ophaalmoment (Logistiek Engine) ----------------------------------
208
+ // Bij elke wijziging van vervoerder, afleverlocatie, leverdatum of moment
209
+ // vraagt het scherm de Engine om een voorbeeld. Kort wachten zodat niet
210
+ // elke toetsaanslag een vraag wordt.
211
+ const fetchPreview = useServerFn(getDeparturePreview);
212
+ const previewInput = useMemo(() => canPickDate && !isReservation
213
+ ? {
214
+ carrierId: carrierId ?? null,
215
+ deliveryLocation: deliveryLocationId,
216
+ deliveryDate: deliveryDate || toISODate(new Date()),
217
+ momentKey,
218
+ }
219
+ : null, [canPickDate, isReservation, carrierId, deliveryLocationId, deliveryDate, momentKey]);
220
+ const [debouncedInput, setDebouncedInput] = useState(previewInput);
221
+ useEffect(() => {
222
+ const t = setTimeout(() => setDebouncedInput(previewInput), 300);
223
+ return () => clearTimeout(t);
224
+ }, [previewInput]);
225
+ const previewQ = useQuery({
226
+ queryKey: ["co-departure-preview", debouncedInput],
227
+ enabled: !!debouncedInput,
228
+ staleTime: 15000,
229
+ queryFn: async () => {
230
+ try {
231
+ return (await fetchPreview({ data: debouncedInput })).preview;
232
+ }
233
+ catch {
234
+ return null;
235
+ }
236
+ },
217
237
  });
218
- const signupLabel = earliest.signupDeadlineISO
219
- ? new Date(earliest.signupDeadlineISO).toLocaleString("nl-NL", {
220
- weekday: "long", day: "numeric", month: "long", hour: "2-digit", minute: "2-digit",
221
- })
222
- : null;
238
+ const preview = previewQ.data ?? null;
239
+ const decision = previewQ.isSuccess ? decidePreview(preview) : null;
240
+ // Nog geen leverdatum: neem de eerste haalbare datum van de Engine over.
223
241
  useEffect(() => {
224
- if (!canPickDate)
225
- return;
226
- if (!deliveryDate || deliveryDate < earliestISO) {
227
- setDeliveryDate(earliestISO);
242
+ if (!deliveryDate && preview?.firstFeasibleDeliveryDate)
243
+ setDeliveryDate(preview.firstFeasibleDeliveryDate);
244
+ // eslint-disable-next-line react-hooks/exhaustive-deps
245
+ }, [preview?.firstFeasibleDeliveryDate]);
246
+ // Geen vervoerder gekozen: de Engine kiest er een op de afleverlocatie.
247
+ useEffect(() => {
248
+ if (!carrierId && preview?.carrierId)
249
+ setCarrierId(preview.carrierId);
250
+ // eslint-disable-next-line react-hooks/exhaustive-deps
251
+ }, [preview?.carrierId]);
252
+ // Andere vervoerder/locatie/datum: eigen momentkeuze vervalt als hij er niet meer is.
253
+ useEffect(() => {
254
+ if (momentKey && preview && !preview.moments.some((m) => m.momentKey === momentKey && m.feasible)) {
255
+ setMomentKey(null);
228
256
  }
229
257
  // eslint-disable-next-line react-hooks/exhaustive-deps
230
- }, [canPickDate, earliestISO]);
258
+ }, [preview]);
259
+ const fmtDate = (iso) => {
260
+ const [y, m, d] = iso.split("-").map(Number);
261
+ return new Date(y, (m ?? 1) - 1, d ?? 1).toLocaleDateString("nl-NL", { weekday: "long", day: "numeric", month: "long" });
262
+ };
231
263
  // ---- Voorraadcontrole (Logistics Engine) -------------------------------
232
264
  // De Engine beslist of een order met producten zonder voorraad aangemaakt
233
265
  // mag worden. Antwoord nooit cachen: de instelling kan elk moment wijzigen.
@@ -263,10 +295,20 @@ export function CreateOrderPage() {
263
295
  throw new Error("Selecteer een afleverlocatie");
264
296
  if (!pickupLocationId)
265
297
  throw new Error("Selecteer een afhaallocatie (tuin)");
266
- if (!isReservation && !carrierId)
267
- throw new Error("Selecteer een vervoerder");
268
298
  if (!isReservation && !deliveryDate)
269
299
  throw new Error("Selecteer een leverdatum");
300
+ let acceptLateSignup = false;
301
+ if (!isReservation) {
302
+ if (!decision)
303
+ throw new Error("Het ophaalmoment wordt nog opgehaald. Probeer het zo opnieuw.");
304
+ if (decision.kind === "blocked")
305
+ throw new Error(decision.reason);
306
+ if (decision.kind === "late") {
307
+ if (!window.confirm(LATE_CONFIRM))
308
+ throw new Error("__cancelled__");
309
+ acceptLateSignup = true;
310
+ }
311
+ }
270
312
  const validLines = lines.filter((l) => l.product_id && (l.quantity ?? 0) > 0);
271
313
  if (validLines.length === 0)
272
314
  throw new Error("Voeg minimaal één product toe");
@@ -302,7 +344,9 @@ export function CreateOrderPage() {
302
344
  customerName: customer?.company_name ?? "Onbekende klant",
303
345
  deliveryLocationId,
304
346
  pickupLocationId,
305
- carrierId: isReservation ? null : carrierId,
347
+ carrierId: isReservation ? null : (carrierId ?? preview?.carrierId ?? null),
348
+ momentKey: isReservation ? null : momentKey,
349
+ acceptLateSignup,
306
350
  deliveryDate: isReservation ? null : deliveryDate,
307
351
  isReservation,
308
352
  loadCarrierType,
@@ -339,8 +383,11 @@ export function CreateOrderPage() {
339
383
  }
340
384
  },
341
385
  onError: (e) => {
386
+ if (e?.message === "__cancelled__")
387
+ return;
342
388
  console.error(e);
343
- toast.error("De order is niet aangemaakt. Controleer de regels en probeer opnieuw.");
389
+ const msg = typeof e?.message === "string" && e.message.length < 400 ? e.message : null;
390
+ toast.error(msg ?? "De order is niet aangemaakt. Controleer de regels en probeer opnieuw.");
344
391
  },
345
392
  });
346
393
  return (_jsxs("main", { className: "space-y-5 p-6", children: [_jsx("div", { children: _jsx(Button, { asChild: true, variant: "ghost", size: "sm", children: _jsxs(Link, { to: "/floriday-verkoop/verkooporders", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Terug naar verkooporders"] }) }) }), _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Nieuwe Bestelling" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Doorloop de stappen: klant \u2192 afleverlocatie \u2192 afhaallocatie \u2192 vervoerder \u2192 leverdatum \u2192 producten." })] }), _jsxs(CardContent, { className: "space-y-5", children: [_jsxs("div", { className: "space-y-1", children: [_jsxs(Label, { className: "flex items-center gap-2", children: ["Klant ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx(SearchableSelect, { value: customerId, placeholder: customersQ.isLoading ? "Laden..." : "Kies klant...", options: customers.map((c) => ({
@@ -363,18 +410,10 @@ export function CreateOrderPage() {
363
410
  };
364
411
  }), onChange: setDeliveryLocationId })] }), selectedLocation && (_jsxs("div", { className: "rounded-md border bg-muted/30 p-3 space-y-2", children: [_jsx("div", { className: "text-xs font-medium text-muted-foreground", children: "Adresgegevens" }), _jsxs("div", { className: "grid grid-cols-2 gap-2", children: [_jsx(ReadOnlyField, { label: "Straat", value: selectedLocation.street }), _jsx(ReadOnlyField, { label: "Huisnummer", value: selectedLocation.house_number }), _jsx(ReadOnlyField, { label: "Postcode", value: selectedLocation.postal_code }), _jsx(ReadOnlyField, { label: "Plaats", value: selectedLocation.city }), _jsx(ReadOnlyField, { label: "Provincie", value: selectedLocation.province }), _jsx(ReadOnlyField, { label: "Land", value: selectedLocation.country })] })] })), _jsxs("div", { className: "space-y-1", children: [_jsxs(Label, { className: "flex items-center gap-2", children: ["Afhaallocatie / Tuin ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx(SearchableSelect, { value: pickupLocationId, placeholder: pickupLocations.length ? "Kies eigen locatie..." : "Geen eigen locaties bekend", disabled: pickupLocations.length === 0, allowClear: false, options: pickupLocations.map((l) => ({ value: l.id, label: l.name })), onChange: setPickupLocationId }), _jsx("div", { className: "text-xs text-muted-foreground", children: "Eigen locatie (tuin) van waaruit de bestelling wordt geleverd of opgehaald." })] }), isReservation ? (_jsxs("div", { className: "space-y-1", children: [_jsx(Label, { children: "Vervoerder" }), _jsx("div", { className: "rounded-md border border-border bg-muted/40 px-3 py-2 text-sm text-muted-foreground", children: "Nog niet van toepassing \u2014 de vervoerder wordt pas gekozen bij het aanmaken van de verzending." })] })) : (_jsxs("div", { className: "space-y-1", children: [_jsxs(Label, { children: ["Vervoerder ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx(SearchableSelect, { value: carrierId, placeholder: !customerId ? "Selecteer eerst een klant"
365
412
  : !deliveryLocationId ? "Selecteer eerst een afleverlocatie"
366
- : "Kies vervoerder...", disabled: !deliveryLocationId, allowClear: false, options: carriers.map((c) => ({
413
+ : "Wordt gekozen bij de afleverlocatie", disabled: !deliveryLocationId, allowClear: false, options: carriers.map((c) => ({
367
414
  value: c.id,
368
415
  label: c.name + (c.is_default ? " (standaard)" : ""),
369
- })), onChange: setCarrierId }), selectedLocation?.carrier_id && carrierId && carrierId !== selectedLocation.carrier_id && (_jsx("div", { className: "text-xs text-muted-foreground", children: "Wijkt af van standaard vervoerder van deze locatie \u2014 geldt alleen voor deze bestelling." }))] })), _jsxs("div", { className: "space-y-1", children: [_jsxs(Label, { className: "flex items-center gap-2", children: ["Leverdatum ", !isReservation && _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx(Input, { type: "date", value: !isReservation && canPickDate ? deliveryDate : "", min: canPickDate ? earliestISO : undefined, disabled: isReservation || !canPickDate, onChange: (e) => {
370
- const v = e.target.value || "";
371
- if (v && v < earliestISO) {
372
- toast.error(`Eerst mogelijke leverdatum is ${earliestLabel}.`);
373
- setDeliveryDate(earliestISO);
374
- return;
375
- }
376
- setDeliveryDate(v);
377
- } }), _jsxs("label", { className: "mt-1 flex items-center gap-2 text-sm text-foreground", children: [_jsx("input", { type: "checkbox", checked: isReservation, onChange: (e) => setIsReservation(e.target.checked), className: "h-4 w-4 rounded border-input" }), "Reservering (nog geen vaste leverdatum)"] }), isReservation ? (_jsx("div", { className: "text-xs text-muted-foreground", children: "De bestelling wordt als reservering aangemaakt zonder leverdatumvalidatie." })) : !canPickDate ? (_jsx("div", { className: "text-xs text-muted-foreground", children: "Selecteer eerst klant, afleverlocatie, afhaallocatie en vervoerder." })) : (_jsxs("div", { className: "text-xs text-muted-foreground", children: ["Eerst beschikbare leverdatum is ", earliestLabel, signupLabel ? `, o.b.v. het eerstvolgende aanmeldmoment (${signupLabel})` : "", " ", "en orderpicktijd (", pickDays, "d).", _jsx("div", { className: "mt-0.5", children: "Het definitieve ophaalmoment wordt bepaald zodra de order is aangemaakt." })] }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Bestelregels" }), _jsxs("div", { className: "grid grid-cols-12 gap-2 text-xs text-muted-foreground px-1", children: [_jsx("div", { className: "col-span-4", children: "Product" }), _jsx("div", { className: "col-span-3", children: "Belading" }), _jsx("div", { className: "col-span-2", children: "Fusten" }), _jsx("div", { className: "col-span-2", children: "Prijs" }), _jsx("div", { className: "col-span-1" })] }), lines.map((line, idx) => {
416
+ })), onChange: (v) => { setCarrierId(v); setMomentKey(null); } }), selectedLocation?.carrier_id && carrierId && carrierId !== selectedLocation.carrier_id && (_jsx("div", { className: "text-xs text-muted-foreground", children: "Wijkt af van standaard vervoerder van deze locatie \u2014 geldt alleen voor deze bestelling." }))] })), _jsxs("div", { className: "space-y-1", children: [_jsxs(Label, { className: "flex items-center gap-2", children: ["Leverdatum ", !isReservation && _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx(Input, { type: "date", value: !isReservation && canPickDate ? deliveryDate : "", disabled: isReservation || !canPickDate, onChange: (e) => { setDeliveryDate(e.target.value || ""); setMomentKey(null); } }), _jsxs("label", { className: "mt-1 flex items-center gap-2 text-sm text-foreground", children: [_jsx("input", { type: "checkbox", checked: isReservation, onChange: (e) => setIsReservation(e.target.checked), className: "h-4 w-4 rounded border-input" }), "Reservering (nog geen vaste leverdatum)"] }), isReservation ? (_jsx("div", { className: "text-xs text-muted-foreground", children: "De bestelling wordt als reservering aangemaakt zonder leverdatumvalidatie." })) : !canPickDate ? (_jsx("div", { className: "text-xs text-muted-foreground", children: "Selecteer eerst klant, afleverlocatie en afhaallocatie." })) : !decision ? (_jsx("div", { className: "text-xs text-muted-foreground", children: "Ophaalmoment ophalen\u2026" })) : decision.kind === "blocked" ? (_jsx("div", { className: "text-xs text-destructive", children: decision.reason })) : (_jsxs("div", { className: "space-y-2 text-xs", children: [preview && preview.moments.length > 0 && (_jsx("select", { className: "h-9 w-full rounded-md border border-border bg-background px-2 text-sm text-foreground", value: momentKey ?? decision.momentKey ?? "", onChange: (e) => setMomentKey(e.target.value || null), "aria-label": "Ophaalmoment kiezen", children: preview.moments.map((m) => (_jsxs("option", { value: m.momentKey, disabled: !m.feasible, className: m.feasible ? "" : "text-muted-foreground", children: [momentLabel(m), m.feasible ? "" : " (niet haalbaar)"] }, m.momentKey))) })), decision.text && _jsx("div", { className: "text-foreground", children: decision.text }), decision.kind === "late" && (_jsxs("div", { className: "space-y-2 rounded-md border border-destructive/40 p-2", children: [_jsx("div", { className: "text-destructive", children: decision.reason }), decision.firstReason && _jsx("div", { className: "text-muted-foreground", children: decision.firstReason }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [decision.firstDate && (_jsxs(Button, { type: "button", size: "sm", variant: "outline", onClick: () => { setDeliveryDate(decision.firstDate); setMomentKey(null); }, children: ["Gebruik ", fmtDate(decision.firstDate)] })), _jsxs(Button, { type: "button", size: "sm", variant: "outline", disabled: createMut.isPending, onClick: () => createMut.mutate(), children: ["Toch aanmaken voor ", deliveryDate ? fmtDate(deliveryDate) : "de gekozen datum"] })] })] }))] }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Bestelregels" }), _jsxs("div", { className: "grid grid-cols-12 gap-2 text-xs text-muted-foreground px-1", children: [_jsx("div", { className: "col-span-4", children: "Product" }), _jsx("div", { className: "col-span-3", children: "Belading" }), _jsx("div", { className: "col-span-2", children: "Fusten" }), _jsx("div", { className: "col-span-2", children: "Prijs" }), _jsx("div", { className: "col-span-1" })] }), lines.map((line, idx) => {
378
417
  const product = line.product_id ? products.find((p) => p.id === line.product_id) : null;
379
418
  const defaultBelading = completeBelading(product);
380
419
  const effBelading = completeBelading(line.belading) ?? defaultBelading;
@@ -1,5 +1,5 @@
1
1
  export declare function DiagnoseConnectionDialog({ open, onOpenChange, }: {
2
2
  open: boolean;
3
3
  onOpenChange: (v: boolean) => void;
4
- }): import("react/jsx-runtime").JSX.Element;
4
+ }): import("react").JSX.Element;
5
5
  //# sourceMappingURL=DiagnoseConnectionDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnoseConnectionDialog.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/DiagnoseConnectionDialog.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,GACb,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,2CAoMA"}
1
+ {"version":3,"file":"DiagnoseConnectionDialog.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/DiagnoseConnectionDialog.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,GACb,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,+BAoMA"}
@@ -2,5 +2,5 @@ export declare function EditLocalOrderDialog({ orderId, open, onOpenChange, }: {
2
2
  orderId: string;
3
3
  open: boolean;
4
4
  onOpenChange: (o: boolean) => void;
5
- }): import("react/jsx-runtime").JSX.Element | null;
5
+ }): import("react").JSX.Element | null;
6
6
  //# sourceMappingURL=EditLocalOrderDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditLocalOrderDialog.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/EditLocalOrderDialog.tsx"],"names":[],"mappings":"AA6CA,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,IAAI,EACJ,YAAY,GACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,kDAuiBA"}
1
+ {"version":3,"file":"EditLocalOrderDialog.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/EditLocalOrderDialog.tsx"],"names":[],"mappings":"AA6CA,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,IAAI,EACJ,YAAY,GACb,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,sCAuiBA"}
@@ -4,5 +4,5 @@
4
4
  */
5
5
  export declare function EngineBufferCard({ orderId }: {
6
6
  orderId: string | null;
7
- }): import("react/jsx-runtime").JSX.Element | null;
7
+ }): import("react").JSX.Element | null;
8
8
  //# sourceMappingURL=EngineBufferCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EngineBufferCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/EngineBufferCard.tsx"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,kDAkJvE"}
1
+ {"version":3,"file":"EngineBufferCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/EngineBufferCard.tsx"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAkJvE"}
@@ -8,8 +8,8 @@ export declare function FloridayStageLine({ status, stage, floridayFulfilled, is
8
8
  isFloriday?: boolean;
9
9
  notReportedCount?: number;
10
10
  bufferSize?: number;
11
- }): import("react/jsx-runtime").JSX.Element | null;
11
+ }): import("react").JSX.Element | null;
12
12
  export declare function MissingPriceBadge({ show }: {
13
13
  show: boolean | undefined;
14
- }): import("react/jsx-runtime").JSX.Element | null;
14
+ }): import("react").JSX.Element | null;
15
15
  //# sourceMappingURL=FloridayStageLine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloridayStageLine.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/FloridayStageLine.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA8D,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,KAAK,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,GACX,EAAE;IACD,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,kDAwCA;AAED,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,kDAOxE"}
1
+ {"version":3,"file":"FloridayStageLine.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/FloridayStageLine.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA8D,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,KAAK,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,GACX,EAAE;IACD,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,sCAwCA;AAED,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,sCAOxE"}
@@ -1,3 +1,3 @@
1
- export declare function InvoiceTimingSettingsCard(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function InvoiceTimingSettingsCard(): import("react").JSX.Element;
2
2
  export default InvoiceTimingSettingsCard;
3
3
  //# sourceMappingURL=InvoiceTimingSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvoiceTimingSettings.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/InvoiceTimingSettings.tsx"],"names":[],"mappings":"AA+GA,wBAAgB,yBAAyB,4CA2GxC;AAED,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"InvoiceTimingSettings.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/InvoiceTimingSettings.tsx"],"names":[],"mappings":"AA+GA,wBAAgB,yBAAyB,gCA2GxC;AAED,eAAe,yBAAyB,CAAC"}
@@ -2,5 +2,5 @@ export declare function OrderAfleverbrievenCard({ salesOrderId, orderNumber, wer
2
2
  salesOrderId: string;
3
3
  orderNumber?: string;
4
4
  werkplek?: string;
5
- }): import("react/jsx-runtime").JSX.Element;
5
+ }): import("react").JSX.Element;
6
6
  //# sourceMappingURL=OrderAfleverbrievenCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderAfleverbrievenCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderAfleverbrievenCard.tsx"],"names":[],"mappings":"AAuCA,wBAAgB,uBAAuB,CAAC,EACtC,YAAY,EACZ,WAAW,EACX,QAAQ,GACT,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,2CAwMA"}
1
+ {"version":3,"file":"OrderAfleverbrievenCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderAfleverbrievenCard.tsx"],"names":[],"mappings":"AAuCA,wBAAgB,uBAAuB,CAAC,EACtC,YAAY,EACZ,WAAW,EACX,QAAQ,GACT,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,+BAwMA"}
@@ -9,5 +9,5 @@ export declare function OrderCarrierPicker({ orderId, applyToBuffer, compact, lo
9
9
  applyToBuffer?: boolean;
10
10
  compact?: boolean;
11
11
  locked?: boolean;
12
- }): import("react/jsx-runtime").JSX.Element;
12
+ }): import("react").JSX.Element;
13
13
  //# sourceMappingURL=OrderCarrierPicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCarrierPicker.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderCarrierPicker.tsx"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,aAAqB,EACrB,OAAe,EACf,MAAc,GACf,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,2CA4EA"}
1
+ {"version":3,"file":"OrderCarrierPicker.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderCarrierPicker.tsx"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,aAAqB,EACrB,OAAe,EACf,MAAc,GACf,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,+BA4EA"}
@@ -2,5 +2,5 @@ export declare function OrderControlStatusCard({ floridayId, isControlled, contr
2
2
  floridayId: string;
3
3
  isControlled: boolean;
4
4
  controlledAt: string | null;
5
- }): import("react/jsx-runtime").JSX.Element;
5
+ }): import("react").JSX.Element;
6
6
  //# sourceMappingURL=OrderControlStatusCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderControlStatusCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderControlStatusCard.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,YAAY,EACZ,YAAY,GACb,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,2CA6DA"}
1
+ {"version":3,"file":"OrderControlStatusCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderControlStatusCard.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,YAAY,EACZ,YAAY,GACb,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,+BA6DA"}
@@ -1,5 +1,5 @@
1
1
  import type { SalesOrderDTO } from "../../lib/salesorders-mapping.js";
2
2
  export declare function OrderKarindelingCard({ order }: {
3
3
  order: SalesOrderDTO;
4
- }): import("react/jsx-runtime").JSX.Element;
4
+ }): import("react").JSX.Element;
5
5
  //# sourceMappingURL=OrderKarindelingCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderKarindelingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderKarindelingCard.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAkB/D,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,2CAyJvE"}
1
+ {"version":3,"file":"OrderKarindelingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderKarindelingCard.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAkB/D,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,+BAyKvE"}
@@ -46,7 +46,7 @@ export function OrderKarindelingCard({ order }) {
46
46
  const carts = Array.isArray(cov?.carts) ? cov.carts : [];
47
47
  const pickRows = Array.isArray(cov?.pickRows) ? cov.pickRows : [];
48
48
  const [layersFor, setLayersFor] = useState(null);
49
- return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 sm:flex sm:flex-row sm:justify-between", children: [_jsx(CardTitle, { className: "truncate text-base", children: "Karindeling" }), _jsxs("div", { className: "flex items-center gap-2", children: [cov && cov.state !== "onbekend" && (_jsxs(Badge, { variant: "secondary", children: [carts.length, " kar(ren)"] })), _jsx(Button, { variant: "ghost", size: "icon", "aria-label": "Vernieuwen", title: "Vernieuwen", onClick: () => void queryClient.invalidateQueries({ queryKey }), children: _jsx(RefreshCw, { className: "h-4 w-4 " + (isFetching ? "animate-spin" : "") }) })] })] }), _jsx(CardContent, { className: "space-y-4", 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-muted-foreground", children: "Indeling onbekend" }), _jsx("p", { className: "text-sm text-muted-foreground", children: error.message })] })) : cov ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-wrap items-start gap-x-6 gap-y-2 text-sm", children: [_jsxs("div", { children: [_jsx("div", { className: "text-xs text-muted-foreground", children: "Indeling" }), _jsx(PlanCoverageBadge, { coverage: summarize(cov) })] }), _jsxs("div", { children: [_jsx("div", { className: "text-xs text-muted-foreground", children: "Pickstatus" }), _jsxs("div", { className: "mt-1", children: [cov.pickStatus ? PICK_LABEL[cov.pickStatus] : "—", cov.pickStatus === "gepickt" && cov.pickedAt ? ` · ${fmt(cov.pickedAt)}` : ""] })] }), pickRows.length > 0 && (_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-xs text-muted-foreground", children: "Pickdocumenten" }), _jsx("div", { className: "mt-1 flex flex-wrap gap-1", children: pickRows.map((p, i) => (_jsxs(Badge, { variant: "outline", className: "text-[10px]", title: [
49
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 sm:flex sm:flex-row sm:justify-between", children: [_jsx(CardTitle, { className: "truncate text-base", children: "Karindeling" }), _jsxs("div", { className: "flex items-center gap-2", children: [cov && cov.state !== "onbekend" && (_jsxs(Badge, { variant: "secondary", children: [carts.length, " kar(ren)"] })), _jsx(Button, { variant: "ghost", size: "icon", "aria-label": "Vernieuwen", title: "Vernieuwen", onClick: () => void queryClient.invalidateQueries({ queryKey }), children: _jsx(RefreshCw, { className: "h-4 w-4 " + (isFetching ? "animate-spin" : "") }) })] })] }), _jsx(CardContent, { className: "space-y-4", 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-muted-foreground", children: "Indeling onbekend" }), _jsx("p", { className: "text-sm text-muted-foreground", children: error.message })] })) : cov ? (_jsxs(_Fragment, { children: [cov.externalFulfilled && !cov.externalFulfilled.full && (_jsxs("p", { className: "text-sm text-muted-foreground", children: [cov.externalFulfilled.salesOrderIds.length, " bestelling(en) afgehandeld in Floriday; de voortgang telt alleen de rest."] })), data?.externalEvent?.sendError ? (_jsxs("p", { className: "text-sm text-destructive", children: ["Het afronden in de planning lukte niet: de melding kon niet worden verstuurd (", data.externalEvent.sendError, ")."] })) : data?.externalEvent?.status === "failed" ? (_jsxs("p", { className: "text-sm text-destructive", children: ["Het afronden in de planning lukte niet: ", data.externalEvent.error ?? "geen reden opgegeven"] })) : data?.externalEvent && data.externalEvent.status && !["done", "processed", "completed", "applied", "skipped"].includes(data.externalEvent.status) ? (_jsx("p", { className: "text-sm text-muted-foreground", children: "De planning verwerkt \"Afgehandeld in Floriday\" nog." })) : null, _jsxs("div", { className: "flex flex-wrap items-start gap-x-6 gap-y-2 text-sm", children: [_jsxs("div", { children: [_jsx("div", { className: "text-xs text-muted-foreground", children: "Indeling" }), _jsx(PlanCoverageBadge, { coverage: summarize(cov) })] }), _jsxs("div", { children: [_jsx("div", { className: "text-xs text-muted-foreground", children: "Pickstatus" }), _jsxs("div", { className: "mt-1", children: [cov.pickStatus ? PICK_LABEL[cov.pickStatus] : "—", cov.pickStatus === "gepickt" && cov.pickedAt ? ` · ${fmt(cov.pickedAt)}` : ""] })] }), pickRows.length > 0 && (_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-xs text-muted-foreground", children: "Pickdocumenten" }), _jsx("div", { className: "mt-1 flex flex-wrap gap-1", children: pickRows.map((p, i) => (_jsxs(Badge, { variant: "outline", className: "text-[10px]", title: [
50
50
  p.printedAt ? `Geprint ${fmt(p.printedAt)}` : "Nog niet geprint",
51
51
  p.completedAt ? `Afgerond ${fmt(p.completedAt)}` : null,
52
52
  ]
@@ -1,4 +1,4 @@
1
1
  export declare function OrderLinePackingCard({ orderId }: {
2
2
  orderId: string;
3
- }): import("react/jsx-runtime").JSX.Element | null;
3
+ }): import("react").JSX.Element | null;
4
4
  //# sourceMappingURL=OrderLinePackingCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderLinePackingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderLinePackingCard.tsx"],"names":[],"mappings":"AAmJA,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,kDA4CpE"}
1
+ {"version":3,"file":"OrderLinePackingCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderLinePackingCard.tsx"],"names":[],"mappings":"AAmJA,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,sCA4CpE"}
@@ -6,5 +6,5 @@ export declare function OrderPickupMomentPicker({ orderId, readOnly, compact, }:
6
6
  orderId: string;
7
7
  readOnly?: boolean;
8
8
  compact?: boolean;
9
- }): import("react/jsx-runtime").JSX.Element;
9
+ }): import("react").JSX.Element;
10
10
  //# sourceMappingURL=OrderPickupMomentPicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderPickupMomentPicker.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderPickupMomentPicker.tsx"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,OAAO,EACP,QAAgB,EAChB,OAAe,GAChB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,2CAuEA"}
1
+ {"version":3,"file":"OrderPickupMomentPicker.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderPickupMomentPicker.tsx"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,OAAO,EACP,QAAgB,EAChB,OAAe,GAChB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,+BA6EA"}
@@ -4,6 +4,7 @@ import { useQuery, useQueryClient } from "@tanstack/react-query";
4
4
  import { useServerFn } from "@tanstack/react-start";
5
5
  import { Clock } from "lucide-react";
6
6
  import { getOrderPickupMoment, setOrderPickupMoment } from "../../lib/order-pickup.functions.js";
7
+ import { formatMoment } from "../../lib/order-departure.js";
7
8
  /**
8
9
  * Toont het ophaal- en aanmeldmoment zoals de planning het heeft berekend.
9
10
  * Zonder `readOnly` kun je een ander moment van de vervoerder kiezen.
@@ -40,5 +41,5 @@ export function OrderPickupMomentPicker({ orderId, readOnly = false, compact = f
40
41
  return _jsx("span", { className: "text-sm text-muted-foreground", children: "Laden\u2026" });
41
42
  const view = data?.view;
42
43
  const options = data?.options ?? [];
43
- return (_jsxs("div", { className: compact ? "space-y-1" : "inline-flex flex-col gap-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2 text-sm text-foreground", children: [!compact && _jsx(Clock, { className: "h-4 w-4 text-muted-foreground" }), view?.text ? (_jsxs("span", { children: [view.text, data?.deliveryTime ? (_jsxs("span", { className: "text-muted-foreground", children: [" \u00B7 aanlevering ", data.deliveryTime] })) : null] })) : (_jsx("span", { className: "text-muted-foreground", children: view?.reason ?? "Geen ophaalmoment bekend" })), view?.lateSignup && (_jsx("span", { className: "rounded border border-destructive/40 px-1.5 py-0.5 text-xs text-destructive", children: "te laat aangemeld" }))] }), !readOnly && options.length > 1 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("select", { className: "h-9 min-w-[18rem] rounded-md border border-border bg-background px-2 text-sm text-foreground disabled:opacity-60", value: data?.selectedKey ?? "", disabled: saving, onChange: (e) => onChange(e.target.value), "aria-label": "Ander ophaalmoment kiezen", children: [!data?.selectedKey && _jsx("option", { value: "", children: "Ander ophaalmoment kiezen\u2026" }), options.map((o) => (_jsx("option", { value: o.key, children: o.label }, o.key)))] }), saving && _jsx("span", { className: "text-xs text-muted-foreground", children: "Opslaan\u2026" })] })), error && _jsx("span", { className: "text-xs text-destructive", children: error })] }));
44
+ return (_jsxs("div", { className: compact ? "space-y-1" : "inline-flex flex-col gap-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2 text-sm text-foreground", children: [!compact && _jsx(Clock, { className: "h-4 w-4 text-muted-foreground" }), view?.text ? (_jsxs("span", { children: [view.text, data?.deliveryTime ? (_jsxs("span", { className: "text-muted-foreground", children: [" \u00B7 aanlevering ", data.deliveryTime] })) : null] })) : (_jsx("span", { className: "text-muted-foreground", children: view?.reason ?? "Geen ophaalmoment bekend" })), view?.lateSignup && (_jsx("span", { className: "rounded border border-destructive/40 px-1.5 py-0.5 text-xs text-destructive", children: "te laat aangemeld" }))] }), !readOnly && options.length > 1 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("select", { className: "h-9 min-w-[18rem] rounded-md border border-border bg-background px-2 text-sm text-foreground disabled:opacity-60", value: data?.selectedKey ?? "", disabled: saving, onChange: (e) => onChange(e.target.value), "aria-label": "Ander ophaalmoment kiezen", children: [!data?.selectedKey && _jsx("option", { value: "", children: "Ander ophaalmoment kiezen\u2026" }), options.map((o) => (_jsx("option", { value: o.key, children: o.label }, o.key)))] }), saving && _jsx("span", { className: "text-xs text-muted-foreground", children: "Opslaan\u2026" })] })), data?.lateOverride && (_jsxs("span", { className: "text-xs text-muted-foreground", children: ["Toch aangemaakt na de aanmeldtijd door ", data.lateOverride.by ?? "onbekend", data.lateOverride.at ? ` op ${formatMoment(data.lateOverride.at)}` : ""] })), error && _jsx("span", { className: "text-xs text-destructive", children: error })] }));
44
45
  }
@@ -1,5 +1,5 @@
1
1
  import type { SalesOrderDTO } from "../../lib/salesorders-mapping.js";
2
2
  export declare function OrderShipmentsCard({ order }: {
3
3
  order: SalesOrderDTO;
4
- }): import("react/jsx-runtime").JSX.Element | null;
4
+ }): import("react").JSX.Element | null;
5
5
  //# sourceMappingURL=OrderShipmentsCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrderShipmentsCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderShipmentsCard.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA+C/D,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,kDASrE"}
1
+ {"version":3,"file":"OrderShipmentsCard.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/OrderShipmentsCard.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AA+C/D,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,CAAA;CAAE,sCASrE"}
@@ -2,5 +2,5 @@ import { type PlanCoverageSummary } from "../../lib/plan-coverage.js";
2
2
  export declare function PlanCoverageBadge({ coverage, showReason, }: {
3
3
  coverage: PlanCoverageSummary | null | undefined;
4
4
  showReason?: boolean;
5
- }): import("react/jsx-runtime").JSX.Element | null;
5
+ }): import("react").JSX.Element | null;
6
6
  //# sourceMappingURL=PlanCoverageBadge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanCoverageBadge.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/PlanCoverageBadge.tsx"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGnF,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,UAAiB,GAClB,EAAE;IACD,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,kDAoCA"}
1
+ {"version":3,"file":"PlanCoverageBadge.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/PlanCoverageBadge.tsx"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGnF,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,UAAiB,GAClB,EAAE;IACD,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,sCAsCA"}
@@ -12,11 +12,13 @@ export function PlanCoverageBadge({ coverage, showReason = true, }) {
12
12
  if (state === "geen_indeling") {
13
13
  return (_jsxs("div", { className: "mt-1 min-w-0", children: [_jsxs("span", { className: `${base} border-destructive/40 bg-destructive/10 text-destructive`, title: tip, children: [_jsx(AlertTriangle, { className: "h-3 w-3 shrink-0" }), label] }), showReason && reason && _jsx("div", { className: "mt-0.5 text-xs text-destructive", children: reason })] }));
14
14
  }
15
- const tone = state === "deels"
16
- ? "border-primary/40 bg-primary/10 text-foreground"
17
- : state === "ingedeeld"
18
- ? "border-border bg-muted text-foreground"
19
- : "border-border bg-muted/50 text-muted-foreground";
15
+ const tone = state === "afgehandeld_extern"
16
+ ? "border-accent bg-accent text-accent-foreground"
17
+ : state === "deels"
18
+ ? "border-primary/40 bg-primary/10 text-foreground"
19
+ : state === "ingedeeld"
20
+ ? "border-border bg-muted text-foreground"
21
+ : "border-border bg-muted/50 text-muted-foreground";
20
22
  const text = state === "deels" && progressPct != null
21
23
  ? `${label} · ${Math.round(progressPct)}%`
22
24
  : state === "ingedeeld" && shared
@@ -1,2 +1,2 @@
1
- export declare function ProductDimensionsSettingsCard(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function ProductDimensionsSettingsCard(): import("react").JSX.Element;
2
2
  //# sourceMappingURL=ProductDimensionsSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductDimensionsSettings.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/ProductDimensionsSettings.tsx"],"names":[],"mappings":"AA0BA,wBAAgB,6BAA6B,4CAoK5C"}
1
+ {"version":3,"file":"ProductDimensionsSettings.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/ProductDimensionsSettings.tsx"],"names":[],"mappings":"AA0BA,wBAAgB,6BAA6B,gCAoK5C"}
@@ -1,2 +1,2 @@
1
- export declare function SalesOrderDetailPage(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function SalesOrderDetailPage(): import("react").JSX.Element;
2
2
  //# sourceMappingURL=SalesOrderDetailPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SalesOrderDetailPage.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/SalesOrderDetailPage.tsx"],"names":[],"mappings":"AAgGA,wBAAgB,oBAAoB,4CAsPnC"}
1
+ {"version":3,"file":"SalesOrderDetailPage.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/SalesOrderDetailPage.tsx"],"names":[],"mappings":"AAgGA,wBAAgB,oBAAoB,gCAsPnC"}
@@ -5,13 +5,13 @@ import { useQuery } from "@tanstack/react-query";
5
5
  import { useServerFn } from "@tanstack/react-start";
6
6
  import { Badge, Button } from "@flowselections/core";
7
7
  import { ArrowLeft, Pencil, Layers, ChevronDown, ChevronRight, ImageIcon, MapPin, Truck, Clock } from "lucide-react";
8
- import { SalesOrderDetailView } from "../../components/verkoop/SalesOrderDetailView.js";
8
+ import { SalesOrderDetailView } from "./SalesOrderDetailView.js";
9
9
  import { formatLoadUnits, mergeTypeNames } from "../../lib/load-carrier-labels.js";
10
- import { OrderKarindelingCard } from "../../components/verkoop/OrderKarindelingCard.js";
11
- import { EngineBufferCard } from "../../components/verkoop/EngineBufferCard.js";
12
- import { OrderCarrierPicker } from "../../components/verkoop/OrderCarrierPicker.js";
13
- import { OrderPickupMomentPicker } from "../../components/verkoop/OrderPickupMomentPicker.js";
14
- import { EditLocalOrderDialog } from "../../components/verkoop/EditLocalOrderDialog.js";
10
+ import { OrderKarindelingCard } from "./OrderKarindelingCard.js";
11
+ import { EngineBufferCard } from "./EngineBufferCard.js";
12
+ import { OrderCarrierPicker } from "./OrderCarrierPicker.js";
13
+ import { OrderPickupMomentPicker } from "./OrderPickupMomentPicker.js";
14
+ import { EditLocalOrderDialog } from "./EditLocalOrderDialog.js";
15
15
  import { useSalesOrdersQuery } from "../../lib/useSalesOrdersQuery.js";
16
16
  import { useBufferEvents } from "../../lib/useBufferEvents.js";
17
17
  import { useSalesOrderDetailQuery } from "../../lib/useSalesOrderDetailQuery.js";
@@ -3,5 +3,5 @@ export declare function SalesOrderDetailView({ order, sellerFallback, hideKarind
3
3
  order: SalesOrderDTO;
4
4
  sellerFallback?: string | null;
5
5
  hideKarindeling?: boolean;
6
- }): import("react/jsx-runtime").JSX.Element;
6
+ }): import("react").JSX.Element;
7
7
  //# sourceMappingURL=SalesOrderDetailView.d.ts.map
@@ -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;AA4JnE,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,2CAydA"}
1
+ {"version":3,"file":"SalesOrderDetailView.d.ts","sourceRoot":"","sources":["../../../src/components/verkoop/SalesOrderDetailView.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AA4JnE,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,+BA6eA"}