diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 06a9f6551073..3430ff025bc0 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -891,7 +891,6 @@ const CONST = { BULK_EDIT: 'bulkEdit', NEW_MANUAL_EXPENSE_FLOW: 'newManualExpenseFlow', SUBMIT_2026: 'submit2026', - BULK_SUBMIT_APPROVE_PAY: 'bulkSubmitApprovePay', }, BUTTON_STATES: { DEFAULT: 'default', diff --git a/src/components/MoneyReportHeaderActions/MoneyReportHeaderSelectionDropdown.tsx b/src/components/MoneyReportHeaderActions/MoneyReportHeaderSelectionDropdown.tsx index 6013bfa00c08..f36decc7d0b4 100644 --- a/src/components/MoneyReportHeaderActions/MoneyReportHeaderSelectionDropdown.tsx +++ b/src/components/MoneyReportHeaderActions/MoneyReportHeaderSelectionDropdown.tsx @@ -84,7 +84,6 @@ function MoneyReportHeaderSelectionDropdown({reportID, primaryAction, isReportIn const {isOffline} = useNetwork(); const {isBetaEnabled} = usePermissions(); const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT); - const isBulkSubmitApprovePayBetaEnabled = isBetaEnabled(CONST.BETAS.BULK_SUBMIT_APPROVE_PAY); const activeAdminPolicies = useActiveAdminPolicies(); const lastWorkspaceNumber = useLastWorkspaceNumber(); const {convertToDisplayString} = useCurrencyListActions(); @@ -373,42 +372,40 @@ function MoneyReportHeaderSelectionDropdown({reportID, primaryAction, isReportIn // Ref writes below are inside onSelected callbacks that only fire on user interaction, never during render. - const selectionModeReportLevelActions: Array & Pick> = !isBulkSubmitApprovePayBetaEnabled - ? [] - : [ - ...(hasSubmitAction && !shouldBlockSubmit - ? [ - { - text: translate('common.submit'), - icon: expensifyIcons.Send, - value: CONST.REPORT.PRIMARY_ACTIONS.SUBMIT, - onSelected: () => handleSubmitReport(true), - }, - ] - : []), - ...(hasApproveAction && !isBlockSubmitDueToPreventSelfApproval - ? [ - { - text: translate('iou.approve'), - icon: expensifyIcons.ThumbsUp, - value: CONST.REPORT.PRIMARY_ACTIONS.APPROVE, - onSelected: () => confirmApproval(true), - }, - ] - : []), - ...(hasPayAction && !(isOffline && !canAllowSettlement) - ? [ - { - text: translate('iou.settlePayment', totalAmount), - icon: expensifyIcons.Cash, - value: CONST.REPORT.PRIMARY_ACTIONS.PAY as string, - rightIcon: expensifyIcons.ArrowRight, - backButtonText: translate('iou.settlePayment', totalAmount), - subMenuItems: paymentSubMenuItems, - }, - ] - : []), - ]; + const selectionModeReportLevelActions: Array & Pick> = [ + ...(hasSubmitAction && !shouldBlockSubmit + ? [ + { + text: translate('common.submit'), + icon: expensifyIcons.Send, + value: CONST.REPORT.PRIMARY_ACTIONS.SUBMIT, + onSelected: () => handleSubmitReport(true), + }, + ] + : []), + ...(hasApproveAction && !isBlockSubmitDueToPreventSelfApproval + ? [ + { + text: translate('iou.approve'), + icon: expensifyIcons.ThumbsUp, + value: CONST.REPORT.PRIMARY_ACTIONS.APPROVE, + onSelected: () => confirmApproval(true), + }, + ] + : []), + ...(hasPayAction && !(isOffline && !canAllowSettlement) + ? [ + { + text: translate('iou.settlePayment', totalAmount), + icon: expensifyIcons.Cash, + value: CONST.REPORT.PRIMARY_ACTIONS.PAY as string, + rightIcon: expensifyIcons.ArrowRight, + backButtonText: translate('iou.settlePayment', totalAmount), + subMenuItems: paymentSubMenuItems, + }, + ] + : []), + ]; const mappedOptions = originalSelectedTransactionsOptions.map((option) => { if (option.value === CONST.REPORT.SECONDARY_ACTIONS.DELETE) { diff --git a/src/hooks/usePaymentOptions.ts b/src/hooks/usePaymentOptions.ts index 0edc978855f0..4098e606fbd3 100644 --- a/src/hooks/usePaymentOptions.ts +++ b/src/hooks/usePaymentOptions.ts @@ -115,13 +115,14 @@ function usePaymentOptions({ const isInvoiceReport = (!isEmptyObject(iouReport) && isInvoiceReportUtil(iouReport)) || false; const shouldShowPayWithExpensifyOption = !shouldHidePaymentOptions; const shouldShowPayElsewhereOption = !shouldHidePaymentOptions && !isInvoiceReport; + const hasPersonalBankAccount = Object.values(bankAccountList).some((account) => account?.accountData?.type === CONST.BANK_ACCOUNT.TYPE.PERSONAL); const paymentButtonOptions = useMemo(() => { const buttonOptions = []; const isExpenseReport = isExpenseReportUtil(iouReport); const paymentMethods = { [CONST.IOU.PAYMENT_TYPE.EXPENSIFY]: { - text: hasActivatedWallet ? translate('iou.settleWallet', '') : translate('iou.settlePersonal', ''), - icon: icons.User, + text: hasActivatedWallet || hasPersonalBankAccount ? translate('iou.settleWallet', '') : translate('iou.settlePersonal', ''), + icon: hasActivatedWallet || hasPersonalBankAccount ? icons.Wallet : icons.User, value: CONST.IOU.PAYMENT_TYPE.EXPENSIFY, }, [CONST.IOU.PAYMENT_TYPE.VBBA]: { @@ -265,6 +266,8 @@ function usePaymentOptions({ onPress, onlyShowPayElsewhere, icons, + hasActivatedWallet, + hasPersonalBankAccount, ]); return paymentButtonOptions; diff --git a/src/hooks/useSelectionModeReportActions.ts b/src/hooks/useSelectionModeReportActions.ts index 878fd1301342..78440d48f6a8 100644 --- a/src/hooks/useSelectionModeReportActions.ts +++ b/src/hooks/useSelectionModeReportActions.ts @@ -130,7 +130,6 @@ function useSelectionModeReportActions({ const expensifyIcons = useMemoizedLazyExpensifyIcons(['Send', 'ThumbsUp', 'Cash', 'ArrowRight', 'Building'] as const); const isASAPSubmitBetaEnabled = isBetaEnabled(CONST.BETAS.ASAP_SUBMIT); - const isBulkSubmitApprovePayBetaEnabled = isBetaEnabled(CONST.BETAS.BULK_SUBMIT_APPROVE_PAY); const currentUserEmail = session?.email; const hasViolations = hasViolationsReportUtils(report?.reportID, allTransactionViolations, currentUserAccountID, currentUserEmail ?? ''); @@ -496,9 +495,6 @@ function useSelectionModeReportActions({ })(); const selectionModeReportLevelActions = (() => { - if (!isBulkSubmitApprovePayBetaEnabled) { - return []; - } const actions: Array & Pick> = []; let idx = 0; if (hasSubmitAction && !shouldBlockSubmit) {