BT - Migrate NET SUITE Part 1#87172
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
c856f79 to
7b01cbb
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 27739cb787
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Good for product
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-04-16.at.15.58.32.mp4Android: mWeb ChromeScreen.Recording.2026-04-16.at.16.00.13.mp4iOS: HybridAppScreen.Recording.2026-04-16.at.16.02.54.mp4iOS: mWeb SafariScreen.Recording.2026-04-16.at.16.03.35.mp4MacOS: Chrome / SafariScreen.Recording.2026-04-16.at.15.55.36.mp4 |
@mananjadhav I reviewed the 3 route paths above, and I think we can migrate all 3 in this PR. Could you help migrate them here as well? If there are any questions or reasons why some routes can't be migrated in this PR, please let me know. |
|
Yes with the path params support I've now migrated all the routes. |
| onPress: !policyID | ||
| ? undefined | ||
| : () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_NETSUITE_EXPORT_EXPENSES.getRoute(policyID, CONST.NETSUITE_EXPENSE_TYPE.REIMBURSABLE, Navigation.getActiveRoute())), | ||
| onPress: !policyID ? undefined : () => Navigation.navigate(createDynamicRoute(`expenses/${CONST.NETSUITE_EXPENSE_TYPE.REIMBURSABLE}`)), |
There was a problem hiding this comment.
Why don’t we create the expenses/reimbursable path in the dynamic route and add an entry screen for it?
| onPress: !policyID | ||
| ? undefined | ||
| : () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_NETSUITE_EXPORT_EXPENSES.getRoute(policyID, CONST.NETSUITE_EXPENSE_TYPE.NON_REIMBURSABLE, Navigation.getActiveRoute())), | ||
| onPress: !policyID ? undefined : () => Navigation.navigate(createDynamicRoute(`expenses/${CONST.NETSUITE_EXPENSE_TYPE.NON_REIMBURSABLE}`)), |
There was a problem hiding this comment.
Why don’t we create the expenses/nonreimbursable path in the dynamic route and add an entry screen for it?
There was a problem hiding this comment.
I've updated the getRoute. Let me know if this works.
|
🚧 @mjasikowski has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/mjasikowski in version: 9.3.61-0 🚀
Bundle Size Analysis (Sentry): |
|
No help site changes are required for this PR. This PR migrates internal NetSuite export navigation routes to dynamic route patterns (refactoring |
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.3.61-4 🚀
|
Explanation of Change
Fixed Issues
$ #83843
PROPOSAL:
Tests
Same as QA tests.
Offline tests
Same as QA steps
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Precondition
backToparam andCase 1: Preferred exporter (dynamic route + back path)
Case 2: Export date (dynamic route + back path)
Case 3: Export out-of-pocket → default vendor (dynamic route + back path)
Case 4: Export out-of-pocket → payable account (dynamic route + back path)
Case 5: Export company card — same dynamic sub-flows as Cases 4–6
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
android-bt-net-suite.mov
Android: mWeb Chrome
mweb-chrome-bt-net-suite.mov
iOS: Native
ios-bt-net-suite.mov
iOS: mWeb Safari
mweb-safari-bt-net-suite-1.mov
MacOS: Chrome / Safari
web-bt-net-suite-1.mov
web-bt-net-suite-export-expense-type.mov