diff --git a/src/libs/CardUtils.ts b/src/libs/CardUtils.ts index 3f723e1127bac..3ed3faa5ba28b 100644 --- a/src/libs/CardUtils.ts +++ b/src/libs/CardUtils.ts @@ -1102,7 +1102,7 @@ function hasIssuedExpensifyCard(workspaceAccountID: number, allCardList: OnyxCol * Check if the Expensify Card is fully set up and a new card can be issued */ function isExpensifyCardFullySetUp(policy?: OnyxEntry, cardSettings?: OnyxEntry): boolean { - return !!(policy?.areExpensifyCardsEnabled && cardSettings?.paymentBankAccountID); + return !!(policy?.areExpensifyCardsEnabled && getCardSettings(cardSettings)?.paymentBankAccountID); } function getCardSettings(cardSettings: OnyxEntry, feedCountry?: string): ExpensifyCardSettingsBase | undefined { diff --git a/src/pages/workspace/accounting/PolicyAccountingPage.tsx b/src/pages/workspace/accounting/PolicyAccountingPage.tsx index 1d88894ba81fe..6da8a62f77657 100644 --- a/src/pages/workspace/accounting/PolicyAccountingPage.tsx +++ b/src/pages/workspace/accounting/PolicyAccountingPage.tsx @@ -29,6 +29,7 @@ import usePermissions from '@hooks/usePermissions'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; +import useWorkspaceAccountID from '@hooks/useWorkspaceAccountID'; import useWorkspaceDocumentTitle from '@hooks/useWorkspaceDocumentTitle'; import {isAuthenticationError, isConnectionInProgress, isConnectionUnverified, removePolicyConnection, syncConnection} from '@libs/actions/connections'; import {shouldShowQBOReimbursableExportDestinationAccountError} from '@libs/actions/connections/QuickbooksOnline'; @@ -53,6 +54,7 @@ import Navigation from '@navigation/Navigation'; import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; import withPolicyConnections from '@pages/workspace/withPolicyConnections'; import {openOldDotLink} from '@userActions/Link'; +import {openPolicyExpensifyCardsPage} from '@userActions/Policy/Policy'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -92,6 +94,7 @@ function PolicyAccountingPage({policy}: PolicyAccountingPageProps) { const integrationToDisconnect = params?.integrationToDisconnect; const shouldDisconnectIntegrationBeforeConnecting = params?.shouldDisconnectIntegrationBeforeConnecting; const policyID = policy?.id; + const workspaceAccountID = useWorkspaceAccountID(policyID); const allCardSettings = useExpensifyCardFeeds(policyID); const isSyncInProgress = isConnectionInProgress(connectionSyncProgress, policy); const icons = useMemoizedLazyExpensifyIcons([ @@ -210,6 +213,13 @@ function PolicyAccountingPage({policy}: PolicyAccountingPageProps) { setDateTimeToRelative(''); }, [getDatetimeToRelative, successfulDate]); + useEffect(() => { + if (!policyID || !policy?.areExpensifyCardsEnabled || !workspaceAccountID) { + return; + } + openPolicyExpensifyCardsPage(policyID, workspaceAccountID); + }, [policyID, policy?.areExpensifyCardsEnabled, workspaceAccountID]); + const integrationSpecificMenuItems = useMemo(() => { const sageIntacctEntityList = policy?.connections?.intacct?.data?.entities ?? []; const netSuiteSubsidiaryList = policy?.connections?.netsuite?.options?.data?.subsidiaryList ?? []; diff --git a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx index 33097f2403cf0..b041f3dd2f636 100644 --- a/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx +++ b/src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx @@ -13,7 +13,7 @@ import useOnyx from '@hooks/useOnyx'; import useThemeStyles from '@hooks/useThemeStyles'; import {getConnectionNameFromRouteParam} from '@libs/AccountingUtils'; import {openPolicyAccountingPage} from '@libs/actions/PolicyConnections'; -import {isExpensifyCardFullySetUp} from '@libs/CardUtils'; +import {getCardSettings, isExpensifyCardFullySetUp} from '@libs/CardUtils'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import Navigation from '@navigation/Navigation'; import type {SettingsNavigatorParamList} from '@navigation/types'; @@ -74,13 +74,14 @@ function CardReconciliationPage({policy, route}: CardReconciliationPageProps) { const [currentConnectionName] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${effectiveDomainID}`); const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); - const paymentBankAccountID = fullySetUpCardSetting.cardSetting?.paymentBankAccountID ?? CONST.DEFAULT_NUMBER_ID; + const resolvedCardSettings = getCardSettings(fullySetUpCardSetting.cardSetting); + const paymentBankAccountID = resolvedCardSettings?.paymentBankAccountID ?? CONST.DEFAULT_NUMBER_ID; const bankAccountTitle = bankAccountList?.[paymentBankAccountID]?.title ?? ''; const {connection} = route.params; const connectionName = getConnectionNameFromRouteParam(connection) as ConnectionName; const autoSync = !!policy?.connections?.[connectionName]?.config?.autoSync?.enabled; - const shouldShow = !!fullySetUpCardSetting.cardSetting?.paymentBankAccountID; + const shouldShow = !!resolvedCardSettings?.paymentBankAccountID; const handleToggleContinuousReconciliation = (value: boolean) => { toggleContinuousReconciliation(effectiveDomainID, value, connectionName, currentConnectionName);