Expensify / App

Welcome to New Expensify: a complete re-imagination of financial collaboration, centered around chat. Help us build the next generation of Expensify by sharing feedback and contributing to the code.
https://new.expensify.com
MIT License
3.53k stars 2.88k forks source link

[HOLD for payment 2024-05-29][$250] [VIP] Send an invoice from an invoice room #41878

Closed cristipaval closed 5 months ago

cristipaval commented 6 months ago

Part of the project

Main issue: https://github.com/Expensify/Expensify/issues/341717 Doc section: Here Project: #vip-billpay

Feature Description

Problem:

In NewDot, users are limited to sending invoices from Global Create. Without the ability to create and send invoices from within these dedicated rooms, the process can become disjointed. This setup forces users to navigate away from the conversation context to send invoices, disrupting workflow continuity.

Solution

Implement Send invoice from the invoice room in NewDot allowing users to send invoices directly from a pre-existing invoices room.

Manual Test Steps

Automated Tests

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~011c3a6ec6a19ed908
  • Upwork Job ID: 1788475765271580672
  • Last Price Increase: 2024-05-09
Issue OwnerCurrent Issue Owner: @garrettmknight
melvin-bot[bot] commented 6 months ago

Triggered auto assignment to @garrettmknight (NewFeature), see https://stackoverflowteams.com/c/expensify/questions/14418#:~:text=BugZero%20process%20steps%20for%20feature%20requests for more details. Please add this Feature request to a GH project, as outlined in the SO.

melvin-bot[bot] commented 6 months ago

:warning: It looks like this issue is labelled as a New Feature but not tied to any GitHub Project. Keep in mind that all new features should be tied to GitHub Projects in order to properly track external CAP software time :warning:

melvin-bot[bot] commented 6 months ago

Triggered auto assignment to Design team member for new feature review - @dannymcclain (NewFeature)

VickyStash commented 6 months ago

Hi, I'm Viktoryia from Callstack - expert contributor group - and I would like to work on this issue.

melvin-bot[bot] commented 6 months ago

Job added to Upwork: https://www.upwork.com/jobs/~011c3a6ec6a19ed908

melvin-bot[bot] commented 6 months ago

Triggered auto assignment to Contributor-plus team member for initial proposal review - @akinwale (External)

devhardikbeladiya commented 6 months ago

Hello,

I would like to work on this issue.

melvin-bot[bot] commented 6 months ago

πŸ“£ @devhardikbeladiya! πŸ“£ Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork. Please follow these steps:

  1. Make sure you've read and understood the contributing guidelines.
  2. Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
  3. Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
  4. Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details. Screen Shot 2022-11-16 at 4 42 54 PM Format:
    Contributor details
    Your Expensify account email: <REPLACE EMAIL HERE>
    Upwork Profile Link: <REPLACE LINK HERE>
devhardikbeladiya commented 6 months ago

I would like to work on this issue.

Your Expensify account email: devhardikbeladiya@gmail.com Upwork Profile Link: https://www.upwork.com/freelancers/~015078816783129fe4

dannymcclain commented 6 months ago

Just so I'm super clear on this: the Send invoice option only shows up in Global create and already-created invoice rooms (that would've been created from the global create option), is that correct? That's what I'm gathering from the doc, I just want to fully make sure I understand the expected behavior/implementation.

VickyStash commented 6 months ago

@dannymcclain This issue is more about creating an invoice from the existing invoice room. So you have already send one invoice to the receiver, and you want to send another one. Doing it from Global create adds extra step of selecting receiver. By doing it right from the room this step can be skipped. What do you think? image

VickyStash commented 6 months ago

@cristipaval I think the related section was removed from Invoicing document, do you have an idea where was it moved to?

dannymcclain commented 6 months ago

@VickyStash ok that's what I thought this issue was for, just wanted to make sure! Thanks.

VickyStash commented 6 months ago

@shawnborton Which way the receiver should look if the user sends an invoice from the existing invoice room. I have two options: 1) image 2) image

shawnborton commented 6 months ago

Hmm I think it makes sense to reuse the same room avatar, so your first option. Curious what @davidcardoza and @puneetlath think though!

VickyStash commented 6 months ago

Updates: I've enabled send invoice functionality from the invoice room, just need to do some UI fixes. I think I'll open the PR for review tomorrow.

puneetlath commented 6 months ago

I like using the room avatar here as well.

VickyStash commented 6 months ago

The PR is opened for the review

davidcardoza commented 6 months ago

+1 to room avatar.

davidcardoza commented 5 months ago

Following through this slack conversation - https://expensify.slack.com/archives/CSL3XBCCR/p1715782572275539

Disabling invoicing at the workspace level will not affect existing invoices and invoice rooms; they will still be accessible. Although this wasn't explicitly stated in the workspace settings section of the payments design docu, I've added a bullet point to the HL overview of the document to clarify this. It's important to note that the invoice rooms will be impacted in that the "Send Invoice" option will no longer appear in the invoice room create button when invoicing is disabled in workspace settings of the invoice sender workspace.

davidcardoza commented 5 months ago

^ @cristipaval Let me know if you think that should be it's own GH.

cristipaval commented 5 months ago

^ @cristipaval Let me know if you think that should be it's own GH.

I think we're good with this issue

melvin-bot[bot] commented 5 months ago

@garrettmknight, @akinwale, @dannymcclain, @cristipaval, @VickyStash Whoops! This issue is 2 days overdue. Let's get this updated quick!

garrettmknight commented 5 months ago

Note that this has gone to staging. When it deploys I'll test and update the payment if necessary.

garrettmknight commented 5 months ago

On prod, updating to awaiting payment.

melvin-bot[bot] commented 5 months ago

Payment Summary

Upwork Job

BugZero Checklist (@garrettmknight)

akinwale commented 5 months ago

@garrettmknight bump for payment. Thanks.

garrettmknight commented 5 months ago

Sorry @akinwale - offer is out to you in Upwork.

garrettmknight commented 5 months ago

All paid out - can you complete the checklist?

akinwale commented 5 months ago
  • [x] [@akinwale] The PR that introduced the bug has been identified. Link to the PR:
  • [x] [@akinwale] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
  • [x] [@akinwale] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

Not a regression. This is a new feature.

  • [x] [@akinwale] Determine if we should create a regression test for this bug.
  • [x] [@akinwale] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Regression Test Steps

  1. Launch the Expensify app.
  2. Open an invoice room as the admin of the invoice sender workspace.
  3. Click or tap on the "+" button to the left of the chat input.
  4. Verify that the Send invoice option is displayed.
  5. Select Send invoice > Enter an amount and then click or tap on Next.
  6. Verify that navigation to the confirmation screen occurs.
  7. Verify that the To and Send from fields are filled with the invoice receiver and invoice sender respectively, and that the fields are not editable.
  8. Click or tap on the Send invoice button.
  9. Verify that the invoice is successfully created.
  10. Open an invoice room as the invoice receiver.
  11. Verify that the Send Invoice option is not displayed.

Do we agree πŸ‘ or πŸ‘Ž?