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,