-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Description
DESIGN DOC
Customer Notification Issue
Note: we switched from Decline to Reject midstream. The old doc referencing Decline is here.
Proposal
Proposal: Allow approvers to reject individual expenses in NewDot
Background: Generally, users have full control over the expenses assigned to them for processing. Submitters can create, edit, submit, or delete expenses to manage their reports effectively. Approvers typically have the ability to act on expenses by approving, editing, or rejecting them, aligning with the general expectation that individuals can manage tasks assigned to them. This level of control ensures efficiency and meets user expectations based on their use of Expensify Classic and expense reporting processes across the industry.
Problem: When submitted expenses just don’t fit within expense policy guidelines and will never be approved or paid, approvers are unable to remove them from their inbox. This prevents them from effectively and efficiently managing the tasks in their inbox, causing frustration and confusion.
Solution: Add the ability for approvers to unreport individual expenses submitted to them in NewDot. The naming of this function is TBD, but I’ll use ‘reject’ for familiarity’s sake. At a high level, let’s do the following:
- Add a ‘Reject’ button to the expense details page
- When an approver taps the button, we’ll show a confirmation page where we explain the difference between reject and hold, and allow the approver to confirm rejection with a comment or cancel.
- When the approver confirms rejection with a comment, we’ll remove the expense from the report, and the submitter will be able to access it in their Self DM.
This solution aligns NewDot with functionality approvers are accustomed to in OldDot and gives approvers full control of the expenses in their inbox.
Implementation
Frontend:
- Implement the Decline Money Request flow #58697
- feat: Reject Expense in NewDot #62787
- Update should show condition for some violations #65239
Backend:
- https://github.com/Expensify/Auth/pull/15941
- https://github.com/Expensify/Auth/pull/16611
- https://github.com/Expensify/Expensify/issues/523001
- https://github.com/Expensify/Expensify/issues/482350
- https://github.com/Expensify/Expensify/issues/482349
- https://github.com/Expensify/Expensify/issues/482351
- https://github.com/Expensify/Web-Expensify/pull/48100
Follow up issues:
- [Due for payment 2025-09-30] Update copy in the Reject RHP #70482
- [Reject] Next steps on rejected expense show differently for approver and submitter #70483
- [Due for payment 2025-12-08] Remove the rterRejectedExpense warning when a submitter edits the expense #70484
- [Due for payment 2025-12-11] [Reject] Hold modal, Hold/Reject modal and role-based modal updates #63363
Tasks
- Post Proposal (full Problem/Solution statement) in
#expensify-open-source - Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
- Paste Proposal in the space above with a link to the Slack thread
- Email
strategy@expensify.comand paste in the Proposal - Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
- Email
strategy@expensify.com(continue the same email chain as before) with the link to your Design Doc - Host a pre-design meeting (example) in
#expensify-open-sourceto discuss any necessary details in public before filling out the High-level of proposed solution section. - Fill out the High-level of proposed solution section
- Email
stategy@expensify.comagain with links to the doc and pre-design conversation in Slack - Add the
DesignDocReviewlabel to get the High-level of proposed solution section reviewed - Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
- Confirm that the doc has the minimum necessary number of reviews before proceeding
- Host another pre-design meeting in
#expensify-open-sourceto ask for engineering feedback on the technical solution. - Fill out the Detailed implementation of the solution and related sections.
- Re-add the
DesignDocReviewlabel to this issue - Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
- Confirm that the doc has the minimum necessary number of reviews before proceeding
- Email
strategy@expensify.comone last time to let them know the Design Doc is moving into the implementation phase - Implement the changes
- Add regression tests so that QA can test your feature with every deploy (instructions)
- Send out a follow up email to
strategy@expensify.comonce everything has been implemented and do a Project Wrap-Up retrospective that provides:- Summary of what we accomplished with this project
- What went well?
- What could we have done better?
- What did we learn?
Issue Owner
Current Issue Owner: @garrettmknightMetadata
Metadata
Labels
Type
Projects
Status