diff --git a/src/libs/ReportSecondaryActionUtils.ts b/src/libs/ReportSecondaryActionUtils.ts index b397963f1c2a..9be38b2abadc 100644 --- a/src/libs/ReportSecondaryActionUtils.ts +++ b/src/libs/ReportSecondaryActionUtils.ts @@ -532,7 +532,7 @@ function isChangeWorkspaceAction(report: Report, policies: OnyxCollection isWorkspaceEligibleForReportChange(submitterEmail, newPolicy)); + const availablePolicies = Object.values(policies ?? {}).filter((newPolicy) => isWorkspaceEligibleForReportChange(submitterEmail, newPolicy, report)); let hasAvailablePolicies = availablePolicies.length > 1; if (!hasAvailablePolicies && availablePolicies.length === 1) { hasAvailablePolicies = !report.policyID || report.policyID !== availablePolicies?.at(0)?.id; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 26afd195e9a1..9c2aa455318b 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -12248,11 +12248,13 @@ function doesReportContainRequestsFromMultipleUsers(iouReport: OnyxEntry /** * Determines whether the report can be moved to the workspace. */ -function isWorkspaceEligibleForReportChange(submitterEmail: string | undefined, newPolicy: OnyxEntry): boolean { +function isWorkspaceEligibleForReportChange(submitterEmail: string | undefined, newPolicy: OnyxEntry, report?: Report): boolean { if (!submitterEmail || !newPolicy?.isPolicyExpenseChatEnabled) { return false; } - + if (report && report.stateNum === CONST.REPORT.STATE_NUM.APPROVED && report.statusNum === CONST.REPORT.STATUS_NUM.CLOSED && !isPolicyAdminPolicyUtils(newPolicy)) { + return false; + } return isPaidGroupPolicyPolicyUtils(newPolicy) && !!newPolicy.role; } diff --git a/src/pages/ReportChangeWorkspacePage.tsx b/src/pages/ReportChangeWorkspacePage.tsx index 81209f3134cf..2c44e1816499 100644 --- a/src/pages/ReportChangeWorkspacePage.tsx +++ b/src/pages/ReportChangeWorkspacePage.tsx @@ -135,7 +135,7 @@ function ReportChangeWorkspacePage({report, route}: ReportChangeWorkspacePagePro localeCompare, additionalFilter: (newPolicy) => { const isReportSettled = isSettled(report); - const isEligible = isWorkspaceEligibleForReportChange(submitterEmail, newPolicy); + const isEligible = isWorkspaceEligibleForReportChange(submitterEmail, newPolicy, report); if (isReportSettled) { return isEligible && isPolicyAdmin(newPolicy, session?.email); }