diff --git a/src/app/(protected)/workorders/[id].tsx b/src/app/(protected)/workorders/[id].tsx
index e30574da..48f0fff0 100644
--- a/src/app/(protected)/workorders/[id].tsx
+++ b/src/app/(protected)/workorders/[id].tsx
@@ -25,7 +25,7 @@ export default function WorkOrderViewPage() {
const navigate = useNavigate();
const workOrderId = id ?? "";
const controller = useWorkOrderViewController(workOrderId);
- const { wo, isLoading, error, refetch, vendorEditor } = controller;
+ const { wo, isLoading, isClosabilityReady, error, refetch, vendorEditor } = controller;
if (isLoading && !wo) {
return ;
@@ -48,7 +48,10 @@ export default function WorkOrderViewPage() {
const handleStatusChange = (status: WorkOrderStatus) => {
const isCompletionStatus = isCompletionStatusLabel(status);
- if (isCompletionStatus && getClosabilityGaps(detailToClosabilityInput(wo)).length > 0) {
+ if (
+ isCompletionStatus &&
+ (!isClosabilityReady || getClosabilityGaps(detailToClosabilityInput(wo)).length > 0)
+ ) {
return;
}
controller.statusMutation.mutate(status);
@@ -58,6 +61,7 @@ export default function WorkOrderViewPage() {
void;
onStatusChange: (status: WorkOrderStatus) => void;
@@ -35,6 +39,7 @@ interface WorkOrderHeaderSectionProps {
export function WorkOrderHeaderSection({
wo,
+ isClosabilityReady,
statusAnchor,
onStatusAnchorChange,
onStatusChange,
@@ -83,15 +88,17 @@ export function WorkOrderHeaderSection({
>
{WORK_ORDER_STATUS_OPTIONS.map((status) => {
const isCompletionStatus = isCompletionStatusLabel(status);
- const isCompletedBlocked = isCompletionStatus && closabilityGaps.length > 0;
+ const isCompletedBlocked =
+ isCompletionStatus && (!isClosabilityReady || closabilityGaps.length > 0);
+ const blockedTitle = !isClosabilityReady
+ ? CLOSABILITY_UNAVAILABLE_TITLE
+ : formatClosabilityMissingTitle(closabilityGaps);
return (