[cp staging] Update Paid by column from live payment actions - #99992
Conversation
The Paid by column derived only from snapshot report actions, so paying a report from the Search page left the cell empty until the search was re-run. Resolve the paid-by actor against live report actions the same way the first-approver column does, mirroring the backend rules: pay actions count, payment actions at or before the latest reimbursement cancellation do not, and a submitter's own received-payment self-attestation never identifies a payer.
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
|
@hoangzinh 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] |
Reviewer Checklist
Screenshots/VideosScreen.Recording.2026-09-01.at.15.38.41.mov |
|
Making sure you guys see this: #98326 (comment) |
Thank you. 👍 |
|
Lets let this deploy normally |
|
🚧 JS00001 has triggered a test Expensify/App build. You can view the workflow run here. |
|
Hmm, actually, yeah lets CP this, I dont think we want the feature shipped with the current filter position |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
This comment has been minimized.
This comment has been minimized.
|
🚧 Julesssss 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! 🧪🧪
|
Update Paid by column from live payment actions (cherry picked from commit 68c3ab2) (cherry-picked to staging by Julesssss)
|
🔁 Filed a Staging retest request for deploy blockers #99968 after this PR was cherry-picked to staging. |
|
🚀 Cherry-picked to staging by https://github.com/Julesssss in version: 9.4.65-3 🚀
|
|
Yes — help site changes are required. Draft PR: #100057 The Paid by column and the What changed
How the UI labels were verifiedEvery label was read off the live NewDot web UI rather than inferred from code, per
Both filter positions match the reordering in What I deliberately left alone
@c3024, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
🚀 Deployed to production by https://github.com/francoisl in version: 9.4.65-3 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Cherry-picked to staging by https://github.com/Julesssss in version: 9.4.66-0 🚀
|
|
Already done — no second PR needed. The help site changes for this PR are in #100057 (open, draft, Nothing has changed on this PR since, so the docs work stands as-is. Two updates worth noting:
You can preview the rendered articles here: Recap of what the docs PR changes
Every label was read off the live NewDot web UI per @c3024, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |


Explanation of Change
The Paid by column was derived only from snapshot report actions, so paying a report from the Search page left the cell empty until the search was re-run. The column now resolves the payer against live report actions too, the same way the First approver column does. The live derivation mirrors the backend rules: payment actions at or before the latest reimbursement cancellation don't count, and a submitter's "Received payment" self-attestation never identifies a payer. The Paid by filter also moves down the filters list, next to Paid status (or the Paid date filter for types without Paid status).
Fixed Issues
$ #99968
PROPOSAL:
Tests
Screen.Recording.2026-09-01.at.11.04.10.AM.mov
Offline tests
NA. Pay button is disabled offline.
QA Steps
Same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, 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.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.2026-09-01.at.11.04.10.AM.mov