Skip to content

[HOLD for payment 2024-11-01] Invoices - Receipt appears on invoice confirmation page if receipt is added from track expense #50303

Closed

Description

@IuliiaHerets

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!


Version Number: 9.0.45-2
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers): applausetester+pso@applause.expensifail.com
Issue reported by: Applause Internal Team

Action Performed:

  1. Go to staging.new.expensify.com
  2. Go to FAB > Send invoices.
  3. Enter amount and select a receiver.
  4. Note that there is no receipt option on the confirmation page.
  5. Click back button.
  6. Click Just track it (don’t submit it).
  7. Add a receipt from the 3-dot menu.
  8. Click back button.
  9. Select a receiver.

Expected Result:

Receipt will not appear on the invoice confirmation page because invoice does not support receipt (evident from Step 4).

Actual Result:

Receipt appears on invoice confirmation page if receipt is added from track expense first.

Workaround:

Unknown

Platforms:

  • Android: Native
  • Android: mWeb Chrome
  • iOS: Native
  • iOS: mWeb Safari
  • MacOS: Chrome / Safari
  • MacOS: Desktop

Screenshots/Videos

Bug6625725_1728157302093.20241006_033817.mp4

View all open jobs on GitHub

Issue OwnerCurrent Issue Owner: @trjExpensify

Activity

  1. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 6, 2024
  2. melvin-bot commented on Oct 6, 2024

    @melvin-bot

    Triggered auto assignment to @trjExpensify (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.

  3. IuliiaHerets commented on Oct 6, 2024

    @IuliiaHerets
    Author

    We think that this bug might be related to #vip-bills

  4. IuliiaHerets commented on Oct 6, 2024

    @IuliiaHerets
    Author

    @trjExpensify FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

  5. Nodebrute commented on Oct 6, 2024

    @Nodebrute
    Contributor

    Edited by proposal-police: This proposal was edited at 2024-10-06 17:29:32 UTC.

    Proposal

    Please re-state the problem that we are trying to solve in this issue.

    Receipt appears on invoice confirmation page if receipt is added from track expense

    What is the root cause of that problem?

    When we add the receipt it gets added to this transaction and then we move back to send invoice we can see the receipt.

    What changes do you think we should make in order to solve the problem?

    You can see that if we add categories during the invoice flow and then go back to start the track expense flow, the categories will still be present in the transaction object. However, we don’t see the categories on the screen because we hide them using this check.

    const shouldShowCategories = (isPolicyExpenseChat || isTypeInvoice) && (!!iouCategory || OptionsListUtils.hasEnabledOptions(Object.values(policyCategories ?? {})));

    The same we can do with receipts. We can add another check here !isTypeInvoice

    What alternative solutions did you explore? (Optional)

    We can pass the shouldDisplayReceipt={iouType !== CONST.IOU.TYPE.INVOICE}


    and then we can use it here to hide the receipt

    Alternative 2
    Or we can use setMoneyRequestReceipt to clear the receipt details from transaction object. We can do something like in IOURequestStepConfirmation.tsx

    pseudo-code

       useEffect(() => {
            console.log(transaction)
            if (iouType !== CONST.IOU.TYPE.INVOICE && !transaction?.receipt) {
                return;
            }
           IOU.setMoneyRequestReceipt(transactionID, '','',true);
    
        }, [transactionID, iouType]);
    

    Optional: We can also add !isTypeInvoice check too to hide receipt.
    Optional 2: we can also use null instead of ''

  6. Nodebrute commented on Oct 6, 2024

    @Nodebrute
    Contributor

    Proposal updated
    Added alternative solution 2

  7. cretadn22 commented on Oct 7, 2024

    @cretadn22
    Contributor

    Proposal

    Please re-state the problem that we are trying to solve in this issue.

    Receipt appears on invoice confirmation page if receipt is added from track expense

    What is the root cause of that problem?

    In this case, we have two separate flows: "Send Invoice" and "Track Expense." However, both flows save their data in the same place, "transactionsDraft_1." This results in the receipt from the "Track Expense" flow also being added to the "Send Invoice" flow

    A similar issue occurs with the category field, which only exists in the "Send Invoice" flow. If a value is added to category and then "Track Expense" is executed, the category field still appears in the payload of the "Track Expense" API

    What changes do you think we should make in order to solve the problem?

    "transactionsDraft_1" can be used to share common information like description, amount, and merchant,... as these exist in both flows. However, if we continue saving receipt information and the category field in "transactionsDraft_1" as we do now, we will need to make some adjustments:

    • For the "Track Expense" flow: We need to hide the category field on the confirmation page and remove it from the API payload.
    • For the "Send Invoice" flow: We need to hide the receipt information on the confirmation page and remove it from the API payload.

    What alternative solutions did you explore? (Optional)

    We can save the "Track Expense" information to a new ONYX state (transactionDraft_sideFlow), keeping the data for both flows completely separate. However, the downside of this approach is that any shared information between the two flows will not be available in both.

  8. trjExpensify commented on Oct 7, 2024

    @trjExpensify
    Contributor

    I think we want to put this one in #f1 as it's a bug from there. @grgia, who's working on this with you? I don't think we should show the "just track it" option in the Send invoice flow. CC: @anmurali

  9. trjExpensify commented on Oct 7, 2024

    @trjExpensify
    Contributor

    I'll hold off on Help wanted for now, as we might want to route this back to whoever is working on that project as a regression.

  10. trjExpensify commented on Oct 10, 2024

    @trjExpensify
    Contributor

    Bumped in thread: https://expensify.slack.com/archives/C07HPDRELLD/p1728580440064929?thread_ts=1728363084.092579&cid=C07HPDRELLD

    Doesn't look like @fabioh8010 has access to that channel though, so tagging you here!

  11. 13 remaining items

  12. fabioh8010 commented on Oct 18, 2024

    @fabioh8010
    Contributor

    PR was opened to review.

  13. allgandalf commented on Oct 18, 2024

    @allgandalf
    Contributor

    I was assigned to the ^ PR, does that require C+ review ?

  14. allgandalf commented on Oct 21, 2024

    @allgandalf
    Contributor

    bump on ^ @grgia

  15. added
    Awaiting PaymentAuto-added when associated PR is deployed to production
    and removed on Oct 25, 2024
  16. changed the title [-]Invoices - Receipt appears on invoice confirmation page if receipt is added from track expense[/-] [+][HOLD for payment 2024-11-01] Invoices - Receipt appears on invoice confirmation page if receipt is added from track expense[/+] on Oct 25, 2024
  17. melvin-bot commented on Oct 25, 2024

    @melvin-bot

    Reviewing label has been removed, please complete the "BugZero Checklist".

  18. melvin-bot commented on Oct 25, 2024

    @melvin-bot

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.53-1 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    If no regressions arise, payment will be issued on 2024-11-01. 🎊

    For reference, here are some details about the assignees on this issue:

  19. melvin-bot commented on Oct 25, 2024

    @melvin-bot

    BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

    • [@grgia] The PR that introduced the bug has been identified. Link to the PR:
    • [@grgia] 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:
    • [@grgia] 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:
    • [@fabioh8010] Determine if we should create a regression test for this bug.
    • [@fabioh8010] 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.
    • [@trjExpensify] Link the GH issue for creating/updating the regression test once above steps have been agreed upon:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.WeeklyKSv2

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions