diff --git a/src/libs/NextStepUtils.ts b/src/libs/NextStepUtils.ts
index 2ec5b4bc4806..7854ef2dc022 100644
--- a/src/libs/NextStepUtils.ts
+++ b/src/libs/NextStepUtils.ts
@@ -11,6 +11,7 @@ import type DeepValueOf from '@src/types/utils/DeepValueOf';
import {getNextApproverAccountID} from './actions/IOU';
import DateUtils from './DateUtils';
import EmailUtils from './EmailUtils';
+import {getLoginsByAccountIDs} from './PersonalDetailsUtils';
import {getCorrectedAutoReportingFrequency, getReimburserAccountID} from './PolicyUtils';
import {getDisplayNameForParticipant, getPersonalDetailsForAccountID, isExpenseReport, isInvoiceReport, isPayer} from './ReportUtils';
@@ -66,8 +67,8 @@ function parseMessage(messages: Message[] | undefined) {
return `${formattedHtml}`;
}
-function getNextApproverDisplayName(report: OnyxEntry) {
- const approverAccountID = getNextApproverAccountID(report);
+function getNextApproverDisplayName(report: OnyxEntry, isUnapprove?: boolean) {
+ const approverAccountID = getNextApproverAccountID(report, isUnapprove);
return getDisplayNameForParticipant(approverAccountID) ?? getPersonalDetailsForAccountID(approverAccountID).login;
}
@@ -80,7 +81,7 @@ function getNextApproverDisplayName(report: OnyxEntry) {
* @param parameters.isPaidWithExpensify - Whether a report has been paid with Expensify or outside
* @returns nextStep
*/
-function buildNextStep(report: OnyxEntry, predictedNextStatus: ValueOf): ReportNextStep | null {
+function buildNextStep(report: OnyxEntry, predictedNextStatus: ValueOf, isUnapprove?: boolean): ReportNextStep | null {
if (!isExpenseReport(report)) {
return null;
}
@@ -90,7 +91,9 @@ function buildNextStep(report: OnyxEntry, predictedNextStatus: ValueOf, predictedNextStatus: ValueOf) {
+function getNextApproverAccountID(report: OnyxEntry, isUnapproved = false) {
const policy = getPolicy(report?.policyID);
const approvalChain = getApprovalChain(policy, report);
const submitToAccountID = getSubmitToAccountID(policy, report);
+ if (isUnapproved) {
+ if (approvalChain.includes(currentUserEmail)) {
+ return userAccountID;
+ }
+
+ return report?.managerID;
+ }
+
if (approvalChain.length === 0) {
return submitToAccountID;
}
@@ -8240,7 +8248,7 @@ function unapproveExpenseReport(expenseReport: OnyxEntry) {
const currentNextStep = allNextSteps[`${ONYXKEYS.COLLECTION.NEXT_STEP}${expenseReport.reportID}`] ?? null;
const optimisticUnapprovedReportAction = buildOptimisticUnapprovedReportAction(expenseReport.total ?? 0, expenseReport.currency ?? '', expenseReport.reportID);
- const optimisticNextStep = buildNextStep(expenseReport, CONST.REPORT.STATUS_NUM.SUBMITTED);
+ const optimisticNextStep = buildNextStep(expenseReport, CONST.REPORT.STATUS_NUM.SUBMITTED, true);
const optimisticReportActionData: OnyxUpdate = {
onyxMethod: Onyx.METHOD.MERGE,