feat: allow multiple receipts to be attached to a single expense#83994
Conversation
|
@ahmedGaber93 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] |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e92af7d33a
ℹ️ 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".
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b40ff14b81
ℹ️ 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".
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppa.mp4Android: mWeb Chromeaw.mp4iOS: HybridAppiOS: mWeb Safari20260304202114953.mp4MacOS: Chrome / Safari20260304200055659.mp4 |
|
🚧 @JmillsExpensify has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
Wow, this looks pretty great. Excited to get this into the product. |
JmillsExpensify
left a comment
There was a problem hiding this comment.
Going to go ahead and approve for product.
Thanks @JmillsExpensify WDYT about the above comment? |
|
Seems to be working well for me, but can you update the icons to match the mocks from the design team?
Should be using these two: Receipt plus: Expand: |
|
Deploy Blocker #84354 was identified to be related to this PR. |
|
Deploy Blocker #84356 was identified to be related to this PR. |
|
Deploy Blocker #84355 was identified to be related to this PR. |
|
Deploy Blocker #84359 was identified to be related to this PR. |
|
Deploy Blocker #84362 was identified to be related to this PR. |
|
Deploy Blocker #84367 was identified to be related to this PR. |
Thanks @mitarachim Will look in to it. |
|
🚀 Deployed to production by https://github.com/blimpich in version: 9.3.32-3 🚀
|
|
Looks like we forgot to add the hover states to the icon buttons. @TaduJR can you make a follow up PR for that? |
Sure |
Mac-Chrome.mp4Any feedbacks @shawnborton? |
|
Looks great, thanks! |
|
Should there be a tooltip describing what it does on hover? |
Ah yes, good shout Puneet, there definitely should be. What labels make the most sense here?
|
|
|
|
@TaduJR will you be implementing that as part of the hover follow-up? |
Sure, No Problem. |
|
@TaduJR mind linking the PR? |
|

Explanation of Change
This PR adds two icon buttons overlaid at the top-right of receipt images in
MoneyRequestReceiptView: an enlarge button (opens the receipt modal) and an add receipt button (opens the attachment picker and posts the file to the expense thread viaaddAttachmentWithComment).primaryMediumIcon, 16×16 icons, no gradient/scrim) per design team consensuscanShowReceiptActions— only shown when the receipt exists, is editable, not scanning, not a map distance request, and not in merge flowFixed Issues
$ #81435
PROPOSAL: #81435 (comment)
Tests
Web (Chrome/Safari) — Hover behavior
Mobile (iOS/Android) — Always-visible behavior
Offline tests
Same as tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same as tests
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-Native.mp4
Android: mWeb Chrome
Android-mWeb.mp4
iOS: Native
iOS-Native.mp4
iOS: mWeb Safari
iOS-Safari.mp4
MacOS: Chrome / Safari
Mac-Chrome.mp4