[Standardize payment button] Invoice Bulk#72445
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
src/hooks/useBulkPayOptions.ts
Outdated
| additionalData: { | ||
| payAsBusiness, | ||
| methodID: formattedPaymentMethod.methodID, | ||
| paymentMethod: formattedPaymentMethod.accountType, | ||
| }, |
There was a problem hiding this comment.
Explanation for these changes:
Unlike SettlementButton options, with bulk pay, our option is nested under another sub-menu item, it looks like this at the moment:
Pay > Pay with business (or personal) > Our options (Mark as paid or Add business bank account or bank account list).
In this case, to handle onPress of these sub-menu items, the only way to get this necessary information is from the sub-menu item option itself.
App/src/components/ButtonWithDropdownMenu/index.tsx
Lines 109 to 116 in ae4386a
We can't use onSelected props of the sub-menu item because we still execute onSubItemSelected?.(option, 0, event); anyway after option.onSelected(); is called.
Since we're also using onSubItemSelected to handle the previous bulk options, I decided to do that with invoice bulk too, so we can reuse all the existing logic:
App/src/components/Search/SearchPageHeader/SearchFiltersBar.tsx
Lines 683 to 695 in ae4386a
There was a problem hiding this comment.
Let me know if you guys have any questions or suggestions 👋
|
LGTM 👍 Thank you for your hard work! |
|
🚧 @joekaufmanexpensify has triggered a test Expensify/App build. You can view the workflow run here. |
|
🚧 @joekaufmanexpensify 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, Desktop, and Web. Happy testing! 🧪🧪
|
BUG: Adding system message twice when bulk paying invoiceWe should only add the pay confirmation system message to each invoice once when paying, it's being duplicated right now. 2025-11-06_10-33-06.mp4 |
joekaufmanexpensify
left a comment
There was a problem hiding this comment.
Otherwise tests well from my perspective!
This is on main I believe. But let me double check. I remember @getusha also reported similar one in our previous PR |
|
Here you are: It's backend issue and being worked on. |
Yes. Correct. They should be from the same policy |
|
@hungvu193 we've got a conflict! |
Resolved 😄 |
grgia
left a comment
There was a problem hiding this comment.
NAB comment, great work on pushing through this project!
|
✋ 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/grgia in version: 9.2.47-0 🚀
|
|
🚀 Deployed to production by https://github.com/cristipaval in version: 9.2.47-1 🚀
|



NOTE FOR QA: This feature is under beta
Explanation of Change
Part of #55876.
This PR adds bulk payment option for Invoice 🤞 You're now able to select multiple invoices and pay them in one go ⚡
Fixed Issues
$ #55876
#72399
PROPOSAL: N/A
Tests
Same as QA steps
Offline tests
N/A
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Prerequisite:
Your account is under payment button beta
Test 1: First time payment
Pay. (Pay as business and Pay as personal)Test 2: Paid the invoice before.
Test 1.Payoption > Click onPayoptions.PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand 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: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2025-11-03.at.00.13.21.mov
MacOS: Desktop
Screen.Recording.2025-11-03.at.00.17.23.mov