Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HOLD #42118][$250] Expense status doesn't update after completing the action #46914

Open
1 of 6 tasks
m-natarajan opened this issue Aug 6, 2024 · 30 comments
Open
1 of 6 tasks
Assignees
Labels
Bug Something is broken. Auto assigns a BugZero manager. External Added to denote the issue can be worked on by a contributor Monthly KSv2 retest-weekly Apply this label if you want this issue tested on a Weekly basis by Applause Reviewing Has a PR in review

Comments

@m-natarajan
Copy link

m-natarajan commented Aug 6, 2024

If you haven’t already, check out our contributing guidelines for onboarding and email [email protected] to request to join our Slack channel!


Version Number: 9.0.17-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @saracouto
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1722617920576379

Action Performed:

  1. Submit an expense and get a violation
  2. Fix the violation
  3. Violation message doesn't update in the upper side of the screen

Expected Result:

Once the user clears the violation, the message should update from "Waiting for Sara Couto to fix the issue(s)" to the corresponding next step

Actual Result:

The message "Waiting for Sara Couto to fix the issue(s)" was still there even after fixing the violation

Workaround:

unknown

Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos

image (106)

Recording.419.mp4

View all open jobs on GitHub

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~01bfe746236df54daa
  • Upwork Job ID: 1821182632521988875
  • Last Price Increase: 2024-08-14
  • Automatic offers:
    • rayane-djouah | Reviewer | 103528411
    • dominictb | Contributor | 103528413
Issue OwnerCurrent Issue Owner: @rayane-djouah
@m-natarajan m-natarajan added Daily KSv2 Bug Something is broken. Auto assigns a BugZero manager. labels Aug 6, 2024
Copy link

melvin-bot bot commented Aug 6, 2024

Triggered auto assignment to @slafortune (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.

@slafortune slafortune added the External Added to denote the issue can be worked on by a contributor label Aug 7, 2024
Copy link

melvin-bot bot commented Aug 7, 2024

Job added to Upwork: https://www.upwork.com/jobs/~01bfe746236df54daa

@melvin-bot melvin-bot bot changed the title Expense status doesn't update after completing the action [$250] Expense status doesn't update after completing the action Aug 7, 2024
@melvin-bot melvin-bot bot added the Help Wanted Apply this label when an issue is open to proposals by contributors label Aug 7, 2024
Copy link

melvin-bot bot commented Aug 7, 2024

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

@dominictb
Copy link
Contributor

dominictb commented Aug 7, 2024

Edited by proposal-police: This proposal was edited at 2023-10-04 10:15:00.

Proposal

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

The message "Waiting for Sara Couto to fix the issue(s)" was still there even after fixing the violation

What is the root cause of that problem?

When we approve/submit money request, we'll generate the optimisticNextStep to show the user what will happen next:

const optimisticNextStep = NextStepUtils.buildNextStep(expenseReport, CONST.REPORT.STATUS_NUM.APPROVED);

const optimisticNextStep = NextStepUtils.buildNextStep(expenseReport, isSubmitAndClosePolicy ? CONST.REPORT.STATUS_NUM.CLOSED : CONST.REPORT.STATUS_NUM.SUBMITTED);

However, when editing amount

function updateMoneyRequestAmountAndCurrency({
, we're not doing that. Request edit can also lead to next step change, in case where there's violations and the violations are removed after the edit, and vice versa.

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

To fix it holistically for all money request update operations,
in here, first we check if the current transaction (before edits) has violations, next we check if the transaction after edit has violations. If the former is true and latter is false, that means the violations have been removed as the result of the edit, and the next step should be dependent on the expense report status now instead of "Wait for {user} to fix the issue(s)", so we'll buildNextStep like here with the status of the current expense report as the predictedNextStatus, and set it to Onyx just like we did for other flows.

const nextViolationOnyxUpdate = ViolationsUtils.getViolationsOnyxData(
                updatedTransaction,
                currentTransactionViolations,
                !!policy.requiresTag,
                policyTagList ?? {},
                !!policy.requiresCategory,
                policyCategories ?? {},
                PolicyUtils.hasDependentTags(policy, policyTagList ?? {}),
            );

// no more violation after update
if(currentTransactionViolations.length > 0 && nextViolationOnyxUpdate.value.length === 0) {
   const optimisticNextStep = NextStepUtils.buildNextStep(iouReport, iouReport.statusNum ?? CONST.REPORT.STATE_NUM.OPEN)
}

// update to onyx
optimisticData.push(nextViolationOnyxUpdate, {
    onyxMethod: Onyx.METHOD.SET,
    key: `${ONYXKEYS.COLLECTION.NEXT_STEP}${iouReport?.reportID}`,
    value: optimisticNextStep,
})

failureData.push({
     onyxMethod: Onyx.METHOD.MERGE,
    key: `${ONYXKEYS.COLLECTION.NEXT_STEP}${iouReport?.reportID}`,
    value:  currentReportNextStep // we can fetch the currentReportNextStep in in Onyx (ONYXKEYS.COLLECTION.NEXT_STEP) beforehand
})

What alternative solutions did you explore? (Optional)

We should at some point handle the case where "There's no violation before, but after edit there's violation", in that case the next step will be "Wait for {user} to fix the issue(s)". I think this is out of scope of this issue for now.

@dominictb
Copy link
Contributor

Proposal updated to add notes in the alternative section

@rayane-djouah
Copy link
Contributor

rayane-djouah commented Aug 8, 2024

@dominictb - I think we should keep the "Wait for {user} to fix the issue(s)" next step message if we have optimistic violations returned from here:

data = getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, transactionChanges, policy ?? null, policyTagList ?? null, policyCategories ?? null, true);

App/src/libs/actions/IOU.ts

Lines 2691 to 2701 in 2200fd7

optimisticData.push(
ViolationsUtils.getViolationsOnyxData(
updatedTransaction,
currentTransactionViolations,
!!policy.requiresTag,
policyTagList ?? {},
!!policy.requiresCategory,
policyCategories ?? {},
PolicyUtils.hasDependentTags(policy, policyTagList ?? {}),
),
);

We should change the next step message only if there are current transaction violations and there are no optimistic transaction violations. we need also to restore the next step in case of failure.

Could you please update your proposal and ping me again once it's ready for another review?

@dominictb
Copy link
Contributor

We should change the next step message only if there are current transaction violations and there are no optimistic transaction violations. we need also to restore the next step in case of failure.

@rayane-djouah Hey sure that's what I meant by below point in my proposal, let me update with a bit more details in the proposal

we check if the current transaction (before edits) has violations, next we check if the transaction after edit has violations. If the former is true and latter is false

@trjExpensify
Copy link
Contributor

Moving to #wave-control as it's optimistic next steps/violations related. CC: @dangrous @dylanexpensify

@dangrous dangrous self-assigned this Aug 9, 2024
@dangrous
Copy link
Contributor

dangrous commented Aug 9, 2024

assigning myself so I can take a look when proposals are approved!

@rayane-djouah
Copy link
Contributor

rayane-djouah commented Aug 10, 2024

@dominictb your proposal RCA and solution makes sense to me.

However, to fix the bug for all money request update flows, we need to make the changes in getUpdateMoneyRequestParams instead of making them only in updateMoneyRequestAmountAndCurrency function as all the edit money request actions functions (like updateDistanceRequest, updateMoneyRequestMerchant, updateMoneyRequestCategory, updateMoneyRequestTag...) use the getUpdateMoneyRequestParams function.

Could you please add a sample code that describes which changes should we make in getUpdateMoneyRequestParams function?

@dominictb
Copy link
Contributor

Will provide an update early tomorrow.

@melvin-bot melvin-bot bot added the Overdue label Aug 13, 2024
@rayane-djouah
Copy link
Contributor

TY!

@melvin-bot melvin-bot bot removed the Overdue label Aug 13, 2024
@slafortune
Copy link
Contributor

Adding another BZ - I'll be out until 8/21

@slafortune slafortune removed their assignment Aug 13, 2024
@slafortune slafortune added Bug Something is broken. Auto assigns a BugZero manager. and removed Bug Something is broken. Auto assigns a BugZero manager. labels Aug 13, 2024
Copy link

melvin-bot bot commented Aug 13, 2024

Triggered auto assignment to @mallenexpensify (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.

@slafortune slafortune self-assigned this Aug 13, 2024
@dominictb
Copy link
Contributor

#46914 (comment) proposal updated!

@rayane-djouah
Copy link
Contributor

@dominictb's proposal looks good to me

🎀👀🎀 C+ reviewed

Copy link

melvin-bot bot commented Aug 14, 2024

Current assignee @dangrous is eligible for the choreEngineerContributorManagement assigner, not assigning anyone new.

Copy link

melvin-bot bot commented Aug 14, 2024

📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸

@dangrous
Copy link
Contributor

Yep, looks good to me! I'm wondering - to solve the "There's no violation before, but after edit there's violation" case, could we just do: currentTransactionViolations.length != nextViolationOnyxUpdate.value.length?

@melvin-bot melvin-bot bot removed the Help Wanted Apply this label when an issue is open to proposals by contributors label Aug 14, 2024
Copy link

melvin-bot bot commented Aug 14, 2024

📣 @rayane-djouah 🎉 An offer has been automatically sent to your Upwork account for the Reviewer role 🎉 Thanks for contributing to the Expensify app!

Offer link
Upwork job

Copy link

melvin-bot bot commented Aug 14, 2024

📣 @dominictb 🎉 An offer has been automatically sent to your Upwork account for the Contributor role 🎉 Thanks for contributing to the Expensify app!

Offer link
Upwork job
Please accept the offer and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review 🧑‍💻
Keep in mind: Code of Conduct | Contributing 📖

@dylanexpensify
Copy link
Contributor

Nice, @dominictb when can we get the PR raised for review?

@dominictb
Copy link
Contributor

The PR will be ready by tmr.

@dangrous
Copy link
Contributor

dangrous commented Sep 6, 2024

Okay so in talking with @mountiny and trying to make this work on the backend, it's going to bog down our code speed and also just be very tricky to do it currently. However! We're in the process of migrating the next steps code, and once that's done we should be able to fix this much more easily.

It does mean in the meantime, though, that we won't want to merge this front-end fix if it will just be overwritten by the backend. So I think this (and the PR, which I'll post on too) will be on hold for the next steps migration to auth. Sorry for the trouble!

@dangrous dangrous changed the title [$250] Expense status doesn't update after completing the action [HOLD Next Steps Auth Migration][$250] Expense status doesn't update after completing the action Sep 6, 2024
@melvin-bot melvin-bot bot added Monthly KSv2 and removed Weekly KSv2 labels Sep 9, 2024
Copy link

melvin-bot bot commented Sep 9, 2024

This issue has not been updated in over 15 days. @dangrous, @slafortune, @rayane-djouah, @dominictb eroding to Monthly issue.

P.S. Is everyone reading this sure this is really a near-term priority? Be brave: if you disagree, go ahead and close it out. If someone disagrees, they'll reopen it, and if they don't: one less thing to do!

@dangrous
Copy link
Contributor

Still on hold Melvin, don't close this.

@rayane-djouah
Copy link
Contributor

Hold on #42118

@mallenexpensify mallenexpensify changed the title [HOLD Next Steps Auth Migration][$250] Expense status doesn't update after completing the action [HOLD #42118][$250] Expense status doesn't update after completing the action Oct 7, 2024
@dangrous
Copy link
Contributor

dangrous commented Oct 15, 2024

We've actually got a temporary backend fix that should get this moving again, should be merged soon. We're still doing the migration, but I'm pretty sure this will work in the meantime.

@rayane-djouah
Copy link
Contributor

Great! Please let us know once it's deployed

@dangrous
Copy link
Contributor

Okay I thinkkkkk this is deployed. Can we retest and see if it's fixed?

@slafortune slafortune added the retest-weekly Apply this label if you want this issue tested on a Weekly basis by Applause label Oct 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something is broken. Auto assigns a BugZero manager. External Added to denote the issue can be worked on by a contributor Monthly KSv2 retest-weekly Apply this label if you want this issue tested on a Weekly basis by Applause Reviewing Has a PR in review
Projects
Status: Polish
Development

No branches or pull requests

8 participants