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

This commit is contained in:
Frane Polić authored and GitHub committed 2025-07-20 13:30:23 +00:00
1 parent 35bd9f0bc4
commit 3fa1db9dea
4 files changed
+25 -1

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
---
"@medusajs/dashboard": patch
---
fix(dashboard): allocation UI for orders with more than 20 reservation items
+16 -1
View File
@@ -1,4 +1,4 @@
import { HttpTypes } from "@medusajs/types" import { AdminOrder, AdminOrderLineItem, HttpTypes } from "@medusajs/types"
export const getPaymentsFromOrder = (order: HttpTypes.AdminOrder) => { export const getPaymentsFromOrder = (order: HttpTypes.AdminOrder) => {
return order.payment_collections return order.payment_collections
@@ -6,3 +6,18 @@ export const getPaymentsFromOrder = (order: HttpTypes.AdminOrder) => {
.flat(1) .flat(1)
.filter(Boolean) as HttpTypes.AdminPayment[] .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
)
}
@@ -23,6 +23,7 @@ import {
useReservationItems, useReservationItems,
useShippingOptions, useShippingOptions,
} from "../../../../../hooks/api" } from "../../../../../hooks/api"
import { getReservationsLimitCount } from "../../../../../lib/orders"
type OrderCreateFulfillmentFormProps = { type OrderCreateFulfillmentFormProps = {
order: AdminOrder order: AdminOrder
@@ -41,6 +42,7 @@ export function OrderCreateFulfillmentForm({
const { reservations } = useReservationItems({ const { reservations } = useReservationItems({
line_item_id: order.items.map((i) => i.id), line_item_id: order.items.map((i) => i.id),
limit: getReservationsLimitCount(order),
}) })
const itemReservedQuantitiesMap = useMemo( const itemReservedQuantitiesMap = useMemo(
@@ -51,6 +51,7 @@ import { useReturns } from "../../../../../hooks/api/returns"
import { useDate } from "../../../../../hooks/use-date" import { useDate } from "../../../../../hooks/use-date"
import { getTotalCreditLines } from "../../../../../lib/credit-line" import { getTotalCreditLines } from "../../../../../lib/credit-line"
import { formatCurrency } from "../../../../../lib/format-currency" import { formatCurrency } from "../../../../../lib/format-currency"
import { getReservationsLimitCount } from "../../../../../lib/orders"
import { import {
getLocaleAmount, getLocaleAmount,
getStylizedAmount, getStylizedAmount,
@@ -78,6 +79,7 @@ export const OrderSummarySection = ({
const { reservations } = useReservationItems( const { reservations } = useReservationItems(
{ {
line_item_id: order?.items?.map((i) => i.id), line_item_id: order?.items?.map((i) => i.id),
limit: getReservationsLimitCount(order),
}, },
{ enabled: Array.isArray(order?.items) } { enabled: Array.isArray(order?.items) }
) )