diff --git a/.changeset/shy-poems-lie.md b/.changeset/shy-poems-lie.md new file mode 100644 index 0000000000000..2b01b00286e19 --- /dev/null +++ b/.changeset/shy-poems-lie.md @@ -0,0 +1,5 @@ +--- +"@medusajs/admin-ui": patch +--- + +fix(admin-ui): update edit-allocation sidebar diff --git a/packages/admin-ui/ui/src/domain/orders/details/allocations/edit-allocation-modal.tsx b/packages/admin-ui/ui/src/domain/orders/details/allocations/edit-allocation-modal.tsx index 166944f2669a7..d095a5f66f9b9 100644 --- a/packages/admin-ui/ui/src/domain/orders/details/allocations/edit-allocation-modal.tsx +++ b/packages/admin-ui/ui/src/domain/orders/details/allocations/edit-allocation-modal.tsx @@ -1,13 +1,11 @@ -import { - AllocationLineItem, - AllocationLineItemForm, -} from "./allocate-items-modal" +import { AllocationLineItemForm } from "./allocate-items-modal" import { Controller, useForm, useWatch } from "react-hook-form" import { LineItem, ReservationItemDTO } from "@medusajs/medusa" import { useAdminDeleteReservation, useAdminStockLocations, useAdminUpdateReservation, + useAdminVariantsInventory, } from "medusa-react" import { useEffect, useMemo } from "react" @@ -15,8 +13,9 @@ import Button from "../../../../components/fundamentals/button" import CrossIcon from "../../../../components/fundamentals/icons/cross-icon" import Select from "../../../../components/molecules/select/next-select/select" import SideModal from "../../../../components/molecules/modal/side-modal" -import { nestedForm } from "../../../../utils/nested-form" import useNotification from "../../../../hooks/use-notification" +import Thumbnail from "../../../../components/atoms/thumbnail" +import { getFulfillableQuantity } from "../create-fulfillment/item-table" type EditAllocationLineItemForm = { location: { label: string; value: string } @@ -48,6 +47,10 @@ const EditAllocationDrawer = ({ const { stock_locations } = useAdminStockLocations(stockLocationsFilter) + const { variant, isLoading } = useAdminVariantsInventory( + item.variant_id as string + ) + const { mutate: updateReservation } = useAdminUpdateReservation( reservation?.id || "" ) @@ -126,21 +129,51 @@ const EditAllocationDrawer = ({ ) } + const { availableQuantity, inStockQuantity } = useMemo(() => { + if (isLoading || !selectedLocation?.value || !variant) { + return {} + } + const { inventory } = variant + const locationInventory = inventory[0].location_levels?.find( + (inv) => inv.location_id === selectedLocation?.value + ) + if (!locationInventory) { + return {} + } + return { + availableQuantity: locationInventory.available_quantity, + inStockQuantity: locationInventory.stocked_quantity, + } + }, [variant, selectedLocation, isLoading]) + + // we can adjust up to fulfillable quantity - the quantity reserved in other reservations + const lineItemReservationCapacity = + getFulfillableQuantity(item) - + (totalReservedQuantity - (reservation?.quantity || 0)) + + const inventoryItemReservationCapacity = + typeof availableQuantity === "number" ? availableQuantity : 0 + + const maxReservation = Math.min( + lineItemReservationCapacity, + inventoryItemReservationCapacity + ) + return (
-
-
+
+

Edit allocation

-
+

Location

@@ -152,28 +185,81 @@ const EditAllocationDrawer = ({ rules={{ required: true }} render={({ field: { value, onChange } }) => ( + {` / ${maxReservation} requested`} +
+
+
-
-

Items to Allocate

- - Select the number of items that you wish to allocate. - - -
+