-
Notifications
You must be signed in to change notification settings - Fork 3.5k
[Sprint] [CSV Card Import] Properly display CSV cards in Newdot #80556
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@ShridharGoel 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] |
This comment has been minimized.
This comment has been minimized.
🦜 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 6089ded5..f556d24d 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -8051,7 +8051,7 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`,
domainAdmins: 'Domain-Admins',
},
gps: {
- tooltip: 'GPS-Verfolgung läuft! Wenn du fertig bist, stoppe die Verfolgung unten.',
+ tooltip: 'GPS-Tracking läuft! Wenn du fertig bist, beende das Tracking unten.',
disclaimer: 'Benutze GPS, um eine Ausgabe von deiner Reise zu erstellen. Tippe unten auf „Start“, um mit der Aufzeichnung zu beginnen.',
error: {failedToStart: 'Standortverfolgung konnte nicht gestartet werden.', failedToGetPermissions: 'Die erforderlichen Standortberechtigungen konnten nicht abgerufen werden.'},
trackingDistance: 'Strecke wird verfolgt...',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 46a92284..5e61f32c 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -8057,7 +8057,7 @@ Voici un *reçu test* pour vous montrer comment cela fonctionne :`,
domainAdmins: 'Administrateurs de domaine',
},
gps: {
- tooltip: 'Suivi GPS en cours ! Quand vous avez terminé, arrêtez le suivi ci-dessous.',
+ tooltip: 'Suivi GPS en cours ! Lorsque vous avez terminé, arrêtez le suivi ci-dessous.',
disclaimer: 'Utilisez le GPS pour créer une dépense à partir de votre trajet. Touchez Démarrer ci-dessous pour commencer le suivi.',
error: {failedToStart: 'Impossible de démarrer le suivi de la localisation.', failedToGetPermissions: 'Échec de l’obtention des autorisations de localisation requises.'},
trackingDistance: 'Suivi de la distance...',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 307476db..a8a15688 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -6891,7 +6891,7 @@ Richiedi dettagli di spesa come ricevute e descrizioni, imposta limiti e valori
groupBy: {
[CONST.SEARCH.GROUP_BY.FROM]: 'Da',
[CONST.SEARCH.GROUP_BY.CARD]: 'Carta',
- [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID prelievo',
+ [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'ID prelievo', //_/\__/_/ \_,_/\__/\__/\_,_/
},
feed: 'Feed',
withdrawalType: {
@@ -8039,7 +8039,7 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`,
domainAdmins: 'Amministratori di dominio',
},
gps: {
- tooltip: 'Monitoraggio GPS in corso! Quando hai finito, interrompi il monitoraggio qui sotto.',
+ tooltip: 'Rilevamento GPS in corso! Quando hai finito, interrompi il rilevamento qui sotto.',
disclaimer: 'Usa il GPS per creare una spesa dal tuo viaggio. Tocca Avvia qui sotto per iniziare il tracciamento.',
error: {failedToStart: 'Impossibile avviare il tracciamento della posizione.', failedToGetPermissions: 'Impossibile ottenere le autorizzazioni di localizzazione richieste.'},
trackingDistance: 'Tracciamento distanza...',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index bee8e424..027bd527 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -7973,7 +7973,7 @@ Expensify の使い方をお見せするための*テストレシート*がこ
domainAdmins: 'ドメイン管理者',
},
gps: {
- tooltip: 'GPS 追跡を進行中です!完了したら、下で追跡を停止してください。',
+ tooltip: 'GPS追跡を実行中です!完了したら、下で追跡を停止してください。',
disclaimer: '移動中の経路から、GPS を使って経費を作成しましょう。下の「開始」をタップして追跡を始めてください。',
error: {failedToStart: '位置情報の追跡を開始できませんでした。', failedToGetPermissions: '必要な位置情報の権限を取得できませんでした。'},
trackingDistance: '距離を追跡中...',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 852f40d3..439d0045 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -8020,7 +8020,7 @@ Hier is een *testbon* om je te laten zien hoe het werkt:`,
domainAdmins: 'Domeinbeheerders',
},
gps: {
- tooltip: 'GPS-tracking bezig! Als je klaar bent, stop dan hieronder met tracken.',
+ tooltip: 'GPS-tracking is bezig! Als je klaar bent, stop dan hieronder met volgen.',
disclaimer: 'Gebruik GPS om een uitgave van je reis te maken. Tik hieronder op Start om het volgen te beginnen.',
error: {failedToStart: 'Locatiebijhouding starten is mislukt.', failedToGetPermissions: 'Verkrijgen van vereiste locatierechten mislukt.'},
trackingDistance: 'Afstand bijhouden...',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index ba62819f..07efe572 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -8005,7 +8005,7 @@ Oto *paragon testowy*, który pokazuje, jak to działa:`,
domainAdmins: 'Administratorzy domeny',
},
gps: {
- tooltip: 'Śledzenie GPS w toku! Gdy skończysz, zatrzymaj śledzenie poniżej.',
+ tooltip: 'Trwa śledzenie GPS! Gdy skończysz, zatrzymaj śledzenie poniżej.',
disclaimer: 'Użyj GPS, aby utworzyć wydatek z Twojej podróży. Stuknij „Start” poniżej, aby rozpocząć śledzenie.',
error: {failedToStart: 'Nie udało się uruchomić śledzenia lokalizacji.', failedToGetPermissions: 'Nie udało się uzyskać wymaganych uprawnień do lokalizacji.'},
trackingDistance: 'Śledzenie dystansu…',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 152e6c06..8239253a 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -6711,9 +6711,9 @@ ${reportName}
reimbursable: '可报销',
purchaseCurrency: '购买货币',
groupBy: {
- [CONST.SEARCH.GROUP_BY.FROM]: '从',
- [CONST.SEARCH.GROUP_BY.CARD]: '卡片',
- [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '提款 ID',
+ [CONST.SEARCH.GROUP_BY.FROM]: '来自',
+ [CONST.SEARCH.GROUP_BY.CARD]: '卡',
+ [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '提现编号',
},
feed: '动态',
withdrawalType: {
@@ -7815,7 +7815,7 @@ ${reportName}
domainAdmins: '域管理员',
},
gps: {
- tooltip: 'GPS 跟踪进行中!完成后,请在下方停止跟踪。',
+ tooltip: '正在进行 GPS 跟踪!完成后,请在下方停止跟踪。',
disclaimer: '使用 GPS 根据您的行程创建报销。点击下方的“开始”以开始跟踪。',
error: {failedToStart: '启动位置跟踪失败。', failedToGetPermissions: '获取必需的位置权限失败。'},
trackingDistance: '正在跟踪距离…',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 284818c520
ℹ️ 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".
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
Yes, just checked that it's masked in OD as well, so we can ignore that. |
|
@ShridharGoel Can you give it another try? |
|
Yes, it works as expected now. |
| */ | ||
| function isPersonalCard(card?: Card) { | ||
| return !!card?.fundID && card.fundID !== '0'; | ||
| return (!!card?.fundID && card.fundID !== '0') || card?.bank === CONST.PERSONAL_CARD.BANK_NAME.CSV; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have a different name than 'upload' for the company CSV bank name? Else, this can misclassify company CSV cards as personal.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just checked that CONST.COMPANY_CARDS.BANK_NAME.UPLOAD is also 'upload'. So this will be a problem? Unless we add another condition here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No worries. "Source" Company cards don't live in cardList, and assigned company cards should display and are identified as PersonalCards through the fundID, so all good
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewer Checklist
Screenshots/Videos |
|
@carlosmiceli 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] |
|
🎯 @ShridharGoel, thanks for reviewing and testing this PR! 🎉 An E/App issue has been created to issue payment here: #80798. |
|
@Gonals ready to merge sir |
|
✋ 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/Gonals in version: 9.3.11-0 🚀
|









Explanation of Change
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/593042
PROPOSAL:
Tests
Personal Cards
Log into oldDot and go to Account > Wallet > Import Transactions from File. You can use this file:
fake_transactions-2026-01-16 10_56_55.629.csv
After importing, Log into Newdot with the same account. Go to Account > Wallet and confirm you see the card like so:
Company Cards
This can't easily be tested in dev, so it will be tested in Staging
Offline tests
None
QA Steps
Personal Cards
Same as tests
Company Cards
// TODO: These must be filled out, or the issue title must include "[No QA]."
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
iOS: mWeb Safari
MacOS: Chrome / Safari