Reapply "Reapply "Feat: bulk edit multiple""#84756
Conversation
This reverts commit 75e65f3.
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
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.
|
…nsaction validation logic
…unt calculation and updates
…ditMultipleAmountPage
…dateMultipleMoneyRequests to use a parameter object
… selected transaction contexts
…tes for unreported expenses, preventing incorrect policy-triggered violations.
|
Updates: Wasn't able to reproduce: Current focus: In progress Next steps:
|
…fore enabling categories in SearchEditMultiplePage.
|
Updates:
Next steps :
|
|
I ran out of time before I could finish helping you. This usually means the task was too complex or I got stuck exploring. Please try again with a more specific request or post in the #melvinbot-ai. Run details: https://github.com/Expensify/Expensify/actions/runs/23816895655 |
|
This PR failing because of the issue #86841 |
|
Deploy Blocker #86841 was identified to be related to this PR. |
|
Deploy Blocker #86842 was identified to be related to this PR. |
|
Deploy Blocker #86855 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/jasperhuangg in version: 9.3.51-10 🚀
|
|
@pasyukevich Could you replace Test 8 with more clear steps? Proposition based on this PR below. I skip offline test as its already in Test 9. cc @Krishna2323 Test 8: Optimistic updates — failure and slow network Test 8a: Failure revert
Test 8b: Slow network
|
| success | ||
| large | ||
| text={translate('common.save')} | ||
| onPress={save} |
There was a problem hiding this comment.
A loading spinner was added in #90707 to prevent the user from repeatedly tapping the button.
This reverts commit 75e65f3.
Explanation of Change
Fixed Issues
$ #75617
PROPOSAL:
Tests
Enabling bulkEdit Beta for Developers
Edit src/libs/Permissions.ts
Add a temporary early-return inside isBetaEnabled:
OR add
bulkEditto your account's beta listBulk Edit Expenses — Test Cases
Test 1: Basic bulk edit from Search page
Verify:
Test 2: Basic bulk edit from Report page
Verify:
Test 3: Cross-policy bulk edit
Verify:
Test 4: Multi-level/dependent tags
Verify:
Test 5: Non-editable fields silently skipped
Verify:
Test 6: Unchanged fields not sent
Verify:
Test 7: Save with no edits
Verify:
Test 8: Optimistic updates and failure
Test 8a: Failure revert
Test 8b: Slow network
Test 9: Offline bulk edit
Verify:
Test 10: Sub-pages show correct policy options from Search page
Setup:
Verify:
Test 11: Approved/paid expenses excluded
Verify:
Test 12: Tax rate bulk edit
Verify:
Test 13: Billable / Reimbursable toggle
Verify:
Test 14: Merchant preview not updated after offline bulk edit
Precondition: Account has at least one workspace.
Expected Result:
After multiple editing expenses while offline, all the edited fields should automatically update on preview and inside report.
Test 15: Description not saved when using "Edit multiple"
<Shahrukh,khan>Expected Result:
Specific description entered using edit multiple must be saved.
Test 16: IOU expenses can be changed to 0 amount by bulk editing
Expected Result:
Error will show up on amount page because IOU expenses cannot be changed to 0 amount.
Test 17: User can bulk edit splits to amount larger than original amount
Expected Result:
Edit multiple option should not be available.
Test 18: Merchant can be removed by bulk editing with (none)
(none)and save it → SaveExpected Result:
Error will show up when entering invalid merchant such as
(none).Test 19: IOU expenses can be changed to non-reimbursable by bulk editing
Expected Result:
IOU expenses should have no reimbursable option.
Test 20: Edit multiple option is missing for unreported expenses
Expected Result:
Edit multiple option should be present for unreported expenses (it is possible to bulk edit unreported expenses on OD).
Test 21: Date field is disabled when bulk editing per diem expenses
Precondition: Workspace has per diem rates.
Expected Result:
Date field should be enabled when bulk editing per diem expenses (we can bulk edit date for per diem expenses on OD).
Test 22: Markdown is not applied in the description when bulk editing expenses
Expected Result:
Markdown will be applied in the description.
Test 23: Expenses deselect after "Edit Multiple" is executed
Verify:
Test 24: Big gap between "Save" and keyboard on "Description" when multiple editing offline — Android
Platform: Android only
Precondition: Account has at least one workspace.
Expected Result:
Gap between "Save" button and keyboard should be the same while editing "Description" on a single expense and when multiple editing expenses.
Test 25: Last category is hidden behind device navigation bar — Android
Platform: Android only
Precondition: Set device navigation to navigation bar instead of swipe gestures.
Expected Result:
The last category will appear above device navigation bar.
Test 26: Reimbursable and Billable fields are present when bulk editing self DM expenses
Precondition:
Verify:
Test 27: Second level tag is not shown when the first level tag is not selected
Precondition: Workspace has multi-level (dependent) tags.
Verify:
Test 28: Tax rate change system message dismisses after dismissing the error
Precondition:
Verify:
Test 29: Reimbursable field is absent when bulk editing invoice expenses
Verify:
Test 30: Error shows when entering 0.00 amount when bulk editing invoice expenses
Verify:
Test 31: Tax amount updates after bulk editing tax rate offline
Precondition: Workspace has tax tracking enabled.
Verify:
Test 32: Negative sign can be inserted when bulk editing self DM expenses
Verify:
Test 33: Edited tax rate does not appear as a separate rate after bulk edit
Precondition:
Verify:
Test 34: No false workspace violation after cross-policy bulk edit of category
Verify:
Test 35: Tax field is hidden in bulk edit when any selected workspace has taxes disabled
Precondition: Set up Workspace A with tax tracking enabled and Workspace B with taxes disabled
Verify:
Test 36: No "Missing Category" error after bulk editing unreported expenses
Verify:
Test 37: Tag field label and tag page header show the same custom name
Precondition: Workspace has a tag list with a custom name (e.g., "Department").
Verify:
Test 38: Expense details page does not show skeleton loader after bulk editing twice offline
Verify:
Test 39: Set category system message is not shown for IOU when there is no category row
Verify:
Test 40: Default custom tax name shown correctly in bulk edit
Precondition: Workspace has a default tax rate with a custom name (not "Tax rate").
Verify:
The default tax entry shows the custom name, not "Tax rate"
Verify that no errors appear in the JS console
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
android-native-converted.webm
Android: mWeb Chrome
android-web-converted.webm
iOS: Native
ios-native-converted.mov
iOS: mWeb Safari
ios-web-converted.mov
MacOS: Chrome / Safari
web-converted.mov