fix: address bulk duplicate expense follow-ups #87697
fix: address bulk duplicate expense follow-ups #87697Krishna2323 wants to merge 13 commits intoExpensify:mainfrom
Conversation
…ions Signed-off-by: krishna2323 <belivethatkg@gmail.com>
…ns to prevent double report creation offline Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
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 |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
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.
|
|
@codex review |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
…rations Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. Nice work! ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
Signed-off-by: krishna2323 <belivethatkg@gmail.com>
|
Typecheck is failign |
JS00001
left a comment
There was a problem hiding this comment.
Code lgtm, lets wait on those copy changes though
|
That's here for the breadcrumbs #87604 (comment) |
|
Confirming spanish translation here: https://expensify.slack.com/archives/C01GTK53T8Q/p1776166460377989 |
🦜 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 7f1c0575..7a7ca2d7 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -1676,6 +1676,7 @@ const translations: TranslationDeepObject<typeof en> = {
prompt: 'Aktivieren Sie die Steuerverfolgung im Workspace, um die Ausgabendetails zu bearbeiten oder die Steuer aus dieser Ausgabe zu löschen.',
confirmText: 'Steuer löschen',
},
+ bulkDuplicateLimit: `Sie können bis zu ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} Ausgaben gleichzeitig duplizieren. Bitte wählen Sie weniger Ausgaben aus und versuchen Sie es erneut.`,
},
transactionMerge: {
listPage: {
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index c28b5588..0507a5dd 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1680,6 +1680,7 @@ const translations: TranslationDeepObject<typeof en> = {
prompt: 'Activez le suivi des taxes dans l’espace de travail pour modifier les détails de la dépense ou supprimer la taxe de cette dépense.',
confirmText: 'Supprimer la taxe',
},
+ bulkDuplicateLimit: `Vous pouvez dupliquer jusqu’à ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} dépenses à la fois. Veuillez sélectionner moins de dépenses et réessayer.`,
},
transactionMerge: {
listPage: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 625312cd..a32598f0 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1673,6 +1673,7 @@ const translations: TranslationDeepObject<typeof en> = {
prompt: 'Abilita il monitoraggio delle imposte nello spazio di lavoro per modificare i dettagli della spesa o eliminare l’imposta da questa spesa.',
confirmText: 'Elimina imposta',
},
+ bulkDuplicateLimit: `Puoi duplicare fino a ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} spese alla volta. Seleziona meno spese e riprova.`,
},
transactionMerge: {
listPage: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 51f79742..ab73b1eb 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1653,6 +1653,7 @@ const translations: TranslationDeepObject<typeof en> = {
prompt: '経費の詳細を編集したり、この経費から税金を削除したりするには、ワークスペースで税金の追跡を有効にしてください。',
confirmText: '税を削除',
},
+ bulkDuplicateLimit: `一度に複製できる経費は最大で ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} 件です。経費の数を減らして、もう一度お試しください。`,
},
transactionMerge: {
listPage: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index cf4702d1..82a67026 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1669,6 +1669,7 @@ const translations: TranslationDeepObject<typeof en> = {
prompt: 'Schakel belastingregistratie in voor de workspace om de onkostendetails te bewerken of de belasting uit deze onkostendeclaratie te verwijderen.',
confirmText: 'Belasting verwijderen',
},
+ bulkDuplicateLimit: `Je kunt maximaal ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} uitgaven tegelijk dupliceren. Selecteer minder uitgaven en probeer het opnieuw.`,
},
transactionMerge: {
listPage: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 1acd934d..4dd2deda 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1669,6 +1669,7 @@ const translations: TranslationDeepObject<typeof en> = {
prompt: 'Włącz śledzenie podatku w przestrzeni roboczej, aby edytować szczegóły wydatku lub usunąć podatek z tego wydatku.',
confirmText: 'Usuń podatek',
},
+ bulkDuplicateLimit: `Możesz jednocześnie zduplikować maksymalnie ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} wydatków. Wybierz mniej wydatków i spróbuj ponownie.`,
},
transactionMerge: {
listPage: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 50fe6cd3..3687f5c9 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -1666,6 +1666,7 @@ const translations: TranslationDeepObject<typeof en> = {
prompt: 'Ative o acompanhamento de impostos no espaço de trabalho para editar os detalhes da despesa ou excluir o imposto desta despesa.',
confirmText: 'Excluir imposto',
},
+ bulkDuplicateLimit: `Você pode duplicar até ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} despesas por vez. Selecione menos despesas e tente novamente.`,
},
transactionMerge: {
listPage: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index b19317e0..563486fe 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -1617,6 +1617,7 @@ const translations: TranslationDeepObject<typeof en> = {
failedToApproveViaDEW: (reason: string) => `批准失败。${reason}`,
cannotDuplicateDistanceExpense: '你无法在不同工作区之间复制里程报销,因为各个工作区的费率可能不同。',
taxDisabledAlert: {title: '税费已禁用', prompt: '请在工作区中启用税费跟踪,以便编辑此报销的详细信息或从该报销中删除税费。', confirmText: '删除税费'},
+ bulkDuplicateLimit: `您一次最多可以复制 ${CONST.SEARCH.BULK_DUPLICATE_LIMIT} 笔报销。请减少选择的报销数量后重试。`,
},
transactionMerge: {
listPage: {
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Explanation of Change
Fixed Issues
$ #87609
$ #87598
$ #87597
$ #87663
$ #87634
$ #87604
PROPOSAL:
Tests
#87609 — Selection mode consistency after bulk duplicate
Precondition: Account has at least one workspace.
#87598 — Offline bulk duplicate creates only one report
Precondition: Account has at least one workspace with delayed submissions and approvals enabled.
#87597 — Unreported per diem cannot be bulk duplicated
Precondition: Workspace has per diem rates configured.
#87663 — Unreported distance expense cannot be bulk duplicated
Precondition: Account has Self DM and a workspace.
#87634 — Offline bulk duplicate shows correct total for 3+ expenses
Precondition: Account has at least one workspace with delayed submissions and approvals enabled.
#87604 — Bulk duplicate capped at 50 expenses
Precondition: Account has more than 50 expenses.
Repeat #87604 on report details page
Offline tests
QA Steps
Same as tests
Verify that no errors appear in the JS console
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand 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: mWeb Chrome
iOS: Native
fix_87609_selection_mode_inconsistency.mp4
iOS: mWeb Safari
MacOS: Chrome / Safari
fix_87597_unreported_distance.mp4
fix_87597_unreported_per_diem.mp4
fix_87598_two_previews.mp4
fix_87604_cap_50_expenses_dupe.mp4
fix_87634_incorrect_total_2.mp4
fix_87634_incorrect_total.mp4