Update transaction date update flow - #80184
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!
|
|
Being held for #80161 (comment) |
|
@DylanDylann 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] |
|
@DylanDylann Please ignore this PR. @ikevin127 This is ready for review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8fcc30f72c
ℹ️ 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/Videosweb.mov |
🦜 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 f93fced6..67462df5 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -4866,6 +4866,8 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
assign: 'Zuweisen',
assignCardFailedError: 'Kartenzuweisung fehlgeschlagen.',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription:
+ 'Wählen Sie ein neues Startdatum für Transaktionen. Wir synchronisieren alle Transaktionen ab diesem Datum, ausgenommen diejenigen, die wir bereits importiert haben.',
},
expensifyCard: {
issueAndManageCards: 'Expensify Cards ausstellen und verwalten',
@@ -5110,7 +5112,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
lastUpdated: 'Zuletzt aktualisiert',
transactionStartDate: 'Transaktionsanfangsdatum',
changeTransactionStartDateWarning:
- 'Durch das Ändern des Startdatums werden alle nicht gemeldeten/entworfenen Berichtstransaktionen entfernt und alle Transaktionen ab dem neuen Startdatum erneut importiert. Dies kann zu doppelten Transaktionen führen.',
+ 'Das Ändern des Startdatums entfernt alle nicht gemeldeten/Entwurfs-Berichtstransaktionen und importiert alle Transaktionen ab dem neuen Startdatum erneut. Dies kann zu doppelten Transaktionen führen.',
updateCard: 'Karte aktualisieren',
unassignCard: 'Karte zuweisen aufheben',
unassign: 'Zuweisung aufheben',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 56fb1f77..2b072fe8 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -2392,7 +2392,7 @@ ${amount} pour ${merchant} - ${date}`,
comment: (value: string) => `Modifier la description en « ${value} »`,
merchant: (value: string) => `Mettre à jour le marchand en « ${value} »`,
reimbursable: (value: boolean) => `Mettre à jour la dépense ${value ? 'remboursable' : 'non remboursable'}`,
- report: (value: string) => `Ajouter un rapport nommé « ${value} »`,
+ report: (value: string) => `Ajouter un rapport nommé « ${value} »`,
tag: (value: string) => `Mettre à jour le tag sur « ${value} »`,
tax: (value: string) => `Mettre à jour le taux de taxe à ${value}`,
},
@@ -4872,6 +4872,8 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
assign: 'Assigner',
assignCardFailedError: 'L’attribution de la carte a échoué.',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription:
+ 'Choisissez une nouvelle date de début des transactions. Nous synchroniserons toutes les transactions à partir de cette date, en excluant celles que nous avons déjà importées.',
},
expensifyCard: {
issueAndManageCards: 'Émettre et gérer vos cartes Expensify',
@@ -5117,7 +5119,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
lastUpdated: 'Dernière mise à jour',
transactionStartDate: 'Date de début de la transaction',
changeTransactionStartDateWarning:
- 'La modification de la date de début supprimera toutes les transactions non déclarées/provisoires et réimportera toutes les transactions à partir de la nouvelle date de début. Cela peut entraîner des transactions en double.',
+ 'La modification de la date de début supprimera toutes les transactions de rapports non soumis/en brouillon et réimportera toutes les transactions à partir de la nouvelle date de début. Cela peut entraîner des transactions en double.',
updateCard: 'Mettre à jour la carte',
unassignCard: 'Désattribuer la carte',
unassign: 'Désassigner',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index bfd2972b..8346438a 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -2385,7 +2385,7 @@ ${amount} per ${merchant} - ${date}`,
comment: (value: string) => `Modifica la descrizione in "${value}"`,
merchant: (value: string) => `Aggiorna esercente in "${value}"`,
reimbursable: (value: boolean) => `Aggiorna la spesa ${value ? 'rimborsabile' : 'non rimborsabile'}`,
- report: (value: string) => `Aggiungi un report chiamato "${value}"`,
+ report: (value: string) => `Aggiungi un rapporto chiamato “${value}”`,
tag: (value: string) => `Aggiorna etichetta in "${value}"`,
tax: (value: string) => `Aggiorna l’aliquota fiscale a ${value}`,
},
@@ -4852,6 +4852,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
assign: 'Assegna',
assignCardFailedError: 'Assegnazione della carta non riuscita.',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription: 'Scegli una nuova data di inizio per le transazioni. Sincronizzeremo tutte le transazioni da quella data in poi, escludendo quelle già importate.',
},
expensifyCard: {
issueAndManageCards: 'Emetti e gestisci le tue Expensify Card',
@@ -5097,7 +5098,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
lastUpdated: 'Ultimo aggiornamento',
transactionStartDate: 'Data di inizio transazione',
changeTransactionStartDateWarning:
- 'Modificando la data di inizio verranno eliminate tutte le transazioni non segnalate/bozze di segnalazione e verranno reimportate tutte le transazioni dalla nuova data di inizio. Ciò può causare transazioni duplicate.',
+ 'La modifica della data di inizio rimuoverà tutte le transazioni non rendicontate/in bozza e reimporterà tutte le transazioni a partire dalla nuova data di inizio. Questo può causare transazioni duplicate.',
updateCard: 'Aggiorna carta',
unassignCard: 'Rimuovi assegnazione carta',
unassign: 'Rimuovi assegnazione',
@@ -5505,7 +5506,7 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
giveItNameInstruction: 'Rendila abbastanza unica da poterla distinguere dalle altre carte. Casi d’uso specifici sono ancora meglio!',
cardName: 'Nome carta',
letsDoubleCheck: 'Controlliamo ancora una volta che tutto sia corretto.',
- willBeReady: "Questa carta sarà subito pronta all'uso.",
+ willBeReady: 'Questa carta sarà pronta per l’uso immediatamente.',
cardholder: 'Titolare della carta',
cardType: 'Tipo di carta',
limit: 'Limite',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index ce1a0f20..f0d06395 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -2374,7 +2374,7 @@ ${merchant} への ${amount}(${date})`,
comment: (value: string) => `説明を「${value}」に変更`,
merchant: (value: string) => `支払先を「${value}」に更新`,
reimbursable: (value: boolean) => `経費 ${value ? '精算対象' : '非精算'} を更新`,
- report: (value: string) => `レポート名を「${value}」として追加`,
+ report: (value: string) => `レポート名を「${value}」にして追加`,
tag: (value: string) => `タグを「${value}」に更新`,
tax: (value: string) => `税率を${value}に更新`,
},
@@ -4825,6 +4825,7 @@ _より詳しい手順については、[ヘルプサイトをご覧ください
assign: '割り当て',
assignCardFailedError: 'カードの割り当てに失敗しました。',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription: '新しい取引の開始日を選択してください。その日以降のすべての取引を、すでに取り込んだものを除いて同期します。',
},
expensifyCard: {
issueAndManageCards: 'Expensify カードの発行と管理',
@@ -5063,7 +5064,7 @@ _より詳しい手順については、[ヘルプサイトをご覧ください
lastUpdated: '最終更新',
transactionStartDate: '取引開始日',
changeTransactionStartDateWarning:
- '開始日を変更すると、未報告/下書きのレポート取引がすべて削除され、新しい開始日以降の取引がすべて再インポートされます。これにより取引の重複が発生する可能性があります。',
+ '開始日を変更すると、未申報/下書きレポートに含まれるすべての取引が削除され、新しい開始日以降のすべての取引が再インポートされます。これにより、重複した取引が発生する可能性があります。',
updateCard: 'カードを更新',
unassignCard: 'カードの割り当てを解除',
unassign: '割り当て解除',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index d499f798..1fa7d272 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -2383,7 +2383,7 @@ ${amount} voor ${merchant} - ${date}`,
comment: (value: string) => `Beschrijving wijzigen in "${value}"`,
merchant: (value: string) => `Handelaar bijwerken naar "${value}"`,
reimbursable: (value: boolean) => `Uitgave ${value ? 'terugbetaalbaar' : 'niet-vergoedbaar'} bijwerken`,
- report: (value: string) => `Een rapport met de naam "${value}" toevoegen`,
+ report: (value: string) => `Voeg een rapport toe met de naam '${value}'`,
tag: (value: string) => `Tag bijwerken naar "${value}"`,
tax: (value: string) => `Belastingtarief bijwerken naar ${value}`,
},
@@ -4848,6 +4848,8 @@ _Voor gedetailleerdere instructies, [bezoek onze helpsite](${CONST.NETSUITE_IMPO
assign: 'Toewijzen',
assignCardFailedError: 'Toewijzing van kaart mislukt.',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription:
+ 'Kies een nieuwe startdatum voor transacties. We synchroniseren alle transacties vanaf die datum, met uitzondering van de transacties die we al hebben geïmporteerd.',
},
expensifyCard: {
issueAndManageCards: 'Uw Expensify Cards uitgeven en beheren',
@@ -5087,7 +5089,7 @@ _Voor gedetailleerdere instructies, [bezoek onze helpsite](${CONST.NETSUITE_IMPO
lastUpdated: 'Laatst bijgewerkt',
transactionStartDate: 'Startdatum transactie',
changeTransactionStartDateWarning:
- 'Als u de startdatum wijzigt, worden alle niet-gerapporteerde/conceptrapporttransacties verwijderd en worden alle transacties vanaf de nieuwe startdatum opnieuw geïmporteerd. Dit kan dubbele transacties veroorzaken.',
+ 'Het wijzigen van de startdatum verwijdert alle niet-gerapporteerde/conceptrapporttransacties en importeert alle transacties vanaf de nieuwe startdatum opnieuw. Dit kan dubbele transacties veroorzaken.',
updateCard: 'Kaart bijwerken',
unassignCard: 'Kaart ontkoppelen',
unassign: 'Toewijzen verwijderen',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index f92c16c6..5c2741ed 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -4837,6 +4837,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
assign: 'Przypisz',
assignCardFailedError: 'Przypisanie karty nie powiodło się.',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription: 'Wybierz nową datę początkową transakcji. Zsynchronizujemy wszystkie transakcje od tej daty, z wyłączeniem tych, które już zostały zaimportowane.',
},
expensifyCard: {
issueAndManageCards: 'Wydawaj i zarządzaj swoimi kartami Expensify',
@@ -5079,7 +5080,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
lastUpdated: 'Ostatnia aktualizacja',
transactionStartDate: 'Data początkowa transakcji',
changeTransactionStartDateWarning:
- 'Zmiana daty rozpoczęcia spowoduje usunięcie wszystkich nieraportowanych lub transakcji w wersji roboczej i ponowne zaimportowanie wszystkich transakcji od nowej daty rozpoczęcia. Może to spowodować duplikaty transakcji.',
+ 'Zmiana daty początkowej usunie wszystkie niezgłoszone transakcje/wersje robocze raportów i ponownie zaimportuje wszystkie transakcje od nowej daty początkowej. Może to spowodować zduplikowane transakcje.',
updateCard: 'Zaktualizuj kartę',
unassignCard: 'Cofnij przypisanie karty',
unassign: 'Cofnij przypisanie',
@@ -5487,7 +5488,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
giveItNameInstruction: 'Uczyń go na tyle unikalnym, aby dało się go odróżnić od innych kart. Jeszcze lepiej, jeśli opisujesz konkretne przypadki użycia!',
cardName: 'Nazwa karty',
letsDoubleCheck: 'Sprawdźmy jeszcze raz, czy wszystko wygląda poprawnie.',
- willBeReady: 'Ta karta będzie gotowa do użycia od razu.',
+ willBeReady: 'Ta karta będzie gotowa do użycia natychmiast.',
cardholder: 'Posiadacz karty',
cardType: 'Typ karty',
limit: 'Limit',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index ef5a3f80..742ec730 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -2376,7 +2376,7 @@ ${amount} para ${merchant} - ${date}`,
comment: (value: string) => `Alterar descrição para "${value}"`,
merchant: (value: string) => `Atualizar comerciante para "${value}"`,
reimbursable: (value: boolean) => `Atualizar despesa ${value ? 'reembolsável' : 'não reembolsável'}`,
- report: (value: string) => `Adicione um relatório chamado "${value}"`,
+ report: (value: string) => `Adicionar um relatório chamado "${value}"`,
tag: (value: string) => `Atualizar etiqueta para "${value}"`,
tax: (value: string) => `Atualizar taxa de imposto para ${value}`,
},
@@ -4837,6 +4837,7 @@ _Para instruções mais detalhadas, [visite nosso site de ajuda](${CONST.NETSUIT
assign: 'Atribuir',
assignCardFailedError: 'Falha na atribuição do cartão.',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription: 'Escolha uma nova data de início das transações. Vamos sincronizar todas as transações a partir dessa data, excluindo aquelas que já importamos.',
},
expensifyCard: {
issueAndManageCards: 'Emitir e gerenciar seus Cartões Expensify',
@@ -5080,7 +5081,7 @@ _Para instruções mais detalhadas, [visite nosso site de ajuda](${CONST.NETSUIT
lastUpdated: 'Última atualização',
transactionStartDate: 'Data de início da transação',
changeTransactionStartDateWarning:
- 'Alterar a data de início removerá todas as transações não reportadas ou em rascunho e reimportará todas as transações a partir da nova data de início. Isso pode causar transações duplicadas.',
+ 'Alterar a data de início removerá todas as transações não informadas/em rascunho e importará novamente todas as transações a partir da nova data de início. Isso pode causar transações duplicadas.',
updateCard: 'Atualizar cartão',
unassignCard: 'Desatribuir cartão',
unassign: 'Desatribuir',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index b8d1d06c..39dcfadb 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -2342,7 +2342,7 @@ ${amount},商户:${merchant} - ${date}`,
comment: (value: string) => `将描述更改为 “${value}”`,
merchant: (value: string) => `将商户更新为“${value}”`,
reimbursable: (value: boolean) => `更新报销 ${value ? '可报销' : '不予报销'}`,
- report: (value: string) => `添加一个名为“${value}”的报告`,
+ report: (value: string) => `添加名为“${value}”的报表`,
tag: (value: string) => `将标签更新为“${value}”`,
tax: (value: string) => `将税率更新为 ${value}`,
},
@@ -4751,6 +4751,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
assign: '分配',
assignCardFailedError: '卡片分配失败。',
cardAlreadyAssignedError: 'This card is already assigned to a user in another workspace.',
+ editStartDateDescription: '选择一个新的交易起始日期。我们将从该日期起同步所有交易,但不包括已经导入的交易。',
},
expensifyCard: {
issueAndManageCards: '发放和管理您的 Expensify 卡',
@@ -4980,7 +4981,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
`选择要导出交易记录的 ${integration} 账户。请选择不同的<a href="${exportPageLink}">导出选项</a>以更改可用账户。`,
lastUpdated: '最近更新',
transactionStartDate: '交易开始日期',
- changeTransactionStartDateWarning: '更改开始日期将删除所有未报告/草稿报表的交易,并从新开始日期重新导入所有交易。这可能导致重复交易。',
+ changeTransactionStartDateWarning: '更改开始日期将删除所有未报销/草稿报表交易,并从新的开始日期重新导入所有交易。这可能会导致重复交易。',
updateCard: '更新卡片',
unassignCard: '取消分配卡片',
unassign: '取消分配',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
ikevin127
left a comment
There was a problem hiding this comment.
🟢 LGTM - for the 'card already assigned' flow changes were applied as requested.
🔎 I noticed that no datepicker changes were made so I assume those were not needed, even though mentioned in the issue.
@hungvu193 I remember working on the Transaction start date flow but for 'assign unassigned card' flow so I checked there and copy changes were not applied there even though it's the same exact field / flow but for unassigned as opposed to already assigned - maybe we want to update there as well ?
q.mov
🇪🇸 translation confirmation link was not provided despite the ✅: not sure if the 🇪🇸 copy were confirmed. |
|
@hungvu193 I can help confirm the 🇪🇸 translation once it's ready. |
I think it's ready. Can you confirm thr translation? |
|
Translation in spanish is correct. There's still the date picker fix pending, right? |
|
Oh I see. Let me update it |
|
Could anyone please remove me from the reviewer list? |
|
@carlosmiceli Do you also want to update the description of |
No, I don't think we should unless we see it requested. |
|
@carlosmiceli Note that it's the exact same screen and after this PR one will have updated copy and one not - as shown in my previous comment. If we're ok with this and acknowledge this won't count as a regression if later reported by QA - then we're ready to merge from my side! 🟢 |
|
I see it's the same screen, but because it's a slightly different flow I think it's ok to leave as is until we know we want to update the copy in the main assignment flow as well. However, let'a ask @joekaufmanexpensify to confirm. |
|
Is the question whether it's okay that the copy on the date picker when picking a new transaction start date is different than the picker when originally assigning a card? If so, I agree that's fine. It's what we want so it's clear that picking a new date won't result in duplicate transactions. |
|
Great, approving! |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/carlosmiceli in version: 9.3.11-0 🚀
|
|
🚀 Deployed to production by https://github.com/Julesssss in version: 9.3.12-1 🚀
|
Explanation of Change
This pull request updates the update transaction date of the company card flow (Update the page description and date picker max date - if needed)
Fixed Issues
$ #80161
PROPOSAL: N/A
Tests
Same as QA steps
Offline tests
N/A
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Prerequisite: You have atlease on assigned company card.
Choose a new transaction start date. We'll sync all transactions from that date onwards, excluding those we already imported..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
MacOS: Chrome / Safari
Screen.Recording.2026-01-22.at.11.26.52.mov