[Payment due @bernhardoj] [No QA] Add apply to existing unsubmitted expenses toggle to personal expense rules - #100244
Conversation
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index c7e953e6..c9029321 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -3112,7 +3112,7 @@ ${amount} für ${merchant} – ${date}`,
merchantHint: 'Gib . ein, um eine Regel zu erstellen, die für alle Händler gilt',
addToReport: 'Zu einem Bericht mit dem Namen hinzufügen',
createReport: 'Bericht bei Bedarf erstellen',
- applyToExistingExpenses: 'Auf bestehende nicht eingereichte Ausgaben anwenden',
+ applyToExistingExpenses: 'Auf vorhandene nicht eingereichte Ausgaben anwenden',
confirmError: 'Gib ein Händlerunternehmen ein und nimm mindestens eine Aktualisierung vor',
confirmErrorMerchant: 'Bitte Händler eingeben',
confirmErrorUpdate: 'Bitte wende mindestens ein Update an',
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 301d98d2..ef68f81f 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -3166,7 +3166,7 @@ ${amount} για ${merchant} - ${date}`,
merchantHint: 'Πληκτρολογήστε . για να δημιουργήσετε έναν κανόνα που ισχύει για όλους τους εμπόρους',
addToReport: 'Προσθήκη σε αναφορά με όνομα',
createReport: 'Δημιουργήστε αναφορά αν χρειάζεται',
- applyToExistingExpenses: 'Εφαρμογή σε υφιστάμενες μη υποβληθείσες δαπάνες',
+ applyToExistingExpenses: 'Εφαρμογή σε υπάρχουσες μη υποβληθείσες δαπάνες',
confirmError: 'Εισαγάγετε τον έμπορο και εφαρμόστε τουλάχιστον μία ενημέρωση',
confirmErrorMerchant: 'Παρακαλούμε εισαγάγετε τον έμπορο',
confirmErrorUpdate: 'Παρακαλούμε εφαρμόστε τουλάχιστον μία ενημέρωση',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 5d282422..4755a68d 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -3020,7 +3020,7 @@ ${amount} para ${merchant} - ${date}`,
merchantHint: 'Escribe . para crear una regla que se aplique a todos los comercios',
addToReport: 'Añadir a un informe llamado',
createReport: 'Crear informe si es necesario',
- applyToExistingExpenses: 'Aplicar a gastos existentes no enviados',
+ applyToExistingExpenses: 'Aplicar a los gastos existentes no enviados',
confirmError: 'Introduce el comercio y aplica al menos una actualización',
confirmErrorMerchant: 'Por favor, introduce el comercio',
confirmErrorUpdate: 'Por favor, aplica al menos una actualización',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 71664c36..9f9b6491 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -3119,7 +3119,7 @@ ${amount} pour ${merchant} - ${date}`,
merchantHint: 'Tapez . pour créer une règle qui s’applique à tous les marchands',
addToReport: 'Ajouter à une note de frais nommée',
createReport: 'Créer une note de frais si nécessaire',
- applyToExistingExpenses: 'Appliquer aux dépenses non soumises existantes',
+ applyToExistingExpenses: 'Appliquer aux dépenses existantes non soumises',
confirmError: 'Saisissez un commerçant et appliquez au moins une mise à jour',
confirmErrorMerchant: 'Veuillez saisir le commerçant',
confirmErrorUpdate: 'Veuillez appliquer au moins une mise à jour',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index a3001596..963722c3 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -2995,7 +2995,7 @@ ${amount},商户:${merchant} - 日期:${date}`,
merchantHint: '输入 . 可创建适用于所有商家的规则',
addToReport: '添加到报表,名称为',
createReport: '如有必要则创建报表',
- applyToExistingExpenses: '应用到现有未提交的报销费用',
+ applyToExistingExpenses: '应用到现有未提交报销',
confirmError: '输入商户并应用至少一项更新',
confirmErrorMerchant: '请输入商户',
confirmErrorUpdate: '请至少应用一个更新',
Note You can apply these changes to your branch by copying the patch to your clipboard, then 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.
|
This comment has been minimized.
This comment has been minimized.
42e39c2 to
a4d678e
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
b592ec2 to
57daf9b
Compare
This comment has been minimized.
This comment has been minimized.
57daf9b to
6871001
Compare
This comment has been minimized.
This comment has been minimized.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Concierge reviewer checklist:
For more detailed instructions on completing this checklist, see How do I review a HelpDot PR as a Concierge Team member? cc @sakluger |
|
@bernhardoj @sakluger 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] |
| enabledWhenOffline | ||
| shouldRenderFooterAboveSubmit | ||
| footerContent={ | ||
| <View style={[styles.flexRow, styles.alignItemsCenter, styles.justifyContentBetween, styles.mb4]}> |
There was a problem hiding this comment.
❌ CONSISTENCY-3 (docs)
This footerContent block manually rebuilds a label-plus-Switch toggle row (a <View> with flexRow/justifyContentBetween, a <Text> label, and a <Switch> with a matching accessibilityLabel). That exact pattern is already provided by ToggleSettingOptionRow, which is imported in this file and used just above (lines 271-282) for the createReport toggle. Reimplementing it inline duplicates the toggle-row markup, styling, and accessibility wiring that already exists in a shared component.
Reuse the existing component instead of hand-rolling the row:
footerContent={
<ToggleSettingOptionRow
isActive={shouldUpdateMatchingTransactions}
onToggle={setShouldUpdateMatchingTransactions}
switchAccessibilityLabel={translate('expenseRulesPage.addRule.applyToExistingExpenses')}
title={translate('expenseRulesPage.addRule.applyToExistingExpenses')}
wrapperStyle={styles.mb4}
/>
}Reviewed at: 6871001 | Please rate this suggestion with 👍 or 👎 to help us improve! Reactions are used to monitor reviewer efficiency.
HelpDot Documentation ReviewOverall AssessmentThis PR documents a new Apply to existing unsubmitted expenses toggle for Personal Expense Rules. The only documentation file changed is Scores Summary
Key Findings
Recommendations
Files Reviewed
Note: Detailed line-by-line feedback has been provided as inline comments. |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safariweb.mp4 |
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
A preview of your ExpensifyHelp changes have been deployed to https://916f7bfa.helpdot.pages.dev ⚡️ Updated articles: |
|
🎯 @bernhardoj, thanks for reviewing and testing this PR! 🎉 A payment issue will be created for your review once this PR is deployed to production. If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created. |
sakluger
left a comment
There was a problem hiding this comment.
Help site updates look good to me. 👍
|
🚧 Beamanator has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/Beamanator in version: 9.4.82-0 🚀
|
|
🤖 Help site review: yes, one follow-up change was required. Draft PR: Docs updates for E/A#100244 Apply to existing unsubmitted expenses toggle What this PR already covered
What was missingChanging the copy to But The draft PR fixes both lines and adds that already-submitted expenses are never updated by a rule. One thing I did not changeThe Account settings menu item and page heading render as Expense rules (lowercase I also left @NicolasBonet, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
🚀 Deployed to staging by https://github.com/Beamanator in version: 9.4.86-0 🚀
|
|
🚀 Deployed to staging by https://github.com/Beamanator in version: 9.4.89-0 🚀
|
|
🚀 Deployed to production by https://github.com/luacmartins in version: 9.4.89-0 🚀
Bundle Size Analysis (Sentry): |
|
🤖 Payment issue created: #101622 |

Explanation of Change
SetPersonalExpenseRulescommand instead of the genericSetNameValuePair, which can't carry the flag. The payload keeps the same stringified rules array and adds the flag plus the created/edited rule for the backend job.applyToExistingExpensestranslation key, with copy updated to match the merchant-rules wording.Fixed Issues
$ https://github.com/Expensify/Expensify/issues/674774
PROPOSAL:
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
CleanShot.2026-09-03.at.10.33.28.AM.mp4