Skip to content

Commit 399750a

Browse files
authored
Merge pull request Expensify#87744 from huult/83846-migrate-POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC
2 parents 96534bd + 2022bbf commit 399750a

10 files changed

Lines changed: 56 additions & 44 deletions

File tree

src/ROUTES.ts

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,14 @@ const DYNAMIC_ROUTES = {
161161
path: 'credit-card-account',
162162
entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_NON_REIMBURSABLE_EXPENSES],
163163
},
164+
POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC: {
165+
path: 'sage-intacct-autosync',
166+
entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ADVANCED],
167+
},
168+
POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD: {
169+
path: 'sage-intacct-accounting-method',
170+
entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_AUTO_SYNC, SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION_SAGE_INTACCT_AUTO_SYNC],
171+
},
164172
POLICY_ACCOUNTING_XERO_EXPORT_BANK_ACCOUNT_SELECT: {
165173
path: 'bank-account-select',
166174
entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.XERO_EXPORT],
@@ -170,7 +178,7 @@ const DYNAMIC_ROUTES = {
170178
entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.XERO_EXPORT],
171179
},
172180
POLICY_ACCOUNTING_XERO_AUTO_SYNC: {
173-
path: 'autosync',
181+
path: 'xero-autosync',
174182
entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.XERO_ADVANCED, SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION],
175183
},
176184
POLICY_ACCOUNTING_XERO_ACCOUNTING_METHOD: {
@@ -3885,25 +3893,6 @@ const ROUTES = {
38853893
return `workspaces/${policyID}/accounting/sage-intacct/advanced/payment-account` as const;
38863894
},
38873895
},
3888-
POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC: {
3889-
route: 'workspaces/:policyID/accounting/sage-intacct/advanced/autosync',
3890-
getRoute: (policyID: string | undefined, backTo?: string) => {
3891-
if (!policyID) {
3892-
Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC route');
3893-
}
3894-
// eslint-disable-next-line no-restricted-syntax
3895-
return getUrlWithBackToParam(`workspaces/${policyID}/accounting/sage-intacct/advanced/autosync` as const, backTo);
3896-
},
3897-
},
3898-
POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD: {
3899-
route: 'workspaces/:policyID/accounting/sage-intacct/advanced/autosync/accounting-method',
3900-
getRoute: (policyID: string | undefined) => {
3901-
if (!policyID) {
3902-
Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD route');
3903-
}
3904-
return `workspaces/${policyID}/accounting/sage-intacct/advanced/autosync/accounting-method` as const;
3905-
},
3906-
},
39073896
ADD_UNREPORTED_EXPENSE: {
39083897
route: 'search/r/:reportID/add-unreported-expense/:backToReport?',
39093898
getRoute: (reportID: string | undefined, backToReport?: string) => `search/r/${reportID}/add-unreported-expense/${backToReport ?? ''}` as const,

src/SCREENS.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -651,8 +651,8 @@ const SCREENS = {
651651
DYNAMIC_SAGE_INTACCT_DEFAULT_VENDOR: 'Dynamic_Policy_Accounting_Sage_Intacct_Default_Vendor',
652652
DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT: 'Dynamic_Policy_Accounting_Sage_Intacct_Non_Reimbursable_Credit_Card_Account',
653653
SAGE_INTACCT_ADVANCED: 'Policy_Accounting_Sage_Intacct_Advanced',
654-
SAGE_INTACCT_AUTO_SYNC: 'Policy_Accounting_Sage_Intacct_Auto_Sync',
655-
SAGE_INTACCT_ACCOUNTING_METHOD: 'Policy_Accounting_Sage_Intacct_Accounting_Method',
654+
DYNAMIC_SAGE_INTACCT_AUTO_SYNC: 'Dynamic_Policy_Accounting_Sage_Intacct_Auto_Sync',
655+
DYNAMIC_SAGE_INTACCT_ACCOUNTING_METHOD: 'Dynamic_Policy_Accounting_Sage_Intacct_Accounting_Method',
656656
SAGE_INTACCT_PAYMENT_ACCOUNT: 'Policy_Accounting_Sage_Intacct_Payment_Account',
657657
CARD_RECONCILIATION: 'Policy_Accounting_Card_Reconciliation',
658658
CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC: 'Policy_Accounting_Card_Reconciliation_Quickbooks_Desktop_Auto_Sync',

src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -779,9 +779,10 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
779779
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT]: () =>
780780
require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/export/DynamicSageIntacctNonReimbursableCreditCardAccountPage').default,
781781
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ADVANCED]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/advanced/SageIntacctAdvancedPage').default,
782-
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_AUTO_SYNC]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage').default,
783-
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ACCOUNTING_METHOD]: () =>
784-
require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/advanced/SageIntacctAccountingMethodPage').default,
782+
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_AUTO_SYNC]: () =>
783+
require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPage').default,
784+
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_ACCOUNTING_METHOD]: () =>
785+
require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/advanced/DynamicSageIntacctAccountingMethodPage').default,
785786
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PAYMENT_ACCOUNT]: () =>
786787
require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/advanced/SageIntacctPaymentAccountPage').default,
787788
[SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/reconciliation/CardReconciliationPage').default,

src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ const WORKSPACE_TO_RHP: Partial<Record<keyof WorkspaceSplitNavigatorParamList, s
170170
SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_DEFAULT_VENDOR,
171171
SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT,
172172
SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ADVANCED,
173-
SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_AUTO_SYNC,
174-
SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ACCOUNTING_METHOD,
173+
SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_AUTO_SYNC,
174+
SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_ACCOUNTING_METHOD,
175175
SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PAYMENT_ACCOUNT,
176176
SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION,
177177
SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_RECONCILIATION_ACCOUNT_SETTINGS,

src/libs/Navigation/linkingConfig/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -760,8 +760,8 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
760760
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT]:
761761
DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_NON_REIMBURSABLE_CREDIT_CARD_ACCOUNT.path,
762762
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ADVANCED]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ADVANCED.route},
763-
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_AUTO_SYNC]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.route},
764-
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ACCOUNTING_METHOD]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.route},
763+
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_AUTO_SYNC]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.path,
764+
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_ACCOUNTING_METHOD]: DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.path,
765765
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PAYMENT_ACCOUNT]: {path: ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_PAYMENT_ACCOUNT.route},
766766
[SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION]: {path: ROUTES.WORKSPACE_ACCOUNTING_CARD_RECONCILIATION.route},
767767
[SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION_QUICKBOOKS_DESKTOP_AUTO_SYNC]: {

src/libs/Navigation/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,6 +1128,12 @@ type SettingsNavigatorParamList = {
11281128
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_ADVANCED]: {
11291129
policyID: string;
11301130
};
1131+
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_AUTO_SYNC]: {
1132+
policyID: string;
1133+
};
1134+
[SCREENS.WORKSPACE.ACCOUNTING.DYNAMIC_SAGE_INTACCT_ACCOUNTING_METHOD]: {
1135+
policyID: string;
1136+
};
11311137
[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PAYMENT_ACCOUNT]: {
11321138
policyID: string;
11331139
};

src/pages/workspace/accounting/intacct/advanced/SageIntacctAccountingMethodPage.tsx renamed to src/pages/workspace/accounting/intacct/advanced/DynamicSageIntacctAccountingMethodPage.tsx

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type {ListItem} from '@components/SelectionList/types';
77
import SelectionScreen from '@components/SelectionScreen';
88
import type {SelectorType} from '@components/SelectionScreen';
99
import Text from '@components/Text';
10+
import useDynamicBackPath from '@hooks/useDynamicBackPath';
1011
import useLocalize from '@hooks/useLocalize';
1112
import useThemeStyles from '@hooks/useThemeStyles';
1213
import {updateSageIntacctAccountingMethod} from '@libs/actions/connections/SageIntacct';
@@ -15,24 +16,24 @@ import {settingsPendingAction} from '@libs/PolicyUtils';
1516
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
1617
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
1718
import CONST from '@src/CONST';
18-
import type {TranslationPaths} from '@src/languages/types';
19-
import ROUTES from '@src/ROUTES';
19+
import {DYNAMIC_ROUTES} from '@src/ROUTES';
2020

2121
type MenuListItem = ListItem & {
2222
value: ValueOf<typeof COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD>;
2323
};
2424

25-
function SageIntacctAccountingMethodPage({policy}: WithPolicyConnectionsProps) {
25+
function DynamicSageIntacctAccountingMethodPage({policy}: WithPolicyConnectionsProps) {
2626
const {translate} = useLocalize();
2727
const policyID = policy?.id;
2828
const styles = useThemeStyles();
2929
const config = policy?.connections?.intacct?.config;
3030
const accountingMethod = config?.export?.accountingMethod ?? COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD.CASH;
31+
const backPath = useDynamicBackPath(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.path);
3132

3233
const data: MenuListItem[] = Object.values(COMMON_CONST.INTEGRATIONS.ACCOUNTING_METHOD).map((accountingMethodType) => ({
3334
value: accountingMethodType,
34-
text: translate(`workspace.sageIntacct.accountingMethods.values.${accountingMethodType}` as TranslationPaths),
35-
alternateText: translate(`workspace.sageIntacct.accountingMethods.alternateText.${accountingMethodType}` as TranslationPaths),
35+
text: translate(`workspace.sageIntacct.accountingMethods.values.${accountingMethodType}` as const),
36+
alternateText: translate(`workspace.sageIntacct.accountingMethods.alternateText.${accountingMethodType}` as const),
3637
keyForList: `${accountingMethodType}`,
3738
isSelected: accountingMethod === accountingMethodType,
3839
}));
@@ -49,19 +50,23 @@ function SageIntacctAccountingMethodPage({policy}: WithPolicyConnectionsProps) {
4950
[translate, styles.pb5, styles.ph5],
5051
);
5152

53+
const goBack = useCallback(() => {
54+
Navigation.goBack(backPath);
55+
}, [backPath]);
56+
5257
const selectExpenseReportApprovalLevel = useCallback(
5358
(row: MenuListItem) => {
5459
if (row.value !== accountingMethod) {
5560
updateSageIntacctAccountingMethod(policyID, row.value, accountingMethod);
5661
}
57-
Navigation.goBack(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.getRoute(policyID));
62+
goBack();
5863
},
59-
[accountingMethod, policyID],
64+
[accountingMethod, policyID, goBack],
6065
);
6166

6267
return (
6368
<SelectionScreen
64-
displayName="SageIntacctAccountingMethodPage"
69+
displayName="DynamicSageIntacctAccountingMethodPage"
6570
headerTitleAlreadyTranslated={translate('workspace.sageIntacct.accountingMethods.label')}
6671
headerContent={headerContent}
6772
data={data}
@@ -71,12 +76,12 @@ function SageIntacctAccountingMethodPage({policy}: WithPolicyConnectionsProps) {
7176
policyID={policyID}
7277
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN]}
7378
featureName={CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED}
74-
onBackButtonPress={() => Navigation.goBack(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.getRoute(policyID))}
79+
onBackButtonPress={goBack}
7580
connectionName={CONST.POLICY.CONNECTIONS.NAME.SAGE_INTACCT}
7681
pendingAction={pendingAction}
7782
shouldBeBlocked={!config?.autoSync?.enabled}
7883
/>
7984
);
8085
}
8186

82-
export default withPolicyConnections(SageIntacctAccountingMethodPage);
87+
export default withPolicyConnections(DynamicSageIntacctAccountingMethodPage);

src/pages/workspace/accounting/intacct/advanced/SageIntacctAdvancedPage.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import useLocalize from '@hooks/useLocalize';
99
import useThemeStyles from '@hooks/useThemeStyles';
1010
import {getLatestErrorField} from '@libs/ErrorUtils';
1111
import {areSettingsInErrorFields, getCurrentSageIntacctEntityName, settingsPendingAction} from '@libs/PolicyUtils';
12+
import createDynamicRoute from '@navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
1213
import Navigation from '@navigation/Navigation';
1314
import type {WithPolicyProps} from '@pages/workspace/withPolicy';
1415
import withPolicy from '@pages/workspace/withPolicy';
@@ -22,7 +23,7 @@ import {
2223
import {clearSageIntacctErrorField} from '@userActions/Policy/Policy';
2324
import CONST from '@src/CONST';
2425
import type {TranslationPaths} from '@src/languages/types';
25-
import ROUTES from '@src/ROUTES';
26+
import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES';
2627
import type {SageIntacctDataElement} from '@src/types/onyx/Policy';
2728

2829
function getReimbursedAccountName(bankAccounts: SageIntacctDataElement[], reimbursementAccountID?: string): string | undefined {
@@ -103,7 +104,7 @@ function SageIntacctAdvancedPage({policy}: WithPolicyProps) {
103104
title={config?.autoSync?.enabled ? translate('common.enabled') : translate('common.disabled')}
104105
description={translate('workspace.accounting.autoSync')}
105106
shouldShowRightIcon
106-
onPress={() => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.getRoute(policyID))}
107+
onPress={() => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.path))}
107108
brickRoadIndicator={
108109
areSettingsInErrorFields([CONST.SAGE_INTACCT_CONFIG.AUTO_SYNC, CONST.SAGE_INTACCT_CONFIG.ACCOUNTING_METHOD], config?.errorFields)
109110
? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR
Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
import React from 'react';
2+
import useDynamicBackPath from '@hooks/useDynamicBackPath';
23
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
34
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
5+
import {DYNAMIC_ROUTES} from '@src/ROUTES';
46
import SageIntacctAutoSyncPageBase from './SageIntacctAutoSyncPageBase';
57

68
function SageIntacctAutoSyncPage({policy}: WithPolicyConnectionsProps) {
7-
return <SageIntacctAutoSyncPageBase policy={policy} />;
9+
const backPath = useDynamicBackPath(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_AUTO_SYNC.path);
10+
11+
return (
12+
<SageIntacctAutoSyncPageBase
13+
policy={policy}
14+
navigateBackTo={backPath}
15+
/>
16+
);
817
}
918

1019
export default withPolicyConnections(SageIntacctAutoSyncPage);

src/pages/workspace/accounting/intacct/advanced/SageIntacctAutoSyncPageBase.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ import {updateSageIntacctAutoSync} from '@libs/actions/connections/SageIntacct';
1010
import {getLatestErrorField} from '@libs/ErrorUtils';
1111
import Navigation from '@libs/Navigation/Navigation';
1212
import {settingsPendingAction} from '@libs/PolicyUtils';
13+
import createDynamicRoute from '@navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
1314
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
1415
import {clearSageIntacctErrorField} from '@userActions/Policy/Policy';
1516
import CONST from '@src/CONST';
1617
import type {TranslationPaths} from '@src/languages/types';
17-
import ROUTES from '@src/ROUTES';
18+
import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES';
1819
import type {Route} from '@src/ROUTES';
1920
import type {Policy} from '@src/types/onyx';
2021

@@ -72,7 +73,7 @@ function SageIntacctAutoSyncPageBase({policy, navigateBackTo}: SageIntacctAutoSy
7273
}
7374
description={translate('workspace.sageIntacct.accountingMethods.label')}
7475
shouldShowRightIcon
75-
onPress={() => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.getRoute(policyID))}
76+
onPress={() => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.POLICY_ACCOUNTING_SAGE_INTACCT_ACCOUNTING_METHOD.path))}
7677
/>
7778
</OfflineWithFeedback>
7879
)}

0 commit comments

Comments
 (0)