diff --git a/src/components/AddPaymentMethodMenu.tsx b/src/components/AddPaymentMethodMenu.tsx index b73904c78abd..3692739a5d8f 100644 --- a/src/components/AddPaymentMethodMenu.tsx +++ b/src/components/AddPaymentMethodMenu.tsx @@ -3,6 +3,7 @@ import type {RefObject} from 'react'; import React, {useEffect, useState} from 'react'; import type {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; +import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; @@ -65,6 +66,7 @@ function AddPaymentMethodMenu({ const [introSelected, introSelectedStatus] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED); const [isSelfTourViewed = false] = useOnyx(ONYXKEYS.NVP_ONBOARDING, {selector: hasSeenTourSelector}); const [betas] = useOnyx(ONYXKEYS.BETAS); + const {accountID: currentUserAccountID} = useCurrentUserPersonalDetails(); // Users can choose to pay with business bank account in case of Expense reports or in case of P2P IOU report // which then starts a bottom up flow and creates a Collect workspace where the payer is an admin and payee is an employee. @@ -83,9 +85,9 @@ function AddPaymentMethodMenu({ return; } - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, isSelfTourViewed, betas); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, isSelfTourViewed, betas, currentUserAccountID); onItemSelected(CONST.PAYMENT_METHODS.PERSONAL_BANK_ACCOUNT); - }, [betas, introSelected, isLoadingIntroSelected, isPersonalOnlyOption, isVisible, onItemSelected, isSelfTourViewed]); + }, [betas, currentUserAccountID, introSelected, isLoadingIntroSelected, isPersonalOnlyOption, isVisible, onItemSelected, isSelfTourViewed]); if (isPersonalOnlyOption) { return null; @@ -112,7 +114,7 @@ function AddPaymentMethodMenu({ text: translate('common.personalBankAccount'), icon: icons.Bank, onSelected: () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, isSelfTourViewed, betas); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, isSelfTourViewed, betas, currentUserAccountID); onItemSelected(CONST.PAYMENT_METHODS.PERSONAL_BANK_ACCOUNT); }, }, diff --git a/src/components/KYCWall/BaseKYCWall.tsx b/src/components/KYCWall/BaseKYCWall.tsx index 3613fff73cdb..7991e1fdc28a 100644 --- a/src/components/KYCWall/BaseKYCWall.tsx +++ b/src/components/KYCWall/BaseKYCWall.tsx @@ -194,7 +194,7 @@ function KYCWall({ if (policyID && iouReport?.policyID) { savePreferredPaymentMethod(iouReport.policyID, policyID, CONST.LAST_PAYMENT_METHOD.IOU, lastPaymentMethod?.[iouReport?.policyID]); } - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, isSelfTourViewed, betas, adminsChatReportID, policyID); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, isSelfTourViewed, betas, currentUserAccountID, adminsChatReportID, policyID); const workspaceReportRoute = workspaceChatReportID ? ROUTES.REPORT_WITH_ID.getRoute(workspaceChatReportID) : undefined; setNavigationActionToMicrotaskQueue(() => { diff --git a/src/libs/actions/IOU/PayMoneyRequest.ts b/src/libs/actions/IOU/PayMoneyRequest.ts index b04d6c0872a1..79e43c1efbed 100644 --- a/src/libs/actions/IOU/PayMoneyRequest.ts +++ b/src/libs/actions/IOU/PayMoneyRequest.ts @@ -38,7 +38,7 @@ import type {Participant} from '@src/types/onyx/IOU'; import type {PaymentMethodType} from '@src/types/onyx/OriginalMessage'; import type {OnyxData} from '@src/types/onyx/Request'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; -import {getAllPersonalDetails, getAllTransactionViolations, getUserAccountID} from '.'; +import {getAllPersonalDetails, getAllTransactionViolations} from '.'; import {getReportFromHoldRequestsOnyxData} from './Hold'; import {getReportPreviewAction} from './MoneyRequestBuilder'; @@ -696,18 +696,17 @@ function completePaymentOnboarding( introSelected: OnyxEntry, isSelfTourViewed: boolean | undefined, betas: OnyxEntry, + currentUserAccountID: number, adminsChatReportID?: string, onboardingPolicyID?: string, ) { - const deprecatedUserAccountID = getUserAccountID(); - const isInviteOnboardingComplete = introSelected?.isInviteOnboardingComplete ?? false; if (isInviteOnboardingComplete || !introSelected?.choice || !introSelected?.inviteType) { return; } - const personalDetailsListValues = Object.values(getPersonalDetailsForAccountIDs(deprecatedUserAccountID ? [deprecatedUserAccountID] : [], getAllPersonalDetails())); + const personalDetailsListValues = Object.values(getPersonalDetailsForAccountIDs(currentUserAccountID ? [currentUserAccountID] : [], getAllPersonalDetails())); const personalDetails = personalDetailsListValues.at(0); let onboardingPurpose = introSelected?.choice; @@ -770,7 +769,7 @@ function payMoneyRequest(params: PayMoneyRequestFunctionParams) { } const paymentSelected = paymentType === CONST.IOU.PAYMENT_TYPE.VBBA ? CONST.IOU.PAYMENT_SELECTED.BBA : CONST.IOU.PAYMENT_SELECTED.PBA; - completePaymentOnboarding(paymentSelected, introSelected, isSelfTourViewed, betas); + completePaymentOnboarding(paymentSelected, introSelected, isSelfTourViewed, betas, currentUserAccountID); const recipient = {accountID: iouReport?.ownerAccountID ?? CONST.DEFAULT_NUMBER_ID}; const {params: payMoneyRequestParams, onyxData} = getPayMoneyRequestParams({ @@ -854,7 +853,7 @@ function payInvoice({ }); const paymentSelected = paymentMethodType === CONST.IOU.PAYMENT_TYPE.VBBA ? CONST.IOU.PAYMENT_SELECTED.BBA : CONST.IOU.PAYMENT_SELECTED.PBA; - completePaymentOnboarding(paymentSelected, introSelected, isSelfTourViewed, betas); + completePaymentOnboarding(paymentSelected, introSelected, isSelfTourViewed, betas, currentUserAccountIDParam); let params: PayInvoiceParams = { reportID: invoiceReport?.reportID, diff --git a/tests/actions/IOUTest/PayMoneyRequestTest.ts b/tests/actions/IOUTest/PayMoneyRequestTest.ts index a64c39394241..3bb77d818294 100644 --- a/tests/actions/IOUTest/PayMoneyRequestTest.ts +++ b/tests/actions/IOUTest/PayMoneyRequestTest.ts @@ -1856,7 +1856,7 @@ describe('actions/IOU/PayMoneyRequest', () => { }); it('should not call completeOnboarding when introSelected is undefined', () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, undefined, false, [CONST.BETAS.ALL]); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, undefined, false, [CONST.BETAS.ALL], CARLOS_ACCOUNT_ID); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); @@ -1870,6 +1870,7 @@ describe('actions/IOU/PayMoneyRequest', () => { }, false, [CONST.BETAS.ALL], + CARLOS_ACCOUNT_ID, ); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); @@ -1882,6 +1883,7 @@ describe('actions/IOU/PayMoneyRequest', () => { }, false, [CONST.BETAS.ALL], + CARLOS_ACCOUNT_ID, ); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); @@ -1894,6 +1896,7 @@ describe('actions/IOU/PayMoneyRequest', () => { }, false, [CONST.BETAS.ALL], + CARLOS_ACCOUNT_ID, ); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); @@ -1904,7 +1907,7 @@ describe('actions/IOU/PayMoneyRequest', () => { inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, companySize: CONST.ONBOARDING_COMPANY_SIZE.MICRO, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, false, [CONST.BETAS.ALL]); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, false, [CONST.BETAS.ALL], CARLOS_ACCOUNT_ID); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -1924,7 +1927,7 @@ describe('actions/IOU/PayMoneyRequest', () => { inviteType: CONST.ONBOARDING_INVITE_TYPES.INVOICE, companySize: CONST.ONBOARDING_COMPANY_SIZE.SMALL, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, false, [CONST.BETAS.ALL]); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, false, [CONST.BETAS.ALL], CARLOS_ACCOUNT_ID); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -1943,7 +1946,7 @@ describe('actions/IOU/PayMoneyRequest', () => { choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM, inviteType: CONST.ONBOARDING_INVITE_TYPES.INVOICE, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, false, [CONST.BETAS.ALL]); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, false, [CONST.BETAS.ALL], CARLOS_ACCOUNT_ID); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -1959,7 +1962,7 @@ describe('actions/IOU/PayMoneyRequest', () => { choice: CONST.ONBOARDING_CHOICES.SUBMIT, inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, false, [CONST.BETAS.ALL]); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, false, [CONST.BETAS.ALL], CARLOS_ACCOUNT_ID); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -1976,7 +1979,7 @@ describe('actions/IOU/PayMoneyRequest', () => { inviteType: CONST.ONBOARDING_INVITE_TYPES.CHAT, companySize: CONST.ONBOARDING_COMPANY_SIZE.MEDIUM, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, false, [CONST.BETAS.ALL], 'adminsChatReport123', 'policyID456'); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, false, [CONST.BETAS.ALL], CARLOS_ACCOUNT_ID, 'adminsChatReport123', 'policyID456'); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -1995,7 +1998,7 @@ describe('actions/IOU/PayMoneyRequest', () => { inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, companySize: CONST.ONBOARDING_COMPANY_SIZE.MICRO, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, true, [CONST.BETAS.ALL]); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, true, [CONST.BETAS.ALL], CARLOS_ACCOUNT_ID); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({