Repository navigation
Add imported vendor enable and disable controls - #102756
Conversation
|
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 bun ./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.
|
|
@Pujan92 can you get to this today? 🙏 |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-10-03.at.18.55.42.movScreen.Recording.2026-10-03.at.18.22.29.mov |
|
@codex review @MelvinBot review |
ReviewThe overall approach looks right. I found 3 issues worth fixing before merge, plus 2 smaller ones. 1. Vendors are no longer scoped to the active integration. Both 2. Success data can briefly undo a newer toggle. 3. The page can show a spinner forever. Smaller items
|
|
Plz add id |
@ShridharGoel plz look into this issue |
I don't think it's an issue, because the "Vendors" tab itself shouldn't show when there's no vendor I think. I could not repro this, but let me know if you find some steps to repro it. |
|
Onyx connectWithoutView usage was removed ✅ |
|
Conflicts @ShridharGoel |
|
@Pujan92 Fixed |
|
When an expense has set one vendor, and after that if that vendor is disabled, it shows in the list with Screen.Recording.2026-10-06.at.09.26.50.mov |
|
More conflicts 🤣 - cc @ShridharGoel But ya from the linked issue, we said:
Which I think make sense and applies to "editing existing expenses" as well - we'll still want to show these disabled vendors in the Workspace -> Vendors list of all vendors, but not as a selectable vendor in the expense Aah but in the video you shared @Pujan92 only the currently selected vendor (which is now disabled) is shown in the list, which i think is fine - once you select a different vendor, that disabled vendor stops showing in the list which sounds expected to me 👍 |
…e-disable # Conflicts: # src/libs/PolicyUtils/index.ts # tests/unit/PolicyUtilsTest.ts
|
Fixed conflicts |
|
🚧 Beamanator has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/Beamanator in version: 9.5.6-0 🚀
|
|
A help site update is needed. I opened Docs updates for E/A#102756 Explain how to enable or disable imported vendors. This PR lets admins turn vendors on or off with the Enabled toggle on the Vendors page. No beta is needed for Campfire, DualEntry, and Rillet. Their vendor matching articles said:
The docs PR replaces "read-only" in each article with one sentence on turning off a vendor's Enabled toggle. The QuickBooks Online, Sage Intacct, and Xero articles don't describe the Vendors page, so they need no change. @ShridharGoel, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
Deploy Blocker #103529 was identified to be related to this PR. |
|
Deploy Blocker #103556 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/puneetlath in version: 9.5.6-6 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
Implements enable/disable controls and bulk actions for imported accounting vendors:
enabledtoggle column withSwitchcomponent and lock support.Enable/Disabledropdown menu (ButtonWithDropdownMenu).policyVendors_{policyID}Onyx collection.setPolicyVendorsEnabledcallingSetPolicyVendorsEnabledwith optimistic update, success merge, and failure rollback.clearVendorErrorsfor error dismissal.IOURequestStepVendor):Disabledsubtitle in the unsearched picker list, allowing the user to select an enabled replacement or clear with "None".Fixed Issues
$ #98355
$ https://github.com/Expensify/Expensify/issues/678247
PROPOSAL: N/A
Tests
Automated Tests
npm run test -- tests/unit/PolicyVendorActionTest.ts tests/unit/PolicyUtilsTest.tsManual Tests
Offline tests
QA Steps
Same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, 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.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
MacOS: Chrome / Safari
Screen.Recording.2026-10-02.at.1.10.52.AM.mov