Repository navigation
[HOLD for payment 2024-07-22] [HOLD for payment 2024-07-17] [#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced #43443
Description
Activity
- addedExternalAdded to denote the issue can be worked on by a contributorAdded to denote the issue can be worked on by a contributorNewFeatureSomething to build that is a new item.Something to build that is a new item.
on Jun 10, 2024 - addedHelp WantedApply this label when an issue is open to proposals by contributorsApply this label when an issue is open to proposals by contributors
on Jun 10, 2024 Current assignee @shubham1206agra is eligible for the External assigner, not assigning anyone new.
Triggered auto assignment to @CortneyOfstad (
NewFeature), see https://stackoverflowteams.com/c/expensify/questions/14418#:~:text=BugZero%20process%20steps%20for%20feature%20requests for more details. Please add this Feature request to a GH project, as outlined in the SO.- removedHelp WantedApply this label when an issue is open to proposals by contributorsApply this label when an issue is open to proposals by contributors
on Jun 10, 2024 @shubham1206agra is working on Export first.
Reacted by Cortney Ofstad12 remaining items
- changed the title
[-][#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced[/-][+][HOLD for payment 2024-07-17] [#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced[/+]on Jul 10, 2024 Reviewinglabel has been removed, please complete the "BugZero Checklist".The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.5-13 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2024-07-17. 🎊
For reference, here are some details about the assignees on this issue:
- @shubham1206agra requires payment (Needs manual offer from BZ)
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
- [@shubham1206agra] Please propose regression test steps to ensure the new feature will work correctly on production in further releases.
- [@CortneyOfstad] Link the GH issue for creating/updating the regression test once above steps have been agreed upon.
⚠️ Looks like this issue was linked to a Deploy Blocker hereIf you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.
⚠️ Looks like this issue was linked to a Deploy Blocker hereIf you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.
We're paying @mananjadhav and @shubham1206agra holistically for the entire project, so closing this out
- changed the title
[-][HOLD for payment 2024-07-17] [#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced[/-][+][HOLD for payment 2024-07-22] [HOLD for payment 2024-07-17] [#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced[/+]on Jul 15, 2024 The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.6-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
- [#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced List #44723
- [#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced (Remaining Pages) #44921
If no regressions arise, payment will be issued on 2024-07-22. 🎊
For reference, here are some details about the assignees on this issue:
- @shubham1206agra requires payment (Needs manual offer from BZ)
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
- [@shubham1206agra] Please propose regression test steps to ensure the new feature will work correctly on production in further releases.
- [@CortneyOfstad] Link the GH issue for creating/updating the regression test once above steps have been agreed upon.
Metadata
Metadata
Labels
Type
Projects
- StatusShow more project fieldsDone
Tracking Issue: https://github.com/Expensify/Expensify/issues/377671
Design Doc Section: https://docs.google.com/document/d/1WubNv_VAv78IxG4FKsi9aS0pWESfWvUYbqBAAy5b4bc/edit#heading=h.1vf74ijo8qpn
(High-Level Section)
Routes
/settings/workspaces/{policyID}/accounting/netsuite/advancedNetSuiteAdvancedPageUpdateNetSuiteAutoSyncenabled-TRUE/FALSE, depending on the toggleconfig.syncOptions.hasChosenAutoSyncOptionpolicy.pendingFields.syncOptionsUpdateNetSuiteSyncReimbursedReportsenabled-TRUE/FALSE, depending on the toggleconfig.syncOptions.syncReimbursedReportspolicy.pendingFields.syncOptionsUpdateNetSuiteSyncPeopleenabled-TRUE/FALSE, depending on the toggleconfig.syncOptions.syncPeoplepolicy.pendingFields.syncOptionsUpdateNetSuiteAutoCreateEntitiesenabled-TRUE/FALSE, depending on the toggleconfig.autoCreateEntitiespolicy.pendingFields.autoCreateEntitiesUpdateNetSuiteEnableNewCategoriesenabled-TRUE/FALSE, depending on the toggleconfig.syncOptions.enableNewCategoriespolicy.pendingFields.syncOptions/settings/workspaces/{policyID}/accounting/netsuite/advanced/reimbursement-account/selectNetSuiteReimbursementAccountSelectPageUpdateNetSuiteReimbursementAccountIDbankAccountID- one of the payable accounts available (present underdata.payableList)config.reimbursementAccountIDpolicy.pendingFields.reimbursementAccountID/settings/workspaces/{policyID}/accounting/netsuite/advanced/collection-account/selectNetSuiteCollectionAccountSelectPageUpdateNetSuiteCollectionAccountbankAccountID- one of the payable accounts available (present underdata.payableList)config.collectionAccountpolicy.pendingFields.collectionAccount/settings/workspaces/{policyID}/accounting/netsuite/advanced/report-approval-level/selectNetSuiteExpenseReportApprovalLevelSelectPageUpdateNetSuiteExportReportsTovalue- one of the values inExpenseReportApprovalLevelTypeEnum(REPORTS_APPROVED_NONE,REPORTS_SUPERVISOR_APPROVED,REPORTS_ACCOUNTING_APPROVED,REPORTS_APPROVED_BOTH)config.syncOptions.exportReportsTopolicy.pendingFields.syncOptions/settings/workspaces/{policyID}/accounting/netsuite/advanced/vb-approval-level/selectNetSuiteVendorBillApprovalLevelSelectPageUpdateNetSuiteExportVendorBillsTovalue- one of the values inVendorBillApprovalLevelTypeEnum(VENDOR_BILLS_APPROVED_NONE,VENDOR_BILLS_APPROVAL_PENDING,VENDOR_BILLS_APPROVED)config.syncOptions.exportVendorBillsTopolicy.pendingFields.syncOptions/settings/workspaces/{policyID}/accounting/netsuite/advanced/je-approval-level/selectNetSuiteJournalEntryApprovalLevelSelectPageUpdateNetSuiteExportJournalsTovalue- one of the values inJournalEntryApprovalLevelTypeEnum(JOURNALS_APPROVED_NONE,JOURNALS_APPROVAL_PENDING,JOURNALS_APPROVED)config.syncOptions.exportJournalsTopolicy.pendingFields.syncOptions/settings/workspaces/{policyID}/accounting/netsuite/advanced/approval-account/selectNetSuiteApprovalAccountSelectPageUpdateNetSuiteApprovalAccountvalue- one of the payable accounts available (present underdata.payableList) orAPPROVAL_ACCOUNT_DEFAULTconfig.approvalAccountpolicy.pendingFields.approvalAccountRefer to here and here in order to get the corresponding routes and parameters.
We'll discuss the Export and Advanced Sections together, as these are very similar in design.
The set of pages needed for the export configurations is similar to that for the import configurations.
The first part “UI Components” explains the UI components and their arrangement on the pages. The second part, “Data Retrieval,” discusses how data or options displayed on the pages are fetched or retrieved.
UI Components
We need two types of pages for configuring export/advanced settings. The first type of page displays menu items, each representing a setting that can be configured. When clicked or pressed, it navigates to a configuration detail page. This is the second type of page. On the configuration detail page, the user can edit the chosen configuration.
Menu Items Page

Configuration Detail Page

This section UI Components will be divided into two subsections: Menu Items Page, explaining the first type of screen, and Configuration Detail Page, explaining the second.
Menu Items Pages
NetSuiteAdvancedPage

Configuration Detail Page
The other page type is the Configuration Detail pages. On a Configuration Detail page, users can alter a configuration by selecting from various options or toggling a specific item.
When an option item is selected, a function corresponding to the Selector Page from policy.ts should be invoked to update the connection configuration data. For more information about the API, please refer to the “Saving Connection Settings” section.
We’ll reuse the SelectionScreen component to render the option list. You can find an example of its implementation here.
Data Retrieval
On all pages related to export configuration, we need access to the current configuration. This information is stored in Onyx as part of the policy object, all pages need to subscribe to it.
The Menu Items pages display the preset list of items. Each item of the list is a pair of the configuration item (ex. Preferred exporter) and the current configuration value for the item (ex. The email of the admin who is used as the preferred exporter). The items are static and the values are simply read from the policy object that is provided by Onyx subscription.
For Configuration Detail Pages, we will subdivide the pages into 2 categories:
Static Options Pages display a preset list of options, i.e., they do not depend on the current data stored in the policy. In this category of pages, the policy data will only be used to determine the currently selected option (initiallyFocusedOptionKey). The pages that fall under this category are -
Dynamic Options Pages are the pages where we show a list of options dynamically, i.e., they depend on current data stored in the policy. In this category of pages, the policy data will be used to determine the set of options being shown to the user and the currently selected option (initiallyFocusedOptionKey). The pages which fall under this category are:
Issue Owner
Current Issue Owner: @Issue Owner
Current Issue Owner: @CortneyOfstadIssue Owner
Current Issue Owner: @CortneyOfstad