diff --git a/src/frontend/src/tables/build/BuildOutputTable.tsx b/src/frontend/src/tables/build/BuildOutputTable.tsx index c5aa65ae49..a331855fdf 100644 --- a/src/frontend/src/tables/build/BuildOutputTable.tsx +++ b/src/frontend/src/tables/build/BuildOutputTable.tsx @@ -46,6 +46,7 @@ import { useCreateApiFormModal, useEditApiFormModal } from '../../hooks/UseForm'; +import useStatusCodes from '../../hooks/UseStatusCodes'; import { useStockAdjustActions } from '../../hooks/UseStockAdjustActions'; import { useTable } from '../../hooks/UseTable'; import { useUserState } from '../../states/UserState'; @@ -152,6 +153,8 @@ export default function BuildOutputTable({ return build.part ?? -1; }, [build.part]); + const buildStatus = useStatusCodes({ modelType: ModelType.build }); + // Fetch the test templates associated with the partId const { data: testTemplates } = useQuery({ queryKey: ['buildoutputtests', partId, build], @@ -469,6 +472,8 @@ export default function BuildOutputTable({ const rowActions = useCallback( (record: any): RowAction[] => { + const production = build?.status == buildStatus.PRODUCTION; + return [ RowViewAction({ title: t`View Build Output`, @@ -480,18 +485,24 @@ export default function BuildOutputTable({ title: t`Allocate`, tooltip: t`Allocate stock to build output`, color: 'blue', - hidden: !hasTrackedItems || !user.hasChangeRole(UserRoles.build), + hidden: + !production || + !hasTrackedItems || + !user.hasChangeRole(UserRoles.build), icon: , onClick: () => { setSelectedOutputs([record]); - openDrawer(); + openAllocationDrawer(); } }, { title: t`Deallocate`, tooltip: t`Deallocate stock from build output`, color: 'red', - hidden: !hasTrackedItems || !user.hasChangeRole(UserRoles.build), + hidden: + !production || + !hasTrackedItems || + !user.hasChangeRole(UserRoles.build), icon: , onClick: () => { setSelectedOutputs([record]); @@ -548,7 +559,7 @@ export default function BuildOutputTable({ } ]; }, - [user, partId, hasTrackedItems] + [buildStatus, user, partId, hasTrackedItems] ); const tableColumns: TableColumn[] = useMemo(() => { @@ -650,8 +661,15 @@ export default function BuildOutputTable({ trackedItems ]); - const [drawerOpen, { open: openDrawer, close: closeDrawer }] = - useDisclosure(false); + const [ + allocationDrawerOpen, + { open: openAllocationDrawer, close: closeAllocationDrawer } + ] = useDisclosure(false); + + const closeDrawer = useCallback(() => { + closeAllocationDrawer(); + refetchTrackedItems(); + }, [closeAllocationDrawer, refetchTrackedItems]); return ( <> @@ -666,7 +684,7 @@ export default function BuildOutputTable({ @@ -701,7 +719,7 @@ export default function BuildOutputTable({ onRowClick: (record: any) => { if (hasTrackedItems && !!record.serial) { setSelectedOutputs([record]); - openDrawer(); + openAllocationDrawer(); } } }}