diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index ef8674e2f16c..805f00e89866 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -61,6 +61,7 @@ import {addSMSDomainIfPhoneNumber} from '@libs/PhoneNumber'; import {getPerDiemCustomUnit, getPolicy, getSubmitToAccountID, hasDependentTags, isControlPolicy, isPaidGroupPolicy, isPolicyAdmin, isSubmitAndClose} from '@libs/PolicyUtils'; import { getAllReportActions, + getIOUReportIDFromReportActionPreview, getLastVisibleAction, getLastVisibleMessage, getOriginalMessage, @@ -7851,6 +7852,23 @@ function getReportFromHoldRequestsOnyxData( }; } +function hasOutstandingChildRequest(chatReport: OnyxTypes.Report, excludedIOUReport: OnyxEntry, policyId?: string) { + const policy = getPolicy(policyId); + if (!policy?.achAccount?.bankAccountID) { + return false; + } + const reportActions = getAllReportActions(chatReport.reportID); + return !!Object.values(reportActions).find((action) => { + const iouReportID = getIOUReportIDFromReportActionPreview(action); + if (iouReportID === excludedIOUReport?.reportID) { + return false; + } + const iouReport = getReportOrDraftReport(iouReportID); + const transactions = getReportTransactions(iouReportID); + return canIOUBePaid(iouReport, chatReport, policy, transactions) || canIOUBePaid(iouReport, chatReport, policy, transactions, true); + }); +} + function getPayMoneyRequestParams( initialChatReport: OnyxTypes.Report, iouReport: OnyxEntry, @@ -7937,7 +7955,7 @@ function getPayMoneyRequestParams( const optimisticChatReport = { ...chatReport, lastReadTime: DateUtils.getDBTime(), - hasOutstandingChildRequest: false, + hasOutstandingChildRequest: hasOutstandingChildRequest(chatReport, iouReport, iouReport?.policyID), iouReportID: null, lastMessageText: getReportActionText(optimisticIOUReportAction), lastMessageHtml: getReportActionHtml(optimisticIOUReportAction),