diff --git a/src/components/admin/FulfillmentTable.tsx b/src/components/admin/FulfillmentTable.tsx index 3eb91df..7e68110 100644 --- a/src/components/admin/FulfillmentTable.tsx +++ b/src/components/admin/FulfillmentTable.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useTransition } from 'react'; +import { useEffect, useState, useTransition } from 'react'; import { useTranslations, useLocale } from 'next-intl'; import { setItemFulfillment, @@ -109,6 +109,13 @@ function FulfillmentRow({ const [delivered, setDelivered] = useState(item.deliveredQuantity); const [returned, setReturned] = useState(item.returnedQuantity); + // Sync local state when server data refreshes (e.g. after deliver-all / + // return-all bulk actions). Without this, the inputs stay stale until reload. + useEffect(() => { + setDelivered(item.deliveredQuantity); + setReturned(item.returnedQuantity); + }, [item.deliveredQuantity, item.returnedQuantity]); + const outstanding = Math.max(0, delivered - returned); const dirty = delivered !== item.deliveredQuantity || returned !== item.returnedQuantity;