Skip to content

[CP Both] Release DualEntry vendor matching from the beta - #101459

Merged
Beamanator merged 1 commit into
mainfrom
codex/remove-vendor-matching-beta-from-dualentry
Sep 18, 2026
Merged

Beamanator merged 1 commit into
mainfrom
codex/remove-vendor-matching-beta-from-dualentry

Conversation

@Beamanator

@Beamanator Beamanator commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

🤖 Posted by Codex, an AI coding agent acting for @Beamanator.

Explanation of Change

Makes configured DualEntry workspaces eligible for vendor matching without the vendorMatching beta. The shared beta remains required for Xero and Rillet.

The Vendors More Features row now treats DualEntry as generally available, and the product-marketing CTA hydrates a fallback workspace's accounting connection even when the beta is disabled so it can route a configured DualEntry workspace to Vendors.

Fixed Issues

$ https://github.com/Expensify/Expensify/issues/682769
PROPOSAL: N/A

Tests

  1. Sign in without the vendorMatching beta and connect/configure DualEntry.
  2. Open Workspace settings > More features and verify Vendors is visible.
  3. Create a non-reimbursable workspace expense and verify the vendor field and picker are available.
  4. Verify a configured Xero or Rillet workspace still requires the beta.
  • Verify that no errors appear in the JS console

Offline tests

N/A

QA Steps

Same as tests. Tag me / @heyjennahay to test

  • Verify that no errors appear in the JS console

PR Author Checklist

N/A

Screenshots/Videos

Not applicable — this changes feature eligibility and navigation only; it does not change the UI layout.

@Beamanator
Beamanator requested review from a team as code owners September 17, 2026 18:49
@melvin-bot
melvin-bot Bot requested a review from QichenZhu September 17, 2026 18:49
@melvin-bot

melvin-bot Bot commented Sep 17, 2026

Copy link
Copy Markdown

@QichenZhu 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
melvin-bot Bot requested review from joekaufmanexpensify and removed request for a team September 17, 2026 18:49
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 17, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-17T19:00:51.266927Z cedc7f5 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@codecov

codecov Bot commented Sep 17, 2026

Copy link
Copy Markdown

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 Δ
...tMarketingWindow/ProductMarketingWindowManager.tsx 98.00% <100.00%> (ø)
...c/components/ReportActionItem/MoneyRequestView.tsx 82.11% <100.00%> (ø)
src/libs/PolicyUtils.ts 81.70% <100.00%> (-0.08%) ⬇️
...ages/workspace/WorkspaceMoreFeaturesPage/index.tsx 68.21% <100.00%> (ø)
...rc/pages/iou/request/step/IOURequestStepVendor.tsx 0.00% <0.00%> (ø)
...es/workspace/rules/MerchantRules/AddVendorPage.tsx 17.85% <0.00%> (-0.67%) ⬇️
...space/rules/MerchantRules/MerchantRulePageBase.tsx 0.00% <0.00%> (ø)
...c/pages/workspace/vendors/WorkspaceVendorsPage.tsx 0.00% <0.00%> (ø)
... and 9 files with indirect coverage changes

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cedc7f5871

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/libs/PolicyUtils.ts
@Beamanator

This comment has been minimized.

@Beamanator
Beamanator force-pushed the codex/remove-vendor-matching-beta-from-dualentry branch from cedc7f5 to 88c9543 Compare September 18, 2026 14:59
@Beamanator

This comment has been minimized.

@Beamanator
Beamanator force-pushed the codex/remove-vendor-matching-beta-from-dualentry branch from 88c9543 to 647281b Compare September 18, 2026 15:02
@Beamanator Beamanator added the InternalQA This pull request required internal QA label Sep 18, 2026
@Beamanator Beamanator changed the title Release DualEntry vendor matching from the beta [CP Both] Release DualEntry vendor matching from the beta Sep 18, 2026

@lakchote lakchote left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Beamanator
Beamanator merged commit 8388853 into main Sep 18, 2026
45 of 46 checks passed
@Beamanator
Beamanator deleted the codex/remove-vendor-matching-beta-from-dualentry branch September 18, 2026 16:30
@github-actions

Copy link
Copy Markdown
Contributor

🚧 Beamanator has triggered a test Expensify/App build. You can view the workflow run here.

@OSBotify

Copy link
Copy Markdown
Contributor

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

OSBotify pushed a commit that referenced this pull request Sep 18, 2026
…g-beta-from-dualentry

[CP Both] Release DualEntry vendor matching from the beta

(cherry picked from commit 8388853)

(cherry-picked to staging by Beamanator)
@OSBotify OSBotify added the CP Staging marks PRs that have been CP'd to staging label Sep 18, 2026
Beamanator added a commit that referenced this pull request Sep 18, 2026
…g-beta-from-dualentry

[CP Both] Release DualEntry vendor matching from the beta

(cherry picked from commit 8388853)

(cherry-picked to production by Beamanator)
@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Cherry-picked to staging by https://github.com/Beamanator in version: 9.4.84-4 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 failure ❌
🍎 iOS 🍎 success ✅

Beamanator added a commit that referenced this pull request Sep 18, 2026
…59-35370059055-1

🍒 Cherry pick PR #101459 to production 🍒
@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Cherry-picked to staging by https://github.com/Beamanator in version: 9.4.84-4 🚀

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

@MelvinBot

Copy link
Copy Markdown
Contributor

🤖 Yes, help site changes are required. Draft PR: Docs updates for E/A#101459 DualEntry vendor matching now generally available

This PR made DualEntry vendor matching generally available — hasVendorFeature now returns true for a configured DualEntry connection without the vendorMatching beta. The help site has a Manage Vendor Matching for <integration> article for QuickBooks Online, Sage Intacct, Xero, and Rillet, but none for DualEntry. That gap is now user-facing.

What the docs PR does:

  • Adds Manage Vendor Matching for DualEntry, modeled on the QuickBooks Online and Sage Intacct articles: indexed (no noindex / sitemap: false) and with no beta rollout disclaimer, since DualEntry is now generally available.
  • Adds one cross-link from Configure DualEntry to the new article.

What it deliberately does not change: the Xero and Rillet articles. Both integrations still require the vendorMatching beta after this PR, so the Rillet article keeps its "rolling out gradually" wording.

UI labels verified and how

Confirmed against the merged source and, where reachable, the live web app:

  • More features, Accounting, Vendors (in the Organize section), Find vendor, Vendor, No vendors found, Vendor no longer valid.
  • Default vendor for all company cards — DualEntry uses this label for the fallback vendor, unlike QuickBooks Online and Sage Intacct, which use Default vendor. The article uses DualEntry's label.

A live-UI pass confirmed the More features and Accounting row labels and the Organize section heading. The Vendors row and the Vendor field could not be exercised end to end, because the test account has no DualEntry connection — those labels come from the merged code.

Checks run on the docs branch: ./.github/scripts/createDocsRoutes.sh passed (docs/routes.yml already up to date) and npm run spell-changed passed with 0 issues. npx prettier --check could not run — the sandbox's parent .prettierrc.js fails to resolve @trivago/prettier-plugin-sort-imports, which is unrelated to these changes.

@Beamanator, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR Ready for review

@MelvinBot

Copy link
Copy Markdown
Contributor

🤖 Already done — no second PR created. The draft help site PR from the earlier request is still open and current: [No QA] Docs updates for E/A#101459 DualEntry vendor matching now generally available

Confirmed changes were required. This PR made DualEntry vendor matching generally available — hasVendorFeature now returns true for a configured DualEntry connection without the vendorMatching beta. The help site had a Manage Vendor Matching for <integration> article for QuickBooks Online, Sage Intacct, Xero, and Rillet, but none for DualEntry.

What the docs PR does:

  • Adds Manage Vendor Matching for DualEntry, modeled on the QuickBooks Online and Sage Intacct articles: indexed (no noindex / sitemap: false) and with no beta rollout disclaimer, since DualEntry is now generally available.
  • Adds one cross-link from Configure DualEntry to the new article.
  • Leaves the Xero and Rillet articles alone — both still require the vendorMatching beta after this PR, so Rillet keeps its "rolling out gradually" wording.

Current state: draft ✅, HelpDot label ✅, assigned to Beamanator ✅, PullerBear requested ✅, 2 files changed, mergeable. github-actions[bot] prefixed the title with [No QA] after creation — that's the standard docs-only automation, and the required title format is intact after the prefix.

Checks and UI label verification

CI on the docs PR: build, spellcheck, check, verify, CLA, and verifySignedCommits all pass. The only failing check is Check independent approval, which just needs a human reviewer and is unrelated to the content.

UI labels used in the article, taken from the merged source and confirmed against the live web app where reachable:

  • More features, Accounting, Vendors (in the Organize section), Find vendor, Vendor, No vendors found, Vendor no longer valid.
  • Default vendor for all company cards — DualEntry's own label for the fallback vendor, which differs from the Default vendor label used by QuickBooks Online and Sage Intacct. The article uses DualEntry's label.

A live-UI pass confirmed the More features and Accounting row labels and the Organize section heading. The Vendors row and the Vendor field could not be exercised end to end, because the test account has no DualEntry connection — those labels come from the merged code.

@Beamanator, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR Ready for review

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/luacmartins in version: 9.4.85-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 failure ❌

Bundle Size Analysis (Sentry):

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Cherry-picked to staging by https://github.com/Beamanator in version: 9.4.86-0 🚀

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

Beamanator added a commit that referenced this pull request Sep 18, 2026
…roduction-101459-35370059055-1

Revert "🍒 Cherry pick PR #101459 to production 🍒"
@MelvinBot

Copy link
Copy Markdown
Contributor

🤖 Still done — no new PR created. The draft help site PR from the earlier request is open and current: [No QA] Docs updates for E/A#101459 DualEntry vendor matching now generally available

Since my last reply, the ExpensifyHelp preview deployed. You can read the new article before approving:

Current state: draft ✅, HelpDot label ✅, assigned to Beamanator ✅, PullerBear requested ✅. Build, spellcheck, and verify all pass. The only red check is Check independent approval, which clears once a reviewer approves.

Nothing else in this PR needs docs. Xero and Rillet still require the vendorMatching beta, so their articles keep the rollout wording.

@Beamanator, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR Ready for review

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Cherry-picked to staging by https://github.com/Beamanator in version: 9.4.89-0 🚀

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

@MelvinBot

Copy link
Copy Markdown
Contributor

🤖 No new PR — the help site work for this PR is already done and passing CI.

Draft help site PR: [No QA] Docs updates for E/A#101459 DualEntry vendor matching now generally available — draft, HelpDot label applied, assigned to Beamanator.

New since my last comment: CI has finished on the docs PR. Everything passes, including spellcheck, build, and verify. The only red check is Check independent approval, which is expected while the PR is still a draft with no reviewer approval.

Recap of what it changes, so you don't have to scroll back:

  • Adds Manage Vendor Matching for DualEntry, modeled on the QuickBooks Online and Sage Intacct articles — indexed, with no beta rollout disclaimer, because this PR made DualEntry vendor matching generally available.
  • Adds one cross-link from Configure DualEntry to the new article.
  • Leaves the Xero and Rillet articles alone. Both still require the vendorMatching beta after this PR, so the Rillet article keeps its "rolling out gradually" wording.

@Beamanator, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR Ready for review

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/luacmartins in version: 9.4.89-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 failure ❌

Bundle Size Analysis (Sentry):

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Cherry-picked to staging by https://github.com/Beamanator in version: 9.4.90-0 🚀

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

@MelvinBot

Copy link
Copy Markdown
Contributor

🤖 Nothing new to do — the help site work is done, and here is the rendered preview.

Draft help site PR: [No QA] Docs updates for E/A#101459 DualEntry vendor matching now generally available — draft, HelpDot label applied, assigned to Beamanator, CI green.

The one thing I hadn't surfaced yet: OSBotify deployed a live preview, so you can read the new article as it will publish rather than reviewing raw markdown.

I'll stop re-reporting this on repeat triggers. If you want something changed in the article, reply with what to change and I'll push it to the docs PR.

@Beamanator, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR Ready for review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CP Production CP Staging marks PRs that have been CP'd to staging InternalQA This pull request required internal QA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants