[Payment due @rojiphil] Deleted transactions on search#85818
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 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 49b30a513d
ℹ️ 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".
src/components/SelectionListWithSections/Search/TransactionListItem.tsx
Outdated
Show resolved
Hide resolved
|
@luacmartins can you run translations script, please 🙏 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 034fb9b7f0
ℹ️ 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".
|
Running the translation script. We have a few failing checks |
🦜 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 b622da7e..6c151fde 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -1593,6 +1593,7 @@ const translations: TranslationDeepObject<typeof en> = {
failedToApproveViaDEW: (reason: string) => `Genehmigung fehlgeschlagen. ${reason}`,
cannotDuplicateDistanceExpense:
'Sie können Entfernungsausgaben nicht über mehrere Arbeitsbereiche hinweg duplizieren, da sich die Sätze zwischen den Arbeitsbereichen unterscheiden können.',
+ deleted: 'Gelöscht',
},
transactionMerge: {
listPage: {
@@ -7284,6 +7285,7 @@ Fordern Sie Spesendetails wie Belege und Beschreibungen an, legen Sie Limits und
unhold: 'Zurückhalten aufheben',
reject: 'Ablehnen',
noOptionsAvailable: 'Für die ausgewählte Ausgabengruppe sind keine Optionen verfügbar.',
+ undelete: 'Wiederherstellen',
},
filtersHeader: 'Filter',
filters: {
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index ea7ca3d2..382fb5e0 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1598,6 +1598,7 @@ const translations: TranslationDeepObject<typeof en> = {
`impossible d’approuver via les <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">règles de l’espace de travail</a>. ${reason}`,
failedToApproveViaDEW: (reason: string) => `échec de l’approbation. ${reason}`,
cannotDuplicateDistanceExpense: 'Vous ne pouvez pas dupliquer des dépenses de distance entre espaces de travail, car les taux peuvent différer d’un espace de travail à l’autre.',
+ deleted: 'Supprimé',
},
transactionMerge: {
listPage: {
@@ -7308,6 +7309,7 @@ Rendez obligatoires des informations de dépense comme les reçus et les descrip
unhold: 'Supprimer la mise en attente',
reject: 'Rejeter',
noOptionsAvailable: 'Aucune option n’est disponible pour le groupe de dépenses sélectionné.',
+ undelete: 'Restaurer',
},
filtersHeader: 'Filtres',
filters: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index e101563e..f70142c6 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1591,6 +1591,7 @@ const translations: TranslationDeepObject<typeof en> = {
`approvazione non riuscita tramite le <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">regole dello spazio di lavoro</a>. ${reason}`,
failedToApproveViaDEW: (reason: string) => `approvazione non riuscita. ${reason}`,
cannotDuplicateDistanceExpense: 'Non puoi duplicare le spese chilometriche tra diversi spazi di lavoro perché le tariffe potrebbero essere diverse.',
+ deleted: 'Eliminato',
},
transactionMerge: {
listPage: {
@@ -7272,6 +7273,7 @@ Richiedi dettagli sulle spese come ricevute e descrizioni, imposta limiti e valo
unhold: 'Rimuovi blocco',
reject: 'Rifiuta',
noOptionsAvailable: 'Nessuna opzione disponibile per il gruppo di spese selezionato.',
+ undelete: 'Ripristina',
},
filtersHeader: 'Filtri',
filters: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 33c0e0c8..ba77f8cd 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1580,6 +1580,7 @@ const translations: TranslationDeepObject<typeof en> = {
failedToAutoApproveViaDEW: (reason: string) => `<a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">ワークスペースルール</a>で承認に失敗しました。${reason}`,
failedToApproveViaDEW: (reason: string) => `承認に失敗しました。${reason}`,
cannotDuplicateDistanceExpense: '距離精算はワークスペースごとにレートが異なる可能性があるため、ワークスペース間で複製することはできません。',
+ deleted: '削除済み',
},
transactionMerge: {
listPage: {
@@ -7195,6 +7196,7 @@ ${reportName}
unhold: '保留を解除',
reject: '却下',
noOptionsAvailable: '選択した経費グループには利用できるオプションがありません。',
+ undelete: '削除を取り消す',
},
filtersHeader: 'フィルター',
filters: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index afc5fcd8..de35df6f 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1587,6 +1587,7 @@ const translations: TranslationDeepObject<typeof en> = {
failedToAutoApproveViaDEW: (reason: string) => `goedkeuren via <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">werkruimteregels</a> is mislukt. ${reason}`,
failedToApproveViaDEW: (reason: string) => `goedkeuren mislukt. ${reason}`,
cannotDuplicateDistanceExpense: 'Je kunt afstandsvergoedingen niet dupliceren tussen werkruimtes, omdat de tarieven per werkruimte kunnen verschillen.',
+ deleted: 'Verwijderd',
},
transactionMerge: {
listPage: {
@@ -7250,6 +7251,7 @@ Vereis onkostendetails zoals bonnen en beschrijvingen, stel limieten en standaar
unhold: 'Blokkering opheffen',
reject: 'Afwijzen',
noOptionsAvailable: 'Geen opties beschikbaar voor de geselecteerde groep onkosten.',
+ undelete: 'Terugzetten',
},
filtersHeader: 'Filters',
filters: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index f599403f..4a66cf9d 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1588,6 +1588,7 @@ const translations: TranslationDeepObject<typeof en> = {
`nie udało się zatwierdzić przez <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">zasady w przestrzeni roboczej</a>. ${reason}`,
failedToApproveViaDEW: (reason: string) => `nie udało się zaakceptować. ${reason}`,
cannotDuplicateDistanceExpense: 'Nie możesz duplikować wydatków za przejazdy między przestrzeniami roboczymi, ponieważ stawki mogą się różnić między poszczególnymi przestrzeniami.',
+ deleted: 'Usunięto',
},
transactionMerge: {
listPage: {
@@ -7239,6 +7240,7 @@ Wymagaj szczegółów wydatków, takich jak paragony i opisy, ustawiaj limity i
unhold: 'Usuń blokadę',
reject: 'Odrzuć',
noOptionsAvailable: 'Brak opcji dostępnych dla wybranej grupy wydatków.',
+ undelete: 'Cofnij usunięcie',
},
filtersHeader: 'Filtry',
filters: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 37a71eca..4391f011 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -1584,6 +1584,7 @@ const translations: TranslationDeepObject<typeof en> = {
failedToAutoApproveViaDEW: (reason: string) => `falha ao aprovar pelas <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">regras do workspace</a>. ${reason}`,
failedToApproveViaDEW: (reason: string) => `falha ao aprovar. ${reason}`,
cannotDuplicateDistanceExpense: 'Você não pode duplicar despesas de distância entre espaços de trabalho porque as tarifas podem ser diferentes entre eles.',
+ deleted: 'Excluído',
},
transactionMerge: {
listPage: {
@@ -7242,6 +7243,7 @@ Exija dados de despesas como recibos e descrições, defina limites e padrões e
unhold: 'Remover bloqueio',
reject: 'Rejeitar',
noOptionsAvailable: 'Nenhuma opção disponível para o grupo de despesas selecionado.',
+ undelete: 'Restaurar',
},
filtersHeader: 'Filtros',
filters: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 8f83764a..84963c4b 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -1554,6 +1554,7 @@ const translations: TranslationDeepObject<typeof en> = {
failedToAutoApproveViaDEW: (reason: string) => `未能通过<a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">工作区规则</a>批准。${reason}`,
failedToApproveViaDEW: (reason: string) => `批准失败。${reason}`,
cannotDuplicateDistanceExpense: '你无法在不同工作区之间复制里程报销,因为各个工作区的费率可能不同。',
+ deleted: '已删除',
},
transactionMerge: {
listPage: {
@@ -7073,6 +7074,7 @@ ${reportName}
unhold: '解除保留',
reject: '拒绝',
noOptionsAvailable: '所选报销的费用组没有可用选项。',
+ undelete: '取消删除',
},
filtersHeader: '筛选器',
filters: {
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
🚧 @trjExpensify has triggered a test Expensify/App build. You can view the workflow run here. |
|
Deploy Blocker #86780 was identified to be related to this PR. |
|
Deploy Blocker #86782 was identified to be related to this PR. |
|
Deploy Blocker #86783 was identified to be related to this PR. |
|
Deploy Blocker #86788 was identified to be related to this PR. |
|
Deploy Blocker #86790 was identified to be related to this PR. |
|
Deploy Blocker #86793 was identified to be related to this PR. |
|
Deploy Blocker ##86796 was identified to be related to this PR. |
|
Deploy Blocker ##86799 was identified to be related to this PR. |
|
Deploy Blocker #86835 was identified to be related to this PR. |
|
Deploy Blocker #86850 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/jasperhuangg in version: 9.3.51-10 🚀
|
|
🚀 Deployed to staging by https://github.com/luacmartins in version: 9.3.52-0 🚀
Bundle Size Analysis (Sentry): |
|
🤖 Help site review complete — changes are required. I reviewed the PR changes (Deleted status filter, Undelete bulk action, Deleted status badge) against the help site articles under Required changes1. -- `status:` – unreported, draft, outstanding, approved, paid, done
+- `status:` – unreported, draft, outstanding, approved, paid, done, deleted2. +## How to find and undelete expenses
+
+Deleted expenses are not permanently removed. You can find them using the **Deleted** status filter and restore them.
+
+1. In the navigation tabs (on the left on web, on the bottom on mobile), select **Reports** > **Expenses**.
+2. Select the **Deleted** status filter.
+3. Select the expenses you want to restore.
+4. Choose **Undelete** from the bulk action menu.
+
+The restored expenses are moved back to your personal space as unreported expenses.3. -- **Expenses:** can be filtered by `Date`, `Merchant`, `Category`, `Tag`, `Amount`, `Reimbursable`, `Billable`, `Status` (e.g. Unreported)
+- **Expenses:** can be filtered by `Date`, `Merchant`, `Category`, `Tag`, `Amount`, `Reimbursable`, `Billable`, `Status` (e.g. Unreported, Deleted)4. -The expense is removed from the report and deleted entirely.
+The expense is removed from the report and given a **Deleted** status. You can find deleted expenses by filtering by the **Deleted** status on the **Expenses** page and restore them using the **Undelete** bulk action.
|
|
🚀 Deployed to production by https://github.com/roryabraham in version: 9.3.52-9 🚀
|
|
🤖 Payment issue created: #87188 |
@luacmartins
Explanation of Change
This PR adds support deleted transactions on search.
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/608639
PROPOSAL: N/A
Tests
Deletedstatus fileterOffline tests
QA Steps
Deletedstatus fileterPR 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
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari