fix(dashboard): allocation UI for orders with more than 20 reservation items (#12989)

This commit is contained in:
Frane Polić
2025-07-20 15:30:23 +02:00
committed by GitHub
parent 35bd9f0bc4
commit 3fa1db9dea
4 changed files with 25 additions and 1 deletions

View File

@@ -0,0 +1,5 @@
---
"@medusajs/dashboard": patch
---
fix(dashboard): allocation UI for orders with more than 20 reservation items

View File

@@ -1,4 +1,4 @@
import { HttpTypes } from "@medusajs/types"
import { AdminOrder, AdminOrderLineItem, HttpTypes } from "@medusajs/types"
export const getPaymentsFromOrder = (order: HttpTypes.AdminOrder) => {
return order.payment_collections
@@ -6,3 +6,18 @@ export const getPaymentsFromOrder = (order: HttpTypes.AdminOrder) => {
.flat(1)
.filter(Boolean) as HttpTypes.AdminPayment[]
}
/**
* Returns a limit for number of reservations that order can have.
*/
export function getReservationsLimitCount(order: AdminOrder) {
if (!order?.items?.length) {
return 0
}
return order.items.reduce(
(acc: number, item: AdminOrderLineItem) =>
acc + (item.variant?.inventory_items?.length || 1),
0
)
}

View File

@@ -23,6 +23,7 @@ import {
useReservationItems,
useShippingOptions,
} from "../../../../../hooks/api"
import { getReservationsLimitCount } from "../../../../../lib/orders"
type OrderCreateFulfillmentFormProps = {
order: AdminOrder
@@ -41,6 +42,7 @@ export function OrderCreateFulfillmentForm({
const { reservations } = useReservationItems({
line_item_id: order.items.map((i) => i.id),
limit: getReservationsLimitCount(order),
})
const itemReservedQuantitiesMap = useMemo(

View File

@@ -51,6 +51,7 @@ import { useReturns } from "../../../../../hooks/api/returns"
import { useDate } from "../../../../../hooks/use-date"
import { getTotalCreditLines } from "../../../../../lib/credit-line"
import { formatCurrency } from "../../../../../lib/format-currency"
import { getReservationsLimitCount } from "../../../../../lib/orders"
import {
getLocaleAmount,
getStylizedAmount,
@@ -78,6 +79,7 @@ export const OrderSummarySection = ({
const { reservations } = useReservationItems(
{
line_item_id: order?.items?.map((i) => i.id),
limit: getReservationsLimitCount(order),
},
{ enabled: Array.isArray(order?.items) }
)