Add Certinia company selector#93407
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 ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@ChavdaSachin @thelullabyy One of you needs to 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] |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c7992594db
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-06-16.at.19.38.46.movScreen.Recording.2026-06-17.at.18.47.07.mov |
| certinia: { | ||
| title: 'Certinia', | ||
| titleFFA: 'Certinia (FFA)', | ||
| titlePSA: 'Certinia (PSA)', |
There was a problem hiding this comment.
The card title for SRP connections (hasPSA && !hasPSAOnly) changes from Certinia (FFA) to Certinia (PSA) with this PR. Since SRP has both modules active, can you confirm (PSA) is the intended label per the design doc? @ShridharGoel
There was a problem hiding this comment.
Yes, from the design doc:
Expensify treats it as a PSA connection with one extra export setting (Company ID).
|
Looks like we missed several copies according to the design doc @ShridharGoel
|
Looks like we missed this point as well @ShridharGoel |
|
@thelullabyy This PR is for the company selector, hence those strings are not added here. They will be present in the PRs that use them. |
|
@ShridharGoel Conflicts |
# Conflicts: # src/languages/de.ts # src/languages/en.ts # src/languages/es.ts # src/languages/fr.ts # src/languages/it.ts # src/languages/ja.ts # src/languages/nl.ts # src/languages/pl.ts # src/languages/pt-BR.ts # src/languages/zh-hans.ts # src/pages/workspace/accounting/certinia/CertiniaCompanySelectorPage.tsx # src/pages/workspace/accounting/certinia/export/CertiniaExportPage.tsx # src/pages/workspace/accounting/certinia/export/CertiniaReportExportStatusPage.tsx # src/pages/workspace/accounting/certinia/utils.ts # src/pages/workspace/accounting/utils.tsx
|
🚧 @yuwenmemon 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! 🧪🧪
|
|
@ShridharGoel @yuwenmemon
|
|
🚀 Deployed to staging by https://github.com/yuwenmemon in version: 9.4.18-0 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Deployed to production by https://github.com/blimpich in version: 9.4.18-2 🚀
|

Explanation of Change
Adds PSA-aware Certinia labeling and the SRP company selector entry point.
When a Certinia connection has PSA enabled, the connected card now shows
Certinia (PSA). For SRP connections, where PSA is enabled andhasPSAOnly === false, the Accounting page now shows a top-level Company row. Tapping it opens a company selector populated from synced Certinia companies and updates the selected company with the existing offline feedback pattern.Fixed Issues
$ #89442
PROPOSAL:
Tests
hasPSAenabled.Certinia (PSA).hasPSAOnly === false.Offline tests
QA Steps
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
MacOS: Chrome / Safari
Screen.Recording.2026-06-16.at.2.58.23.AM.mov