Skip to content

Commit 538e440

Browse files
authored
Merge pull request Expensify#65332 from daledah/fix/64288
fix: enable report fields when impoing xero tracking categories
2 parents 371c8f3 + d51bc6b commit 538e440

2 files changed

Lines changed: 26 additions & 9 deletions

File tree

src/ROUTES.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2110,7 +2110,12 @@ const ROUTES = {
21102110
},
21112111
POLICY_ACCOUNTING_XERO_TRACKING_CATEGORIES: {
21122112
route: 'workspaces/:policyID/accounting/xero/import/tracking-categories',
2113-
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/xero/import/tracking-categories` as const,
2113+
getRoute: (policyID?: string) => {
2114+
if (!policyID) {
2115+
Log.warn('Invalid policyID is used to build the POLICY_ACCOUNTING_XERO_TRACKING_CATEGORIES route');
2116+
}
2117+
return `workspaces/${policyID}/accounting/xero/import/tracking-categories` as const;
2118+
},
21142119
},
21152120
POLICY_ACCOUNTING_XERO_TRACKING_CATEGORIES_MAP: {
21162121
route: 'workspaces/:policyID/accounting/xero/import/tracking-categories/mapping/:categoryId/:categoryName',

src/pages/workspace/accounting/xero/XeroMapTrackingCategoryConfigurationPage.tsx

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import SelectionScreen from '@components/SelectionScreen';
66
import Text from '@components/Text';
77
import useLocalize from '@hooks/useLocalize';
88
import useThemeStyles from '@hooks/useThemeStyles';
9-
import * as Xero from '@libs/actions/connections/Xero';
10-
import * as ErrorUtils from '@libs/ErrorUtils';
9+
import {updateXeroMappings} from '@libs/actions/connections/Xero';
10+
import {clearXeroErrorField, enablePolicyReportFields} from '@libs/actions/Policy/Policy';
11+
import {getLatestErrorField} from '@libs/ErrorUtils';
1112
import Navigation from '@libs/Navigation/Navigation';
1213
import {isControlPolicy, settingsPendingAction} from '@libs/PolicyUtils';
1314
import type {WithPolicyProps} from '@pages/workspace/withPolicy';
1415
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
15-
import * as Policy from '@userActions/Policy/Policy';
1616
import CONST from '@src/CONST';
1717
import type {TranslationPaths} from '@src/languages/types';
1818
import ROUTES from '@src/ROUTES';
@@ -29,13 +29,16 @@ function XeroMapTrackingCategoryConfigurationPage({policy}: WithPolicyProps) {
2929
const styles = useThemeStyles();
3030
const categoryId = params?.categoryId ?? '';
3131
const categoryName = decodeURIComponent(params?.categoryName ?? '');
32-
const policyID = policy?.id ?? '-1';
32+
const policyID = policy?.id;
3333
const {config} = policy?.connections?.xero ?? {};
3434
const {trackingCategories} = policy?.connections?.xero?.data ?? {};
3535
const {mappings} = policy?.connections?.xero?.config ?? {};
3636

3737
const currentTrackingCategory = trackingCategories?.find((category) => category.id === categoryId);
3838
const currentTrackingCategoryValue = currentTrackingCategory ? (mappings?.[`${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${currentTrackingCategory.id}`] ?? '') : '';
39+
const reportFieldTrackingCategories = Object.entries(mappings ?? {}).filter(
40+
([key, value]) => key.startsWith(CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX) && value === CONST.XERO_CONFIG.TRACKING_CATEGORY_OPTIONS.REPORT_FIELD,
41+
);
3942

4043
const optionsList = useMemo(
4144
() =>
@@ -69,15 +72,24 @@ function XeroMapTrackingCategoryConfigurationPage({policy}: WithPolicyProps) {
6972
Navigation.navigate(`${backToRoute}&categoryId=${categoryId}`);
7073
return;
7174
}
72-
Xero.updateXeroMappings(
75+
if (!policyID) {
76+
return;
77+
}
78+
updateXeroMappings(
7379
policyID,
7480
categoryId ? {[`${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${categoryId}`]: option.value} : {},
7581
categoryId ? {[`${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${categoryId}`]: currentTrackingCategoryValue} : {},
7682
);
83+
if (!reportFieldTrackingCategories.length && option.value === CONST.XERO_CONFIG.TRACKING_CATEGORY_OPTIONS.REPORT_FIELD) {
84+
enablePolicyReportFields(policyID, true);
85+
}
86+
if (reportFieldTrackingCategories.length === 1 && currentTrackingCategoryValue === CONST.XERO_CONFIG.TRACKING_CATEGORY_OPTIONS.REPORT_FIELD) {
87+
enablePolicyReportFields(policyID, false);
88+
}
7789
}
7890
Navigation.goBack(ROUTES.POLICY_ACCOUNTING_XERO_TRACKING_CATEGORIES.getRoute(policyID));
7991
},
80-
[categoryId, currentTrackingCategoryValue, policy, policyID],
92+
[categoryId, currentTrackingCategoryValue, reportFieldTrackingCategories, policy, policyID],
8193
);
8294

8395
return (
@@ -95,9 +107,9 @@ function XeroMapTrackingCategoryConfigurationPage({policy}: WithPolicyProps) {
95107
headerTitleAlreadyTranslated={translate('workspace.xero.mapTrackingCategoryTo', {categoryName})}
96108
connectionName={CONST.POLICY.CONNECTIONS.NAME.XERO}
97109
pendingAction={settingsPendingAction([`${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${categoryId}`], config?.pendingFields)}
98-
errors={ErrorUtils.getLatestErrorField(config ?? {}, `${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${categoryId}`)}
110+
errors={getLatestErrorField(config ?? {}, `${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${categoryId}`)}
99111
errorRowStyles={[styles.ph5, styles.pv3]}
100-
onClose={() => Policy.clearXeroErrorField(policyID, `${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${categoryId}`)}
112+
onClose={() => clearXeroErrorField(policyID, `${CONST.XERO_CONFIG.TRACKING_CATEGORY_PREFIX}${categoryId}`)}
101113
shouldSingleExecuteRowSelect
102114
/>
103115
);

0 commit comments

Comments
 (0)