Feat: bulk edit multiple#76264
Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@shubham1206agra Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
src/pages/Search/SearchEditMultiple/SearchEditMultipleReportPage.tsx
Outdated
Show resolved
Hide resolved
marcaaron
left a comment
There was a problem hiding this comment.
Woo! Looks pretty good so far. I left some early feedback to make sure all is going in the right direction - there are a few things we need to watch out for and fix.
src/pages/Search/SearchEditMultiple/SearchEditMultipleAttendeesPage.tsx
Outdated
Show resolved
Hide resolved
src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
Outdated
Show resolved
Hide resolved
src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx
Outdated
Show resolved
Hide resolved
|
🚧 @marcaaron has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
Testing well! Going to send this. Thanks so much for all the hard work here @waterim @pasyukevich @shubham1206agra @Krishna2323. This was a big lift and a tricky flow to migrate, but seems very solid overall. ❤️ |
|
🚧 @marcaaron 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/marcaaron in version: 9.3.21-0 🚀
|
|
Hello @waterim QA team found an issue: "The Amount field doesn't show the currency sign while editing multiple expenses." Bug7080940_1771374575405.Sign.mp4
Is this expected behavior, or should we consider it a valid issue that needs to be reported? |
|
@mitarachim thats expected behavior, we disabled currency for the multiple bulk edit |
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.3.21-4 🚀
|

Details
This PR introduces bulk edit expenses
Fixed Issues
$ #75617
PROPOSAL: N/A
Tests
Test 1: Basic bulk edit from Search page
Test 2: Basic bulk edit from Report page
Test 3: Cross-policy bulk edit
Test 4: Multi-level/dependent tags
Test 5: Non-editable fields silently skipped
Test 6: Unchanged fields not sent
Test 7: Save with no edits
Test 8: Optimistic updates and failure
Test 9: Offline bulk edit
Test 10: Sub-pages show correct policy options from Search page
Test 11: Approved/paid expenses excluded
Test 12: Tax rate bulk edit
Test 13: Billable / Reimbursable toggle
All of the above were tested on Web (macOS Chrome), and the changes are platform‑independent, so behavior should be the same across platforms.
Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodWaiting for Copylabel for a copy review on the original GH to get the correct copy.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)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
Details
Screen.Recording.2025-12-10.at.00.52.59.mov