Skip to content

Commit 273273a

Browse files
authored
Merge pull request #47406 from koko57/feat/44315-ToggleCardContinuousReconciliation-be-integration
2 parents 8816cc7 + 007b76e commit 273273a

12 files changed

+138
-22
lines changed

src/CONST.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2131,6 +2131,12 @@ const CONST = {
21312131
NETSUITE: 'netsuite',
21322132
SAGE_INTACCT: 'intacct',
21332133
},
2134+
ROUTE: {
2135+
QBO: 'quickbooks-online',
2136+
XERO: 'xero',
2137+
NETSUITE: 'netsuite',
2138+
SAGE_INTACCT: 'sage-intacct',
2139+
},
21342140
NAME_USER_FRIENDLY: {
21352141
netsuite: 'NetSuite',
21362142
quickbooksOnline: 'Quickbooks Online',

src/ROUTES.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -717,11 +717,12 @@ const ROUTES = {
717717
},
718718
WORKSPACE_ACCOUNTING_CARD_RECONCILIATION: {
719719
route: 'settings/workspaces/:policyID/accounting/:connection/card-reconciliation',
720-
getRoute: (policyID: string, connection?: ConnectionName) => `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation` as const,
720+
getRoute: (policyID: string, connection?: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) => `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation` as const,
721721
},
722722
WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS: {
723723
route: 'settings/workspaces/:policyID/accounting/:connection/card-reconciliation/account',
724-
getRoute: (policyID: string, connection?: ConnectionName) => `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation/account` as const,
724+
getRoute: (policyID: string, connection?: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) =>
725+
`settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation/account` as const,
725726
},
726727
WORKSPACE_CATEGORIES: {
727728
route: 'settings/workspaces/:policyID/categories',
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
type ToggleCardContinuousReconciliationParams = {
2+
workspaceAccountID: number;
3+
shouldUseContinuousReconciliation: boolean;
4+
expensifyCardContinuousReconciliationConnection?: string;
5+
};
6+
7+
export default ToggleCardContinuousReconciliationParams;

src/libs/API/parameters/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,3 +276,4 @@ export type {default as ConfigureExpensifyCardsForPolicyParams} from './Configur
276276
export type {default as CreateExpensifyCardParams} from './CreateExpensifyCardParams';
277277
export type {default as UpdateExpensifyCardTitleParams} from './UpdateExpensifyCardTitleParams';
278278
export type {default as OpenCardDetailsPageParams} from './OpenCardDetailsPageParams';
279+
export type {default as ToggleCardContinuousReconciliationParams} from './ToggleCardContinuousReconciliationParams';

src/libs/API/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ const WRITE_COMMANDS = {
332332
CONFIGURE_EXPENSIFY_CARDS_FOR_POLICY: 'ConfigureExpensifyCardsForPolicy',
333333
CREATE_EXPENSIFY_CARD: 'CreateExpensifyCard',
334334
CREATE_ADMIN_ISSUED_VIRTUAL_CARD: 'CreateAdminIssuedVirtualCard',
335+
TOGGLE_CARD_CONTINUOUS_RECONCILIATION: 'ToggleCardContinuousReconciliation',
335336
} as const;
336337

337338
type WriteCommand = ValueOf<typeof WRITE_COMMANDS>;
@@ -669,6 +670,7 @@ type WriteCommandParameters = {
669670
[WRITE_COMMANDS.CONFIGURE_EXPENSIFY_CARDS_FOR_POLICY]: Parameters.ConfigureExpensifyCardsForPolicyParams;
670671
[WRITE_COMMANDS.CREATE_EXPENSIFY_CARD]: Parameters.CreateExpensifyCardParams;
671672
[WRITE_COMMANDS.CREATE_ADMIN_ISSUED_VIRTUAL_CARD]: Omit<Parameters.CreateExpensifyCardParams, 'feedCountry'>;
673+
[WRITE_COMMANDS.TOGGLE_CARD_CONTINUOUS_RECONCILIATION]: Parameters.ToggleCardContinuousReconciliationParams;
672674
};
673675

674676
const READ_COMMANDS = {

src/libs/AccountingUtils.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import type {ValueOf} from 'type-fest';
2+
import CONST from '@src/CONST';
3+
import type {ConnectionName} from '@src/types/onyx/Policy';
4+
5+
const ROUTE_NAME_MAPPING = {
6+
[CONST.POLICY.CONNECTIONS.ROUTE.QBO]: CONST.POLICY.CONNECTIONS.NAME.QBO,
7+
[CONST.POLICY.CONNECTIONS.ROUTE.XERO]: CONST.POLICY.CONNECTIONS.NAME.XERO,
8+
[CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT]: CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT,
9+
[CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE]: CONST.POLICY.CONNECTIONS.NAME.NETSUITE,
10+
};
11+
12+
const NAME_ROUTE_MAPPING = {
13+
[CONST.POLICY.CONNECTIONS.NAME.QBO]: CONST.POLICY.CONNECTIONS.ROUTE.QBO,
14+
[CONST.POLICY.CONNECTIONS.NAME.XERO]: CONST.POLICY.CONNECTIONS.ROUTE.XERO,
15+
[CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT]: CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT,
16+
[CONST.POLICY.CONNECTIONS.NAME.NETSUITE]: CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE,
17+
};
18+
19+
function getConnectionNameFromRouteParam(routeParam: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>) {
20+
return ROUTE_NAME_MAPPING[routeParam];
21+
}
22+
23+
function getRouteParamForConnection(connectionName: ConnectionName) {
24+
return NAME_ROUTE_MAPPING[connectionName];
25+
}
26+
27+
export {getConnectionNameFromRouteParam, getRouteParamForConnection};

src/libs/Navigation/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -620,11 +620,11 @@ type SettingsNavigatorParamList = {
620620
};
621621
[SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION]: {
622622
policyID: string;
623-
connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.NAME>;
623+
connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>;
624624
};
625625
[SCREENS.WORKSPACE.ACCOUNTING.RECONCILIATION_ACCOUNT_SETTINGS]: {
626626
policyID: string;
627-
connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.NAME>;
627+
connection: ValueOf<typeof CONST.POLICY.CONNECTIONS.ROUTE>;
628628
};
629629
[SCREENS.GET_ASSISTANCE]: {
630630
backTo: Routes;

src/libs/actions/Card.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import * as NetworkStore from '@libs/Network/NetworkStore';
1818
import CONST from '@src/CONST';
1919
import ONYXKEYS from '@src/ONYXKEYS';
2020
import type {ExpensifyCardDetails, IssueNewCardData, IssueNewCardStep} from '@src/types/onyx/Card';
21+
import type {ConnectionName} from '@src/types/onyx/Policy';
2122

2223
type ReplacementReason = 'damaged' | 'stolen';
2324

@@ -497,6 +498,64 @@ function openCardDetailsPage(cardID: number) {
497498
API.read(READ_COMMANDS.OPEN_CARD_DETAILS_PAGE, parameters);
498499
}
499500

501+
function toggleContinuousReconciliation(workspaceAccountID: number, shouldUseContinuousReconciliation: boolean, connectionName: ConnectionName, oldConnectionName?: ConnectionName) {
502+
const parameters = shouldUseContinuousReconciliation
503+
? {
504+
workspaceAccountID,
505+
shouldUseContinuousReconciliation,
506+
expensifyCardContinuousReconciliationConnection: connectionName,
507+
}
508+
: {
509+
workspaceAccountID,
510+
shouldUseContinuousReconciliation,
511+
};
512+
513+
const optimisticData: OnyxUpdate[] = [
514+
{
515+
onyxMethod: Onyx.METHOD.MERGE,
516+
key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`,
517+
value: shouldUseContinuousReconciliation,
518+
},
519+
{
520+
onyxMethod: Onyx.METHOD.MERGE,
521+
key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`,
522+
value: connectionName,
523+
},
524+
];
525+
526+
const successData: OnyxUpdate[] = [
527+
{
528+
onyxMethod: Onyx.METHOD.MERGE,
529+
key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`,
530+
value: shouldUseContinuousReconciliation,
531+
},
532+
{
533+
onyxMethod: Onyx.METHOD.MERGE,
534+
key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`,
535+
value: connectionName,
536+
},
537+
];
538+
539+
const failureData: OnyxUpdate[] = [
540+
{
541+
onyxMethod: Onyx.METHOD.MERGE,
542+
key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`,
543+
value: !shouldUseContinuousReconciliation,
544+
},
545+
{
546+
onyxMethod: Onyx.METHOD.MERGE,
547+
key: `${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`,
548+
value: oldConnectionName ?? null,
549+
},
550+
];
551+
552+
API.write(WRITE_COMMANDS.TOGGLE_CARD_CONTINUOUS_RECONCILIATION, parameters, {
553+
optimisticData,
554+
successData,
555+
failureData,
556+
});
557+
}
558+
500559
export {
501560
requestReplacementExpensifyCard,
502561
activatePhysicalExpensifyCard,
@@ -513,5 +572,6 @@ export {
513572
configureExpensifyCardsForPolicy,
514573
issueExpensifyCard,
515574
openCardDetailsPage,
575+
toggleContinuousReconciliation,
516576
};
517577
export type {ReplacementReason};

src/pages/workspace/accounting/PolicyAccountingPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ function accountingIntegrationData(
106106
),
107107
onImportPagePress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_IMPORT.getRoute(policyID)),
108108
onExportPagePress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_EXPORT.getRoute(policyID)),
109-
onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO)),
109+
onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.ROUTE.QBO)),
110110
onAdvancedPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID)),
111111
};
112112
case CONST.POLICY.CONNECTIONS.NAME.XERO:
@@ -187,7 +187,7 @@ function accountingIntegrationData(
187187
? CONST.SAGE_INTACCT_CONFIG.NON_REIMBURSABLE_VENDOR
188188
: CONST.SAGE_INTACCT_CONFIG.NON_REIMBURSABLE_CREDIT_CARD_VENDOR,
189189
],
190-
onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT)),
190+
onCardReconciliationPagePress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.getRoute(policyID, CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT)),
191191
onAdvancedPagePress: () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID)),
192192
subscribedAdvancedSettings: [
193193
CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC_ENABLED,

src/pages/workspace/accounting/reconciliation/CardReconciliationPage.tsx

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,55 +9,60 @@ import Text from '@components/Text';
99
import TextLink from '@components/TextLink';
1010
import useLocalize from '@hooks/useLocalize';
1111
import useThemeStyles from '@hooks/useThemeStyles';
12+
import * as AccountingUtils from '@libs/AccountingUtils';
1213
import Navigation from '@navigation/Navigation';
1314
import type {SettingsNavigatorParamList} from '@navigation/types';
1415
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
1516
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
1617
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
1718
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
19+
import * as Card from '@userActions/Card';
1820
import CONST from '@src/CONST';
1921
import ONYXKEYS from '@src/ONYXKEYS';
2022
import ROUTES from '@src/ROUTES';
2123
import type SCREENS from '@src/SCREENS';
24+
import type {ConnectionName} from '@src/types/onyx/Policy';
2225

2326
type CardReconciliationPageProps = WithPolicyConnectionsProps & StackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION>;
2427

2528
function CardReconciliationPage({policy, route}: CardReconciliationPageProps) {
2629
const styles = useThemeStyles();
2730
const {translate} = useLocalize();
2831

29-
const [reconciliationConnection] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${policy?.workspaceAccountID}`);
30-
const [isContinuousReconciliationOn] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${policy?.workspaceAccountID}`);
31-
const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${policy?.workspaceAccountID}`);
32+
const workspaceAccountID = policy?.workspaceAccountID ?? -1;
33+
34+
const [isContinuousReconciliationOn] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`);
35+
const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`);
36+
const [currentConnectionName] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`);
3237
const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST);
3338

3439
const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0;
3540
const bankAccountTitle = bankAccountList?.[paymentBankAccountID]?.title ?? '';
3641

3742
const policyID = policy?.id ?? '-1';
3843
const {connection} = route.params;
39-
const autoSync = !!policy?.connections?.[connection]?.config?.autoSync?.enabled;
44+
const connectionName = AccountingUtils.getConnectionNameFromRouteParam(connection) as ConnectionName;
45+
const autoSync = !!policy?.connections?.[connectionName]?.config?.autoSync?.enabled;
4046

41-
// eslint-disable-next-line rulesdir/prefer-early-return
42-
const toggleContinuousReconciliation = () => {
43-
if (!isContinuousReconciliationOn) {
47+
const toggleContinuousReconciliation = (value: boolean) => {
48+
Card.toggleContinuousReconciliation(workspaceAccountID, value, connectionName, currentConnectionName);
49+
if (value) {
4450
Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS.getRoute(policyID, connection));
4551
}
46-
// TODO: add API call when it's supported https://github.com/Expensify/Expensify/issues/407834
4752
};
4853

4954
const navigateToAdvancedSettings = useCallback(() => {
5055
switch (connection) {
51-
case CONST.POLICY.CONNECTIONS.NAME.QBO:
56+
case CONST.POLICY.CONNECTIONS.ROUTE.QBO:
5257
Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID));
5358
break;
54-
case CONST.POLICY.CONNECTIONS.NAME.XERO:
59+
case CONST.POLICY.CONNECTIONS.ROUTE.XERO:
5560
Navigation.navigate(ROUTES.POLICY_ACCOUNTING_XERO_ADVANCED.getRoute(policyID));
5661
break;
57-
case CONST.POLICY.CONNECTIONS.NAME.NETSUITE:
62+
case CONST.POLICY.CONNECTIONS.ROUTE.NETSUITE:
5863
Navigation.navigate(ROUTES.POLICY_ACCOUNTING_NETSUITE_ADVANCED.getRoute(policyID));
5964
break;
60-
case CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT:
65+
case CONST.POLICY.CONNECTIONS.ROUTE.SAGE_INTACCT:
6166
Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.getRoute(policyID));
6267
break;
6368
default:
@@ -98,10 +103,10 @@ function CardReconciliationPage({policy, route}: CardReconciliationPageProps) {
98103
>
99104
{translate('workspace.accounting.autoSync').toLowerCase()}
100105
</TextLink>{' '}
101-
{translate('common.conjunctionFor')} {CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connection]}
106+
{translate('common.conjunctionFor')} {CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}
102107
</Text>
103108
)}
104-
{!!reconciliationConnection && (
109+
{!!paymentBankAccountID && isContinuousReconciliationOn && (
105110
<MenuItemWithTopDescription
106111
style={styles.mt5}
107112
title={bankAccountTitle}

src/pages/workspace/accounting/reconciliation/ReconciliationAccountSettingsPage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Text from '@components/Text';
88
import TextLink from '@components/TextLink';
99
import useLocalize from '@hooks/useLocalize';
1010
import useThemeStyles from '@hooks/useThemeStyles';
11+
import * as AccountingUtils from '@libs/AccountingUtils';
1112
import {getLastFourDigits} from '@libs/BankAccountUtils';
1213
import * as PolicyUtils from '@libs/PolicyUtils';
1314
import Navigation from '@navigation/Navigation';
@@ -26,6 +27,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting
2627
const {translate} = useLocalize();
2728

2829
const workspaceAccountID = PolicyUtils.getWorkspaceAccountID(policyID);
30+
const connectionName = AccountingUtils.getConnectionNameFromRouteParam(connection);
2931

3032
const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST);
3133
const [cardSettings] = useOnyx(`${ONYXKEYS.COLLECTION.PRIVATE_EXPENSIFY_CARD_SETTINGS}${workspaceAccountID}`);
@@ -58,7 +60,7 @@ function ReconciliationAccountSettingsPage({route}: ReconciliationAccountSetting
5860
policyID={policyID}
5961
featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED}
6062
contentContainerStyle={[styles.flex1, styles.pb2]}
61-
connectionName={connection}
63+
connectionName={connectionName}
6264
shouldUseScrollView={false}
6365
>
6466
<Text style={[styles.textNormal, styles.mb5, styles.ph5]}>{translate('workspace.accounting.chooseReconciliationAccount.chooseBankAccount')}</Text>

src/pages/workspace/expensifyCard/WorkspaceSettlementAccountPage.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Text from '@components/Text';
1313
import TextLink from '@components/TextLink';
1414
import useLocalize from '@hooks/useLocalize';
1515
import useThemeStyles from '@hooks/useThemeStyles';
16+
import * as AccountingUtils from '@libs/AccountingUtils';
1617
import {getLastFourDigits} from '@libs/BankAccountUtils';
1718
import * as CardUtils from '@libs/CardUtils';
1819
import * as PolicyUtils from '@libs/PolicyUtils';
@@ -25,6 +26,7 @@ import ONYXKEYS from '@src/ONYXKEYS';
2526
import ROUTES from '@src/ROUTES';
2627
import type SCREENS from '@src/SCREENS';
2728
import type {BankName} from '@src/types/onyx/Bank';
29+
import type {ConnectionName} from '@src/types/onyx/Policy';
2830

2931
type WorkspaceSettlementAccountPageProps = StackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.EXPENSIFY_CARD_SETTINGS_ACCOUNT>;
3032

@@ -39,6 +41,9 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP
3941
const [isUsedContinuousReconciliation] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_USE_CONTINUOUS_RECONCILIATION}${workspaceAccountID}`);
4042
const [reconciliationConnection] = useOnyx(`${ONYXKEYS.COLLECTION.EXPENSIFY_CARD_CONTINUOUS_RECONCILIATION_CONNECTION}${workspaceAccountID}`);
4143

44+
const connectionName = reconciliationConnection ?? '';
45+
const connectionParam = AccountingUtils.getRouteParamForConnection(connectionName as ConnectionName);
46+
4247
const paymentBankAccountID = cardSettings?.paymentBankAccountID ?? 0;
4348
const paymentBankAccountNumber = bankAccountsList?.[paymentBankAccountID.toString()]?.accountData?.accountNumber ?? '';
4449

@@ -97,7 +102,7 @@ function WorkspaceSettlementAccountPage({route}: WorkspaceSettlementAccountPageP
97102
{isUsedContinuousReconciliation && (
98103
<Text style={[styles.mh5, styles.mb6]}>
99104
<Text>{translate('workspace.expensifyCard.settlementAccountInfoPt1')}</Text>{' '}
100-
<TextLink onPress={() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS.getRoute(policyID, reconciliationConnection))}>
105+
<TextLink onPress={() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS.getRoute(policyID, connectionParam))}>
101106
{translate('workspace.expensifyCard.reconciliationAccount')}
102107
</TextLink>{' '}
103108
<Text>{`(${CONST.MASKED_PAN_PREFIX}${getLastFourDigits(paymentBankAccountNumber)}) `}</Text>

0 commit comments

Comments
 (0)