App icon indicating copy to clipboard operation
App copied to clipboard

Take 2: Add merge option when selecting transactions in the report page

Open youssef-lr opened this issue 3 weeks ago • 26 comments

Explanation of Change

Take 2 of bringing Merge to the reports page with the previous blockers below fixed. Previous PR.

Fixed Issues

https://github.com/Expensify/App/issues/78211 https://github.com/Expensify/App/issues/78208 https://github.com/Expensify/App/issues/78206 https://github.com/Expensify/App/issues/78182 https://github.com/Expensify/App/issues/78195 https://github.com/Expensify/App/issues/78189 https://github.com/Expensify/App/issues/78179 https://github.com/Expensify/App/issues/78194 https://github.com/Expensify/App/issues/78225 https://github.com/Expensify/App/issues/78181#issuecomment-3678123483 https://github.com/Expensify/App/issues/78190 https://github.com/Expensify/App/issues/78174 https://github.com/Expensify/App/issues/78209

Tests

  • [x] Verify that no errors appear in the JS console

See QA section.

Offline tests

Same test steps while offline.

QA Steps

In the tests, editable means that the transaction is unreported, is in a draft report, or is a report that is awaiting the first approval. For a manager, they can edit transactions where they are currently the manager and the report is in the submitted state. For admins, they can edit all transactions of the policy where the parent report is either draft, or submitted.

Two editable transactions without receipts
  1. In the Reports page, as a submitter, select two editable transactions (e.g. from a draft report or a report waiting for first-level approval) and verify the Merge option shows up.
  2. Verify you are taken to the details review page.
  3. Select the fields to keep and merge the transactions.
  4. Verify the merge succeeds, the second transaction is deleted, and the first one is kept and updated.
Two editable transactions, one with a receipt
  1. In the Reports page, as a submitter, select two editable transactions (e.g. from a draft report or a report waiting for first-level approval) and verify the Merge option shows up.
  2. Verify you are taken to the details review page.
  3. Select the fields to keep and navigate to the confirmation page.
  4. Verify the available receipt is selected by default.
  5. Verify the merge succeeds, the second transaction is deleted, and the first one is kept and updated.
Two editable card transactions
  1. Select two card transactions.
  2. Verify the Merge option does not appear.
One card transaction and one cash transaction with receipt
  1. Select a card transaction and a cash transaction from an editable report.
  2. Verify the Merge option is available.
  3. Verify the flow skips directly to the details page and does not show the receipt review.
  4. Merge the transactions and verify the card transaction is kept and updated with the cash receipt, and the cash transaction is deleted.
Manager with editable expenses
  1. Select a couple of transactions submitted to you.
  2. Verify the Merge option appears and the merge succeeds.
  3. Select one transaction belonging to the manager and one belonging to a submitter.
  4. Verify the Merge option does not show up.
Admin
  1. Select a couple of transactions from a policy member that belong to a submitted report.
  2. Verify the Merge option appears and the merge succeeds.
  3. Select one transaction belonging to a member and one belonging to another member.
  4. Verify the Merge option does not show up.
Admin with approved transactions
  1. Select a couple of transactions that are in an approved report.
  2. Verify the Merge option does not show up.

Tests from blockers of the previous PR

#78211 – Merchant is shown instead of Distance & Rate field when merging with manual distance expense
  1. Go to staging.new.expensify.com
  2. Go to workspace chat or self DM.
  3. Create a Map distance expense.
  4. Create a Manual distance expense.
  5. Open Map distance expense.
  6. Click More > Merge.
  7. Select Manual distance expense > Continue.
  8. Select merchant from Manual distance expense > Next.
  9. On confirm page, verify Distance and Rate fields are shown.
#78208 – When merging with per diem expense, both receipts show the selected per diem expense

Precondition:

  • Workspace has per diem rates.
  1. Go to staging.new.expensify.com
  2. Go to workspace chat.
  3. Create two per diem expenses of different subrate (to have different amount).
  4. Open expense report.
  5. Open any per diem expense.
  6. Click More > Merge.
  7. Select the other per diem expense > Continue.
  8. On receipt selection page, select the second receipt.
  9. Open the first receipt and second receipt.
  10. Verify each receipt in the full page view corresponds to the correct transaction.
#78206 – When merging with failed scan expense, receipt is missing / Amount shows “Scanning”

Bug 1
Precondition:

  • Account has self DM.
  1. Go to staging.new.expensify.com
  2. Go to self DM.
  3. Create a manual expense.
  4. Create a scan expense with invalid receipt that will fail the scan.
  5. Wait for scan to fail.
  6. Open the MANUAL expense.
  7. Click More > Merge.
  8. Select the scan expense > Continue.
  9. Reach the confirm page.

Bug 2
Precondition:

  • Account has self DM.
  1. Go to staging.new.expensify.com
  2. Go to self DM.
  3. Create a manual expense.
  4. Create a scan expense with invalid receipt that will fail the scan.
  5. Wait for scan to fail.
  6. Open the FAILED SCAN expense.
  7. Click More > Merge.
  8. Select the manual expense > Continue.
  9. Reach the confirm page.

Expected:

  • Bug 1: Receipt from the scan expense appears on the confirm page.
  • Bug 2: Amount field shows the amount from the manual expense.
#78195 – Amount can be selected when merging with card expense after opening Reports

Precondition:

  • Workspace has imported card transactions from direct feed in Company cards page.
  1. Go to staging.new.expensify.com
  2. Go to workspace chat.
  3. Open report with card transaction.
  4. Create a manual expense.
  5. Open card transaction.
  6. Click More > Merge.
  7. Select the cash expense > Next (Amount section not shown – expected).
  8. Go to Reports > Expenses.
  9. Return to Inbox.
  10. Go to workspace chat and open the card transaction.
  11. Click More > Merge.
  12. Select the cash expense > Next (Amount section is shown).
  13. Select the amount from cash expense.
  14. Select any other detail > Next.
  15. Click Merge expenses.
  16. Verify amount is not visible for selection.
#78194 – Not here page opens when bulk merging split and non-split expense
  1. Go to staging.new.expensify.com
  2. Go to workspace chat.
  3. Create an expense.
  4. Open the expense report.
  5. Click More > Split > Save.
  6. Create another expense.
  7. Bulk select the new expense and any split.
  8. Click More > Merge.
  9. If Not Here page does not open, bulk select the new expense with another split.
  10. Merge details page opens.
#78190 – Category & Reimbursable missing on confirmation page
  1. Create an unreported expense in self DM with amount = $1
  2. Create another reported expense with amount > $1 (e.g. $10)
  3. Go to the Reports page and sort by amount ascending
  4. Go through the merge process until confirmation page
  5. Verify Category & Reimbursable are shown.
#78189 – Merging cash with card expense causes blank details page / infinite loading

Precondition:

  • Workspace has imported card transactions from direct feed.
  1. Go to staging.new.expensify.com
  2. Go to workspace chat.
  3. Open report with card transaction.
  4. Create a manual expense.
  5. Open cash transaction.
  6. Click More > Merge.
  7. Select the card expense > Next.
  8. Verify details show properly.
  9. Click RHP back button.
  10. Verify previous page does not show infinite loading.
#78182 – Merge option shown when bulk selecting card expenses

Precondition:

  • Workspace has imported card transactions from direct feed.
  1. Go to staging.new.expensify.com
  2. Go to Reports > Expenses.
  3. Select two card expenses.
  4. Verify “Merge” is not shown.
#78181 – Allow merging negative expenses everywhere
  1. Create a negative amount expense, click “More”, verify “Merge” is visible.
  2. Select two negative amount expenses from the reports page.
  3. Verify merge succeeds.
#78179 – Merge option shown when bulk selecting admin and member expenses

Precondition:

  • Admin has invited a member.
  • Member has created an expense.
  1. Go to staging.new.expensify.com
  2. Go to Reports > Expenses.
  3. Select expenses from admin and invited member.
  4. Click dropdown > Merge.
  5. Verify Merge option is hidden.
#78174 – App opens Inbox after merging expenses on Reports
  1. Go to staging.new.expensify.com
  2. Go to workspace chat.
  3. Create two expenses in two different reports.
  4. Go to Reports > Expenses.
  5. Select both expenses via checkbox.
  6. Click dropdown button > Merge.
  7. Select all detail from the second report > Continue.
  8. Click Merge expenses.
  9. Verify the modal is dismissed and you remain in the Reports page.
#78209 – "From" field displayed empty after merging track expense with expense in workspace

Prerequisite 1: Account has a Self DM. Prerequisite 2: Account has at least one workspace.

  1. Open the Expensify app.
  2. Create a manual expense and submit it to a workspace.
  3. Create another manual expense and submit it to Self DM.
  4. Navigate to "Reports" > "Expenses"
  5. Long tap and select the track expense.
  6. Tap on the dropdown menu and select "Merge"
  7. Select the expense created on workspace.
  8. Keep all the details from expense created in workspace.
  9. Once the merging process is finished, navigate to "Reports" > "Expenses" again.
  10. Resize the window to trigger mobile view: verify "From" user is still visible.

PR Author Checklist

  • [x] I linked the correct issue in the ### Fixed Issues section above
  • [x] I wrote clear testing steps that cover the changes made in this PR
  • [x] I added steps for local testing in the Tests section
  • [x] I added steps for the expected offline behavior in the Offline steps section
  • [x] I added steps for Staging and/or Production testing in the QA steps section
  • [x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
  • [x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • [x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • [x] I included screenshots or videos for tests on all platforms
  • [x] I ran the tests on all platforms & verified they passed on:
  • [x] Android: Native
  • [x] Android: mWeb Chrome
  • [x] iOS: Native
  • [x] iOS: mWeb Safari
  • [x] MacOS: Chrome / Safari
  • [x] MacOS: Desktop
  • [x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • [x] I verified there are no new alerts related to the canBeMissing param for useOnyx
  • [x] I followed proper code patterns (see Reviewing the code)
  • [x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
  • [x] I verified that comments were added to code that is not self explanatory
  • [x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
  • [x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
  • [x] If any non-english text was added/modified, I used JaimeGPT to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
  • [x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
  • [x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • [x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
  • [x] I verified the JSDocs style guidelines (in STYLE.md) were followed
  • [x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • [x] I followed the guidelines as stated in the Review Guidelines
  • [x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • [x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • [x] I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • [x] I verified that if a function's arguments changed that all usages have also been updated correctly
  • [x] If any new file was added I verified that:
  • [x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • [x] If a new CSS style is added I verified that:
  • [x] A similar style doesn't already exist
  • [x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • [x] If new assets were added or existing ones were modified, I verified that:
  • [x] The assets are optimized and compressed (for SVG files, run npm run compress-svg)
  • [x] The assets load correctly across all supported platforms.
  • [x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • [x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • [x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • [x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • [x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
  • [x] I verified that all the inputs inside a form are aligned with each other.
  • [x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • [x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • [x] I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • [x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

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

youssef-lr avatar Dec 20 '25 21:12 youssef-lr

Codecov Report

❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.

Files with missing lines Coverage Δ
src/CONFIG.ts 84.37% <100.00%> (+0.50%) :arrow_up:
src/CONST/index.ts 83.47% <ø> (ø)
src/components/MoneyRequestHeader.tsx 0.00% <ø> (ø)
src/hooks/useSelectedTransactionsActions.ts 82.03% <100.00%> (+0.27%) :arrow_up:
src/libs/DebugUtils.ts 68.56% <100.00%> (+0.13%) :arrow_up:
src/libs/ReportUtils.ts 72.96% <100.00%> (-0.05%) :arrow_down:
src/libs/SearchUIUtils.ts 58.94% <100.00%> (+0.03%) :arrow_up:
src/pages/TransactionDuplicate/Confirmation.tsx 0.00% <ø> (ø)
...ges/home/report/ReportActionItemContentCreated.tsx 25.00% <ø> (ø)
...ponents/ReportActionItem/ReportActionItemImage.tsx 70.27% <0.00%> (-0.79%) :arrow_down:
... and 16 more
... and 6 files with indirect coverage changes

codecov[bot] avatar Dec 20 '25 21:12 codecov[bot]

Ready for review @hoangzinh! Please check the QA section for test steps related to all the blockers.

youssef-lr avatar Dec 23 '25 03:12 youssef-lr

@rlinoz 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]

melvin-bot[bot] avatar Dec 23 '25 03:12 melvin-bot[bot]

I can still reproduce this issue https://github.com/Expensify/App/issues/78211

https://github.com/user-attachments/assets/5d891efc-94fc-44d3-8c12-6e366bd26c0e

hoangzinh avatar Dec 23 '25 14:12 hoangzinh

I can still reproduce this issue https://github.com/Expensify/App/issues/78211

Checking

youssef-lr avatar Dec 23 '25 15:12 youssef-lr

Weird I can't reproduce. Will keep trying. Any other issues?

https://github.com/user-attachments/assets/1989bf00-15d1-455d-9543-bbf090ae8c4a

youssef-lr avatar Dec 23 '25 16:12 youssef-lr

Just pushed a fix for the distance issue

youssef-lr avatar Dec 23 '25 18:12 youssef-lr

I still reproduce this bug https://github.com/Expensify/App/issues/78190 However, I think it is expected behavior, compared with the merge from "More -> Merge" option? As we selected "unreported expense" as a target expense

https://github.com/user-attachments/assets/b60c7dab-15be-40ab-a2df-6ec57fc19614

hoangzinh avatar Dec 23 '25 23:12 hoangzinh

Tested all DB issues and all passed to me, except this https://github.com/Expensify/App/pull/78233#issuecomment-3688188002

hoangzinh avatar Dec 24 '25 01:12 hoangzinh

However, I think it is expected behavior, compared with the merge from "More -> Merge" option? As we selected "unreported expense" as a target expense

no I think it's a bug, the moving policy should be set. Will double check.

youssef-lr avatar Dec 24 '25 19:12 youssef-lr

Reviewer Checklist

  • [x] I have verified the author checklist is complete (all boxes are checked off).
  • [x] I verified the correct issue is linked in the ### Fixed Issues section above
  • [x] I verified testing steps are clear and they cover the changes made in this PR
    • [x] I verified the steps for local testing are in the Tests section
    • [x] I verified the steps for Staging and/or Production testing are in the QA steps section
    • [x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • [x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • [x] I checked that screenshots or videos are included for tests on all platforms
  • [x] I included screenshots or videos for tests on all platforms
  • [x] I verified that the composer does not automatically focus or open the keyboard on mobile unless explicitly intended. This includes checking that returning the app from the background does not unexpectedly open the keyboard.
  • [x] I verified tests pass on all platforms & I tested again on:
    • [x] Android: HybridApp
    • [x] Android: mWeb Chrome
    • [x] iOS: HybridApp
    • [x] iOS: mWeb Safari
    • [x] MacOS: Chrome / Safari
  • [x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • [x] I verified there are no new alerts related to the canBeMissing param for useOnyx
  • [x] I verified proper code patterns were followed (see Reviewing the code)
    • [x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
    • [x] I verified that comments were added to code that is not self explanatory
    • [x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • [x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
    • [x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • [x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • [x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • [x] I verified the JSDocs style guidelines (in STYLE.md) were followed
  • [x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • [x] I verified that this PR follows the guidelines as stated in the Review Guidelines
  • [x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • [x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • [x] I verified any variables that can be defined as constants (ie. in CONST.ts or at the top of the file that uses the constant) are defined as such
  • [x] If a new component is created I verified that:
    • [x] A similar component doesn't exist in the codebase
    • [x] All props are defined accurately and each prop has a /** comment above it */
    • [x] The file is named correctly
    • [x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • [x] The only data being stored in the state is data necessary for rendering and nothing else
    • [x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • [x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • [x] All JSX used for rendering exists in the render method
    • [x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • [x] If any new file was added I verified that:
    • [x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • [x] If a new CSS style is added I verified that:
    • [x] A similar style doesn't already exist
    • [x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)
  • [x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • [x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • [x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • [x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • [x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • [x] I verified that all the inputs inside a form are aligned with each other.
    • [x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • [x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • [x] For any bug fix or new feature in this PR, I verified that sufficient unit tests are included to prevent regressions in this flow.
  • [x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • [x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: HybridApp

https://github.com/user-attachments/assets/8324fed9-fb91-46f7-aeea-052bf3257bea

Android: mWeb Chrome

https://github.com/user-attachments/assets/54f142bd-8608-4bfa-aa9e-1660411c983f

iOS: HybridApp

https://github.com/user-attachments/assets/a422575d-8001-4660-8b19-c859117e8637

iOS: mWeb Safari

https://github.com/user-attachments/assets/d292d3dd-4bf1-46d6-8227-54bb5dde268a

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/a09edd34-a201-432c-8242-037914c41ce3

hoangzinh avatar Dec 24 '25 22:12 hoangzinh

There is a new feature of category being analyzed that I need to take into account here. Not sure yet how to tackle this.

Screenshot 2025-12-24 at 23 25 16

youssef-lr avatar Dec 24 '25 22:12 youssef-lr

Last bug should be fixed

https://github.com/user-attachments/assets/a9f441b2-33cd-4a22-97e6-6312d3cec3c9

youssef-lr avatar Dec 24 '25 22:12 youssef-lr

@hoangzinh please check this commit https://github.com/Expensify/App/pull/78233/commits/819bfa6ba93ae88eec667106c986f80b4e1be543, navigation from search should be fixed for good now. I found out the search context's isOnSearch does not work unless component is wrapped in the search scope. So I started sending a pram in the route.

youssef-lr avatar Dec 25 '25 05:12 youssef-lr

@youssef-lr can you test this bug https://github.com/Expensify/App/issues/78208 on android/ios if it works for you? I'm unsure if it's an issue on my device or not, because I couldn't open receipt 2 on zoom mode.

https://github.com/user-attachments/assets/f0fbdb79-88d5-4665-86fa-11c68df39e93

hoangzinh avatar Dec 25 '25 06:12 hoangzinh

"Confirmation page" still displays "Tax" & "Attendees" even though the workspace is not enabled them. Is it expectation or a bug @youssef-lr?

https://github.com/user-attachments/assets/08ef55bb-ab06-4107-a143-fe94e16e0122

hoangzinh avatar Dec 25 '25 06:12 hoangzinh

"Confirmation page" still displays "Tax" & "Attendees" even though the workspace is not enabled them. Is it expectation or a bug @youssef-lr?

Just pushed a fix. Can you try again please?

@youssef-lr can you test this bug https://github.com/Expensify/App/issues/78208 on android/ios if it works for you? I'm unsure if it's an issue on my device or not, because I couldn't open receipt 2 on zoom mode.

I'll try today.

youssef-lr avatar Dec 25 '25 07:12 youssef-lr

"Confirmation page" still displays "Tax" & "Attendees" even though the workspace is not enabled them. Is it expectation or a bug @youssef-lr?

I can reproduce this bug by on Reports -> Expenses

  1. Go to Reports -> Expenses
  2. Select expense from workspace first
  3. Select unreported expense
  4. Tap Bulk -> Merge button
  5. Select everything from unreported expense

https://github.com/user-attachments/assets/14f7667d-7f65-451f-86ed-8978347ee8b8

hoangzinh avatar Dec 25 '25 08:12 hoangzinh

Okay that's not a bug actually, we're using the policy for moving expenses to the selfDM which must be a policy with those enabled. Is that the only bug remaining?

youssef-lr avatar Dec 25 '25 15:12 youssef-lr

Okay that's not a bug actually, we're using the policy for moving expenses to the selfDM which must be a policy with those enabled. Is that the only bug remaining?

Both selfDM and workspace expense don't have Tax enabled. It seems to be a bug to me.

Ah, another one is waiting for your confirm here https://github.com/Expensify/App/pull/78233#issuecomment-3691000322

hoangzinh avatar Dec 25 '25 15:12 hoangzinh

in MoneyRequestView and while being in the confirmation page, can you log which policyForMovingExpenses is used?

youssef-lr avatar Dec 25 '25 15:12 youssef-lr

🚧 @youssef-lr has triggered a test Expensify/App build. You can view the workflow run here.

github-actions[bot] avatar Dec 25 '25 15:12 github-actions[bot]

Ah, another one is waiting for your confirm here https://github.com/Expensify/App/pull/78233#issuecomment-3691000322

Can't reproduce @hoangzinh, unlikely to be an issue only on android/ios as it's in JS component shared by all.

youssef-lr avatar Dec 25 '25 16:12 youssef-lr

:test_tube::test_tube: Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! :test_tube::test_tube: Built from App PR Expensify/App#78233.

Android :robot: iOS :apple:
https://ad-hoc-expensify-cash.s3.amazonaws.com/android/78233/index.html https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/78233/index.html
Android iOS
Desktop :computer: Web :spider_web:
⏩ SKIPPED ⏩ https://78233.pr-testing.expensify.com
The build for Desktop was skipped Web

:eyes: View the workflow run that generated this build :eyes:

github-actions[bot] avatar Dec 25 '25 16:12 github-actions[bot]

in MoneyRequestView and while being in the confirmation page, can you log which policyForMovingExpenses is used?

It's the default workspace.

hoangzinh avatar Dec 25 '25 17:12 hoangzinh

Let's not block on this one @hoangzinh, we can fix it in a followup since it's a minor issue

youssef-lr avatar Dec 25 '25 17:12 youssef-lr

@mollfpr 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]

melvin-bot[bot] avatar Dec 25 '25 22:12 melvin-bot[bot]

🎯 @hoangzinh, thanks for reviewing and testing this PR! 🎉

An E/App issue has been created to issue payment here: https://github.com/Expensify/App/issues/78468.

melvin-bot[bot] avatar Dec 25 '25 22:12 melvin-bot[bot]

🚀 Deployed to staging by https://github.com/mollfpr in version: 9.2.88-0 🚀

platform result
🖥 desktop 🖥 success ✅
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

OSBotify avatar Dec 29 '25 12:12 OSBotify

Blockers fixed (checked means deployed)

  • [x] https://github.com/Expensify/App/issues/78521
  • [x] https://github.com/Expensify/App/issues/78530
  • [x] https://github.com/Expensify/App/issues/78546
  • [x] https://github.com/Expensify/App/issues/78547
  • [x] https://github.com/Expensify/App/issues/78523
  • [x] https://github.com/Expensify/App/issues/78528
  • [x] https://github.com/Expensify/App/issues/78545
  • [ ] https://github.com/Expensify/App/issues/78567
  • [ ] https://github.com/Expensify/App/issues/78568

Not related to my PR

  • [x] https://github.com/Expensify/App/issues/78522

youssef-lr avatar Dec 29 '25 20:12 youssef-lr