diff --git a/src/libs/actions/connections/QuickbooksOnline.ts b/src/libs/actions/connections/QuickbooksOnline.ts index 15233682116f..05b6bb730069 100644 --- a/src/libs/actions/connections/QuickbooksOnline.ts +++ b/src/libs/actions/connections/QuickbooksOnline.ts @@ -289,10 +289,13 @@ function updateQuickbooksOnlineNonReimbursableBillDefaultVendor( - policyID: string, + policyID: string | undefined, settingValue: TSettingValue, oldSettingValue?: TSettingValue, ) { + if (!policyID) { + return; + } const {optimisticData, failureData, successData} = buildOnyxDataForQuickbooksConfiguration(policyID, CONST.QUICKBOOKS_CONFIG.RECEIVABLE_ACCOUNT, settingValue, oldSettingValue); const parameters: UpdateQuickbooksOnlineGenericTypeParams = { @@ -383,10 +386,13 @@ function updateQuickbooksOnlineReimbursementAccountID( - policyID: string, + policyID: string | undefined, settingValue: TSettingValue, oldSettingValue?: TSettingValue, ) { + if (!policyID) { + return; + } const onyxData = buildOnyxDataForQuickbooksConfiguration(policyID, CONST.QUICKBOOKS_CONFIG.EXPORT, settingValue, oldSettingValue); const parameters: UpdateQuickbooksOnlineGenericTypeParams = { diff --git a/src/pages/workspace/accounting/qbo/export/QuickbooksExportInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/export/QuickbooksExportInvoiceAccountSelectPage.tsx index bb82901c9d77..515fd3d33267 100644 --- a/src/pages/workspace/accounting/qbo/export/QuickbooksExportInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/export/QuickbooksExportInvoiceAccountSelectPage.tsx @@ -7,9 +7,9 @@ import SelectionScreen from '@components/SelectionScreen'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as QuickbooksOnline from '@libs/actions/connections/QuickbooksOnline'; -import * as ErrorUtils from '@libs/ErrorUtils'; -import * as PolicyUtils from '@libs/PolicyUtils'; +import {updateQuickbooksOnlineReceivableAccount} from '@libs/actions/connections/QuickbooksOnline'; +import {getLatestErrorField} from '@libs/ErrorUtils'; +import {settingsPendingAction} from '@libs/PolicyUtils'; import Navigation from '@navigation/Navigation'; import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections'; import withPolicyConnections from '@pages/workspace/withPolicyConnections'; @@ -29,7 +29,7 @@ function QuickbooksExportInvoiceAccountSelectPage({policy}: WithPolicyConnection const {accountsReceivable} = policy?.connections?.quickbooksOnline?.data ?? {}; const qboConfig = policy?.connections?.quickbooksOnline?.config; - const policyID = policy?.id ?? '-1'; + const policyID = policy?.id; const data: CardListItem[] = useMemo( () => accountsReceivable?.map((account) => ({ @@ -44,9 +44,9 @@ function QuickbooksExportInvoiceAccountSelectPage({policy}: WithPolicyConnection const selectExportInvoice = useCallback( (row: CardListItem) => { if (row.value.id !== qboConfig?.receivableAccount?.id) { - QuickbooksOnline.updateQuickbooksOnlineReceivableAccount(policyID, row.value, qboConfig?.receivableAccount); + updateQuickbooksOnlineReceivableAccount(policyID, row.value, qboConfig?.receivableAccount); } - Navigation.goBack(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECT.getRoute(policyID)); + Navigation.goBack(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_EXPORT.getRoute(policyID)); }, [qboConfig?.receivableAccount, policyID], ); @@ -79,8 +79,8 @@ function QuickbooksExportInvoiceAccountSelectPage({policy}: WithPolicyConnection initiallyFocusedOptionKey={data.find((mode) => mode.isSelected)?.keyForList} title="workspace.qbo.exportInvoices" connectionName={CONST.POLICY.CONNECTIONS.NAME.QBO} - pendingAction={PolicyUtils.settingsPendingAction([CONST.QUICKBOOKS_CONFIG.RECEIVABLE_ACCOUNT], qboConfig?.pendingFields)} - errors={ErrorUtils.getLatestErrorField(qboConfig, CONST.QUICKBOOKS_CONFIG.RECEIVABLE_ACCOUNT)} + pendingAction={settingsPendingAction([CONST.QUICKBOOKS_CONFIG.RECEIVABLE_ACCOUNT], qboConfig?.pendingFields)} + errors={getLatestErrorField(qboConfig, CONST.QUICKBOOKS_CONFIG.RECEIVABLE_ACCOUNT)} errorRowStyles={[styles.ph5, styles.pv3]} onClose={() => clearQBOErrorField(policyID, CONST.QUICKBOOKS_CONFIG.RECEIVABLE_ACCOUNT)} listEmptyContent={listEmptyContent} diff --git a/src/pages/workspace/accounting/qbo/export/QuickbooksPreferredExporterConfigurationPage.tsx b/src/pages/workspace/accounting/qbo/export/QuickbooksPreferredExporterConfigurationPage.tsx index 7f864db524e9..0642013990e3 100644 --- a/src/pages/workspace/accounting/qbo/export/QuickbooksPreferredExporterConfigurationPage.tsx +++ b/src/pages/workspace/accounting/qbo/export/QuickbooksPreferredExporterConfigurationPage.tsx @@ -6,10 +6,9 @@ import Text from '@components/Text'; import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as QuickbooksOnline from '@libs/actions/connections/QuickbooksOnline'; -import * as ErrorUtils from '@libs/ErrorUtils'; -import * as PolicyUtils from '@libs/PolicyUtils'; -import {getAdminEmployees} from '@libs/PolicyUtils'; +import {updateQuickbooksOnlinePreferredExporter} from '@libs/actions/connections/QuickbooksOnline'; +import {getLatestErrorField} from '@libs/ErrorUtils'; +import {getAdminEmployees, isExpensifyTeam, settingsPendingAction} from '@libs/PolicyUtils'; import Navigation from '@navigation/Navigation'; import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections'; import withPolicyConnections from '@pages/workspace/withPolicyConnections'; @@ -28,7 +27,7 @@ function QuickbooksPreferredExporterConfigurationPage({policy}: WithPolicyConnec const exporters = getAdminEmployees(policy); const {login: currentUserLogin} = useCurrentUserPersonalDetails(); - const policyID = policy?.id ?? '-1'; + const policyID = policy?.id; const data: CardListItem[] = useMemo( () => exporters?.reduce((options, exporter) => { @@ -37,7 +36,7 @@ function QuickbooksPreferredExporterConfigurationPage({policy}: WithPolicyConnec } // Don't show guides if the current user is not a guide themselves or an Expensify employee - if (PolicyUtils.isExpensifyTeam(exporter.email) && !PolicyUtils.isExpensifyTeam(policy?.owner) && !PolicyUtils.isExpensifyTeam(currentUserLogin)) { + if (isExpensifyTeam(exporter.email) && !isExpensifyTeam(policy?.owner) && !isExpensifyTeam(currentUserLogin)) { return options; } options.push({ @@ -54,9 +53,9 @@ function QuickbooksPreferredExporterConfigurationPage({policy}: WithPolicyConnec const selectExporter = useCallback( (row: CardListItem) => { if (row.value !== qboConfig?.export?.exporter) { - QuickbooksOnline.updateQuickbooksOnlinePreferredExporter(policyID, {exporter: row.value}, {exporter: qboConfig?.export.exporter ?? ''}); + updateQuickbooksOnlinePreferredExporter(policyID, {exporter: row.value}, {exporter: qboConfig?.export?.exporter ?? ''}); } - Navigation.goBack(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_PREFERRED_EXPORTER.getRoute(policyID)); + Navigation.goBack(ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_EXPORT.getRoute(policyID)); }, [qboConfig?.export, policyID], ); @@ -86,8 +85,8 @@ function QuickbooksPreferredExporterConfigurationPage({policy}: WithPolicyConnec initiallyFocusedOptionKey={data.find((mode) => mode.isSelected)?.keyForList} title="workspace.accounting.preferredExporter" connectionName={CONST.POLICY.CONNECTIONS.NAME.QBO} - pendingAction={PolicyUtils.settingsPendingAction([CONST.QUICKBOOKS_CONFIG.EXPORT], qboConfig?.pendingFields)} - errors={ErrorUtils.getLatestErrorField(qboConfig, CONST.QUICKBOOKS_CONFIG.EXPORT)} + pendingAction={settingsPendingAction([CONST.QUICKBOOKS_CONFIG.EXPORT], qboConfig?.pendingFields)} + errors={getLatestErrorField(qboConfig, CONST.QUICKBOOKS_CONFIG.EXPORT)} errorRowStyles={[styles.ph5, styles.pv3]} onClose={() => clearQBOErrorField(policyID, CONST.QUICKBOOKS_CONFIG.EXPORT)} />