From 3dee6771460fdd8bb4eca7a80cec64f07a39ef43 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:35:48 +0100 Subject: [PATCH 001/141] add fake accounting page --- .../accounting/WorkspaceAccountingPage.tsx | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/pages/workspace/accounting/WorkspaceAccountingPage.tsx diff --git a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx new file mode 100644 index 000000000000..38d711fdcf6a --- /dev/null +++ b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import {View} from 'react-native'; +import ScreenWrapper from '@components/ScreenWrapper'; +import withPolicy from '@pages/workspace/withPolicy'; + +// Fake page, will be removed after merging with accounting page +function WorkspaceAccountingPage() { + return ( + + + + ); +} + +WorkspaceAccountingPage.displayName = 'WorkspaceAccountingPage'; + +export default withPolicy(WorkspaceAccountingPage); \ No newline at end of file From bf28c9cdf2b13143624074a1d16d76513ca4a9ed Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:36:36 +0100 Subject: [PATCH 002/141] add initial quickbooks advanced page --- .../accounting/qbo/QuickbooksAdvancedPage.tsx | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx new file mode 100644 index 000000000000..cb1ccab83194 --- /dev/null +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -0,0 +1,110 @@ +import React from 'react'; +import {View} from 'react-native'; +import HeaderWithBackButton from '@components/HeaderWithBackButton'; +import MenuItem from '@components/MenuItem'; +import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; +import OfflineWithFeedback from '@components/OfflineWithFeedback'; +import ScreenWrapper from '@components/ScreenWrapper'; +import ScrollView from '@components/ScrollView'; +import SpacerView from '@components/SpacerView'; +import useThemeStyles from '@hooks/useThemeStyles'; +import withPolicy from '@pages/workspace/withPolicy'; +import type {WithPolicyProps} from '@pages/workspace/withPolicy'; +import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; + + +function QuickbooksAdvancedPage({policy}: WithPolicyProps) { + const styles = useThemeStyles(); + + return ( + + + + + + + {}} + /> + + + + {}} + /> + + + + {}} + /> + + + + + + + + {}} + /> + + + + + + + + + + + + + + + ); +} + +QuickbooksAdvancedPage.displayName = 'QuickbooksAdvancedPage'; + +export default withPolicy(QuickbooksAdvancedPage); From 80c2e9777c155fd39865fdc382bcae8cae940f30 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:39:13 +0100 Subject: [PATCH 003/141] add qbo advanced screen options --- src/SCREENS.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/SCREENS.ts b/src/SCREENS.ts index fe1b1eac510f..5ea6922e9db7 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -212,6 +212,7 @@ const SCREENS = { INVOICES: 'Workspace_Invoices', TRAVEL: 'Workspace_Travel', MEMBERS: 'Workspace_Members', + ACCOUNTING: 'Workspace_Accounting', INVITE: 'Workspace_Invite', INVITE_MESSAGE: 'Workspace_Invite_Message', CATEGORIES: 'Workspace_Categories', @@ -250,6 +251,7 @@ const SCREENS = { OWNER_CHANGE_SUCCESS: 'Workspace_Owner_Change_Success', OWNER_CHANGE_ERROR: 'Workspace_Owner_Change_Error', DISTANCE_RATES: 'Distance_Rates', + QUICKBOOKS_ONLINE_ADVANCED: 'Workspace_Accounting_Quickbooks_Online_Advanced', CREATE_DISTANCE_RATE: 'Create_Distance_Rate', DISTANCE_RATES_SETTINGS: 'Distance_Rates_Settings', DISTANCE_RATE_DETAILS: 'Distance_Rate_Details', From cc91791576b5bad3db40869f5ce8bf81e133adea Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:39:43 +0100 Subject: [PATCH 004/141] add qbo advanced types --- src/libs/Navigation/types.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index fefad04b9faf..fbc8340fdf57 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -606,6 +606,9 @@ type WorkspacesCentralPaneNavigatorParamList = { [SCREENS.WORKSPACE.TRAVEL]: { policyID: string; }; + [SCREENS.WORKSPACE.ACCOUNTING]: { + policyID: string; + }; [SCREENS.WORKSPACE.MEMBERS]: { policyID: string; }; @@ -625,6 +628,9 @@ type WorkspacesCentralPaneNavigatorParamList = { [SCREENS.WORKSPACE.DISTANCE_RATES]: { policyID: string; }; + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: { + policyID: string; + }; }; type FullScreenNavigatorParamList = { From 80c4ea0905c32a3f04ccee8db193b3883b68c156 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:40:39 +0100 Subject: [PATCH 005/141] add qbo advanced routes --- src/ROUTES.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 7efc1f676f26..738be5c417bc 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -551,6 +551,10 @@ const ROUTES = { route: 'settings/workspaces/:policyID/members', getRoute: (policyID: string) => `settings/workspaces/${policyID}/members` as const, }, + WORKSPACE_ACCOUNTING: { + route: 'settings/workspaces/:policyID/accounting', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting` as const, + }, WORKSPACE_CATEGORIES: { route: 'settings/workspaces/:policyID/categories', getRoute: (policyID: string) => `settings/workspaces/${policyID}/categories` as const, @@ -575,6 +579,10 @@ const ROUTES = { route: 'settings/workspaces/:policyID/categories/:categoryName/edit', getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/edit` as const, }, + WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED: { + route: 'settings/workspaces/:policyID/accounting/quickbooks-online/advanced', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/advanced` as const, + }, WORKSPACE_TAGS: { route: 'settings/workspaces/:policyID/tags', getRoute: (policyID: string) => `settings/workspaces/${policyID}/tags` as const, From d1012f0e3af09c86856855c351df90b6e955bee9 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:41:39 +0100 Subject: [PATCH 006/141] add qbo advanced to settings modal stack navigator --- src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index e2f51beb5f8f..3c151641e914 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -261,6 +261,7 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/settings/ExitSurvey/ExitSurveyReasonPage').default as React.ComponentType, [SCREENS.SETTINGS.EXIT_SURVEY.RESPONSE]: () => require('../../../../pages/settings/ExitSurvey/ExitSurveyResponsePage').default as React.ComponentType, [SCREENS.SETTINGS.EXIT_SURVEY.CONFIRM]: () => require('../../../../pages/settings/ExitSurvey/ExitSurveyConfirmPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksAdvancedPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_FREQUENCY]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingFrequencyPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage').default as React.ComponentType, From c4a7363fb7d4028ee77e370b0e6015dbf3d5c894 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:43:16 +0100 Subject: [PATCH 007/141] add accounting page to modal stack navigator --- .../WorkspaceSettingsModalStackNavigator.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx index 14153809bc86..e65b5b1e0edc 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx @@ -75,6 +75,11 @@ function WorkspaceSettingsModalStackNavigator() { name={SCREENS.WORKSPACE.DISTANCE_RATES} getComponent={() => require('@pages/workspace/distanceRates/PolicyDistanceRatesPage').default as React.ComponentType} /> + require('@pages/workspace/accounting/WorkspaceAccountingPage').default as React.ComponentType} + /> ); } From 03d5cc522dcb4d00068480c4ea2c6b8d6d9e1a2e Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:44:03 +0100 Subject: [PATCH 008/141] match qbo advanced screen to routes --- src/libs/Navigation/linkingConfig/config.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index c9c3efbf2e16..f50701586245 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -262,6 +262,9 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.CURRENCY]: { path: ROUTES.WORKSPACE_PROFILE_CURRENCY.route, }, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: { + path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.route, + }, [SCREENS.WORKSPACE.DESCRIPTION]: { path: ROUTES.WORKSPACE_PROFILE_DESCRIPTION.route, }, @@ -644,6 +647,9 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.INVOICES]: { path: ROUTES.WORKSPACE_INVOICES.route, }, + [SCREENS.WORKSPACE.ACCOUNTING]: { + path: ROUTES.WORKSPACE_ACCOUNTING.route, + }, [SCREENS.WORKSPACE.TRAVEL]: { path: ROUTES.WORKSPACE_TRAVEL.route, }, From 709bf5d47e51863e1bb995c9a3bb775cf03cd020 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:45:09 +0100 Subject: [PATCH 009/141] map qbo advanced screen to accouting --- .../Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts index 1247933701a8..8ced83fc241e 100755 --- a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts +++ b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts @@ -19,6 +19,9 @@ const FULL_SCREEN_TO_RHP_MAPPING: Partial> = { SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET, SCREENS.WORKSPACE.WORKFLOWS_PAYER, ], + [SCREENS.WORKSPACE.ACCOUNTING]: [ + SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED, + ], [SCREENS.WORKSPACE.TAXES]: [ SCREENS.WORKSPACE.TAXES_SETTINGS, SCREENS.WORKSPACE.TAX_CREATE, From 40a763f8fb9bbae7d1b2f1503110ae07064fdd39 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Sun, 7 Apr 2024 01:46:01 +0100 Subject: [PATCH 010/141] update ToggleSettingOptionRowProps to make icons props optional --- .../workflows/ToggleSettingsOptionRow.tsx | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index da995de1d5d5..ec8cec4aaa20 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -10,7 +10,7 @@ import type IconAsset from '@src/types/utils/IconAsset'; type ToggleSettingOptionRowProps = { /** Icon to be shown for the option */ - icon: IconAsset; + icon?: IconAsset; /** Title of the option */ title: string; /** Subtitle of the option */ @@ -43,14 +43,16 @@ function ToggleSettingOptionRow({icon, title, subtitle, onToggle, subMenuItems, - + {icon && ( + + )} Date: Tue, 9 Apr 2024 07:11:29 +0100 Subject: [PATCH 011/141] add qbo online account selecetor page to navigation screens --- src/SCREENS.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 5ea6922e9db7..0e514bb76742 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -252,6 +252,7 @@ const SCREENS = { OWNER_CHANGE_ERROR: 'Workspace_Owner_Change_Error', DISTANCE_RATES: 'Distance_Rates', QUICKBOOKS_ONLINE_ADVANCED: 'Workspace_Accounting_Quickbooks_Online_Advanced', + QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Account_Selector', CREATE_DISTANCE_RATE: 'Create_Distance_Rate', DISTANCE_RATES_SETTINGS: 'Distance_Rates_Settings', DISTANCE_RATE_DETAILS: 'Distance_Rate_Details', From ab7fac278c72f7b67c8b333183c86e31bd107bb6 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:12:32 +0100 Subject: [PATCH 012/141] add qbo online account selecetor page navigation types --- src/libs/Navigation/types.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index fbc8340fdf57..8a80a7530803 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -631,6 +631,9 @@ type WorkspacesCentralPaneNavigatorParamList = { [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: { policyID: string; }; + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { + policyID: string; + }; }; type FullScreenNavigatorParamList = { From a17124c8f9a8840e8637e2f6c41f880e26df8460 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:13:02 +0100 Subject: [PATCH 013/141] add qbo online account selecetor page route --- src/ROUTES.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 738be5c417bc..e5853315525c 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -583,6 +583,10 @@ const ROUTES = { route: 'settings/workspaces/:policyID/accounting/quickbooks-online/advanced', getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/advanced` as const, }, + WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: { + route: 'settings/workspaces/:policyID/accounting/quickbooks-online/account-selector', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/account-selector` as const, + }, WORKSPACE_TAGS: { route: 'settings/workspaces/:policyID/tags', getRoute: (policyID: string) => `settings/workspaces/${policyID}/tags` as const, From c1537104dc0e7b7be22a07dfc4033495a094813c Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:13:53 +0100 Subject: [PATCH 014/141] add qbo online account selecetor page to stack navigator --- src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 3c151641e914..9c0766e1d84c 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -262,6 +262,7 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/settings/ExitSurvey/ExitSurveyResponsePage').default as React.ComponentType, [SCREENS.SETTINGS.EXIT_SURVEY.CONFIRM]: () => require('../../../../pages/settings/ExitSurvey/ExitSurveyConfirmPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksAdvancedPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_FREQUENCY]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingFrequencyPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage').default as React.ComponentType, From cb714f4f0e3358e74f34845e614627f2b3973590 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:14:31 +0100 Subject: [PATCH 015/141] match qbo online account selecetor page screen to routes --- src/libs/Navigation/linkingConfig/config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index f50701586245..3e677ff0974e 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -265,6 +265,9 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: { path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.route, }, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { + path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.route, + }, [SCREENS.WORKSPACE.DESCRIPTION]: { path: ROUTES.WORKSPACE_PROFILE_DESCRIPTION.route, }, From d6a1251bd9dc63c75e2baffa5d5ead52f6d4357e Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:15:56 +0100 Subject: [PATCH 016/141] add qbo online account selecetor page to full screen to rhp mapping --- .../Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts index 8ced83fc241e..74cc415b84ea 100755 --- a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts +++ b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts @@ -19,9 +19,7 @@ const FULL_SCREEN_TO_RHP_MAPPING: Partial> = { SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET, SCREENS.WORKSPACE.WORKFLOWS_PAYER, ], - [SCREENS.WORKSPACE.ACCOUNTING]: [ - SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED, - ], + [SCREENS.WORKSPACE.ACCOUNTING]: [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED, SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR], [SCREENS.WORKSPACE.TAXES]: [ SCREENS.WORKSPACE.TAXES_SETTINGS, SCREENS.WORKSPACE.TAX_CREATE, From eaf966042b0de24f2579611f871407723fdd0233 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:17:13 +0100 Subject: [PATCH 017/141] add qbo online account selecetor page --- .../qbo/QuickbooksAccountSelectPage.tsx | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx new file mode 100644 index 000000000000..7828cdb77ee1 --- /dev/null +++ b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx @@ -0,0 +1,81 @@ +import React, {useCallback, useMemo, useState} from 'react'; +import {View} from 'react-native'; +import type {ValueOf} from 'type-fest'; +import HeaderWithBackButton from '@components/HeaderWithBackButton'; +import OfflineWithFeedback from '@components/OfflineWithFeedback'; +import ScreenWrapper from '@components/ScreenWrapper'; +import ScrollView from '@components/ScrollView'; +import RadioListItem from '@components/SelectionList/RadioListItem'; +import Text from '@components/Text'; +import useThemeStyles from '@hooks/useThemeStyles'; +import withPolicy from '@pages/workspace/withPolicy'; +import type {WithPolicyProps} from '@pages/workspace/withPolicy'; + +const QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS = { + CROISSANT_CO_PAYROLL_ACCOUNT: 'Croissant Co Payroll Account', + CROISSANT_CO_MONEY_IN_CLEARING: 'Croissant Co Money in Clearing', + CROISSANT_CO_DEBTS_AND_LOANS: 'Croissant Co Debts and Loans', +}; + +type CustomSelectorTypes = ValueOf; + +type SelectorType = { + value: CustomSelectorTypes; + text: string; + keyForList: string; + isSelected: boolean; +}; + +function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { + const styles = useThemeStyles(); + + const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); + + const qboOnlineSelectorOptions = useMemo( + () => + Object.entries(QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ + value, + text: value, + keyForList: key, + isSelected: selectedAccount === value, + })), + [selectedAccount], + ); + + const showQBOOnlineSelectorOptions = useCallback( + () => + qboOnlineSelectorOptions.map((item) => ( + + setSelectedAccount(item.value)} + showTooltip={false} + isFocused={item.isSelected} + /> + + )), + [qboOnlineSelectorOptions, setSelectedAccount], + ); + + return ( + + + + + + As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in + QuickBooks. + + + {showQBOOnlineSelectorOptions()} + + ); +} + +QuickbooksAccountSelectPage.displayName = 'QuickbooksAccountSelectPage'; + +export default withPolicy(QuickbooksAccountSelectPage); From 94fbca4c059c9b461befb7797a194a4ea1adc7f4 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:17:38 +0100 Subject: [PATCH 018/141] fix lint --- ios/Podfile.lock | 2 +- .../WorkspaceSettingsModalStackNavigator.tsx | 2 +- .../accounting/WorkspaceAccountingPage.tsx | 2 +- .../accounting/qbo/QuickbooksAdvancedPage.tsx | 40 +++++++++---------- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 32a8bca75bcd..94bd6e35f31d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1921,7 +1921,7 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Turf: 13d1a92d969ca0311bbc26e8356cca178ce95da2 VisionCamera: 9f26224fce1233ffdad9fa4e56863e3de2190dc0 - Yoga: e64aa65de36c0832d04e8c7bd614396c77a80047 + Yoga: 13c8ef87792450193e117976337b8527b49e8c03 PODFILE CHECKSUM: a431c146e1501391834a2f299a74093bac53b530 diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx index e65b5b1e0edc..bafce9f42128 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx @@ -75,7 +75,7 @@ function WorkspaceSettingsModalStackNavigator() { name={SCREENS.WORKSPACE.DISTANCE_RATES} getComponent={() => require('@pages/workspace/distanceRates/PolicyDistanceRatesPage').default as React.ComponentType} /> - require('@pages/workspace/accounting/WorkspaceAccountingPage').default as React.ComponentType} diff --git a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx index 38d711fdcf6a..a96961549c97 100644 --- a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx +++ b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx @@ -18,4 +18,4 @@ function WorkspaceAccountingPage() { WorkspaceAccountingPage.displayName = 'WorkspaceAccountingPage'; -export default withPolicy(WorkspaceAccountingPage); \ No newline at end of file +export default withPolicy(WorkspaceAccountingPage); diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx index cb1ccab83194..018916428d03 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -12,7 +12,6 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; - function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); @@ -22,35 +21,32 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { shouldEnableMaxHeight testID={QuickbooksAdvancedPage.displayName} > - - + {}} /> {}} /> {}} /> @@ -64,17 +60,17 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {}} /> @@ -87,15 +83,15 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Date: Tue, 9 Apr 2024 07:35:14 +0100 Subject: [PATCH 019/141] add qbo online invoice account selecetor page to navigation screens --- src/SCREENS.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 0e514bb76742..fbd4d86c89e8 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -253,6 +253,7 @@ const SCREENS = { DISTANCE_RATES: 'Distance_Rates', QUICKBOOKS_ONLINE_ADVANCED: 'Workspace_Accounting_Quickbooks_Online_Advanced', QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Account_Selector', + QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Invoice_Account_Selector', CREATE_DISTANCE_RATE: 'Create_Distance_Rate', DISTANCE_RATES_SETTINGS: 'Distance_Rates_Settings', DISTANCE_RATE_DETAILS: 'Distance_Rate_Details', From 65f3b501088a69e7f93cc9e6cbbe905e86ecc2d6 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:35:51 +0100 Subject: [PATCH 020/141] add qbo online invoice account selecetor page navigation types --- src/libs/Navigation/types.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 8a80a7530803..9aae4fe36010 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -634,6 +634,9 @@ type WorkspacesCentralPaneNavigatorParamList = { [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { policyID: string; }; + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: { + policyID: string; + }; }; type FullScreenNavigatorParamList = { From 0a8f5b8f8dfea6ba1244a25409cb07e009a09bff Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:36:45 +0100 Subject: [PATCH 021/141] add qbo online invoice account selecetor page route --- src/ROUTES.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index e5853315525c..8ff0eadba008 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -587,6 +587,10 @@ const ROUTES = { route: 'settings/workspaces/:policyID/accounting/quickbooks-online/account-selector', getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/account-selector` as const, }, + WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: { + route: 'settings/workspaces/:policyID/accounting/quickbooks-online/invoice-account-selector', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/invoice-account-selector` as const, + }, WORKSPACE_TAGS: { route: 'settings/workspaces/:policyID/tags', getRoute: (policyID: string) => `settings/workspaces/${policyID}/tags` as const, From b09eea1db24c74d81d9d2c01f1cdd8f7a5a1d531 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:37:29 +0100 Subject: [PATCH 022/141] add qbo online invoice account selecetor page to stack navigator --- src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 9c0766e1d84c..6399951add07 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -263,6 +263,8 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/settings/ExitSurvey/ExitSurveyConfirmPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksAdvancedPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksAccountSelectPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: () => + require('../../../../pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_FREQUENCY]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingFrequencyPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage').default as React.ComponentType, From 1502d77730137fe9615408b96b6c493c58bc88e8 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:38:07 +0100 Subject: [PATCH 023/141] match qbo online invoice account selecetor page screen to routes --- src/libs/Navigation/linkingConfig/config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index 3e677ff0974e..796c671c713e 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -268,6 +268,9 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.route, }, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: { + path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.route, + }, [SCREENS.WORKSPACE.DESCRIPTION]: { path: ROUTES.WORKSPACE_PROFILE_DESCRIPTION.route, }, From c4918a9b85f0e5cf6308410fc2051813de499321 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:38:43 +0100 Subject: [PATCH 024/141] add qbo online invoice account selecetor page to full screen to rhp mapping --- .../Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts index 74cc415b84ea..0daf26df9df1 100755 --- a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts +++ b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts @@ -19,7 +19,11 @@ const FULL_SCREEN_TO_RHP_MAPPING: Partial> = { SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET, SCREENS.WORKSPACE.WORKFLOWS_PAYER, ], - [SCREENS.WORKSPACE.ACCOUNTING]: [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED, SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR], + [SCREENS.WORKSPACE.ACCOUNTING]: [ + SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED, + SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR, + SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR, + ], [SCREENS.WORKSPACE.TAXES]: [ SCREENS.WORKSPACE.TAXES_SETTINGS, SCREENS.WORKSPACE.TAX_CREATE, From 80b7af1ffd029c5b271d25593300d7a148ba4e57 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 07:39:14 +0100 Subject: [PATCH 025/141] add qbo online invoice account selecetor page --- .../QuickbooksInvoiceAccountSelectPage.tsx | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx diff --git a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx new file mode 100644 index 000000000000..3d7c8ab2f903 --- /dev/null +++ b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx @@ -0,0 +1,80 @@ +import React, {useCallback, useMemo, useState} from 'react'; +import {View} from 'react-native'; +import type {ValueOf} from 'type-fest'; +import HeaderWithBackButton from '@components/HeaderWithBackButton'; +import OfflineWithFeedback from '@components/OfflineWithFeedback'; +import ScreenWrapper from '@components/ScreenWrapper'; +import ScrollView from '@components/ScrollView'; +import RadioListItem from '@components/SelectionList/RadioListItem'; +import Text from '@components/Text'; +import useThemeStyles from '@hooks/useThemeStyles'; +import withPolicy from '@pages/workspace/withPolicy'; +import type {WithPolicyProps} from '@pages/workspace/withPolicy'; + +const QBO_ONLINE_INVOICE_ACCOUNT_SELECTOR_OPTIONS = { + CROISSANT_CO_PAYROLL_ACCOUNT: 'Croissant Co Payroll Account', + CROISSANT_CO_MONEY_IN_CLEARING: 'Croissant Co Money in Clearing', + CROISSANT_CO_DEBTS_AND_LOANS: 'Croissant Co Debts and Loans', +}; + +type CustomSelectorTypes = ValueOf; + +type SelectorType = { + value: CustomSelectorTypes; + text: string; + keyForList: string; + isSelected: boolean; +}; + +function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { + const styles = useThemeStyles(); + + const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); + + const qboOnlineSelectorOptions = useMemo( + () => + Object.entries(QBO_ONLINE_INVOICE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ + value, + text: value, + keyForList: key, + isSelected: selectedAccount === value, + })), + [selectedAccount], + ); + + const showQBOOnlineSelectorOptions = useCallback( + () => + qboOnlineSelectorOptions.map((item) => ( + + setSelectedAccount(item.value)} + showTooltip={false} + isFocused={item.isSelected} + /> + + )), + [qboOnlineSelectorOptions, setSelectedAccount], + ); + + return ( + + + + + + If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid. + + + {showQBOOnlineSelectorOptions()} + + ); +} + +QuickbooksInvoiceAccountSelectPage.displayName = 'QuickbooksInvoiceAccountSelectPage'; + +export default withPolicy(QuickbooksInvoiceAccountSelectPage); From 48c08a17d04719060fcf4112c2ad30ea31daece4 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 18:23:43 +0100 Subject: [PATCH 026/141] revert: Podfile lock --- ios/Podfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 94bd6e35f31d..32a8bca75bcd 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1921,7 +1921,7 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Turf: 13d1a92d969ca0311bbc26e8356cca178ce95da2 VisionCamera: 9f26224fce1233ffdad9fa4e56863e3de2190dc0 - Yoga: 13c8ef87792450193e117976337b8527b49e8c03 + Yoga: e64aa65de36c0832d04e8c7bd614396c77a80047 PODFILE CHECKSUM: a431c146e1501391834a2f299a74093bac53b530 From b6f6c2c9bc73f40622932a7fef0103670768ef5f Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 21:16:23 +0100 Subject: [PATCH 027/141] fix tsc --- src/libs/Navigation/linkingConfig/config.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index f317ed4b98ad..1b371f083a27 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -659,9 +659,6 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.INVOICES]: { path: ROUTES.WORKSPACE_INVOICES.route, }, - [SCREENS.WORKSPACE.ACCOUNTING]: { - path: ROUTES.WORKSPACE_ACCOUNTING.route, - }, [SCREENS.WORKSPACE.TRAVEL]: { path: ROUTES.WORKSPACE_TRAVEL.route, }, From 3df0f4eabd8f17c67e9b396207c1d62abec4995e Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 22:36:45 +0100 Subject: [PATCH 028/141] fix tsc --- src/libs/Navigation/types.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 5f281fab2fd3..45b79a290278 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -604,9 +604,6 @@ type WorkspacesCentralPaneNavigatorParamList = { [SCREENS.WORKSPACE.TRAVEL]: { policyID: string; }; - [SCREENS.WORKSPACE.ACCOUNTING]: { - policyID: string; - }; [SCREENS.WORKSPACE.MEMBERS]: { policyID: string; }; From e9e3550143a2ff00ef5d527728a0d26f8c46c8d6 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 22:41:49 +0100 Subject: [PATCH 029/141] remove duplicate stack navigator --- .../WorkspaceSettingsModalStackNavigator.tsx | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx index 25a140d76079..6eb3f8a885d2 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx @@ -51,12 +51,6 @@ function WorkspaceSettingsModalStackNavigator() { getComponent={() => require('@pages/workspace/WorkspaceMembersPage').default as React.ComponentType} /> - require('@pages/workspace/accounting/WorkspaceAccountingPage').default as React.ComponentType} - /> - require('@pages/workspace/distanceRates/PolicyDistanceRatesPage').default as React.ComponentType} /> - require('@pages/workspace/accounting/WorkspaceAccountingPage').default as React.ComponentType} - /> ); } From 69f1ccfcc5d925864c840c30c09920eab6ee600d Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 22:48:56 +0100 Subject: [PATCH 030/141] put back accounting stack --- .../WorkspaceSettingsModalStackNavigator.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx index 6eb3f8a885d2..2dce4247c7ae 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/WorkspaceSettingsModalStackNavigator.tsx @@ -51,6 +51,12 @@ function WorkspaceSettingsModalStackNavigator() { getComponent={() => require('@pages/workspace/WorkspaceMembersPage').default as React.ComponentType} /> + require('@pages/workspace/accounting/WorkspaceAccountingPage').default as React.ComponentType} + /> + Date: Tue, 9 Apr 2024 22:55:09 +0100 Subject: [PATCH 031/141] update first section options --- .../accounting/qbo/QuickbooksAdvancedPage.tsx | 59 +++++++++++-------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx index 018916428d03..1a69c49278de 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -14,6 +14,26 @@ import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOpt function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); + const qboSyncToggleSettings = [ + { + title: 'Auto-Sync', + subTitle: 'Changes made in Quickbooks will automatically be reflected in Expensify.', + isActive: true, + onToggle: () => {}, + }, + { + title: 'Invite Employees', + subTitle: 'Import Quickbooks Online employee records and invite them to this workspace.', + isActive: true, + onToggle: () => {}, + }, + { + title: 'Automatically Create Entities', + subTitle: 'Expensify will automatically create a vendor in Quickbooks, if one does not exist. Expensify will also automatically create a customer when exporting invoices.', + isActive: true, + onToggle: () => {}, + }, + ]; return ( - - {}} - /> - - - - {}} - /> - - - - {}} - /> - + {qboSyncToggleSettings.map((item) => ( + + + + ))} Date: Tue, 9 Apr 2024 23:11:55 +0100 Subject: [PATCH 032/141] navigate to advanced screen --- .../workspace/accounting/WorkspaceAccountingPage.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx index 2c87e8803be6..967d09535838 100644 --- a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx +++ b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx @@ -16,8 +16,9 @@ import type ThreeDotsMenuProps from '@components/ThreeDotsMenu/types'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; -// import useWaitForNavigation from '@hooks/useWaitForNavigation'; +import useWaitForNavigation from '@hooks/useWaitForNavigation'; import useWindowDimensions from '@hooks/useWindowDimensions'; +import Navigation from '@libs/Navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; @@ -25,13 +26,14 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import type {AnchorPosition} from '@styles/index'; import CONST from '@src/CONST'; +import ROUTES from '@src/ROUTES'; function WorkspaceAccountingPage({policy}: WithPolicyProps) { const theme = useTheme(); const styles = useThemeStyles(); const {translate} = useLocalize(); // const {environmentURL} = useEnvironment(); - // const waitForNavigate = useWaitForNavigation(); + const waitForNavigate = useWaitForNavigation(); const {isSmallScreenWidth, windowWidth} = useWindowDimensions(); const [threeDotsMenuPosition, setThreeDotsMenuPosition] = useState({horizontal: 0, vertical: 0}); @@ -157,7 +159,7 @@ function WorkspaceAccountingPage({policy}: WithPolicyProps) { shouldShowRightIcon: true, title: translate('workspace.accounting.advanced'), wrapperStyle: [styles.sectionMenuItemTopDescription], - onPress: () => {}, + onPress: waitForNavigate(() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID))), }, ]), ], From f299acb56787d2794e65f96c9a4a54db6d6e456b Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 23:48:31 +0100 Subject: [PATCH 033/141] move QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS to const --- src/CONST.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/CONST.ts b/src/CONST.ts index 4bef4022af62..4eb683333927 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1200,6 +1200,12 @@ const CONST = { EXPENSIFY_EMAIL_DOMAIN: '@expensify.com', }, + QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS: { + CROISSANT_CO_PAYROLL_ACCOUNT: 'Croissant Co Payroll Account', + CROISSANT_CO_MONEY_IN_CLEARING: 'Croissant Co Money in Clearing', + CROISSANT_CO_DEBTS_AND_LOANS: 'Croissant Co Debts and Loans', + }, + ACCOUNT_ID: { ACCOUNTING: Number(Config?.EXPENSIFY_ACCOUNT_ID_ACCOUNTING ?? 9645353), ADMIN: Number(Config?.EXPENSIFY_ACCOUNT_ID_ADMIN ?? -1), From 87810f472ebf2877af1c2f85bad69bd3d92c8b1d Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 9 Apr 2024 23:49:00 +0100 Subject: [PATCH 034/141] use QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS --- .../accounting/qbo/QuickbooksAccountSelectPage.tsx | 11 +++-------- .../qbo/QuickbooksInvoiceAccountSelectPage.tsx | 11 +++-------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx index 7828cdb77ee1..e24ce297fdc1 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx @@ -10,14 +10,9 @@ import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; +import CONST from '@src/CONST'; -const QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS = { - CROISSANT_CO_PAYROLL_ACCOUNT: 'Croissant Co Payroll Account', - CROISSANT_CO_MONEY_IN_CLEARING: 'Croissant Co Money in Clearing', - CROISSANT_CO_DEBTS_AND_LOANS: 'Croissant Co Debts and Loans', -}; - -type CustomSelectorTypes = ValueOf; +type CustomSelectorTypes = ValueOf; type SelectorType = { value: CustomSelectorTypes; @@ -33,7 +28,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const qboOnlineSelectorOptions = useMemo( () => - Object.entries(QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ + Object.entries(CONST.QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ value, text: value, keyForList: key, diff --git a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx index 3d7c8ab2f903..53b1be0eb7da 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx @@ -10,14 +10,9 @@ import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; +import CONST from '@src/CONST'; -const QBO_ONLINE_INVOICE_ACCOUNT_SELECTOR_OPTIONS = { - CROISSANT_CO_PAYROLL_ACCOUNT: 'Croissant Co Payroll Account', - CROISSANT_CO_MONEY_IN_CLEARING: 'Croissant Co Money in Clearing', - CROISSANT_CO_DEBTS_AND_LOANS: 'Croissant Co Debts and Loans', -}; - -type CustomSelectorTypes = ValueOf; +type CustomSelectorTypes = ValueOf; type SelectorType = { value: CustomSelectorTypes; @@ -33,7 +28,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const qboOnlineSelectorOptions = useMemo( () => - Object.entries(QBO_ONLINE_INVOICE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ + Object.entries(CONST.QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ value, text: value, keyForList: key, From 9e8b4b9e590cba45109704a12a623fabfdb6b2f0 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 00:03:18 +0100 Subject: [PATCH 035/141] navigate to advanced page --- .../workspace/accounting/qbo/QuickbooksAdvancedPage.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx index 1a69c49278de..74dc18669529 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -8,12 +8,19 @@ import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; import SpacerView from '@components/SpacerView'; import useThemeStyles from '@hooks/useThemeStyles'; +import useWaitForNavigation from '@hooks/useWaitForNavigation'; +import Navigation from '@libs/Navigation/Navigation'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; +import ROUTES from '@src/ROUTES'; function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); + const waitForNavigate = useWaitForNavigation(); + + const policyID = policy?.id ?? ''; + const qboSyncToggleSettings = [ { title: 'Auto-Sync', @@ -79,6 +86,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { title="Croissant Co payroll Account" description="Quickbooks Account" wrapperStyle={[styles.sectionMenuItemTopDescription]} + onPress={waitForNavigate(() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} /> From 448812c1622b11afb23c3ea6bbed7a30f242d966 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 00:12:15 +0100 Subject: [PATCH 036/141] navigate to online invoice account selector page --- src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx index 74dc18669529..9f02b3adc591 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -110,6 +110,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { shouldShowRightIcon shouldShowBasicTitle wrapperStyle={[styles.sectionMenuItemTopDescription]} + onPress={waitForNavigate(() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} /> From 6ac5904401fdb2ec372e802bf43dbff859b6b526 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 11:06:01 +0100 Subject: [PATCH 037/141] add to dependency tray --- src/pages/workspace/accounting/WorkspaceAccountingPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx index ad6e064d4cf7..efcd3e29c641 100644 --- a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx +++ b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx @@ -163,7 +163,7 @@ function WorkspaceAccountingPage({policy}: WithPolicyProps) { }, ]), ], - [styles.sectionMenuItemTopDescription, styles.popoverMenuIcon, translate, isSyncInProgress, theme.spinner, overflowMenu, threeDotsMenuPosition, policyID], + [styles.sectionMenuItemTopDescription, styles.popoverMenuIcon, translate, waitForNavigate, isSyncInProgress, theme.spinner, overflowMenu, threeDotsMenuPosition, policyID], ); const headerThreeDotsMenuItems: ThreeDotsMenuProps['menuItems'] = [ From 1127d9d6d32c24f3a444f04aad0deaa6c998ac50 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 11:07:15 +0100 Subject: [PATCH 038/141] add initial advanced config strings for english --- src/languages/en.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/languages/en.ts b/src/languages/en.ts index 3b670f7b6ebc..f91f1f80ba43 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1872,6 +1872,25 @@ export default { taxesDescription: 'Choose whether to import tax rates and tax defaults from your accounting integration.', locationsAdditionalDescription: 'Locations are imported as Tags. This limits exporting expense reports as Vendor Bills or Checks to QuickBooks Online. To unlock these export options, either disable Locations import or upgrade to the Control Plan to export Locations encoded as a Report Field.', + advancedConfig: { + advanced: 'Advanced', + autoSync: 'Auto-Sync', + autoSyncDescription: 'Changes made in Quickbooks will automatically be reflected in Expensify.', + inviteEmployees: 'Invite Employees', + inviteEmployeesDescription: 'Import Quickbooks Online employee records and invite them to this workspace.', + createEntities: 'Automatically Create Entities', + createEntitiesDescription: + 'Expensify will automatically create a vendor in Quickbooks, if one does not exist. Expensify will also automatically create a customer when exporting invoices.', + reimbursedReports: 'Sync Reimbursed Reports', + reimbursedReportsDescription: 'Any time report is reimbursed using Expensify ACH, the corresponding bill payment will be created in the Quickbooks accounts below.', + qboAccount: 'Quickbooks Account', + collectionAccount: 'Invoice Collection Account', + collectionAccountDescription: 'Once invoices have been Paid, the payment will appear in the account configured below.', + accountSelectDescription: + "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", + invoiceAccountSelectDescription: + 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', + }, }, type: { free: 'Free', From df300527c8534f22603def08f3c1b23d96e38ada Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 11:07:40 +0100 Subject: [PATCH 039/141] add initial advanced config strings for spanish --- src/languages/es.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/languages/es.ts b/src/languages/es.ts index 5027174b2922..afd63b6a6d25 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1899,6 +1899,25 @@ export default { taxesDescription: 'Elige si quires importar las tasas de impuestos y los impuestos por defecto de tu integración de contaduría.', locationsAdditionalDescription: 'Los lugares son importados como Etiquegas. Esto limita a exportar los informes de gastos como Factura del Proveedor o Cheques a Quicbooks Online. Para desbloquear estas opciones de exportación desactiva la importación de Lugares o cambia al Plan Control para exportar Lugares como Campos de Informes.', + advancedConfig: { + advanced: 'Advanced', + autoSync: 'Auto-Sync', + autoSyncDescription: 'Changes made in Quickbooks will automatically be reflected in Expensify.', + inviteEmployees: 'Invite Employees', + inviteEmployeesDescription: 'Import Quickbooks Online employee records and invite them to this workspace.', + createEntities: 'Automatically Create Entities', + createEntitiesDescription: + 'Expensify will automatically create a vendor in Quickbooks, if one does not exist. Expensify will also automatically create a customer when exporting invoices.', + reimbursedReports: 'Sync Reimbursed Reports', + reimbursedReportsDescription: 'Any time report is reimbursed using Expensify ACH, the corresponding bill payment will be created in the Quickbooks accounts below.', + qboAccount: 'Quickbooks Account', + collectionAccount: 'Invoice Collection Account', + collectionAccountDescription: 'Once invoices have been Paid, the payment will appear in the account configured below.', + accountSelectDescription: + "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", + invoiceAccountSelectDescription: + 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', + }, }, type: { free: 'Gratis', From 554d75827b89b27d45480845e3d297154bbf8ace Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 11:09:22 +0100 Subject: [PATCH 040/141] use translations for qbo advanced page --- .../accounting/qbo/QuickbooksAdvancedPage.tsx | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx index 9f02b3adc591..3d96842f72ce 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -7,6 +7,7 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; import SpacerView from '@components/SpacerView'; +import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import useWaitForNavigation from '@hooks/useWaitForNavigation'; import Navigation from '@libs/Navigation/Navigation'; @@ -18,25 +19,26 @@ import ROUTES from '@src/ROUTES'; function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const waitForNavigate = useWaitForNavigation(); + const {translate} = useLocalize(); const policyID = policy?.id ?? ''; const qboSyncToggleSettings = [ { - title: 'Auto-Sync', - subTitle: 'Changes made in Quickbooks will automatically be reflected in Expensify.', + title: translate('workspace.qbo.advancedConfig.autoSync'), + subTitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), isActive: true, onToggle: () => {}, }, { - title: 'Invite Employees', - subTitle: 'Import Quickbooks Online employee records and invite them to this workspace.', + title: translate('workspace.qbo.advancedConfig.inviteEmployees'), + subTitle: translate('workspace.qbo.advancedConfig.inviteEmployeesDescription'), isActive: true, onToggle: () => {}, }, { - title: 'Automatically Create Entities', - subTitle: 'Expensify will automatically create a vendor in Quickbooks, if one does not exist. Expensify will also automatically create a customer when exporting invoices.', + title: translate('workspace.qbo.advancedConfig.createEntities'), + subTitle: translate('workspace.qbo.advancedConfig.createEntitiesDescription'), isActive: true, onToggle: () => {}, }, @@ -48,7 +50,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { shouldEnableMaxHeight testID={QuickbooksAdvancedPage.displayName} > - + {qboSyncToggleSettings.map((item) => ( @@ -74,8 +76,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {}} /> @@ -84,7 +86,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} /> @@ -98,8 +100,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Date: Wed, 10 Apr 2024 11:09:51 +0100 Subject: [PATCH 041/141] use translations for qbo account select page --- .../accounting/qbo/QuickbooksAccountSelectPage.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx index e24ce297fdc1..4228b7b01e38 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx @@ -7,6 +7,7 @@ import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; import RadioListItem from '@components/SelectionList/RadioListItem'; import Text from '@components/Text'; +import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; @@ -23,6 +24,7 @@ type SelectorType = { function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); + const {translate} = useLocalize(); const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); @@ -58,13 +60,10 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { shouldEnableMaxHeight testID={QuickbooksAccountSelectPage.displayName} > - + - - As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in - QuickBooks. - + {translate('workspace.qbo.advancedConfig.accountSelectDescription')} {showQBOOnlineSelectorOptions()} From a96eef4a2107259e816344a6106ee7b57889744f Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 11:10:15 +0100 Subject: [PATCH 042/141] use translations for qbo invoice account select page --- .../accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx index 53b1be0eb7da..68ff143d46a7 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx @@ -7,6 +7,7 @@ import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; import RadioListItem from '@components/SelectionList/RadioListItem'; import Text from '@components/Text'; +import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; @@ -23,6 +24,7 @@ type SelectorType = { function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); + const {translate} = useLocalize(); const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); @@ -58,12 +60,10 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { shouldEnableMaxHeight testID={QuickbooksInvoiceAccountSelectPage.displayName} > - + - - If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid. - + {translate('workspace.qbo.advancedConfig.invoiceAccountSelectDescription')} {showQBOOnlineSelectorOptions()} From 3bff44201dd83936fb35a119446d5fddfe7a3fd1 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 12:03:17 +0100 Subject: [PATCH 043/141] update to qbo selector options --- src/CONST.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 6324c418d961..53d663314081 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1200,10 +1200,10 @@ const CONST = { EXPENSIFY_EMAIL_DOMAIN: '@expensify.com', }, - QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS: { - CROISSANT_CO_PAYROLL_ACCOUNT: 'Croissant Co Payroll Account', - CROISSANT_CO_MONEY_IN_CLEARING: 'Croissant Co Money in Clearing', - CROISSANT_CO_DEBTS_AND_LOANS: 'Croissant Co Debts and Loans', + QBO_SELECTOR_OPTIONS: { + CROISSANT_CO_PAYROLL_ACCOUNT: 'CroissantCoPayrollAccount', + CROISSANT_CO_MONEY_IN_CLEARING: 'CroissantCoMoneyInClearing', + CROISSANT_CO_DEBTS_AND_LOANS: 'CroissantCoDebtsAndLoans', }, INTEGRATION_ENTITY_MAP_TYPES: { From bfbb86ff526efc8cbefef1fef9a3faa2bd1d27b9 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 12:04:02 +0100 Subject: [PATCH 044/141] add croissantCo strings for english --- src/languages/en.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/languages/en.ts b/src/languages/en.ts index f91f1f80ba43..0301a0fb188a 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1890,6 +1890,11 @@ export default { "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", invoiceAccountSelectDescription: 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', + croissantCo: { + [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT]: 'Croissant Co Payroll Account', + [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_MONEY_IN_CLEARING]: 'Croissant Co Money in Clearing', + [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_DEBTS_AND_LOANS]: 'Croissant Co Debts and Loans', + }, }, }, type: { From 4e78e0c983fee26d4b2660f896ceb6afd28ab3ec Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 12:04:12 +0100 Subject: [PATCH 045/141] add croissantCo strings for spanish --- src/languages/es.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/languages/es.ts b/src/languages/es.ts index afd63b6a6d25..9c0e4dfdedc3 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1917,6 +1917,11 @@ export default { "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", invoiceAccountSelectDescription: 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', + croissantCo: { + [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT]: 'Croissant Co Payroll Account', + [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_MONEY_IN_CLEARING]: 'Croissant Co Money in Clearing', + [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_DEBTS_AND_LOANS]: 'Croissant Co Debts and Loans', + }, }, }, type: { From f1b5671479cec8f6f1459ec1f2a2493baf9875cc Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 12:14:28 +0100 Subject: [PATCH 046/141] use translations for selector options on qbo advanced page --- src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx index 3d96842f72ce..bce9cd7de095 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -85,7 +85,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} @@ -108,7 +108,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { /> Date: Wed, 10 Apr 2024 12:15:50 +0100 Subject: [PATCH 047/141] use translations for selector options on qbo account select page --- .../accounting/qbo/QuickbooksAccountSelectPage.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx index 4228b7b01e38..0327ef2a9be5 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx @@ -13,7 +13,7 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; -type CustomSelectorTypes = ValueOf; +type CustomSelectorTypes = ValueOf; type SelectorType = { value: CustomSelectorTypes; @@ -26,13 +26,13 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); + const [selectedAccount, setSelectedAccount] = useState(CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT); const qboOnlineSelectorOptions = useMemo( () => - Object.entries(CONST.QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ + Object.entries(CONST.QBO_SELECTOR_OPTIONS).map(([key, value]) => ({ value, - text: value, + text: translate(`workspace.qbo.advancedConfig.croissantCo.${value}`), keyForList: key, isSelected: selectedAccount === value, })), From e3b1d1f81781cbbae3ef4d2e00465429fb8c92ee Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 12:16:13 +0100 Subject: [PATCH 048/141] use translations for selector options on qbo invoice account select page --- .../accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx index 68ff143d46a7..02639367ae30 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx @@ -13,7 +13,7 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; -type CustomSelectorTypes = ValueOf; +type CustomSelectorTypes = ValueOf; type SelectorType = { value: CustomSelectorTypes; @@ -26,13 +26,13 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); + const [selectedAccount, setSelectedAccount] = useState(CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT); const qboOnlineSelectorOptions = useMemo( () => - Object.entries(CONST.QBO_ONLINE_ACCOUNT_SELECTOR_OPTIONS).map(([key, value]) => ({ + Object.entries(CONST.QBO_SELECTOR_OPTIONS).map(([key, value]) => ({ value, - text: value, + text: translate(`workspace.qbo.advancedConfig.croissantCo.${value}`), keyForList: key, isSelected: selectedAccount === value, })), From fbeca896961162dbc2d6249fc2b9e4d7a055cf7d Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 12:43:04 +0100 Subject: [PATCH 049/141] update select defaults --- src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx | 2 +- .../accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx index bce9cd7de095..0bc4cdff2e12 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx @@ -108,7 +108,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { /> (CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT); + const [selectedAccount, setSelectedAccount] = useState(CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_MONEY_IN_CLEARING); const qboOnlineSelectorOptions = useMemo( () => From 2b874fdec54f844861405ec54fed891a47da1fc7 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 18:02:57 +0100 Subject: [PATCH 050/141] unify all qbo configs and rename to QUICK_BOOKS_CONFIG --- src/CONST.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/CONST.ts b/src/CONST.ts index 53d663314081..04326b39f833 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1216,7 +1216,10 @@ const CONST = { }, QUICK_BOOKS_ONLINE: 'quickbooksOnline', - QUICK_BOOKS_IMPORTS: { + QUICK_BOOKS_CONFIG: { + AUTO_SYNC: 'autoSync', + SYNCE_PEOPLE: 'syncPeople', + AUTO_CREATE_VENDOR: 'autoCreateVendor', SYNC_CLASSES: 'syncClasses', ENABLE_NEW_CATEGORIES: 'enableNewCategories', SYNC_CUSTOMERS: 'syncCustomers', From b29870847a1a608d8ee9f6005e1ead86ea8f0740 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 18:03:47 +0100 Subject: [PATCH 051/141] update updatePolicyConnectionConfig param types --- src/libs/actions/Policy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index d6ab203e85a4..7f2bca0ec05c 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -3721,7 +3721,7 @@ function openPolicyDistanceRatesPage(policyID?: string) { API.read(READ_COMMANDS.OPEN_POLICY_DISTANCE_RATES_PAGE, params); } -function updatePolicyConnectionConfig(policyID: string, settingName: ValueOf, settingValue: ValueOf) { +function updatePolicyConnectionConfig(policyID: string, settingName: ValueOf, settingValue: ValueOf | boolean) { const parameters = {policyID, connectionName: CONST.QUICK_BOOKS_ONLINE, settingName, settingValue, idempotencyKey: settingName}; const optimisticData: OnyxUpdate[] = [ { From ba34554a08cbd5266fe6ecd5421c48bec8ba88a6 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 18:04:21 +0100 Subject: [PATCH 052/141] update UpdatePolicyConnectionConfigParams types --- src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index be062435eaa4..319f8b0fdcca 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -4,8 +4,8 @@ import type CONST from '@src/CONST'; type UpdatePolicyConnectionConfigParams = { policyID: string; connectionName: string; - settingName: ValueOf; - settingValue: ValueOf; + settingName: ValueOf; + settingValue: ValueOf | boolean; idempotencyKey: string; }; From f6f5bf356b6703689806a4429ec81174a14951ad Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 18:06:21 +0100 Subject: [PATCH 053/141] group all qbo advance config pages and use updatePolicyConnectionConfig for toggle switch --- .../QuickbooksAccountSelectPage.tsx | 0 .../{ => advanced}/QuickbooksAdvancedPage.tsx | 27 ++++++++++++++----- .../QuickbooksInvoiceAccountSelectPage.tsx | 0 3 files changed, 21 insertions(+), 6 deletions(-) rename src/pages/workspace/accounting/qbo/{ => advanced}/QuickbooksAccountSelectPage.tsx (100%) rename src/pages/workspace/accounting/qbo/{ => advanced}/QuickbooksAdvancedPage.tsx (85%) rename src/pages/workspace/accounting/qbo/{ => advanced}/QuickbooksInvoiceAccountSelectPage.tsx (100%) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx similarity index 100% rename from src/pages/workspace/accounting/qbo/QuickbooksAccountSelectPage.tsx rename to src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx diff --git a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx similarity index 85% rename from src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx rename to src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 0bc4cdff2e12..88ea8ab3dd67 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -14,7 +14,9 @@ import Navigation from '@libs/Navigation/Navigation'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; +import * as Policy from '@userActions/Policy'; import ROUTES from '@src/ROUTES'; +import CONST from '@src/CONST'; function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); @@ -22,25 +24,38 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; + const {autoSync, syncPeople, autoCreateVendor} = policy?.connections?.quickbooksOnline?.config ?? {}; const qboSyncToggleSettings = [ { title: translate('workspace.qbo.advancedConfig.autoSync'), subTitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), - isActive: true, - onToggle: () => {}, + isActive: Boolean(autoSync), + onToggle: () => Policy.updatePolicyConnectionConfig( + policyID, + CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, + !autoSync, + ), }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), subTitle: translate('workspace.qbo.advancedConfig.inviteEmployeesDescription'), - isActive: true, - onToggle: () => {}, + isActive: Boolean(syncPeople), + onToggle: () => Policy.updatePolicyConnectionConfig( + policyID, + CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, + !syncPeople, + ), }, { title: translate('workspace.qbo.advancedConfig.createEntities'), subTitle: translate('workspace.qbo.advancedConfig.createEntitiesDescription'), - isActive: true, - onToggle: () => {}, + isActive: Boolean(autoCreateVendor), + onToggle: () => Policy.updatePolicyConnectionConfig( + policyID, + CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, + !autoCreateVendor, + ), }, ]; diff --git a/src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx similarity index 100% rename from src/pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage.tsx rename to src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx From 42d8dcc82eca4e42035a843b8458ca66f9004308 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 18:07:11 +0100 Subject: [PATCH 054/141] update qbo param list structure --- .../Navigation/AppNavigator/ModalStackNavigators/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 162969bd1810..6c7419447d64 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -260,10 +260,10 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/settings/ExitSurvey/ExitSurveyReasonPage').default as React.ComponentType, [SCREENS.SETTINGS.EXIT_SURVEY.RESPONSE]: () => require('../../../../pages/settings/ExitSurvey/ExitSurveyResponsePage').default as React.ComponentType, [SCREENS.SETTINGS.EXIT_SURVEY.CONFIRM]: () => require('../../../../pages/settings/ExitSurvey/ExitSurveyConfirmPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksAdvancedPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksAccountSelectPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: () => - require('../../../../pages/workspace/accounting/qbo/QuickbooksInvoiceAccountSelectPage').default as React.ComponentType, + require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_IMPORT]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksImportPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CHART_OF_ACCOUNTS]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksChartOfAccountsPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CUSTOMERS]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksCustomersPage').default as React.ComponentType, From 84a3746357bac843e7ddf8cea591acd47976fbcf Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 18:09:45 +0100 Subject: [PATCH 055/141] group all qbo import config pages --- .../{ => import}/QuickbooksChartOfAccountsPage.tsx | 2 +- .../qbo/{ => import}/QuickbooksClassesPage.tsx | 2 +- .../qbo/{ => import}/QuickbooksCustomersPage.tsx | 2 +- .../qbo/{ => import}/QuickbooksImportPage.tsx | 0 .../qbo/{ => import}/QuickbooksLocationsPage.tsx | 2 +- .../qbo/{ => import}/QuickbooksTaxesPage.tsx | 12 ++++++------ 6 files changed, 10 insertions(+), 10 deletions(-) rename src/pages/workspace/accounting/qbo/{ => import}/QuickbooksChartOfAccountsPage.tsx (99%) rename src/pages/workspace/accounting/qbo/{ => import}/QuickbooksClassesPage.tsx (99%) rename src/pages/workspace/accounting/qbo/{ => import}/QuickbooksCustomersPage.tsx (99%) rename src/pages/workspace/accounting/qbo/{ => import}/QuickbooksImportPage.tsx (100%) rename src/pages/workspace/accounting/qbo/{ => import}/QuickbooksLocationsPage.tsx (99%) rename src/pages/workspace/accounting/qbo/{ => import}/QuickbooksTaxesPage.tsx (91%) diff --git a/src/pages/workspace/accounting/qbo/QuickbooksChartOfAccountsPage.tsx b/src/pages/workspace/accounting/qbo/import/QuickbooksChartOfAccountsPage.tsx similarity index 99% rename from src/pages/workspace/accounting/qbo/QuickbooksChartOfAccountsPage.tsx rename to src/pages/workspace/accounting/qbo/import/QuickbooksChartOfAccountsPage.tsx index 593e5f9dc00a..1fee44687592 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksChartOfAccountsPage.tsx +++ b/src/pages/workspace/accounting/qbo/import/QuickbooksChartOfAccountsPage.tsx @@ -49,7 +49,7 @@ function QuickbooksChartOfAccountsPage({policy}: WithPolicyProps) { onToggle={() => Policy.updatePolicyConnectionConfig( policyID, - CONST.QUICK_BOOKS_IMPORTS.ENABLE_NEW_CATEGORIES, + CONST.QUICK_BOOKS_CONFIG.ENABLE_NEW_CATEGORIES, isSwitchOn ? CONST.INTEGRATION_ENTITY_MAP_TYPES.NONE : CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG, ) } diff --git a/src/pages/workspace/accounting/qbo/QuickbooksClassesPage.tsx b/src/pages/workspace/accounting/qbo/import/QuickbooksClassesPage.tsx similarity index 99% rename from src/pages/workspace/accounting/qbo/QuickbooksClassesPage.tsx rename to src/pages/workspace/accounting/qbo/import/QuickbooksClassesPage.tsx index f8c631b31476..620d86704308 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksClassesPage.tsx +++ b/src/pages/workspace/accounting/qbo/import/QuickbooksClassesPage.tsx @@ -51,7 +51,7 @@ function QuickbooksClassesPage({policy}: WithPolicyProps) { onToggle={() => Policy.updatePolicyConnectionConfig( policyID, - CONST.QUICK_BOOKS_IMPORTS.SYNC_CLASSES, + CONST.QUICK_BOOKS_CONFIG.SYNC_CLASSES, isSwitchOn ? CONST.INTEGRATION_ENTITY_MAP_TYPES.NONE : CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG, ) } diff --git a/src/pages/workspace/accounting/qbo/QuickbooksCustomersPage.tsx b/src/pages/workspace/accounting/qbo/import/QuickbooksCustomersPage.tsx similarity index 99% rename from src/pages/workspace/accounting/qbo/QuickbooksCustomersPage.tsx rename to src/pages/workspace/accounting/qbo/import/QuickbooksCustomersPage.tsx index 27fde14081e7..7dafe1dfd206 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksCustomersPage.tsx +++ b/src/pages/workspace/accounting/qbo/import/QuickbooksCustomersPage.tsx @@ -50,7 +50,7 @@ function QuickbooksCustomersPage({policy}: WithPolicyProps) { onToggle={() => Policy.updatePolicyConnectionConfig( policyID, - CONST.QUICK_BOOKS_IMPORTS.SYNC_CUSTOMERS, + CONST.QUICK_BOOKS_CONFIG.SYNC_CUSTOMERS, isSwitchOn ? CONST.INTEGRATION_ENTITY_MAP_TYPES.NONE : CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG, ) } diff --git a/src/pages/workspace/accounting/qbo/QuickbooksImportPage.tsx b/src/pages/workspace/accounting/qbo/import/QuickbooksImportPage.tsx similarity index 100% rename from src/pages/workspace/accounting/qbo/QuickbooksImportPage.tsx rename to src/pages/workspace/accounting/qbo/import/QuickbooksImportPage.tsx diff --git a/src/pages/workspace/accounting/qbo/QuickbooksLocationsPage.tsx b/src/pages/workspace/accounting/qbo/import/QuickbooksLocationsPage.tsx similarity index 99% rename from src/pages/workspace/accounting/qbo/QuickbooksLocationsPage.tsx rename to src/pages/workspace/accounting/qbo/import/QuickbooksLocationsPage.tsx index 21da79587c0c..0e9150549e64 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksLocationsPage.tsx +++ b/src/pages/workspace/accounting/qbo/import/QuickbooksLocationsPage.tsx @@ -51,7 +51,7 @@ function QuickbooksLocationsPage({policy}: WithPolicyProps) { onToggle={() => Policy.updatePolicyConnectionConfig( policyID, - CONST.QUICK_BOOKS_IMPORTS.SYNC_LOCATIONS, + CONST.QUICK_BOOKS_CONFIG.SYNC_LOCATIONS, isSwitchOn ? CONST.INTEGRATION_ENTITY_MAP_TYPES.NONE : CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG, ) } diff --git a/src/pages/workspace/accounting/qbo/QuickbooksTaxesPage.tsx b/src/pages/workspace/accounting/qbo/import/QuickbooksTaxesPage.tsx similarity index 91% rename from src/pages/workspace/accounting/qbo/QuickbooksTaxesPage.tsx rename to src/pages/workspace/accounting/qbo/import/QuickbooksTaxesPage.tsx index 293d6518baa0..99d16fd1b497 100644 --- a/src/pages/workspace/accounting/qbo/QuickbooksTaxesPage.tsx +++ b/src/pages/workspace/accounting/qbo/import/QuickbooksTaxesPage.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {View} from 'react-native'; +import { View } from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; @@ -11,16 +11,16 @@ import useThemeStyles from '@hooks/useThemeStyles'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; -import type {WithPolicyProps} from '@pages/workspace/withPolicy'; +import type { WithPolicyProps } from '@pages/workspace/withPolicy'; import variables from '@styles/variables'; import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; -function QuickbooksTaxesPage({policy}: WithPolicyProps) { - const {translate} = useLocalize(); +function QuickbooksTaxesPage({ policy }: WithPolicyProps) { + const { translate } = useLocalize(); const styles = useThemeStyles(); const policyID = policy?.id ?? ''; - const {syncTaxes, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; + const { syncTaxes, pendingFields } = policy?.connections?.quickbooksOnline?.config ?? {}; const isSwitchOn = Boolean(syncTaxes && syncTaxes !== CONST.INTEGRATION_ENTITY_MAP_TYPES.NONE); return ( @@ -48,7 +48,7 @@ function QuickbooksTaxesPage({policy}: WithPolicyProps) { onToggle={() => Policy.updatePolicyConnectionConfig( policyID, - CONST.QUICK_BOOKS_IMPORTS.SYNC_TAXES, + CONST.QUICK_BOOKS_CONFIG.SYNC_TAXES, isSwitchOn ? CONST.INTEGRATION_ENTITY_MAP_TYPES.NONE : CONST.INTEGRATION_ENTITY_MAP_TYPES.TAG, ) } From 7ff7d7188930f75990235611c308b92395c6c2e4 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 10 Apr 2024 18:09:57 +0100 Subject: [PATCH 056/141] update qbo param list structure --- .../AppNavigator/ModalStackNavigators/index.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 6c7419447d64..032e817069b7 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -264,12 +264,12 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_IMPORT]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksImportPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CHART_OF_ACCOUNTS]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksChartOfAccountsPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CUSTOMERS]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksCustomersPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_TAXES]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksTaxesPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_LOCATIONS]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksLocationsPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CLASSES]: () => require('../../../../pages/workspace/accounting/qbo/QuickbooksClassesPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_IMPORT]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksImportPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CHART_OF_ACCOUNTS]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksChartOfAccountsPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CUSTOMERS]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksCustomersPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_TAXES]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksTaxesPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_LOCATIONS]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksLocationsPage').default as React.ComponentType, + [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_CLASSES]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksClassesPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_FREQUENCY]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingFrequencyPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingMonthlyOffsetPage').default as React.ComponentType, From ce5924a5fc640bc82c5d4e8b590bffcb3dd08eb2 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 14:17:30 +0100 Subject: [PATCH 057/141] add collectionAccountID and reimbursementAccountID and updatePolicyConnectionConfig --- src/CONST.ts | 2 ++ .../API/parameters/UpdatePolicyConnectionConfigParams.ts | 2 +- src/libs/actions/Policy.ts | 6 +++++- src/types/onyx/Policy.ts | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 04326b39f833..c6a19e40c1c3 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1220,6 +1220,8 @@ const CONST = { AUTO_SYNC: 'autoSync', SYNCE_PEOPLE: 'syncPeople', AUTO_CREATE_VENDOR: 'autoCreateVendor', + REIMBURSEMENT_ACCOUNT_ID: 'reimbursementAccountID', + COLLECTION_ACCOUNT_ID: 'collectionAccountID', SYNC_CLASSES: 'syncClasses', ENABLE_NEW_CATEGORIES: 'enableNewCategories', SYNC_CUSTOMERS: 'syncCustomers', diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index 319f8b0fdcca..4cf0123b6ec2 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -5,7 +5,7 @@ type UpdatePolicyConnectionConfigParams = { policyID: string; connectionName: string; settingName: ValueOf; - settingValue: ValueOf | boolean; + settingValue: ValueOf | string | boolean; idempotencyKey: string; }; diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index 7f2bca0ec05c..21c8390ee2e6 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -3721,7 +3721,11 @@ function openPolicyDistanceRatesPage(policyID?: string) { API.read(READ_COMMANDS.OPEN_POLICY_DISTANCE_RATES_PAGE, params); } -function updatePolicyConnectionConfig(policyID: string, settingName: ValueOf, settingValue: ValueOf | boolean) { +function updatePolicyConnectionConfig( + policyID: string, + settingName: ValueOf, + settingValue: ValueOf | string | boolean, +) { const parameters = {policyID, connectionName: CONST.QUICK_BOOKS_ONLINE, settingName, settingValue, idempotencyKey: settingName}; const optimisticData: OnyxUpdate[] = [ { diff --git a/src/types/onyx/Policy.ts b/src/types/onyx/Policy.ts index a21e98f4bfec..be11a5dce005 100644 --- a/src/types/onyx/Policy.ts +++ b/src/types/onyx/Policy.ts @@ -159,6 +159,8 @@ type QBOConnectionConfig = OnyxCommon.OnyxValueWithOfflineFeedback<{ reimbursableExpensesExportDestination: IntegrationEntityMap; nonReimbursableExpensesExportDestination: IntegrationEntityMap; + collectionAccountID?: string; + reimbursementAccountID?: string; reimbursableExpensesAccount?: string; nonReimbursableExpensesAccount?: string; autoCreateVendor: boolean; From 6325a567bf50d4e59a074dab82b35cf286f918f0 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 14:17:59 +0100 Subject: [PATCH 058/141] implement toggles --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 88ea8ab3dd67..ac81eff5b12b 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -15,8 +15,8 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; import * as Policy from '@userActions/Policy'; -import ROUTES from '@src/ROUTES'; import CONST from '@src/CONST'; +import ROUTES from '@src/ROUTES'; function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); @@ -24,38 +24,26 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; - const {autoSync, syncPeople, autoCreateVendor} = policy?.connections?.quickbooksOnline?.config ?? {}; + const {autoSync, syncPeople, autoCreateVendor, reimbursementAccountID} = policy?.connections?.quickbooksOnline?.config ?? {}; const qboSyncToggleSettings = [ { title: translate('workspace.qbo.advancedConfig.autoSync'), subTitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), isActive: Boolean(autoSync), - onToggle: () => Policy.updatePolicyConnectionConfig( - policyID, - CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, - !autoSync, - ), + onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync), }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), subTitle: translate('workspace.qbo.advancedConfig.inviteEmployeesDescription'), isActive: Boolean(syncPeople), - onToggle: () => Policy.updatePolicyConnectionConfig( - policyID, - CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, - !syncPeople, - ), + onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), }, { title: translate('workspace.qbo.advancedConfig.createEntities'), subTitle: translate('workspace.qbo.advancedConfig.createEntitiesDescription'), isActive: Boolean(autoCreateVendor), - onToggle: () => Policy.updatePolicyConnectionConfig( - policyID, - CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, - !autoCreateVendor, - ), + onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), }, ]; @@ -93,8 +81,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {}} + isActive={Boolean(reimbursementAccountID)} + onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, !reimbursementAccountID)} /> From ae642b85c6f787c45da3b00ce8243b655b08b941 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 14:22:30 +0100 Subject: [PATCH 059/141] fix QuickbooksTaxesPage lint --- .../accounting/qbo/import/QuickbooksTaxesPage.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/import/QuickbooksTaxesPage.tsx b/src/pages/workspace/accounting/qbo/import/QuickbooksTaxesPage.tsx index 99d16fd1b497..433209f2ee51 100644 --- a/src/pages/workspace/accounting/qbo/import/QuickbooksTaxesPage.tsx +++ b/src/pages/workspace/accounting/qbo/import/QuickbooksTaxesPage.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { View } from 'react-native'; +import {View} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; @@ -11,16 +11,16 @@ import useThemeStyles from '@hooks/useThemeStyles'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; -import type { WithPolicyProps } from '@pages/workspace/withPolicy'; +import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import variables from '@styles/variables'; import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; -function QuickbooksTaxesPage({ policy }: WithPolicyProps) { - const { translate } = useLocalize(); +function QuickbooksTaxesPage({policy}: WithPolicyProps) { + const {translate} = useLocalize(); const styles = useThemeStyles(); const policyID = policy?.id ?? ''; - const { syncTaxes, pendingFields } = policy?.connections?.quickbooksOnline?.config ?? {}; + const {syncTaxes, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; const isSwitchOn = Boolean(syncTaxes && syncTaxes !== CONST.INTEGRATION_ENTITY_MAP_TYPES.NONE); return ( From 57002826401862cbe911adcc848ea1e7b266e26a Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 14:23:21 +0100 Subject: [PATCH 060/141] block routes without permission for QuickbooksAdvancedPage --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 142 ++++++++++-------- 1 file changed, 77 insertions(+), 65 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index ac81eff5b12b..5231fcec9523 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -11,6 +11,9 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import useWaitForNavigation from '@hooks/useWaitForNavigation'; import Navigation from '@libs/Navigation/Navigation'; +import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; +import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; +import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; @@ -48,77 +51,86 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { ]; return ( - - - - - {qboSyncToggleSettings.map((item) => ( - + + + - - - ))} + + + + {qboSyncToggleSettings.map((item) => ( + + + + ))} - - - + + + - - Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, !reimbursementAccountID)} - /> - - - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} - /> - + + Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, !reimbursementAccountID)} + /> + + + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} + /> + - - - + + + - + - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} - /> - - + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} + /> + + + + + ); } From 5a127b64ba8564fda76f2ac6731bb31ef53106f0 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 14:27:30 +0100 Subject: [PATCH 061/141] block routes without permission for QuickbooksAccountSelectPage --- .../advanced/QuickbooksAccountSelectPage.tsx | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 0327ef2a9be5..246d0df93aed 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -9,6 +9,9 @@ import RadioListItem from '@components/SelectionList/RadioListItem'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; +import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; +import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; @@ -28,6 +31,8 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const [selectedAccount, setSelectedAccount] = useState(CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT); + const policyID = policy?.id ?? ''; + const qboOnlineSelectorOptions = useMemo( () => Object.entries(CONST.QBO_SELECTOR_OPTIONS).map(([key, value]) => ({ @@ -55,18 +60,27 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { ); return ( - - + + + + + - - {translate('workspace.qbo.advancedConfig.accountSelectDescription')} - - {showQBOOnlineSelectorOptions()} - + + {translate('workspace.qbo.advancedConfig.accountSelectDescription')} + + {showQBOOnlineSelectorOptions()} + + + + ); } From 798d001d24d7941c303e2aa5a65ff5afbb22ab94 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 14:31:17 +0100 Subject: [PATCH 062/141] block routes without permission for QuickbooksInvoiceAccountSelectPage --- .../QuickbooksInvoiceAccountSelectPage.tsx | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 3c95f0f83f0e..7a05f16c4577 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -9,6 +9,9 @@ import RadioListItem from '@components/SelectionList/RadioListItem'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; +import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; +import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; @@ -28,6 +31,8 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const [selectedAccount, setSelectedAccount] = useState(CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_MONEY_IN_CLEARING); + const policyID = policy?.id ?? ''; + const qboOnlineSelectorOptions = useMemo( () => Object.entries(CONST.QBO_SELECTOR_OPTIONS).map(([key, value]) => ({ @@ -55,18 +60,27 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { ); return ( - - + + + + + - - {translate('workspace.qbo.advancedConfig.invoiceAccountSelectDescription')} - - {showQBOOnlineSelectorOptions()} - + + {translate('workspace.qbo.advancedConfig.invoiceAccountSelectDescription')} + + {showQBOOnlineSelectorOptions()} + + + + ); } From fb5e231cb503622e650bfcf85c2e2d1f7028831f Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 14:53:31 +0100 Subject: [PATCH 063/141] fix lint --- .../API/parameters/UpdatePolicyConnectionConfigParams.ts | 2 +- src/libs/actions/Policy.ts | 6 +----- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 +- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index 4cf0123b6ec2..40b09bf5f628 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -5,7 +5,7 @@ type UpdatePolicyConnectionConfigParams = { policyID: string; connectionName: string; settingName: ValueOf; - settingValue: ValueOf | string | boolean; + settingValue: string | boolean; idempotencyKey: string; }; diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index 21c8390ee2e6..7526402df2ed 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -3721,11 +3721,7 @@ function openPolicyDistanceRatesPage(policyID?: string) { API.read(READ_COMMANDS.OPEN_POLICY_DISTANCE_RATES_PAGE, params); } -function updatePolicyConnectionConfig( - policyID: string, - settingName: ValueOf, - settingValue: ValueOf | string | boolean, -) { +function updatePolicyConnectionConfig(policyID: string, settingName: ValueOf, settingValue: string | boolean) { const parameters = {policyID, connectionName: CONST.QUICK_BOOKS_ONLINE, settingName, settingValue, idempotencyKey: settingName}; const optimisticData: OnyxUpdate[] = [ { diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 246d0df93aed..8bc94a16dd23 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -41,7 +41,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { keyForList: key, isSelected: selectedAccount === value, })), - [selectedAccount], + [selectedAccount, translate], ); const showQBOOnlineSelectorOptions = useCallback( diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 7a05f16c4577..60063e4a5246 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -41,7 +41,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { keyForList: key, isSelected: selectedAccount === value, })), - [selectedAccount], + [selectedAccount, translate], ); const showQBOOnlineSelectorOptions = useCallback( From 0527498891029bd178e4a6f12c64a4fd5ba168c7 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 11 Apr 2024 15:45:12 +0100 Subject: [PATCH 064/141] add pending fields --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 5231fcec9523..533961bd2e59 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -27,7 +27,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; - const {autoSync, syncPeople, autoCreateVendor, reimbursementAccountID} = policy?.connections?.quickbooksOnline?.config ?? {}; + const {autoSync, syncPeople, autoCreateVendor, reimbursementAccountID, collectionAccountID, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; + const {bankAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; const qboSyncToggleSettings = [ { @@ -35,18 +36,21 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { subTitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), isActive: Boolean(autoSync), onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync), + pendingAction: pendingFields?.autoSync, }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), subTitle: translate('workspace.qbo.advancedConfig.inviteEmployeesDescription'), isActive: Boolean(syncPeople), onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), + pendingAction: pendingFields?.syncPeople, }, { title: translate('workspace.qbo.advancedConfig.createEntities'), subTitle: translate('workspace.qbo.advancedConfig.createEntitiesDescription'), isActive: Boolean(autoCreateVendor), onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), + pendingAction: pendingFields?.autoCreateVendor, }, ]; @@ -66,9 +70,10 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {qboSyncToggleSettings.map((item) => ( - - + ))} @@ -86,24 +91,26 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { /> - + Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, !reimbursementAccountID)} - /> - - - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} + isActive={Boolean(reimbursementAccountID && collectionAccountID)} + onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, bankAccounts?.[0].id ?? '')} /> + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} + /> + Date: Fri, 12 Apr 2024 11:26:39 +0100 Subject: [PATCH 065/141] update toggle switch component --- .../workflows/ToggleSettingsOptionRow.tsx | 54 ++++++++++++++----- 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index ec8cec4aaa20..b2489cdd3746 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {View} from 'react-native'; +import {View, ViewStyle} from 'react-native'; import Icon from '@components/Icon'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; import Switch from '@components/Switch'; @@ -9,12 +9,18 @@ import type {Errors, PendingAction} from '@src/types/onyx/OnyxCommon'; import type IconAsset from '@src/types/utils/IconAsset'; type ToggleSettingOptionRowProps = { + // Key used internally by React + key?: string; /** Icon to be shown for the option */ icon?: IconAsset; /** Title of the option */ title: string; /** Subtitle of the option */ subtitle: string; + /** subtitle should show below switch and title */ + shouldPlaceSubtitleBelowSwitch?: boolean; + /** Used to apply styles to the outermost container */ + wrapperStyle?: ViewStyle; /** Whether the option is enabled or not */ isActive: boolean; /** Callback to be called when the switch is toggled */ @@ -30,14 +36,44 @@ type ToggleSettingOptionRowProps = { }; const ICON_SIZE = 48; -function ToggleSettingOptionRow({icon, title, subtitle, onToggle, subMenuItems, isActive, pendingAction, errors, onCloseError}: ToggleSettingOptionRowProps) { +function ToggleSettingOptionRow({ + key, + icon, + title, + subtitle, + shouldPlaceSubtitleBelowSwitch, + wrapperStyle, + onToggle, + subMenuItems, + isActive, + pendingAction, + errors, + onCloseError, +}: ToggleSettingOptionRowProps) { const styles = useThemeStyles(); + const subTitleView = () => { + return ( + + {subtitle} + + ); + }; + return ( @@ -56,23 +92,14 @@ function ToggleSettingOptionRow({icon, title, subtitle, onToggle, subMenuItems, {title} - - {subtitle} - + {!shouldPlaceSubtitleBelowSwitch && subTitleView()} + {shouldPlaceSubtitleBelowSwitch && subTitleView()} {isActive && subMenuItems} From 4655224bd0afa2c153007207869bc6d5285bdcb3 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 11:27:16 +0100 Subject: [PATCH 066/141] update advanced component --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 533961bd2e59..5423cca53f04 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -70,18 +70,16 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {qboSyncToggleSettings.map((item) => ( - - - + /> ))} @@ -91,17 +89,15 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { /> - - Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, bankAccounts?.[0].id ?? '')} - /> - + isActive={Boolean(reimbursementAccountID && collectionAccountID)} + onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, bankAccounts?.[0].id ?? '')} + /> - Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, !collectionAccountID)} /> Date: Fri, 12 Apr 2024 11:33:12 +0100 Subject: [PATCH 067/141] fix lint --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 1 - .../workflows/ToggleSettingsOptionRow.tsx | 29 +++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 5423cca53f04..16019b9c6aa8 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -3,7 +3,6 @@ import {View} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import MenuItem from '@components/MenuItem'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; -import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; import SpacerView from '@components/SpacerView'; diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index b2489cdd3746..e7bdbfbd04e0 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {View, ViewStyle} from 'react-native'; +import {View} from 'react-native'; +import type {ViewStyle} from 'react-native'; import Icon from '@components/Icon'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; import Switch from '@components/Switch'; @@ -52,20 +53,18 @@ function ToggleSettingOptionRow({ }: ToggleSettingOptionRowProps) { const styles = useThemeStyles(); - const subTitleView = () => { - return ( - - {subtitle} - - ); - }; + const subTitleView = () => ( + + {subtitle} + + ); return ( Date: Fri, 12 Apr 2024 12:19:12 +0100 Subject: [PATCH 068/141] remove shouldEnableMaxHeight --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 1 - .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 8bc94a16dd23..007f9e66ce45 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -68,7 +68,6 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { > diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 60063e4a5246..058ae72c095f 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -68,7 +68,6 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { > From 57f70512ebbabd773b1ef64e902af45edad2cb8b Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:05:29 +0100 Subject: [PATCH 069/141] use selectionList for QuickbooksAccountSelectPage --- .../advanced/QuickbooksAccountSelectPage.tsx | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 007f9e66ce45..4fa5a038353f 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -2,9 +2,8 @@ import React, {useCallback, useMemo, useState} from 'react'; import {View} from 'react-native'; import type {ValueOf} from 'type-fest'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; -import ScrollView from '@components/ScrollView'; +import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; @@ -43,22 +42,22 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { })), [selectedAccount, translate], ); - - const showQBOOnlineSelectorOptions = useCallback( - () => - qboOnlineSelectorOptions.map((item) => ( - - setSelectedAccount(item.value)} - showTooltip={false} - isFocused={item.isSelected} - /> - - )), - [qboOnlineSelectorOptions, setSelectedAccount], + const listHeaderComponent = useMemo( + () => ( + + {translate('workspace.qbo.advancedConfig.invoiceAccountSelectDescription')} + + ), + [translate, styles.pb2, styles.ph5, styles.pb5, styles.textNormal], ); + const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); + + const updateMode = useCallback((mode: SelectorType) => { + // TODO add API call for change + setSelectedAccount(mode.value); + }, []); + return ( @@ -72,10 +71,13 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { > - - {translate('workspace.qbo.advancedConfig.accountSelectDescription')} - - {showQBOOnlineSelectorOptions()} + From f195d67537407f44d795330bdcd92827113cfa25 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:05:52 +0100 Subject: [PATCH 070/141] use selectionList for QuickbooksInvoiceAccountSelectPage --- .../QuickbooksInvoiceAccountSelectPage.tsx | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 058ae72c095f..15fdf2e9424d 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -2,9 +2,8 @@ import React, {useCallback, useMemo, useState} from 'react'; import {View} from 'react-native'; import type {ValueOf} from 'type-fest'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; -import ScrollView from '@components/ScrollView'; +import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; @@ -44,21 +43,22 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { [selectedAccount, translate], ); - const showQBOOnlineSelectorOptions = useCallback( - () => - qboOnlineSelectorOptions.map((item) => ( - - setSelectedAccount(item.value)} - showTooltip={false} - isFocused={item.isSelected} - /> - - )), - [qboOnlineSelectorOptions, setSelectedAccount], + const listHeaderComponent = useMemo( + () => ( + + {translate('workspace.qbo.advancedConfig.invoiceAccountSelectDescription')} + + ), + [translate, styles.pb2, styles.ph5, styles.pb5, styles.textNormal], ); + const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); + + const updateMode = useCallback((mode: SelectorType) => { + // TODO add API call for change + setSelectedAccount(mode.value); + }, []); + return ( @@ -72,10 +72,13 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { > - - {translate('workspace.qbo.advancedConfig.invoiceAccountSelectDescription')} - - {showQBOOnlineSelectorOptions()} + From c3979f67318f56ca026d1d632c88ecb467ba3da8 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:10:17 +0100 Subject: [PATCH 071/141] extend ListItem for SelectorType for QuickbooksAccountSelectPage --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 4fa5a038353f..1ce4ebf13e81 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -5,6 +5,7 @@ import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; +import {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -17,11 +18,8 @@ import CONST from '@src/CONST'; type CustomSelectorTypes = ValueOf; -type SelectorType = { +type SelectorType = ListItem & { value: CustomSelectorTypes; - text: string; - keyForList: string; - isSelected: boolean; }; function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { From 192ab99c2bf0bbc3aa720bf01acbc09f43737846 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:11:10 +0100 Subject: [PATCH 072/141] extend ListItem for SelectorType for QuickbooksInvoiceAccountSelectPage --- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 15fdf2e9424d..481d1464d9c7 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -5,6 +5,7 @@ import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; +import {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -17,11 +18,8 @@ import CONST from '@src/CONST'; type CustomSelectorTypes = ValueOf; -type SelectorType = { +type SelectorType = ListItem & { value: CustomSelectorTypes; - text: string; - keyForList: string; - isSelected: boolean; }; function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { From 39e92ba6a48811ab2399fb531d519d0cd4724bb1 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:13:19 +0100 Subject: [PATCH 073/141] fix lint --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 +- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 1ce4ebf13e81..57eba473885d 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -5,7 +5,7 @@ import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; -import {ListItem} from '@components/SelectionList/types'; +import type {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 481d1464d9c7..eeb09eb99137 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -5,7 +5,7 @@ import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; import RadioListItem from '@components/SelectionList/RadioListItem'; -import {ListItem} from '@components/SelectionList/types'; +import type {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; From 16207ef60f18120884252e65b8949753c3759a64 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:21:33 +0100 Subject: [PATCH 074/141] Navigate back after selection for QuickbooksAccountSelectPage --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 57eba473885d..cf4060263aee 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -9,6 +9,7 @@ import type {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import Navigation from '@libs/Navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; @@ -54,6 +55,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const updateMode = useCallback((mode: SelectorType) => { // TODO add API call for change setSelectedAccount(mode.value); + Navigation.goBack(); }, []); return ( From 5b238310662e4a8b94cf422b46e270b45d6a05d5 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:21:51 +0100 Subject: [PATCH 075/141] Navigate back after selection for QuickbooksInvoiceAccountSelectPage --- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index eeb09eb99137..cf278c99ec86 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -9,6 +9,7 @@ import type {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import Navigation from '@libs/Navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; @@ -55,6 +56,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const updateMode = useCallback((mode: SelectorType) => { // TODO add API call for change setSelectedAccount(mode.value); + Navigation.goBack(); }, []); return ( From 1794de9bd6192f3a2452c38457df7266b60239de Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 13:58:28 +0100 Subject: [PATCH 076/141] use ToggleSettingOptionRowProps --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 16019b9c6aa8..c6df17e53625 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -16,6 +16,7 @@ import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccess import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; +import type {ToggleSettingOptionRowProps} from '@pages/workspace/workflows/ToggleSettingsOptionRow'; import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; @@ -29,24 +30,24 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {autoSync, syncPeople, autoCreateVendor, reimbursementAccountID, collectionAccountID, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; const {bankAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; - const qboSyncToggleSettings = [ + const qboSyncToggleSettings: ToggleSettingOptionRowProps[] = [ { title: translate('workspace.qbo.advancedConfig.autoSync'), - subTitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), + subtitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), isActive: Boolean(autoSync), onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync), pendingAction: pendingFields?.autoSync, }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), - subTitle: translate('workspace.qbo.advancedConfig.inviteEmployeesDescription'), + subtitle: translate('workspace.qbo.advancedConfig.inviteEmployeesDescription'), isActive: Boolean(syncPeople), onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), pendingAction: pendingFields?.syncPeople, }, { title: translate('workspace.qbo.advancedConfig.createEntities'), - subTitle: translate('workspace.qbo.advancedConfig.createEntitiesDescription'), + subtitle: translate('workspace.qbo.advancedConfig.createEntitiesDescription'), isActive: Boolean(autoCreateVendor), onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), pendingAction: pendingFields?.autoCreateVendor, @@ -72,7 +73,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Date: Fri, 12 Apr 2024 14:32:50 +0100 Subject: [PATCH 077/141] use MenuItemWithTopDescription --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index c6df17e53625..7f55af328a33 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -94,7 +94,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { subtitle={translate('workspace.qbo.advancedConfig.reimbursedReportsDescription')} shouldPlaceSubtitleBelowSwitch wrapperStyle={styles.mv3} - pendingAction={pendingFields?.reimbursementAccountID && pendingFields?.collectionAccountID} + pendingAction={pendingFields?.reimbursementAccountID || pendingFields?.collectionAccountID} isActive={Boolean(reimbursementAccountID && collectionAccountID)} onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, bankAccounts?.[0].id ?? '')} /> @@ -124,10 +124,9 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, !collectionAccountID)} /> - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} /> From 015f7d87d4ad2607a48fc1922a035d79b1687501 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 14:33:56 +0100 Subject: [PATCH 078/141] fix lint --- .../workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 7f55af328a33..24c86f2a51d9 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -1,7 +1,6 @@ import React from 'react'; import {View} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import MenuItem from '@components/MenuItem'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; From 025758bd07f9339f8c2aa68d31015b7e0fcdf20d Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 21:47:43 +0100 Subject: [PATCH 079/141] rename to policy accounting --- src/SCREENS.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 1640ce8f3d3a..dbd8a974e136 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -251,7 +251,7 @@ const SCREENS = { OWNER_CHANGE_SUCCESS: 'Workspace_Owner_Change_Success', OWNER_CHANGE_ERROR: 'Workspace_Owner_Change_Error', DISTANCE_RATES: 'Distance_Rates', - QUICKBOOKS_ONLINE_ADVANCED: 'Workspace_Accounting_Quickbooks_Online_Advanced', + QUICKBOOKS_ONLINE_ADVANCED: 'Policy_Accounting_Quickbooks_Online_Advanced', QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Account_Selector', QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Invoice_Account_Selector', CREATE_DISTANCE_RATE: 'Create_Distance_Rate', From ac5a92416e6b2f948459d354fc8f82f3ff423156 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 21:50:00 +0100 Subject: [PATCH 080/141] move close to other policy accounting routes --- src/ROUTES.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 3060c24baf21..9337d544f199 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -550,6 +550,18 @@ const ROUTES = { route: 'settings/workspaces/:policyID/accounting', getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting` as const, }, + WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED: { + route: 'settings/workspaces/:policyID/accounting/quickbooks-online/advanced', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/advanced` as const, + }, + WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: { + route: 'settings/workspaces/:policyID/accounting/quickbooks-online/account-selector', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/account-selector` as const, + }, + WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: { + route: 'settings/workspaces/:policyID/accounting/quickbooks-online/invoice-account-selector', + getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/invoice-account-selector` as const, + }, WORKSPACE_CATEGORIES: { route: 'settings/workspaces/:policyID/categories', getRoute: (policyID: string) => `settings/workspaces/${policyID}/categories` as const, @@ -574,18 +586,6 @@ const ROUTES = { route: 'settings/workspaces/:policyID/categories/:categoryName/edit', getRoute: (policyID: string, categoryName: string) => `settings/workspaces/${policyID}/categories/${encodeURIComponent(categoryName)}/edit` as const, }, - WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED: { - route: 'settings/workspaces/:policyID/accounting/quickbooks-online/advanced', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/advanced` as const, - }, - WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: { - route: 'settings/workspaces/:policyID/accounting/quickbooks-online/account-selector', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/account-selector` as const, - }, - WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: { - route: 'settings/workspaces/:policyID/accounting/quickbooks-online/invoice-account-selector', - getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/invoice-account-selector` as const, - }, WORKSPACE_TAGS: { route: 'settings/workspaces/:policyID/tags', getRoute: (policyID: string) => `settings/workspaces/${policyID}/tags` as const, From e30539f01eee6343c708475ecfa4983a1c59ed62 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 21:55:41 +0100 Subject: [PATCH 081/141] use array instead of object spread --- .../workspace/workflows/ToggleSettingsOptionRow.tsx | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index f1141b5ee4ba..7e4425c08d31 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -56,18 +56,7 @@ function ToggleSettingOptionRow({ }: ToggleSettingOptionRowProps) { const styles = useThemeStyles(); - const subTitleView = () => ( - - {subtitle} - - ); + const subTitleView = () => {subtitle}; return ( Date: Fri, 12 Apr 2024 21:59:35 +0100 Subject: [PATCH 082/141] use useMemo to rerun a ready-to-render view --- .../workspace/workflows/ToggleSettingsOptionRow.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index 7e4425c08d31..c15c4645ca62 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {useMemo} from 'react'; import {View} from 'react-native'; import type {ViewStyle} from 'react-native'; import Icon from '@components/Icon'; @@ -56,7 +56,10 @@ function ToggleSettingOptionRow({ }: ToggleSettingOptionRowProps) { const styles = useThemeStyles(); - const subTitleView = () => {subtitle}; + const subTitleView = useMemo( + () => {subtitle}, + [shouldPlaceSubtitleBelowSwitch, styles.mr5, styles.mt1, styles.mt4, styles.textLabel, styles.textSupporting], + ); return ( {title} - {!shouldPlaceSubtitleBelowSwitch && subTitleView()} + {!shouldPlaceSubtitleBelowSwitch && subTitleView} - {shouldPlaceSubtitleBelowSwitch && subTitleView()} + {shouldPlaceSubtitleBelowSwitch && subTitleView} {isActive && subMenuItems} From 65f8f41630ec1e71ef2ffd1377bd307183a6d130 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 22:02:06 +0100 Subject: [PATCH 083/141] update wrapperStyle types --- src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index c15c4645ca62..7aa22826c2ac 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -1,6 +1,6 @@ import React, {useMemo} from 'react'; import {View} from 'react-native'; -import type {ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; import Icon from '@components/Icon'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; import Switch from '@components/Switch'; @@ -21,7 +21,7 @@ type ToggleSettingOptionRowProps = { /** subtitle should show below switch and title */ shouldPlaceSubtitleBelowSwitch?: boolean; /** Used to apply styles to the outermost container */ - wrapperStyle?: ViewStyle; + wrapperStyle?: StyleProp; /** Whether the option is enabled or not */ isActive: boolean; /** Callback to be called when the switch is toggled */ @@ -73,7 +73,7 @@ function ToggleSettingOptionRow({ - {icon && ( + {!!icon && ( Date: Fri, 12 Apr 2024 22:04:08 +0100 Subject: [PATCH 084/141] use array instead of object spread --- .../workflows/ToggleSettingsOptionRow.tsx | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index 7aa22826c2ac..58ba5577ed49 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -78,21 +78,11 @@ function ToggleSettingOptionRow({ src={icon} height={ICON_SIZE} width={ICON_SIZE} - additionalStyles={{ - ...styles.mr3, - }} + additionalStyles={[styles.mr3]} /> )} - - {title} - + {title} {!shouldPlaceSubtitleBelowSwitch && subTitleView} From 06fbd1aff4903319f87d01a6b16283d3d8bc0c13 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 12 Apr 2024 22:10:45 +0100 Subject: [PATCH 085/141] add TODO to unfinished implementations --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 24c86f2a51d9..7e86a64592bb 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -93,6 +93,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { subtitle={translate('workspace.qbo.advancedConfig.reimbursedReportsDescription')} shouldPlaceSubtitleBelowSwitch wrapperStyle={styles.mv3} + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing pendingAction={pendingFields?.reimbursementAccountID || pendingFields?.collectionAccountID} isActive={Boolean(reimbursementAccountID && collectionAccountID)} onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, bankAccounts?.[0].id ?? '')} @@ -100,7 +101,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} @@ -114,7 +115,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Date: Fri, 12 Apr 2024 22:22:19 +0100 Subject: [PATCH 086/141] fix lint: add missing dep. --- src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index 58ba5577ed49..348bc576c67d 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -58,7 +58,7 @@ function ToggleSettingOptionRow({ const subTitleView = useMemo( () => {subtitle}, - [shouldPlaceSubtitleBelowSwitch, styles.mr5, styles.mt1, styles.mt4, styles.textLabel, styles.textSupporting], + [shouldPlaceSubtitleBelowSwitch, subtitle, styles.mr5, styles.mt1, styles.mt4, styles.textLabel, styles.textSupporting], ); return ( From 44f8588362082b7f54888dbab295561c4e6e2359 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 15 Apr 2024 12:30:03 +0100 Subject: [PATCH 087/141] remove waitForNavigate --- src/pages/workspace/accounting/WorkspaceAccountingPage.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx index efcd3e29c641..8f82f1520286 100644 --- a/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx +++ b/src/pages/workspace/accounting/WorkspaceAccountingPage.tsx @@ -16,7 +16,6 @@ import type ThreeDotsMenuProps from '@components/ThreeDotsMenu/types'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; -import useWaitForNavigation from '@hooks/useWaitForNavigation'; import useWindowDimensions from '@hooks/useWindowDimensions'; import Navigation from '@navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; @@ -33,7 +32,6 @@ function WorkspaceAccountingPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); // const {environmentURL} = useEnvironment(); - const waitForNavigate = useWaitForNavigation(); const {isSmallScreenWidth, windowWidth} = useWindowDimensions(); const [threeDotsMenuPosition, setThreeDotsMenuPosition] = useState({horizontal: 0, vertical: 0}); @@ -159,11 +157,11 @@ function WorkspaceAccountingPage({policy}: WithPolicyProps) { shouldShowRightIcon: true, title: translate('workspace.accounting.advanced'), wrapperStyle: [styles.sectionMenuItemTopDescription], - onPress: waitForNavigate(() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID))), + onPress: () => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID)), }, ]), ], - [styles.sectionMenuItemTopDescription, styles.popoverMenuIcon, translate, waitForNavigate, isSyncInProgress, theme.spinner, overflowMenu, threeDotsMenuPosition, policyID], + [styles.sectionMenuItemTopDescription, styles.popoverMenuIcon, translate, isSyncInProgress, theme.spinner, overflowMenu, threeDotsMenuPosition, policyID], ); const headerThreeDotsMenuItems: ThreeDotsMenuProps['menuItems'] = [ From 76d4ef7fd06b1e35bcc5ba8f75a2573e422a8357 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 15 Apr 2024 12:33:22 +0100 Subject: [PATCH 088/141] update function name saveSelection --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index cf4060263aee..c7366689237b 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -52,7 +52,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); - const updateMode = useCallback((mode: SelectorType) => { + const saveSelection = useCallback((mode: SelectorType) => { // TODO add API call for change setSelectedAccount(mode.value); Navigation.goBack(); @@ -75,7 +75,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { sections={[{data: qboOnlineSelectorOptions}]} ListItem={RadioListItem} headerContent={listHeaderComponent} - onSelectRow={updateMode} + onSelectRow={saveSelection} initiallyFocusedOptionKey={initiallyFocusedOptionKey} /> From 459a47a7d7b848e11c1cf212690ca94e6678a410 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 15 Apr 2024 12:37:02 +0100 Subject: [PATCH 089/141] update object name to qboToggleSettingItems --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 7e86a64592bb..30e1888da0ba 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -29,7 +29,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {autoSync, syncPeople, autoCreateVendor, reimbursementAccountID, collectionAccountID, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; const {bankAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; - const qboSyncToggleSettings: ToggleSettingOptionRowProps[] = [ + const qboToggleSettingItems: ToggleSettingOptionRowProps[] = [ { title: translate('workspace.qbo.advancedConfig.autoSync'), subtitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), @@ -68,7 +68,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { - {qboSyncToggleSettings.map((item) => ( + {qboToggleSettingItems.map((item) => ( Date: Mon, 15 Apr 2024 12:42:57 +0100 Subject: [PATCH 090/141] update ToggleSettingOptionRow --- src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index 348bc576c67d..e6adc6f451c6 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -82,7 +82,7 @@ function ToggleSettingOptionRow({ /> )} - {title} + {title} {!shouldPlaceSubtitleBelowSwitch && subTitleView} From b06c5bfa9ef90a8813bc5aaff90bce7b96790269 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 15 Apr 2024 13:31:09 +0100 Subject: [PATCH 091/141] add 20px padding bottom to content container --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 30e1888da0ba..4d59058f00be 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -67,7 +67,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { > - + {qboToggleSettingItems.map((item) => ( Date: Tue, 16 Apr 2024 10:06:05 +0100 Subject: [PATCH 092/141] remove croissantCo translations --- src/languages/en.ts | 5 ----- src/languages/es.ts | 5 ----- 2 files changed, 10 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 2dd4399cdfa9..0f15d3599ab8 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1903,11 +1903,6 @@ export default { "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", invoiceAccountSelectDescription: 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', - croissantCo: { - [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT]: 'Croissant Co Payroll Account', - [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_MONEY_IN_CLEARING]: 'Croissant Co Money in Clearing', - [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_DEBTS_AND_LOANS]: 'Croissant Co Debts and Loans', - }, }, }, type: { diff --git a/src/languages/es.ts b/src/languages/es.ts index fdd03faed6a4..82bed64f98e7 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1930,11 +1930,6 @@ export default { "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", invoiceAccountSelectDescription: 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', - croissantCo: { - [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT]: 'Croissant Co Payroll Account', - [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_MONEY_IN_CLEARING]: 'Croissant Co Money in Clearing', - [CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_DEBTS_AND_LOANS]: 'Croissant Co Debts and Loans', - }, }, }, type: { From 5725e8deb58609ff11a0acc4b38a267dc35a36e8 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 10:10:47 +0100 Subject: [PATCH 093/141] update selections default --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 4d59058f00be..bd065fedba6d 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -101,7 +101,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} @@ -125,7 +125,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { /> Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} From 2420297b914b700a9f6a196cbfdde2e5e9194646 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 11:07:59 +0100 Subject: [PATCH 094/141] remove acount options draft --- .../advanced/QuickbooksAccountSelectPage.tsx | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index c7366689237b..cef69f10ed77 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -1,6 +1,5 @@ import React, {useCallback, useMemo, useState} from 'react'; import {View} from 'react-native'; -import type {ValueOf} from 'type-fest'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; @@ -17,27 +16,28 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; -type CustomSelectorTypes = ValueOf; - type SelectorType = ListItem & { - value: CustomSelectorTypes; + value: string; }; function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); + const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + const accountOptions = bankAccounts || creditCards; - const [selectedAccount, setSelectedAccount] = useState(CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_PAYROLL_ACCOUNT); + const [selectedAccount, setSelectedAccount] = useState('selected'); const policyID = policy?.id ?? ''; - const qboOnlineSelectorOptions = useMemo( + const qboOnlineSelectorOptions = useMemo( () => - Object.entries(CONST.QBO_SELECTOR_OPTIONS).map(([key, value]) => ({ - value, - text: translate(`workspace.qbo.advancedConfig.croissantCo.${value}`), - keyForList: key, - isSelected: selectedAccount === value, + accountOptions?.map(({name}) => ({ + value: name, + text: name, + keyForList: name, + isSelected: selectedAccount === name, })), [selectedAccount, translate], ); @@ -50,11 +50,11 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { [translate, styles.pb2, styles.ph5, styles.pb5, styles.textNormal], ); - const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); + const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions?.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); - const saveSelection = useCallback((mode: SelectorType) => { - // TODO add API call for change - setSelectedAccount(mode.value); + const saveSelection = useCallback(({value}: SelectorType) => { + // TODO add API call for change instead setting state + setSelectedAccount(value); Navigation.goBack(); }, []); @@ -72,7 +72,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { Date: Tue, 16 Apr 2024 11:09:08 +0100 Subject: [PATCH 095/141] remove acount options draft --- .../QuickbooksInvoiceAccountSelectPage.tsx | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index cf278c99ec86..e22976d28d42 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -1,6 +1,5 @@ import React, {useCallback, useMemo, useState} from 'react'; import {View} from 'react-native'; -import type {ValueOf} from 'type-fest'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; @@ -17,27 +16,28 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; -type CustomSelectorTypes = ValueOf; - type SelectorType = ListItem & { - value: CustomSelectorTypes; + value: string; }; function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); + const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + const accountOptions = bankAccounts || creditCards; - const [selectedAccount, setSelectedAccount] = useState(CONST.QBO_SELECTOR_OPTIONS.CROISSANT_CO_MONEY_IN_CLEARING); + const [selectedAccount, setSelectedAccount] = useState('selected'); const policyID = policy?.id ?? ''; - const qboOnlineSelectorOptions = useMemo( + const qboOnlineSelectorOptions = useMemo( () => - Object.entries(CONST.QBO_SELECTOR_OPTIONS).map(([key, value]) => ({ - value, - text: translate(`workspace.qbo.advancedConfig.croissantCo.${value}`), - keyForList: key, - isSelected: selectedAccount === value, + accountOptions?.map(({name}) => ({ + value: name, + text: name, + keyForList: name, + isSelected: selectedAccount === name, })), [selectedAccount, translate], ); @@ -51,10 +51,10 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { [translate, styles.pb2, styles.ph5, styles.pb5, styles.textNormal], ); - const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); + const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions?.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); const updateMode = useCallback((mode: SelectorType) => { - // TODO add API call for change + // TODO add API call for change instead setting state setSelectedAccount(mode.value); Navigation.goBack(); }, []); @@ -73,7 +73,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { Date: Tue, 16 Apr 2024 11:21:09 +0100 Subject: [PATCH 096/141] use acount options draft --- .../qbo/advanced/QuickbooksAccountSelectPage.tsx | 7 +++++-- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index cef69f10ed77..dd1928469ad8 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -20,12 +20,15 @@ type SelectorType = ListItem & { value: string; }; +// TODO: remove once UI is approved +const DRAFT = [{name: 'Croissant Co Payroll Account'}, {name: 'Croissant Co Money in Clearing'}, {name: 'Croissant Co Debts and Loans'}]; + function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = bankAccounts || creditCards; + const accountOptions = bankAccounts || creditCards || DRAFT; const [selectedAccount, setSelectedAccount] = useState('selected'); @@ -39,7 +42,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { keyForList: name, isSelected: selectedAccount === name, })), - [selectedAccount, translate], + [selectedAccount, translate, accountOptions], ); const listHeaderComponent = useMemo( () => ( diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index e22976d28d42..38764bf98869 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -20,12 +20,15 @@ type SelectorType = ListItem & { value: string; }; +// TODO: remove once UI is approved +const DRAFT = [{name: 'Croissant Co Payroll Account'}, {name: 'Croissant Co Money in Clearing'}, {name: 'Croissant Co Debts and Loans'}]; + function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = bankAccounts || creditCards; + const accountOptions = bankAccounts || creditCards || DRAFT; const [selectedAccount, setSelectedAccount] = useState('selected'); @@ -39,7 +42,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { keyForList: name, isSelected: selectedAccount === name, })), - [selectedAccount, translate], + [selectedAccount, translate, accountOptions], ); const listHeaderComponent = useMemo( From 2b5522141acafd9b0d4cf8e9f95d1bb759d52a57 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 11:25:38 +0100 Subject: [PATCH 097/141] set default --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 +- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index dd1928469ad8..cfa931cc1ba5 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -30,7 +30,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const accountOptions = bankAccounts || creditCards || DRAFT; - const [selectedAccount, setSelectedAccount] = useState('selected'); + const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); const policyID = policy?.id ?? ''; diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 38764bf98869..00082c3aaa6e 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -30,7 +30,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const accountOptions = bankAccounts || creditCards || DRAFT; - const [selectedAccount, setSelectedAccount] = useState('selected'); + const [selectedAccount, setSelectedAccount] = useState('Croissant Co Money in Clearing'); const policyID = policy?.id ?? ''; From f749eb434500afddb395e4dc8787ffb143eedd0d Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 11:29:21 +0100 Subject: [PATCH 098/141] should be bank account and creditCards --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 +- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index cfa931cc1ba5..729dd9767022 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -28,7 +28,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = bankAccounts || creditCards || DRAFT; + const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 00082c3aaa6e..3cc295a4ed1d 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -28,13 +28,13 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = bankAccounts || creditCards || DRAFT; + const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; const [selectedAccount, setSelectedAccount] = useState('Croissant Co Money in Clearing'); const policyID = policy?.id ?? ''; - const qboOnlineSelectorOptions = useMemo( + const qboOnlineSelectorOptions = useMemo( () => accountOptions?.map(({name}) => ({ value: name, From 330c2a7ba3cefcb4b80f1eee47edc63dc1774bd8 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 11:34:00 +0100 Subject: [PATCH 099/141] move state to top --- .../qbo/advanced/QuickbooksAccountSelectPage.tsx | 8 ++++---- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 729dd9767022..55c4602d1b90 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -26,13 +26,13 @@ const DRAFT = [{name: 'Croissant Co Payroll Account'}, {name: 'Croissant Co Mone function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; - const [selectedAccount, setSelectedAccount] = useState('Croissant Co Payroll Account'); + const [selectedAccount, setSelectedAccount] = useState(DRAFT[0].name); const policyID = policy?.id ?? ''; + const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; const qboOnlineSelectorOptions = useMemo( () => diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 3cc295a4ed1d..014cb5127224 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -26,13 +26,13 @@ const DRAFT = [{name: 'Croissant Co Payroll Account'}, {name: 'Croissant Co Mone function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; - const [selectedAccount, setSelectedAccount] = useState('Croissant Co Money in Clearing'); + const [selectedAccount, setSelectedAccount] = useState(DRAFT[0].name); const policyID = policy?.id ?? ''; + const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; const qboOnlineSelectorOptions = useMemo( () => From fb6779b1b1bc194829163be59351e812b9b80627 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 11:44:35 +0100 Subject: [PATCH 100/141] update qbo advanced spanish translations --- src/languages/es.ts | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index 82bed64f98e7..a9eb594d1753 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1913,23 +1913,24 @@ export default { locationsAdditionalDescription: 'Los lugares son importados como Etiquegas. Esto limita a exportar los informes de gastos como Factura del Proveedor o Cheques a Quicbooks Online. Para desbloquear estas opciones de exportación desactiva la importación de Lugares o cambia al Plan Control para exportar Lugares como Campos de Informes.', advancedConfig: { - advanced: 'Advanced', - autoSync: 'Auto-Sync', - autoSyncDescription: 'Changes made in Quickbooks will automatically be reflected in Expensify.', - inviteEmployees: 'Invite Employees', - inviteEmployeesDescription: 'Import Quickbooks Online employee records and invite them to this workspace.', - createEntities: 'Automatically Create Entities', + advanced: 'Avanzado', + autoSync: 'Autosincronización', + autoSyncDescription: 'Los cambios realizados en Quickbooks se reflejarán automáticamente en Expensify.', + inviteEmployees: 'Invitar empleados', + inviteEmployeesDescription: 'Importe los registros de los empleados de Quickbooks Online e invítelos a este espacio de trabajo.', + createEntities: 'Crear entidades automáticamente', createEntitiesDescription: - 'Expensify will automatically create a vendor in Quickbooks, if one does not exist. Expensify will also automatically create a customer when exporting invoices.', - reimbursedReports: 'Sync Reimbursed Reports', - reimbursedReportsDescription: 'Any time report is reimbursed using Expensify ACH, the corresponding bill payment will be created in the Quickbooks accounts below.', - qboAccount: 'Quickbooks Account', - collectionAccount: 'Invoice Collection Account', - collectionAccountDescription: 'Once invoices have been Paid, the payment will appear in the account configured below.', + 'Expensify creará automáticamente un proveedor en Quickbooks, si no existe. Expensify también creará automáticamente un cliente al exportar facturas.', + reimbursedReports: 'Sincronizar informes reembolsados', + reimbursedReportsDescription: + 'Cada vez que se pague un informe utilizando Expensify ACH, se creará el pago de la factura correspondiente en las cuentas de Quickbooks indicadas a continuación.', + qboAccount: 'Cuenta Quickbooks', + collectionAccount: 'Cuenta de cobro de facturas', + collectionAccountDescription: 'Una vez abonadas las facturas, el pago aparecerá en la cuenta configurada a continuación.', accountSelectDescription: - "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", + 'Como has activado la sincronización de los informes de reembolso, tendrás que seleccionar la cuenta bancaria de la que saldrán tus reembolsos y crearemos el pago en QuickBooks.', invoiceAccountSelectDescription: - 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', + 'Si está exportando facturas de Expensify a Quickbooks Online, ésta es la cuenta en la que aparecerá la factura una vez marcada como pagada.', }, }, type: { From cfd42c57999e682b9bb5e696b8957ea8fee762c0 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 11:53:10 +0100 Subject: [PATCH 101/141] update qbo advanced english strings --- src/languages/en.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 0f15d3599ab8..f6c2dc4b597c 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1887,22 +1887,22 @@ export default { 'Locations are imported as Tags. This limits exporting expense reports as Vendor Bills or Checks to QuickBooks Online. To unlock these export options, either disable Locations import or upgrade to the Control Plan to export Locations encoded as a Report Field.', advancedConfig: { advanced: 'Advanced', - autoSync: 'Auto-Sync', + autoSync: 'Auto-sync', autoSyncDescription: 'Changes made in Quickbooks will automatically be reflected in Expensify.', - inviteEmployees: 'Invite Employees', + inviteEmployees: 'Invite employees', inviteEmployeesDescription: 'Import Quickbooks Online employee records and invite them to this workspace.', - createEntities: 'Automatically Create Entities', + createEntities: 'Automatically create entities', createEntitiesDescription: 'Expensify will automatically create a vendor in Quickbooks, if one does not exist. Expensify will also automatically create a customer when exporting invoices.', - reimbursedReports: 'Sync Reimbursed Reports', - reimbursedReportsDescription: 'Any time report is reimbursed using Expensify ACH, the corresponding bill payment will be created in the Quickbooks accounts below.', - qboAccount: 'Quickbooks Account', - collectionAccount: 'Invoice Collection Account', - collectionAccountDescription: 'Once invoices have been Paid, the payment will appear in the account configured below.', + reimbursedReports: 'Sync reimbursed reports', + reimbursedReportsDescription: 'Any time report is paid using Expensify ACH, the corresponding bill payment will be created in the Quickbooks accounts below.', + qboAccount: 'Quickbooks account', + collectionAccount: 'Invoice collection account', + collectionAccountDescription: 'Once invoices have been paid, the payment will appear in the account configured below.', accountSelectDescription: "As you've enabled sync reimbursed reports, you will need select the bank account your reimbursements are coming out of, and we'll create the payment in QuickBooks.", invoiceAccountSelectDescription: - 'If you are exporting Invoices from Expensify to Quickbooks Online, this is the account the Invoice will appear against once marked as Paid.', + 'If you are exporting invoices from Expensify to Quickbooks Online, this is the account the invoice will appear against once marked as paid.', }, }, type: { From cf3cf1b459e7760b3984c41dd18c7526afa8f175 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 12:39:47 +0100 Subject: [PATCH 102/141] update saveSelection --- .../qbo/advanced/QuickbooksAccountSelectPage.tsx | 12 ++++++------ .../advanced/QuickbooksInvoiceAccountSelectPage.tsx | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 55c4602d1b90..04a866f5f4ee 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useMemo, useState} from 'react'; +import React, {useCallback, useMemo} from 'react'; import {View} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; @@ -14,6 +14,7 @@ import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabl import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; +import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; type SelectorType = ListItem & { @@ -27,7 +28,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const [selectedAccount, setSelectedAccount] = useState(DRAFT[0].name); + const selectedAccount = DRAFT[0].name; // selected const policyID = policy?.id ?? ''; const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; @@ -36,8 +37,8 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const qboOnlineSelectorOptions = useMemo( () => - accountOptions?.map(({name}) => ({ - value: name, + accountOptions?.map(({id, name}) => ({ + value: id, text: name, keyForList: name, isSelected: selectedAccount === name, @@ -56,8 +57,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions?.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); const saveSelection = useCallback(({value}: SelectorType) => { - // TODO add API call for change instead setting state - setSelectedAccount(value); + Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); Navigation.goBack(); }, []); diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 014cb5127224..3aea7b216364 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useMemo, useState} from 'react'; +import React, {useCallback, useMemo} from 'react'; import {View} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; @@ -14,6 +14,7 @@ import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabl import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; +import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; type SelectorType = ListItem & { @@ -27,7 +28,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const [selectedAccount, setSelectedAccount] = useState(DRAFT[0].name); + const selectedAccount = DRAFT[0].name; // selected const policyID = policy?.id ?? ''; const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; @@ -56,9 +57,8 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions?.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); - const updateMode = useCallback((mode: SelectorType) => { - // TODO add API call for change instead setting state - setSelectedAccount(mode.value); + const updateMode = useCallback(({value}: SelectorType) => { + Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); Navigation.goBack(); }, []); From 81a5cba86c561b1890e5aada2f0b68d8619ed71e Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 12:52:37 +0100 Subject: [PATCH 103/141] fix lint --- .../qbo/advanced/QuickbooksAccountSelectPage.tsx | 4 ++-- .../advanced/QuickbooksInvoiceAccountSelectPage.tsx | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 04a866f5f4ee..5e2edbc15676 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -43,7 +43,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { keyForList: name, isSelected: selectedAccount === name, })), - [selectedAccount, translate, accountOptions], + [selectedAccount, accountOptions], ); const listHeaderComponent = useMemo( () => ( @@ -59,7 +59,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const saveSelection = useCallback(({value}: SelectorType) => { Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); Navigation.goBack(); - }, []); + }, [policyID]); return ( diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 3aea7b216364..039f71cf3421 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -43,7 +43,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { keyForList: name, isSelected: selectedAccount === name, })), - [selectedAccount, translate, accountOptions], + [selectedAccount, accountOptions], ); const listHeaderComponent = useMemo( @@ -57,10 +57,13 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions?.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); - const updateMode = useCallback(({value}: SelectorType) => { - Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); - Navigation.goBack(); - }, []); + const updateMode = useCallback( + ({value}: SelectorType) => { + Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, value); + Navigation.goBack(); + }, + [policyID], + ); return ( From 0c8d5ef0373b90b9f0a7cc3fc7ed61b9b90e1a18 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 12:59:29 +0100 Subject: [PATCH 104/141] add otherCurrentAssetAccounts in accountOptions --- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 039f71cf3421..36b401370430 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -31,9 +31,9 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const selectedAccount = DRAFT[0].name; // selected const policyID = policy?.id ?? ''; - const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; + const {bankAccounts, otherCurrentAssetAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; + const accountOptions = [...(bankAccounts ?? []), ...(otherCurrentAssetAccounts ?? [])] || DRAFT; const qboOnlineSelectorOptions = useMemo( () => From d4cdb078251defe73d0ec298e6de107180e792a5 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 13:40:55 +0100 Subject: [PATCH 105/141] fix lint --- ios/Podfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index f9244c515a2c..e442d33cc9fb 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2582,7 +2582,7 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Turf: 13d1a92d969ca0311bbc26e8356cca178ce95da2 VisionCamera: 3033e0dd5272d46e97bcb406adea4ae0e6907abf - Yoga: 64cd2a583ead952b0315d5135bf39e053ae9be70 + Yoga: 1b901a6d6eeba4e8a2e8f308f708691cdb5db312 PODFILE CHECKSUM: a25a81f2b50270f0c0bd0aff2e2ebe4d0b4ec06d From 6f7e3fedd01ce20391866e6632e6408bddd48ce3 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 13:41:30 +0100 Subject: [PATCH 106/141] fix lint --- .../advanced/QuickbooksAccountSelectPage.tsx | 19 +++++++++++++------ .../qbo/advanced/QuickbooksAdvancedPage.tsx | 5 +++-- .../QuickbooksInvoiceAccountSelectPage.tsx | 10 +++++++--- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 5e2edbc15676..8d850115d14a 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -22,7 +22,11 @@ type SelectorType = ListItem & { }; // TODO: remove once UI is approved -const DRAFT = [{name: 'Croissant Co Payroll Account'}, {name: 'Croissant Co Money in Clearing'}, {name: 'Croissant Co Debts and Loans'}]; +const DRAFT = [ + {name: 'Croissant Co Payroll Account', id: 'Croissant Co Payroll Account'}, + {name: 'Croissant Co Money in Clearing', id: 'Croissant Co Money in Clearing'}, + {name: 'Croissant Co Debts and Loans', id: 'Croissant Co Debts and Loans'}, +]; function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); @@ -33,7 +37,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const policyID = policy?.id ?? ''; const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])] || DRAFT; + const accountOptions = useMemo(() => DRAFT || [...(bankAccounts ?? []), ...(creditCards ?? [])], [bankAccounts, creditCards]); const qboOnlineSelectorOptions = useMemo( () => @@ -56,10 +60,13 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const initiallyFocusedOptionKey = useMemo(() => qboOnlineSelectorOptions?.find((mode) => mode.isSelected)?.keyForList, [qboOnlineSelectorOptions]); - const saveSelection = useCallback(({value}: SelectorType) => { - Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); - Navigation.goBack(); - }, [policyID]); + const saveSelection = useCallback( + ({value}: SelectorType) => { + Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); + Navigation.goBack(); + }, + [policyID], + ); return ( diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index bd065fedba6d..fdca8cff1e4b 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -27,7 +27,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const policyID = policy?.id ?? ''; const {autoSync, syncPeople, autoCreateVendor, reimbursementAccountID, collectionAccountID, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; - const {bankAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; + const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; + const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])]; const qboToggleSettingItems: ToggleSettingOptionRowProps[] = [ { @@ -96,7 +97,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing pendingAction={pendingFields?.reimbursementAccountID || pendingFields?.collectionAccountID} isActive={Boolean(reimbursementAccountID && collectionAccountID)} - onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, bankAccounts?.[0].id ?? '')} + onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, accountOptions[0].id)} /> DRAFT || [...(bankAccounts ?? []), ...(otherCurrentAssetAccounts ?? [])], [bankAccounts, otherCurrentAssetAccounts]); const qboOnlineSelectorOptions = useMemo( () => From 2c1135d47411ae1521640252160b447349eddffb Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Tue, 16 Apr 2024 13:47:19 +0100 Subject: [PATCH 107/141] undo podfile change --- ios/Podfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index e442d33cc9fb..f9244c515a2c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2582,7 +2582,7 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Turf: 13d1a92d969ca0311bbc26e8356cca178ce95da2 VisionCamera: 3033e0dd5272d46e97bcb406adea4ae0e6907abf - Yoga: 1b901a6d6eeba4e8a2e8f308f708691cdb5db312 + Yoga: 64cd2a583ead952b0315d5135bf39e053ae9be70 PODFILE CHECKSUM: a25a81f2b50270f0c0bd0aff2e2ebe4d0b4ec06d From 4005fd412d03b55f9e8228616dccc7409eb015f3 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 17 Apr 2024 13:16:54 +0100 Subject: [PATCH 108/141] Update src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx Co-authored-by: Abdelhafidh Belalia <16493223+s77rt@users.noreply.github.com> --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 8d850115d14a..0b3a9affd5df 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -82,7 +82,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { Date: Wed, 17 Apr 2024 13:18:44 +0100 Subject: [PATCH 109/141] Update src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx Co-authored-by: Abdelhafidh Belalia <16493223+s77rt@users.noreply.github.com> --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 0b3a9affd5df..5f7d2c4b267b 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -39,7 +39,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const accountOptions = useMemo(() => DRAFT || [...(bankAccounts ?? []), ...(creditCards ?? [])], [bankAccounts, creditCards]); - const qboOnlineSelectorOptions = useMemo( + const qboOnlineSelectorOptions = useMemo( () => accountOptions?.map(({id, name}) => ({ value: id, From 03c86ae9d72ac7f307773558d34218e9c77832f9 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 17 Apr 2024 13:18:52 +0100 Subject: [PATCH 110/141] Update src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx Co-authored-by: Abdelhafidh Belalia <16493223+s77rt@users.noreply.github.com> --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 5f7d2c4b267b..08bb5782cec2 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -44,8 +44,8 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { accountOptions?.map(({id, name}) => ({ value: id, text: name, - keyForList: name, - isSelected: selectedAccount === name, + keyForList: id, + isSelected: selectedAccount === id, })), [selectedAccount, accountOptions], ); From 78c43337640db7cee80a50fd62b9300b64736181 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 17 Apr 2024 13:52:30 +0100 Subject: [PATCH 111/141] update defaults --- .../qbo/advanced/QuickbooksAccountSelectPage.tsx | 2 +- .../advanced/QuickbooksInvoiceAccountSelectPage.tsx | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 08bb5782cec2..5449b8f6f905 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -32,7 +32,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const selectedAccount = DRAFT[0].name; // selected + const selectedAccount = DRAFT[0].id; // selected const policyID = policy?.id ?? ''; const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index b708737f5b56..af5b17fe04f5 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -32,7 +32,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const selectedAccount = DRAFT[1].name; // selected + const selectedAccount = DRAFT[1].id; // selected const policyID = policy?.id ?? ''; const {bankAccounts, otherCurrentAssetAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; @@ -41,11 +41,11 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const qboOnlineSelectorOptions = useMemo( () => - accountOptions?.map(({name}) => ({ - value: name, + accountOptions?.map(({id,name}) => ({ + value: id, text: name, - keyForList: name, - isSelected: selectedAccount === name, + keyForList: id, + isSelected: selectedAccount === id, })), [selectedAccount, accountOptions], ); @@ -83,7 +83,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { Date: Wed, 17 Apr 2024 14:14:25 +0100 Subject: [PATCH 112/141] fix lint --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index fdca8cff1e4b..e83cab15a433 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -34,8 +34,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { { title: translate('workspace.qbo.advancedConfig.autoSync'), subtitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), - isActive: Boolean(autoSync), - onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync), + isActive: Boolean(autoSync?.enabled), + onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync?.enabled), pendingAction: pendingFields?.autoSync, }, { @@ -116,7 +116,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} From c5ccafe95cc58fde48d4d102ff2be07183016fd4 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 17 Apr 2024 14:33:16 +0100 Subject: [PATCH 113/141] use otherCurrentAssetAccounts and bankAccounts --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index e83cab15a433..333566cdff41 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -26,9 +26,10 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; - const {autoSync, syncPeople, autoCreateVendor, reimbursementAccountID, collectionAccountID, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; - const {bankAccounts, creditCards} = policy?.connections?.quickbooksOnline?.data ?? {}; + const {autoSync, syncPeople, autoCreateVendor, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; + const {bankAccounts, creditCards, otherCurrentAssetAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])]; + const invoiceAccountOptions = [...(bankAccounts ?? []), ...(otherCurrentAssetAccounts ?? [])]; const qboToggleSettingItems: ToggleSettingOptionRowProps[] = [ { @@ -96,8 +97,15 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { wrapperStyle={styles.mv3} // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing pendingAction={pendingFields?.reimbursementAccountID || pendingFields?.collectionAccountID} - isActive={Boolean(reimbursementAccountID && collectionAccountID)} - onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, accountOptions[0].id)} + isActive={Boolean(accountOptions[0]?.id)} // TODO + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + onToggle={() => + Policy.updatePolicyConnectionConfig( + policyID, + CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID || CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, + accountOptions[0]?.id, + ) + } /> Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, !collectionAccountID)} + isActive={Boolean(invoiceAccountOptions[0]?.id)} // TODO + onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, invoiceAccountOptions[0]?.id)} /> Date: Wed, 17 Apr 2024 14:35:35 +0100 Subject: [PATCH 114/141] fix lint --- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index af5b17fe04f5..392288861eb5 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -41,7 +41,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const qboOnlineSelectorOptions = useMemo( () => - accountOptions?.map(({id,name}) => ({ + accountOptions?.map(({id, name}) => ({ value: id, text: name, keyForList: id, From 9ea39ff0fb101df8850ad777610d550bf4f89e00 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 17 Apr 2024 15:07:00 +0100 Subject: [PATCH 115/141] remove enabled from autoSync --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 333566cdff41..a4f63d5c06f4 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -35,8 +35,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { { title: translate('workspace.qbo.advancedConfig.autoSync'), subtitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), - isActive: Boolean(autoSync?.enabled), - onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync?.enabled), + isActive: Boolean(autoSync), + onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync), pendingAction: pendingFields?.autoSync, }, { From 8086aaf6b2de14ba1183da260ff578183c547631 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Wed, 17 Apr 2024 19:05:05 +0100 Subject: [PATCH 116/141] remove qbo selector options --- src/CONST.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index a8163ab38591..b72824e8a2ea 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1207,12 +1207,6 @@ const CONST = { EXPENSIFY_EMAIL_DOMAIN: '@expensify.com', }, - QBO_SELECTOR_OPTIONS: { - CROISSANT_CO_PAYROLL_ACCOUNT: 'CroissantCoPayrollAccount', - CROISSANT_CO_MONEY_IN_CLEARING: 'CroissantCoMoneyInClearing', - CROISSANT_CO_DEBTS_AND_LOANS: 'CroissantCoDebtsAndLoans', - }, - INTEGRATION_ENTITY_MAP_TYPES: { DEFAULT: 'DEFAULT', NONE: 'NONE', From dc6a7ac0d8285b5cabd2ffe3cdc7d1792e0c8d28 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 18 Apr 2024 16:42:55 +0100 Subject: [PATCH 117/141] update advanced config accounting routes and navigation types --- src/SCREENS.ts | 6 +++--- .../Navigation/AppNavigator/ModalStackNavigators/index.tsx | 6 +++--- .../Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts | 6 +++--- src/libs/Navigation/linkingConfig/config.ts | 6 +++--- src/libs/Navigation/types.ts | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 91d852136a25..d7835f800603 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -211,6 +211,9 @@ const SCREENS = { QUICKBOOKS_ONLINE_CUSTOMERS: 'Policy_Accounting_Quickbooks_Online_Import_Customers', QUICKBOOKS_ONLINE_LOCATIONS: 'Policy_Accounting_Quickbooks_Online_Import_Locations', QUICKBOOKS_ONLINE_TAXES: 'Policy_Accounting_Quickbooks_Online_Import_Taxes', + QUICKBOOKS_ONLINE_ADVANCED: 'Policy_Accounting_Quickbooks_Online_Advanced', + QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Account_Selector', + QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Invoice_Account_Selector', }, INITIAL: 'Workspace_Initial', PROFILE: 'Workspace_Profile', @@ -260,9 +263,6 @@ const SCREENS = { OWNER_CHANGE_SUCCESS: 'Workspace_Owner_Change_Success', OWNER_CHANGE_ERROR: 'Workspace_Owner_Change_Error', DISTANCE_RATES: 'Distance_Rates', - QUICKBOOKS_ONLINE_ADVANCED: 'Policy_Accounting_Quickbooks_Online_Advanced', - QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Account_Selector', - QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR: 'Policy_Accounting_Quickbooks_Online_Invoice_Account_Selector', CREATE_DISTANCE_RATE: 'Create_Distance_Rate', DISTANCE_RATES_SETTINGS: 'Distance_Rates_Settings', DISTANCE_RATE_DETAILS: 'Distance_Rate_Details', diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index e65b3d558042..6d8345f84a56 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -269,9 +269,9 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/accounting/qbo/import/QuickbooksTaxesPage').default as React.ComponentType, [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_LOCATIONS]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksLocationsPage').default as React.ComponentType, [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_CLASSES]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksClassesPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage').default as React.ComponentType, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: () => + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage').default as React.ComponentType, + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage').default as React.ComponentType, + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_FREQUENCY]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingFrequencyPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_MONTHLY_OFFSET]: () => diff --git a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts index 6d62c976d689..4027d817f4de 100755 --- a/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts +++ b/src/libs/Navigation/linkingConfig/FULL_SCREEN_TO_RHP_MAPPING.ts @@ -25,9 +25,9 @@ const FULL_SCREEN_TO_RHP_MAPPING: Partial> = { SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_TAXES, SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_LOCATIONS, SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_CUSTOMERS, - SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED, - SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR, - SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR, + SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ADVANCED, + SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR, + SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR, ], [SCREENS.WORKSPACE.TAXES]: [ SCREENS.WORKSPACE.TAXES_SETTINGS, diff --git a/src/libs/Navigation/linkingConfig/config.ts b/src/libs/Navigation/linkingConfig/config.ts index 1ca3fc7d567d..38b641168634 100644 --- a/src/libs/Navigation/linkingConfig/config.ts +++ b/src/libs/Navigation/linkingConfig/config.ts @@ -269,13 +269,13 @@ const config: LinkingOptions['config'] = { [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_CUSTOMERS]: {path: ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_CUSTOMERS.route}, [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_LOCATIONS]: {path: ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_LOCATIONS.route}, [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_TAXES]: {path: ROUTES.POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_TAXES.route}, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: { + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ADVANCED]: { path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.route, }, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.route, }, - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: { + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: { path: ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.route, }, [SCREENS.WORKSPACE.DESCRIPTION]: { diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index d811c445d8a2..1cae7a5410ef 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -704,13 +704,13 @@ type WorkspacesCentralPaneNavigatorParamList = { [SCREENS.WORKSPACE.ACCOUNTING.ROOT]: { policyID: string; }; - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ADVANCED]: { + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ADVANCED]: { policyID: string; }; - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: { policyID: string; }; - [SCREENS.WORKSPACE.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: { + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: { policyID: string; }; }; From 47f20923ac31784a6aa6b3d4dd9ae72665f76f50 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 18 Apr 2024 16:44:08 +0100 Subject: [PATCH 118/141] use prettier --- .../Navigation/AppNavigator/ModalStackNavigators/index.tsx | 3 ++- src/libs/Navigation/types.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 6d8345f84a56..341b0fd4fdf9 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -270,7 +270,8 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/accounting/qbo/import/QuickbooksLocationsPage').default as React.ComponentType, [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_CLASSES]: () => require('../../../../pages/workspace/accounting/qbo/import/QuickbooksClassesPage').default as React.ComponentType, [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ADVANCED]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage').default as React.ComponentType, - [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage').default as React.ComponentType, + [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR]: () => + require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR]: () => require('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage').default as React.ComponentType, [SCREENS.WORKSPACE.WORKFLOWS_AUTO_REPORTING_FREQUENCY]: () => require('../../../../pages/workspace/workflows/WorkspaceAutoReportingFrequencyPage').default as React.ComponentType, diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 1cae7a5410ef..f96ee653b3ab 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -700,7 +700,7 @@ type WorkspacesCentralPaneNavigatorParamList = { [SCREENS.WORKSPACE.DISTANCE_RATES]: { policyID: string; }; - + [SCREENS.WORKSPACE.ACCOUNTING.ROOT]: { policyID: string; }; From fdf28bb89d13f3a130eee0e49bffeae663592af7 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 18 Apr 2024 16:55:15 +0100 Subject: [PATCH 119/141] update connection values --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index a4f63d5c06f4..e93ad02d0633 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -8,6 +8,7 @@ import SpacerView from '@components/SpacerView'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import useWaitForNavigation from '@hooks/useWaitForNavigation'; +import * as Connections from '@libs/actions/connections'; import Navigation from '@libs/Navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; @@ -16,7 +17,6 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; import type {ToggleSettingOptionRowProps} from '@pages/workspace/workflows/ToggleSettingsOptionRow'; -import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; @@ -35,22 +35,26 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { { title: translate('workspace.qbo.advancedConfig.autoSync'), subtitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), - isActive: Boolean(autoSync), - onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, !autoSync), + isActive: Boolean(autoSync?.enabled), + onToggle: () => + Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, { + jobID: autoSync?.jobID ?? '', + enabled: !autoSync?.enabled, + }), pendingAction: pendingFields?.autoSync, }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), subtitle: translate('workspace.qbo.advancedConfig.inviteEmployeesDescription'), isActive: Boolean(syncPeople), - onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), + onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), pendingAction: pendingFields?.syncPeople, }, { title: translate('workspace.qbo.advancedConfig.createEntities'), subtitle: translate('workspace.qbo.advancedConfig.createEntitiesDescription'), isActive: Boolean(autoCreateVendor), - onToggle: () => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), + onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), pendingAction: pendingFields?.autoCreateVendor, }, ]; @@ -100,8 +104,9 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive={Boolean(accountOptions[0]?.id)} // TODO // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing onToggle={() => - Policy.updatePolicyConnectionConfig( + Connections.updatePolicyConnectionConfig( policyID, + CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID || CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, accountOptions[0]?.id, ) @@ -130,7 +135,14 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { wrapperStyle={styles.mv3} pendingAction={pendingFields?.collectionAccountID} isActive={Boolean(invoiceAccountOptions[0]?.id)} // TODO - onToggle={() => Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, invoiceAccountOptions[0]?.id)} + onToggle={() => + Connections.updatePolicyConnectionConfig( + policyID, + CONST.POLICY.CONNECTIONS.NAME.QBO, + CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, + invoiceAccountOptions[0]?.id, + ) + } /> Date: Thu, 18 Apr 2024 17:03:37 +0100 Subject: [PATCH 120/141] remove key in toggle settings --- src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx index e6adc6f451c6..071115b32c0e 100644 --- a/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx +++ b/src/pages/workspace/workflows/ToggleSettingsOptionRow.tsx @@ -10,8 +10,6 @@ import type {Errors, PendingAction} from '@src/types/onyx/OnyxCommon'; import type IconAsset from '@src/types/utils/IconAsset'; type ToggleSettingOptionRowProps = { - // Key used internally by React - key?: string; /** Icon to be shown for the option */ icon?: IconAsset; /** Title of the option */ @@ -40,7 +38,6 @@ type ToggleSettingOptionRowProps = { const ICON_SIZE = 48; function ToggleSettingOptionRow({ - key, icon, title, subtitle, @@ -63,7 +60,6 @@ function ToggleSettingOptionRow({ return ( Date: Thu, 18 Apr 2024 17:10:37 +0100 Subject: [PATCH 121/141] update more connection values --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 4 ++-- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 5449b8f6f905..6b93bebfaaff 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -8,13 +8,13 @@ import type {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import * as Connections from '@libs/actions/connections'; import Navigation from '@libs/Navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; -import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; type SelectorType = ListItem & { @@ -62,7 +62,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const saveSelection = useCallback( ({value}: SelectorType) => { - Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); + Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); Navigation.goBack(); }, [policyID], diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 392288861eb5..21864e582774 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -8,13 +8,13 @@ import type {ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import * as Connections from '@libs/actions/connections'; import Navigation from '@libs/Navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccessOrNotFoundWrapper'; import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; -import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; type SelectorType = ListItem & { @@ -63,7 +63,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const updateMode = useCallback( ({value}: SelectorType) => { - Policy.updatePolicyConnectionConfig(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, value); + Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, value); Navigation.goBack(); }, [policyID], From c3fd4b6face86dc3c4b8fbda3887f2b05be2f53f Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 18 Apr 2024 17:19:29 +0100 Subject: [PATCH 122/141] add fallback routes --- .../accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx | 3 ++- .../qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx index 6b93bebfaaff..cf23c98c0895 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAccountSelectPage.tsx @@ -16,6 +16,7 @@ import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccess import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; +import ROUTES from '@src/ROUTES'; type SelectorType = ListItem & { value: string; @@ -63,7 +64,7 @@ function QuickbooksAccountSelectPage({policy}: WithPolicyProps) { const saveSelection = useCallback( ({value}: SelectorType) => { Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID, value); - Navigation.goBack(); + Navigation.goBack(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID)); }, [policyID], ); diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx index 21864e582774..ecee5fee40bc 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage.tsx @@ -16,6 +16,7 @@ import PaidPolicyAccessOrNotFoundWrapper from '@pages/workspace/PaidPolicyAccess import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import CONST from '@src/CONST'; +import ROUTES from '@src/ROUTES'; type SelectorType = ListItem & { value: string; @@ -64,7 +65,7 @@ function QuickbooksInvoiceAccountSelectPage({policy}: WithPolicyProps) { const updateMode = useCallback( ({value}: SelectorType) => { Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, value); - Navigation.goBack(); + Navigation.goBack(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ADVANCED.getRoute(policyID)); }, [policyID], ); From 6d286da8ec63c9096435199f485d56a8868256d8 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Thu, 18 Apr 2024 21:09:23 +0100 Subject: [PATCH 123/141] fix review comments --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 79 +++++++++---------- 1 file changed, 37 insertions(+), 42 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index e93ad02d0633..c3c50269c5e2 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -1,6 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; +import MenuItem from '@components/MenuItem'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; @@ -26,10 +27,9 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; - const {autoSync, syncPeople, autoCreateVendor, pendingFields} = policy?.connections?.quickbooksOnline?.config ?? {}; - const {bankAccounts, creditCards, otherCurrentAssetAccounts} = policy?.connections?.quickbooksOnline?.data ?? {}; - const accountOptions = [...(bankAccounts ?? []), ...(creditCards ?? [])]; - const invoiceAccountOptions = [...(bankAccounts ?? []), ...(otherCurrentAssetAccounts ?? [])]; + const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID} = policy?.connections?.quickbooksOnline?.config ?? {}; + const isSyncReimbursedSwitchOn = Boolean(collectionAccountID !== ''); + const selectedAccount = '92345'; // TODO: use fake selected account temporarily. const qboToggleSettingItems: ToggleSettingOptionRowProps[] = [ { @@ -101,56 +101,51 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { wrapperStyle={styles.mv3} // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing pendingAction={pendingFields?.reimbursementAccountID || pendingFields?.collectionAccountID} - isActive={Boolean(accountOptions[0]?.id)} // TODO + isActive={isSyncReimbursedSwitchOn} // TODO // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing onToggle={() => Connections.updatePolicyConnectionConfig( policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, - CONST.QUICK_BOOKS_CONFIG.REIMBURSEMENT_ACCOUNT_ID || CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, - accountOptions[0]?.id, + CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, + isSyncReimbursedSwitchOn ? '' : selectedAccount, ) } /> - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} - /> + {collectionAccountID && ( + <> + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} + /> - - - + + + - - Connections.updatePolicyConnectionConfig( - policyID, - CONST.POLICY.CONNECTIONS.NAME.QBO, - CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID, - invoiceAccountOptions[0]?.id, - ) - } - /> + - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} - /> + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} + /> + + )} From 03f5bfe8178356e9b9bd254844342e86d49ae65c Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 19 Apr 2024 08:26:37 +0100 Subject: [PATCH 124/141] update pendingAction and isActive --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index c3c50269c5e2..10ad79889e8b 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -27,8 +27,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; - const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID} = policy?.connections?.quickbooksOnline?.config ?? {}; - const isSyncReimbursedSwitchOn = Boolean(collectionAccountID !== ''); + const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID, errors} = policy?.connections?.quickbooksOnline?.config ?? {}; + const isSyncReimbursedSwitchOn = !!collectionAccountID; const selectedAccount = '92345'; // TODO: use fake selected account temporarily. const qboToggleSettingItems: ToggleSettingOptionRowProps[] = [ @@ -99,10 +99,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { subtitle={translate('workspace.qbo.advancedConfig.reimbursedReportsDescription')} shouldPlaceSubtitleBelowSwitch wrapperStyle={styles.mv3} - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - pendingAction={pendingFields?.reimbursementAccountID || pendingFields?.collectionAccountID} - isActive={isSyncReimbursedSwitchOn} // TODO - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + pendingAction={pendingFields?.collectionAccountID} + isActive={isSyncReimbursedSwitchOn} onToggle={() => Connections.updatePolicyConnectionConfig( policyID, From fee6469a7804ac054c77241183ee84d1e7bae808 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 19 Apr 2024 08:40:18 +0100 Subject: [PATCH 125/141] add offline with feedback, brickroadIndicator and errorText --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 10ad79889e8b..248ee6c3602a 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -3,6 +3,7 @@ import {View} from 'react-native'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import MenuItem from '@components/MenuItem'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; +import OfflineWithFeedback from '@components/OfflineWithFeedback'; import ScreenWrapper from '@components/ScreenWrapper'; import ScrollView from '@components/ScrollView'; import SpacerView from '@components/SpacerView'; @@ -113,13 +114,17 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {collectionAccountID && ( <> - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} - /> + + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} + errorText={errors?.collectionAccountID} + brickRoadIndicator={errors?.collectionAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} + /> + - Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} - /> + + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} + errorText={errors?.collectionAccountID} + brickRoadIndicator={errors?.collectionAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} + /> + )} From bb18bf8dd2b1a68b706c903ed751650336d7fc47 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 19 Apr 2024 08:51:08 +0100 Subject: [PATCH 126/141] update updatePolicyConnectionConfig types and stringify autosync --- .../parameters/UpdatePolicyConnectionConfigParams.ts | 8 ++++---- src/libs/actions/connections/index.ts | 10 +++++----- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 12 ++++++++---- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index c720fe0059c1..34d7a9ddd628 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -2,10 +2,10 @@ import type {ConnectionName, Connections} from '@src/types/onyx/Policy'; type UpdatePolicyConnectionConfigParams = { policyID: string; - connectionName: TConnectionName; - settingName: TSettingName; - settingValue: Connections[TConnectionName]['config'][TSettingName]; - idempotencyKey: string; + connectionName: string; + settingName: string; + settingValue: string | boolean; + idempotencyKey: string ; }; export default UpdatePolicyConnectionConfigParams; diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index 154036ba70e1..f54e5c2b7ba8 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -42,11 +42,11 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti }; API.write(WRITE_COMMANDS.REMOVE_POLICY_CONNECTION, parameters, {optimisticData, failureData}); } -function updatePolicyConnectionConfig( +function updatePolicyConnectionConfig( policyID: string, - connectionName: TConnectionName, - settingName: TSettingName, - settingValue: Connections[TConnectionName]['config'][TSettingName], + connectionName: string, + settingName: string, + settingValue: Partial, ) { const optimisticData: OnyxUpdate[] = [ { @@ -114,7 +114,7 @@ function updatePolicyConnectionConfig = { + const parameters = { policyID, connectionName, settingName, diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 248ee6c3602a..04c0dd234478 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -38,10 +38,14 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { subtitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), isActive: Boolean(autoSync?.enabled), onToggle: () => - Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, { - jobID: autoSync?.jobID ?? '', - enabled: !autoSync?.enabled, - }), + Connections.updatePolicyConnectionConfig( + policyID, + CONST.POLICY.CONNECTIONS.NAME.QBO, + CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, + JSON.stringify({ + enabled: !autoSync?.enabled, + }), + ), pendingAction: pendingFields?.autoSync, }, { From 6e9e3112bcd5b1d497714602554ec5d96a1afe7f Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 19 Apr 2024 08:53:51 +0100 Subject: [PATCH 127/141] fix lint --- .../parameters/UpdatePolicyConnectionConfigParams.ts | 6 ++---- src/libs/actions/connections/index.ts | 11 +++-------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index 34d7a9ddd628..0e5475f1a27d 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -1,11 +1,9 @@ -import type {ConnectionName, Connections} from '@src/types/onyx/Policy'; - -type UpdatePolicyConnectionConfigParams = { +type UpdatePolicyConnectionConfigParams = { policyID: string; connectionName: string; settingName: string; settingValue: string | boolean; - idempotencyKey: string ; + idempotencyKey: string; }; export default UpdatePolicyConnectionConfigParams; diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index f54e5c2b7ba8..d4b3a3ded722 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -1,12 +1,12 @@ import Onyx from 'react-native-onyx'; import type {OnyxUpdate} from 'react-native-onyx'; import * as API from '@libs/API'; -import type {RemovePolicyConnectionParams, UpdatePolicyConnectionConfigParams} from '@libs/API/parameters'; +import type {RemovePolicyConnectionParams} from '@libs/API/parameters'; import {WRITE_COMMANDS} from '@libs/API/types'; import * as ErrorUtils from '@libs/ErrorUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {ConnectionName, Connections, PolicyConnectionName} from '@src/types/onyx/Policy'; +import type {PolicyConnectionName} from '@src/types/onyx/Policy'; function removePolicyConnection(policyID: string, connectionName: PolicyConnectionName) { const optimisticData: OnyxUpdate[] = [ @@ -42,12 +42,7 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti }; API.write(WRITE_COMMANDS.REMOVE_POLICY_CONNECTION, parameters, {optimisticData, failureData}); } -function updatePolicyConnectionConfig( - policyID: string, - connectionName: string, - settingName: string, - settingValue: Partial, -) { +function updatePolicyConnectionConfig(policyID: string, connectionName: string, settingName: string, settingValue: Partial) { const optimisticData: OnyxUpdate[] = [ { onyxMethod: Onyx.METHOD.MERGE, From adf5dff12331caa732551f12d2b3dc703c4842b9 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Fri, 19 Apr 2024 09:00:04 +0100 Subject: [PATCH 128/141] fix tsc --- src/libs/API/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts index f91b694548ba..e84bbf2d5926 100644 --- a/src/libs/API/types.ts +++ b/src/libs/API/types.ts @@ -412,7 +412,7 @@ type WriteCommandParameters = { [WRITE_COMMANDS.SET_POLICY_DISTANCE_RATES_DEFAULT_CATEGORY]: Parameters.SetPolicyDistanceRatesDefaultCategoryParams; // eslint-disable-next-line @typescript-eslint/no-explicit-any - [WRITE_COMMANDS.UPDATE_POLICY_CONNECTION_CONFIG]: Parameters.UpdatePolicyConnectionConfigParams; + [WRITE_COMMANDS.UPDATE_POLICY_CONNECTION_CONFIG]: Parameters.UpdatePolicyConnectionConfigParams; [WRITE_COMMANDS.REMOVE_POLICY_CONNECTION]: Parameters.RemovePolicyConnectionParams; [WRITE_COMMANDS.UPDATE_POLICY_DISTANCE_RATE_VALUE]: Parameters.UpdatePolicyDistanceRateValueParams; [WRITE_COMMANDS.SET_POLICY_DISTANCE_RATES_ENABLED]: Parameters.SetPolicyDistanceRatesEnabledParams; From 22313f2fe0db3e2054a58d14245055b391519576 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 08:39:03 +0100 Subject: [PATCH 129/141] add errors --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 04c0dd234478..3b47a4254f32 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -28,7 +28,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; - const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID, errors} = policy?.connections?.quickbooksOnline?.config ?? {}; + const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID, errorFields, errors} = policy?.connections?.quickbooksOnline?.config ?? {}; const isSyncReimbursedSwitchOn = !!collectionAccountID; const selectedAccount = '92345'; // TODO: use fake selected account temporarily. @@ -47,6 +47,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { }), ), pendingAction: pendingFields?.autoSync, + errors: errors, }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), @@ -54,6 +55,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive: Boolean(syncPeople), onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), pendingAction: pendingFields?.syncPeople, + errors: errors, }, { title: translate('workspace.qbo.advancedConfig.createEntities'), @@ -61,6 +63,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive: Boolean(autoCreateVendor), onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), pendingAction: pendingFields?.autoCreateVendor, + errors: errors, }, ]; @@ -82,6 +85,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {qboToggleSettingItems.map((item) => ( Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} - errorText={errors?.collectionAccountID} - brickRoadIndicator={errors?.collectionAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} + error={errorFields?.collectionAccountID ? translate('common.genericErrorMessage') : undefined} + brickRoadIndicator={errorFields?.collectionAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} /> @@ -151,8 +156,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { shouldShowRightIcon wrapperStyle={[styles.sectionMenuItemTopDescription]} onPress={waitForNavigate(() => Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_INVOICE_ACCOUNT_SELECTOR.getRoute(policyID)))} - errorText={errors?.collectionAccountID} - brickRoadIndicator={errors?.collectionAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} + error={errorFields?.collectionAccountID ? translate('common.genericErrorMessage') : undefined} + brickRoadIndicator={errorFields?.collectionAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} /> From d5359eb2840199cde6995e94e2dd81bd99a28c17 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 08:44:43 +0100 Subject: [PATCH 130/141] update OfflineWithFeedback --- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 3b47a4254f32..c0dd294b1e15 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -123,15 +123,15 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { {collectionAccountID && ( <> - + Navigation.navigate(ROUTES.WORKSPACE_ACCOUNTING_QUICKBOOKS_ONLINE_ACCOUNT_SELECTOR.getRoute(policyID)))} - error={errorFields?.collectionAccountID ? translate('common.genericErrorMessage') : undefined} - brickRoadIndicator={errorFields?.collectionAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} + error={errorFields?.reimbursementAccountID ? translate('common.genericErrorMessage') : undefined} + brickRoadIndicator={errorFields?.reimbursementAccountID ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined} /> @@ -142,15 +142,14 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { /> - - + Date: Mon, 22 Apr 2024 09:31:34 +0100 Subject: [PATCH 131/141] update updatePolicyConnectionConfig types and values --- .../UpdatePolicyConnectionConfigParams.ts | 10 ++++++---- src/libs/actions/connections/index.ts | 15 ++++++++++----- .../qbo/advanced/QuickbooksAdvancedPage.tsx | 11 +++-------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index 0e5475f1a27d..75a5f6360a15 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -1,8 +1,10 @@ -type UpdatePolicyConnectionConfigParams = { +import type {ConnectionName, Connections} from '@src/types/onyx/Policy'; + +type UpdatePolicyConnectionConfigParams = { policyID: string; - connectionName: string; - settingName: string; - settingValue: string | boolean; + connectionName: TConnectionName; + settingName: TSettingName; + settingValue: Connections[TConnectionName]['config'][TSettingName] | string; idempotencyKey: string; }; diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index d4b3a3ded722..df7992008220 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -1,12 +1,12 @@ import Onyx from 'react-native-onyx'; import type {OnyxUpdate} from 'react-native-onyx'; import * as API from '@libs/API'; -import type {RemovePolicyConnectionParams} from '@libs/API/parameters'; +import type {RemovePolicyConnectionParams, UpdatePolicyConnectionConfigParams} from '@libs/API/parameters'; import {WRITE_COMMANDS} from '@libs/API/types'; import * as ErrorUtils from '@libs/ErrorUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {PolicyConnectionName} from '@src/types/onyx/Policy'; +import type {ConnectionName, Connections, PolicyConnectionName} from '@src/types/onyx/Policy'; function removePolicyConnection(policyID: string, connectionName: PolicyConnectionName) { const optimisticData: OnyxUpdate[] = [ @@ -42,7 +42,12 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti }; API.write(WRITE_COMMANDS.REMOVE_POLICY_CONNECTION, parameters, {optimisticData, failureData}); } -function updatePolicyConnectionConfig(policyID: string, connectionName: string, settingName: string, settingValue: Partial) { +function updatePolicyConnectionConfig( + policyID: string, + connectionName: TConnectionName, + settingName: TSettingName, + settingValue: Partial, +) { const optimisticData: OnyxUpdate[] = [ { onyxMethod: Onyx.METHOD.MERGE, @@ -109,11 +114,11 @@ function updatePolicyConnectionConfig(policyID: string, connectionName: string, }, ]; - const parameters = { + const parameters: UpdatePolicyConnectionConfigParams = { policyID, connectionName, settingName, - settingValue, + settingValue: JSON.stringify(settingValue), idempotencyKey: String(settingName), }; API.write(WRITE_COMMANDS.UPDATE_POLICY_CONNECTION_CONFIG, parameters, {optimisticData, failureData, successData}); diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index c0dd294b1e15..b5c79dddb046 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -38,14 +38,9 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { subtitle: translate('workspace.qbo.advancedConfig.autoSyncDescription'), isActive: Boolean(autoSync?.enabled), onToggle: () => - Connections.updatePolicyConnectionConfig( - policyID, - CONST.POLICY.CONNECTIONS.NAME.QBO, - CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, - JSON.stringify({ - enabled: !autoSync?.enabled, - }), - ), + Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC, { + enabled: !autoSync?.enabled, + }), pendingAction: pendingFields?.autoSync, errors: errors, }, From d04deb0aceedae6755c2508aec524540f4361a91 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 09:42:05 +0100 Subject: [PATCH 132/141] fix lint --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index b5c79dddb046..a1605e3bdcf2 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -42,7 +42,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { enabled: !autoSync?.enabled, }), pendingAction: pendingFields?.autoSync, - errors: errors, + errors, }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), @@ -50,7 +50,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive: Boolean(syncPeople), onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), pendingAction: pendingFields?.syncPeople, - errors: errors, + errors, }, { title: translate('workspace.qbo.advancedConfig.createEntities'), @@ -58,7 +58,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive: Boolean(autoCreateVendor), onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), pendingAction: pendingFields?.autoCreateVendor, - errors: errors, + errors, }, ]; From f41eb559f7773066230daef88769f6ffa2d67398 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 09:48:25 +0100 Subject: [PATCH 133/141] fix tsc --- src/libs/API/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts index cb904b0031f3..e0a46bebc1e3 100644 --- a/src/libs/API/types.ts +++ b/src/libs/API/types.ts @@ -414,7 +414,7 @@ type WriteCommandParameters = { [WRITE_COMMANDS.SET_POLICY_DISTANCE_RATES_DEFAULT_CATEGORY]: Parameters.SetPolicyDistanceRatesDefaultCategoryParams; // eslint-disable-next-line @typescript-eslint/no-explicit-any - [WRITE_COMMANDS.UPDATE_POLICY_CONNECTION_CONFIG]: Parameters.UpdatePolicyConnectionConfigParams; + [WRITE_COMMANDS.UPDATE_POLICY_CONNECTION_CONFIG]: Parameters.UpdatePolicyConnectionConfigParams; [WRITE_COMMANDS.REMOVE_POLICY_CONNECTION]: Parameters.RemovePolicyConnectionParams; [WRITE_COMMANDS.UPDATE_POLICY_DISTANCE_RATE_VALUE]: Parameters.UpdatePolicyDistanceRateValueParams; [WRITE_COMMANDS.SET_POLICY_DISTANCE_RATES_ENABLED]: Parameters.SetPolicyDistanceRatesEnabledParams; From a6e0eeae564c0af4472a40a19c07295cab1e7eab Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 10:16:02 +0100 Subject: [PATCH 134/141] update UpdatePolicyConnectionConfigParams --- src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts | 2 +- src/libs/actions/connections/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index 75a5f6360a15..46182384e282 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -4,7 +4,7 @@ type UpdatePolicyConnectionConfigParams Date: Mon, 22 Apr 2024 11:14:12 +0100 Subject: [PATCH 135/141] remove generic type from connectionName --- src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index 46182384e282..c5f1ed30a942 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -2,7 +2,7 @@ import type {ConnectionName, Connections} from '@src/types/onyx/Policy'; type UpdatePolicyConnectionConfigParams = { policyID: string; - connectionName: TConnectionName; + connectionName: string; settingName: TSettingName; settingValue: string; idempotencyKey: string; From 80463b2304e8cbb560cdadd1e7bb24eeaec23ab6 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 13:06:53 +0100 Subject: [PATCH 136/141] update toggle errors --- src/libs/actions/Policy.ts | 5 +++++ .../qbo/advanced/QuickbooksAdvancedPage.tsx | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index cd375b580d85..fb5fffdc17d2 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -714,6 +714,10 @@ function clearPolicyErrorField(policyID: string, fieldName: string) { Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, {errorFields: {[fieldName]: null}}); } +function clearQBOErrorField(policyID: string, fieldName: string) { + Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, {connections: {quickbooksOnline: {config: {errorFields: {[fieldName]: null}}}}}); +} + function setWorkspaceReimbursement(policyID: string, reimbursementChoice: ValueOf, reimburserEmail: string) { const policy = getPolicy(policyID); @@ -5059,6 +5063,7 @@ export { createPolicyTag, renamePolicyTag, clearPolicyTagErrors, + clearQBOErrorField, clearWorkspaceReimbursementErrors, deleteWorkspaceCategories, deletePolicyTags, diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index a1605e3bdcf2..29159a98f112 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -11,6 +11,7 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import useWaitForNavigation from '@hooks/useWaitForNavigation'; import * as Connections from '@libs/actions/connections'; +import * as ErrorUtils from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; import AdminPolicyAccessOrNotFoundWrapper from '@pages/workspace/AdminPolicyAccessOrNotFoundWrapper'; import FeatureEnabledAccessOrNotFoundWrapper from '@pages/workspace/FeatureEnabledAccessOrNotFoundWrapper'; @@ -19,6 +20,7 @@ import withPolicy from '@pages/workspace/withPolicy'; import type {WithPolicyProps} from '@pages/workspace/withPolicy'; import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow'; import type {ToggleSettingOptionRowProps} from '@pages/workspace/workflows/ToggleSettingsOptionRow'; +import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; @@ -28,7 +30,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const {translate} = useLocalize(); const policyID = policy?.id ?? ''; - const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID, errorFields, errors} = policy?.connections?.quickbooksOnline?.config ?? {}; + const qboConfig = policy?.connections?.quickbooksOnline?.config; + const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID, errorFields, errors} = qboConfig ?? {}; const isSyncReimbursedSwitchOn = !!collectionAccountID; const selectedAccount = '92345'; // TODO: use fake selected account temporarily. @@ -42,7 +45,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { enabled: !autoSync?.enabled, }), pendingAction: pendingFields?.autoSync, - errors, + errors: ErrorUtils.getLatestErrorField(qboConfig ?? {}, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC), + onCloseError: () => Policy.clearQBOErrorField(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_SYNC), }, { title: translate('workspace.qbo.advancedConfig.inviteEmployees'), @@ -50,7 +54,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive: Boolean(syncPeople), onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE, !syncPeople), pendingAction: pendingFields?.syncPeople, - errors, + errors: ErrorUtils.getLatestErrorField(qboConfig ?? {}, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE), + onCloseError: () => Policy.clearQBOErrorField(policyID, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE), }, { title: translate('workspace.qbo.advancedConfig.createEntities'), @@ -58,7 +63,8 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive: Boolean(autoCreateVendor), onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), pendingAction: pendingFields?.autoCreateVendor, - errors, + errors: ErrorUtils.getLatestErrorField(qboConfig ?? {}, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE), + onCloseError: () => Policy.clearQBOErrorField(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR), }, ]; From 41edef8fd7d246087a1c308512068ad7d9c9a134 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 15:22:01 +0100 Subject: [PATCH 137/141] update toggle errors --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 29159a98f112..af200e08e312 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -63,7 +63,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { isActive: Boolean(autoCreateVendor), onToggle: () => Connections.updatePolicyConnectionConfig(policyID, CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR, !autoCreateVendor), pendingAction: pendingFields?.autoCreateVendor, - errors: ErrorUtils.getLatestErrorField(qboConfig ?? {}, CONST.QUICK_BOOKS_CONFIG.SYNCE_PEOPLE), + errors: ErrorUtils.getLatestErrorField(qboConfig ?? {}, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR), onCloseError: () => Policy.clearQBOErrorField(policyID, CONST.QUICK_BOOKS_CONFIG.AUTO_CREATE_VENDOR), }, ]; @@ -87,6 +87,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { Policy.clearQBOErrorField(policyID, CONST.QUICK_BOOKS_CONFIG.COLLECTION_ACCOUNT_ID)} subtitle={translate('workspace.qbo.advancedConfig.reimbursedReportsDescription')} shouldPlaceSubtitleBelowSwitch wrapperStyle={styles.mv3} From 1caab9fdd12be3ca9d2265fa45f3aac0eb5c5ace Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 15:33:40 +0100 Subject: [PATCH 138/141] fix lint --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index af200e08e312..767aef8bacb3 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -31,7 +31,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { const policyID = policy?.id ?? ''; const qboConfig = policy?.connections?.quickbooksOnline?.config; - const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID, errorFields, errors} = qboConfig ?? {}; + const {autoSync, syncPeople, autoCreateVendor, pendingFields, collectionAccountID, errorFields} = qboConfig ?? {}; const isSyncReimbursedSwitchOn = !!collectionAccountID; const selectedAccount = '92345'; // TODO: use fake selected account temporarily. From 1600f9bf20e42e682d355834cf78b2318b57c5d6 Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 15:46:51 +0100 Subject: [PATCH 139/141] update UpdatePolicyConnectionConfigParams types --- .../API/parameters/UpdatePolicyConnectionConfigParams.ts | 6 ++---- src/libs/actions/connections/index.ts | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index c5f1ed30a942..111674b8ffb6 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -1,9 +1,7 @@ -import type {ConnectionName, Connections} from '@src/types/onyx/Policy'; - -type UpdatePolicyConnectionConfigParams = { +type UpdatePolicyConnectionConfigParams = { policyID: string; connectionName: string; - settingName: TSettingName; + settingName: string; settingValue: string; idempotencyKey: string; }; diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index af238dc1404d..9795ae4e6b19 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -45,7 +45,7 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti function updatePolicyConnectionConfig( policyID: string, connectionName: TConnectionName, - settingName: TSettingName, + settingName: string, settingValue: Partial, ) { const optimisticData: OnyxUpdate[] = [ @@ -114,7 +114,7 @@ function updatePolicyConnectionConfig = { + const parameters: UpdatePolicyConnectionConfigParams = { policyID, connectionName, settingName, From fd6348e7f91c58921c79a16f708cb794dffb8bad Mon Sep 17 00:00:00 2001 From: Etotaziba Olei Date: Mon, 22 Apr 2024 16:09:39 +0100 Subject: [PATCH 140/141] fix tsc --- .../API/parameters/UpdatePolicyConnectionConfigParams.ts | 2 +- src/libs/API/types.ts | 2 +- src/libs/actions/connections/index.ts | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts index 111674b8ffb6..2a5c6da51cec 100644 --- a/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts +++ b/src/libs/API/parameters/UpdatePolicyConnectionConfigParams.ts @@ -2,7 +2,7 @@ type UpdatePolicyConnectionConfigParams = { policyID: string; connectionName: string; settingName: string; - settingValue: string; + settingValue?: string; idempotencyKey: string; }; diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts index e0a46bebc1e3..cb904b0031f3 100644 --- a/src/libs/API/types.ts +++ b/src/libs/API/types.ts @@ -414,7 +414,7 @@ type WriteCommandParameters = { [WRITE_COMMANDS.SET_POLICY_DISTANCE_RATES_DEFAULT_CATEGORY]: Parameters.SetPolicyDistanceRatesDefaultCategoryParams; // eslint-disable-next-line @typescript-eslint/no-explicit-any - [WRITE_COMMANDS.UPDATE_POLICY_CONNECTION_CONFIG]: Parameters.UpdatePolicyConnectionConfigParams; + [WRITE_COMMANDS.UPDATE_POLICY_CONNECTION_CONFIG]: Parameters.UpdatePolicyConnectionConfigParams; [WRITE_COMMANDS.REMOVE_POLICY_CONNECTION]: Parameters.RemovePolicyConnectionParams; [WRITE_COMMANDS.UPDATE_POLICY_DISTANCE_RATE_VALUE]: Parameters.UpdatePolicyDistanceRateValueParams; [WRITE_COMMANDS.SET_POLICY_DISTANCE_RATES_ENABLED]: Parameters.SetPolicyDistanceRatesEnabledParams; diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index 9795ae4e6b19..6d65c917a34c 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -45,8 +45,8 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti function updatePolicyConnectionConfig( policyID: string, connectionName: TConnectionName, - settingName: string, - settingValue: Partial, + settingName: TSettingName, + settingValue?: Partial, ) { const optimisticData: OnyxUpdate[] = [ { @@ -117,7 +117,7 @@ function updatePolicyConnectionConfig Date: Mon, 22 Apr 2024 16:16:56 +0100 Subject: [PATCH 141/141] make condition boolean --- .../accounting/qbo/advanced/QuickbooksAdvancedPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx index 767aef8bacb3..807a5b74ce18 100644 --- a/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx +++ b/src/pages/workspace/accounting/qbo/advanced/QuickbooksAdvancedPage.tsx @@ -124,7 +124,7 @@ function QuickbooksAdvancedPage({policy}: WithPolicyProps) { } /> - {collectionAccountID && ( + {!!collectionAccountID && ( <>