added first approver and first approved columns#93169
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 |
|
@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] |
|
@grgia can you pls help with translations here?! thanks!
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7d958775fc
ℹ️ 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 translations |
|
Heads up, jest is failing @mukhrr. Let me know when you're ready for a test build too 🙇 |
🦜 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 d49ab996034..71d970c82c9 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -4134,28 +4134,31 @@ ${amount} für ${merchant} – ${date}`,
verificationFailed: 'Die Verifizierung ist fehlgeschlagen, daher benötigen wir zusätzliche Dokumente, um dich und dein Unternehmen zu überprüfen',
taxIDVerification: 'Steuer-ID-Verifizierung',
taxIDVerificationDescription: dedent(`
- Bitte lade eine der folgenden Dateien hoch:
- • IRS TIN/EIN-Zuweisungsschreiben
- • IRS TIN/EIN-Antragsbestätigung (enthält normalerweise „Congratulations! The EIN has been successfully assigned“)
- • IRS-Steuerbefreiungsschreiben mit Firmenname und EIN`),
+ Bitte lade eine der folgenden Dateien hoch:
+ • IRS TIN/EIN-Zuweisungsschreiben
+ • IRS TIN/EIN-Antragsbestätigung (enthält normalerweise „Congratulations! The EIN has been successfully assigned“)
+ • IRS-Steuerbefreiungsschreiben mit Firmenname und EIN
+ `),
nameChangeDocument: 'Dokument zur Namensänderung',
nameChangeDocumentDescription:
'Wenn sich der Name deines Unternehmens seit der Beantragung der TIN/EIN geändert hat, benötigen wir dieses Dokument zur Verifizierung der angegebenen Steuer-ID',
companyAddressVerification: 'Verifizierung der Unternehmensadresse',
companyAddressVerificationDescription: dedent(`
- Bitte lade eine der folgenden Dateien hoch:
- • Aktuelle Strom-, Wasser- oder Gasrechnung mit Firmenname und Adresse
- • Kontoauszug mit Firmenname und Adresse
- • Aktueller Miet- oder Leasingvertrag inkl. Unterschriftsseite mit Firmenname und aktueller Adresse
- • Versicherungsnachweis mit Firmenname und Adresse
- • TIN-Zuweisungsdokument mit Firmenname und Adresse`),
+ Bitte lade eine der folgenden Dateien hoch:
+ • Aktuelle Strom-, Wasser- oder Gasrechnung mit Firmenname und Adresse
+ • Kontoauszug mit Firmenname und Adresse
+ • Aktueller Miet- oder Leasingvertrag inkl. Unterschriftsseite mit Firmenname und aktueller Adresse
+ • Versicherungsnachweis mit Firmenname und Adresse
+ • TIN-Zuweisungsdokument mit Firmenname und Adresse
+ `),
userAddressVerification: 'Adressverifizierung',
userAddressVerificationDescription: dedent(`
- Bitte lade eine der folgenden Dateien hoch:
- • Wählerregistrierungskarte
- • Führerschein
- • Kontoauszug
- • Versorgungsrechnung`),
+ Bitte lade eine der folgenden Dateien hoch:
+ • Wählerregistrierungskarte
+ • Führerschein
+ • Kontoauszug
+ • Versorgungsrechnung
+ `),
userDOBVerification: 'Geburtsdatumsverifizierung',
userDOBVerificationDescription: 'Bitte lade einen in den USA ausgestellten Ausweis hoch',
finishViaChat: 'Über Chat abschließen',
@@ -8274,6 +8277,8 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
[CONST.SEARCH.ACTION_FILTERS.PAY]: 'Bezahlen',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Export',
},
+ firstApprover: 'Erste:r Genehmiger:in',
+ firstApproved: 'Zuerst genehmigt',
},
display: {
label: 'Anzeige',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 4ed11c0837e..94fa5202ee8 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -4017,27 +4017,30 @@ ${amount} para ${merchant} - ${date}`,
verificationFailed: 'La verificación falló, por lo que necesitaremos documentos adicionales para verificarte a ti y a tu empresa',
taxIDVerification: 'Verificación del ID fiscal',
taxIDVerificationDescription: dedent(`
- Por favor, sube uno de los siguientes archivos:
- • Carta de asignación de TIN/EIN del IRS
- • Confirmación de solicitud de TIN/EIN del IRS (normalmente indica "Congratulations! The EIN has been successfully assigned")
- • Carta de exención fiscal del IRS que incluya el nombre de la empresa y el EIN`),
+ Por favor, sube uno de los siguientes archivos:
+ • Carta de asignación de TIN/EIN del IRS
+ • Confirmación de solicitud de TIN/EIN del IRS (normalmente indica "Congratulations! The EIN has been successfully assigned")
+ • Carta de exención fiscal del IRS que incluya el nombre de la empresa y el EIN
+ `),
nameChangeDocument: 'Documento de cambio de nombre',
nameChangeDocumentDescription: 'Si el nombre de tu empresa cambió desde que solicitaste el TIN/EIN, necesitamos este documento para verificar el número de ID fiscal proporcionado',
companyAddressVerification: 'Verificación de la dirección de la empresa',
companyAddressVerificationDescription: dedent(`
- Por favor, sube uno de los siguientes archivos:
- • Factura reciente de servicios públicos con nombre y dirección de la empresa
- • Estado de cuenta bancario con nombre y dirección de la empresa
- • Contrato de arrendamiento vigente con página de firmas que muestre el nombre y la dirección actual de la empresa
- • Estado de seguro con nombre y dirección de la empresa
- • Documento de asignación de TIN con nombre y dirección de la empresa`),
+ Por favor, sube uno de los siguientes archivos:
+ • Factura reciente de servicios públicos con nombre y dirección de la empresa
+ • Estado de cuenta bancario con nombre y dirección de la empresa
+ • Contrato de arrendamiento vigente con página de firmas que muestre el nombre y la dirección actual de la empresa
+ • Estado de seguro con nombre y dirección de la empresa
+ • Documento de asignación de TIN con nombre y dirección de la empresa
+ `),
userAddressVerification: 'Verificación de dirección',
userAddressVerificationDescription: dedent(`
- Por favor, sube uno de los siguientes archivos:
- • Tarjeta de registro de votante
- • Licencia de conducir
- • Estado de cuenta bancario
- • Factura de servicios públicos`),
+ Por favor, sube uno de los siguientes archivos:
+ • Tarjeta de registro de votante
+ • Licencia de conducir
+ • Estado de cuenta bancario
+ • Factura de servicios públicos
+ `),
userDOBVerification: 'Verificación de fecha de nacimiento',
userDOBVerificationDescription: 'Por favor, sube una identificación emitida en EE. UU.',
finishViaChat: 'Finalizar por chat',
@@ -8100,6 +8103,8 @@ ${amount} para ${merchant} - ${date}`,
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Exportar',
},
reportField: (name, value) => `${name} es ${value}`,
+ firstApprover: 'Primer aprobador',
+ firstApproved: 'Primera aprobación',
},
chartTitles: {
[CONST.SEARCH.GROUP_BY.FROM]: 'De',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 81ed59d53e2..408d4d5d7f7 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -4147,28 +4147,31 @@ ${amount} pour ${merchant} - ${date}`,
verificationFailed: 'La vérification a échoué, nous aurons donc besoin de documents supplémentaires pour te vérifier ainsi que ton entreprise',
taxIDVerification: 'Vérification de l’identifiant fiscal',
taxIDVerificationDescription: dedent(`
- Veuillez téléverser l’un des fichiers suivants :
- • Lettre d’attribution TIN/EIN de l’IRS
- • Confirmation de demande TIN/EIN de l’IRS (indique généralement « Congratulations! The EIN has been successfully assigned »)
- • Lettre d’exonération fiscale de l’IRS indiquant le nom de l’entreprise et l’EIN`),
+ Veuillez téléverser l’un des fichiers suivants :
+ • Lettre d’attribution TIN/EIN de l’IRS
+ • Confirmation de demande TIN/EIN de l’IRS (indique généralement « Congratulations! The EIN has been successfully assigned »)
+ • Lettre d’exonération fiscale de l’IRS indiquant le nom de l’entreprise et l’EIN
+ `),
nameChangeDocument: 'Document de changement de nom',
nameChangeDocumentDescription:
'Si le nom de ton entreprise a changé depuis la demande du TIN/EIN, ce document est nécessaire pour vérifier le numéro d’identification fiscale fourni',
companyAddressVerification: 'Vérification de l’adresse de l’entreprise',
companyAddressVerificationDescription: dedent(`
- Veuillez téléverser l’un des fichiers suivants :
- • Facture récente de services publics indiquant le nom et l’adresse de l’entreprise
- • Relevé bancaire indiquant le nom et l’adresse de l’entreprise
- • Contrat de location en cours incluant la page de signature avec le nom et l’adresse actuelle de l’entreprise
- • Attestation d’assurance indiquant le nom et l’adresse de l’entreprise
- • Document d’attribution TIN indiquant le nom et l’adresse de l’entreprise`),
+ Veuillez téléverser l’un des fichiers suivants :
+ • Facture récente de services publics indiquant le nom et l’adresse de l’entreprise
+ • Relevé bancaire indiquant le nom et l’adresse de l’entreprise
+ • Contrat de location en cours incluant la page de signature avec le nom et l’adresse actuelle de l’entreprise
+ • Attestation d’assurance indiquant le nom et l’adresse de l’entreprise
+ • Document d’attribution TIN indiquant le nom et l’adresse de l’entreprise
+ `),
userAddressVerification: 'Vérification de l’adresse',
userAddressVerificationDescription: dedent(`
- Veuillez téléverser l’un des fichiers suivants :
- • Carte d’inscription électorale
- • Permis de conduire
- • Relevé bancaire
- • Facture de services publics`),
+ Veuillez téléverser l’un des fichiers suivants :
+ • Carte d’inscription électorale
+ • Permis de conduire
+ • Relevé bancaire
+ • Facture de services publics
+ `),
userDOBVerification: 'Vérification de la date de naissance',
userDOBVerificationDescription: 'Veuillez téléverser une pièce d’identité délivrée aux États-Unis',
finishViaChat: 'Finaliser via le chat',
@@ -8309,6 +8312,8 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
[CONST.SEARCH.ACTION_FILTERS.PAY]: 'Payer',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Exporter',
},
+ firstApprover: 'Premier approbateur',
+ firstApproved: 'Approuvé en premier',
},
display: {
label: 'Affichage',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index f7377756894..6a5d8e995fc 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -4122,28 +4122,31 @@ ${amount} per ${merchant} - ${date}`,
verificationFailed: 'La verifica non è riuscita, quindi avremo bisogno di documenti aggiuntivi per verificare te e la tua azienda',
taxIDVerification: 'Verifica dell’ID fiscale',
taxIDVerificationDescription: dedent(`
- Carica uno dei seguenti file:
- • Lettera di assegnazione TIN/EIN dell’IRS
- • Conferma della richiesta TIN/EIN dell’IRS (di solito indica "Congratulations! The EIN has been successfully assigned")
- • Lettera di esenzione fiscale dell’IRS con nome dell’azienda ed EIN`),
+ Carica uno dei seguenti file:
+ • Lettera di assegnazione TIN/EIN dell’IRS
+ • Conferma della richiesta TIN/EIN dell’IRS (di solito indica "Congratulations! The EIN has been successfully assigned")
+ • Lettera di esenzione fiscale dell’IRS con nome dell’azienda ed EIN
+ `),
nameChangeDocument: 'Documento di cambio nome',
nameChangeDocumentDescription:
'Se il nome della tua azienda è cambiato dopo la richiesta del TIN/EIN, abbiamo bisogno di questo documento per verificare il numero di ID fiscale fornito',
companyAddressVerification: 'Verifica dell’indirizzo aziendale',
companyAddressVerificationDescription: dedent(`
- Carica uno dei seguenti file:
- • Bolletta recente con nome e indirizzo dell’azienda
- • Estratto conto bancario con nome e indirizzo dell’azienda
- • Contratto di locazione attuale con pagina firme che mostri nome e indirizzo attuale dell’azienda
- • Documento assicurativo con nome e indirizzo dell’azienda
- • Documento di assegnazione TIN con nome e indirizzo dell’azienda`),
+ Carica uno dei seguenti file:
+ • Bolletta recente con nome e indirizzo dell’azienda
+ • Estratto conto bancario con nome e indirizzo dell’azienda
+ • Contratto di locazione attuale con pagina firme che mostri nome e indirizzo attuale dell’azienda
+ • Documento assicurativo con nome e indirizzo dell’azienda
+ • Documento di assegnazione TIN con nome e indirizzo dell’azienda
+ `),
userAddressVerification: 'Verifica dell’indirizzo',
userAddressVerificationDescription: dedent(`
- Carica uno dei seguenti file:
- • Tessera elettorale
- • Patente di guida
- • Estratto conto bancario
- • Bolletta`),
+ Carica uno dei seguenti file:
+ • Tessera elettorale
+ • Patente di guida
+ • Estratto conto bancario
+ • Bolletta
+ `),
userDOBVerification: 'Verifica della data di nascita',
userDOBVerificationDescription: 'Carica un documento di identità rilasciato negli Stati Uniti',
finishViaChat: 'Completa via chat',
@@ -8267,6 +8270,8 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
[CONST.SEARCH.ACTION_FILTERS.PAY]: 'Paga',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Esporta',
},
+ firstApprover: 'Primo approvatore',
+ firstApproved: 'Approvato per primo',
},
display: {
label: 'Visualizza',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 0de98845eab..9df09f36d7c 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -4094,27 +4094,30 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
verificationFailed: '確認に失敗したため、追加の書類で本人および事業の確認が必要です',
taxIDVerification: '納税者番号の確認',
taxIDVerificationDescription: dedent(`
- 以下のいずれかの書類をアップロードしてください:
- • IRS TIN/EIN 割当通知書
- • IRS TIN/EIN 申請確認書(通常「Congratulations! The EIN has been successfully assigned」と記載)
- • 会社名と EIN が記載された IRS の免税通知書`),
+ 以下のいずれかの書類をアップロードしてください:
+ • IRS TIN/EIN 割当通知書
+ • IRS TIN/EIN 申請確認書(通常「Congratulations! The EIN has been successfully assigned」と記載)
+ • 会社名と EIN が記載された IRS の免税通知書
+ `),
nameChangeDocument: '名称変更書類',
nameChangeDocumentDescription: 'TIN/EIN 申請後に会社名が変更された場合、提供された納税者番号を確認するためにこの書類が必要です',
companyAddressVerification: '会社住所の確認',
companyAddressVerificationDescription: dedent(`
- 以下のいずれかの書類をアップロードしてください:
- • 会社名と住所が記載された最近の公共料金請求書
- • 会社名と住所が記載された銀行取引明細書
- • 署名ページを含む現行の賃貸契約書(会社名と現住所が記載されたもの)
- • 会社名と住所が記載された保険証書
- • 会社名と住所が記載された TIN 割当書類`),
+ 以下のいずれかの書類をアップロードしてください:
+ • 会社名と住所が記載された最近の公共料金請求書
+ • 会社名と住所が記載された銀行取引明細書
+ • 署名ページを含む現行の賃貸契約書(会社名と現住所が記載されたもの)
+ • 会社名と住所が記載された保険証書
+ • 会社名と住所が記載された TIN 割当書類
+ `),
userAddressVerification: '住所確認',
userAddressVerificationDescription: dedent(`
- 以下のいずれかの書類をアップロードしてください:
- • 有権者登録カード
- • 運転免許証
- • 銀行取引明細書
- • 公共料金請求書`),
+ 以下のいずれかの書類をアップロードしてください:
+ • 有権者登録カード
+ • 運転免許証
+ • 銀行取引明細書
+ • 公共料金請求書
+ `),
userDOBVerification: '生年月日の確認',
userDOBVerificationDescription: '米国発行の身分証明書をアップロードしてください',
finishViaChat: 'チャットで完了',
@@ -8167,6 +8170,8 @@ ${reportName}
[CONST.SEARCH.ACTION_FILTERS.PAY]: '支払う',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'エクスポート',
},
+ firstApprover: '最初の承認者',
+ firstApproved: '最初に承認済み',
},
display: {
label: '表示',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 0aba8236fe6..3176a3d3ff2 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -4118,27 +4118,30 @@ ${amount} voor ${merchant} - ${date}`,
verificationFailed: 'De verificatie is mislukt, daarom hebben we extra documenten nodig om jou en je bedrijf te verifiëren',
taxIDVerification: 'Belastingnummerverificatie',
taxIDVerificationDescription: dedent(`
- Upload een van de volgende bestanden:
- • IRS TIN/EIN-toewijzingsbrief
- • IRS TIN/EIN-aanvraagbevestiging (bevat meestal "Congratulations! The EIN has been successfully assigned")
- • IRS-belastingvrijstellingsbrief met bedrijfsnaam en EIN`),
+ Upload een van de volgende bestanden:
+ • IRS TIN/EIN-toewijzingsbrief
+ • IRS TIN/EIN-aanvraagbevestiging (bevat meestal "Congratulations! The EIN has been successfully assigned")
+ • IRS-belastingvrijstellingsbrief met bedrijfsnaam en EIN
+ `),
nameChangeDocument: 'Document naamswijziging',
nameChangeDocumentDescription: 'Als de naam van je bedrijf is gewijzigd sinds de TIN/EIN-aanvraag, hebben we dit document nodig om het opgegeven belastingnummer te verifiëren',
companyAddressVerification: 'Verificatie van bedrijfsadres',
companyAddressVerificationDescription: dedent(`
- Upload een van de volgende bestanden:
- • Recente energierekening met bedrijfsnaam en adres
- • Bankafschrift met bedrijfsnaam en adres
- • Huidige huur- of leaseovereenkomst inclusief ondertekeningspagina met bedrijfsnaam en huidig adres
- • Verzekeringsverklaring met bedrijfsnaam en adres
- • TIN-toewijzingsdocument met bedrijfsnaam en adres`),
+ Upload een van de volgende bestanden:
+ • Recente energierekening met bedrijfsnaam en adres
+ • Bankafschrift met bedrijfsnaam en adres
+ • Huidige huur- of leaseovereenkomst inclusief ondertekeningspagina met bedrijfsnaam en huidig adres
+ • Verzekeringsverklaring met bedrijfsnaam en adres
+ • TIN-toewijzingsdocument met bedrijfsnaam en adres
+ `),
userAddressVerification: 'Adresverificatie',
userAddressVerificationDescription: dedent(`
- Upload een van de volgende bestanden:
- • Kiezersregistratiekaart
- • Rijbewijs
- • Bankafschrift
- • Energierekening`),
+ Upload een van de volgende bestanden:
+ • Kiezersregistratiekaart
+ • Rijbewijs
+ • Bankafschrift
+ • Energierekening
+ `),
userDOBVerification: 'Verificatie van geboortedatum',
userDOBVerificationDescription: 'Upload een in de VS uitgegeven identiteitsbewijs',
finishViaChat: 'Afronden via chat',
@@ -8230,6 +8233,8 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
[CONST.SEARCH.ACTION_FILTERS.PAY]: 'Betalen',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Exporteren',
},
+ firstApprover: 'Eerste gemachtigde',
+ firstApproved: 'Eerst goedgekeurd',
},
display: {
label: 'Weergave',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 51fbc5014fc..4ce512e9d9e 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -4110,27 +4110,30 @@ ${amount} dla ${merchant} - ${date}`,
verificationFailed: 'Weryfikacja nie powiodła się, dlatego potrzebujemy dodatkowych dokumentów do potwierdzenia Twojej tożsamości i firmy',
taxIDVerification: 'Weryfikacja numeru podatkowego',
taxIDVerificationDescription: dedent(`
- Prześlij jeden z poniższych plików:
- • List przydziału TIN/EIN z IRS
- • Potwierdzenie wniosku TIN/EIN z IRS (zwykle zawiera „Congratulations! The EIN has been successfully assigned”)
- • Pismo o zwolnieniu podatkowym z IRS zawierające nazwę firmy i EIN`),
+ Prześlij jeden z poniższych plików:
+ • List przydziału TIN/EIN z IRS
+ • Potwierdzenie wniosku TIN/EIN z IRS (zwykle zawiera „Congratulations! The EIN has been successfully assigned”)
+ • Pismo o zwolnieniu podatkowym z IRS zawierające nazwę firmy i EIN
+ `),
nameChangeDocument: 'Dokument zmiany nazwy',
nameChangeDocumentDescription: 'Jeśli nazwa firmy zmieniła się od momentu złożenia wniosku o TIN/EIN, dokument ten jest wymagany do weryfikacji podanego numeru podatkowego',
companyAddressVerification: 'Weryfikacja adresu firmy',
companyAddressVerificationDescription: dedent(`
- Prześlij jeden z poniższych plików:
- • Aktualny rachunek za media z nazwą i adresem firmy
- • Wyciąg bankowy z nazwą i adresem firmy
- • Aktualna umowa najmu z podpisaną stroną zawierającą nazwę i adres firmy
- • Dokument ubezpieczeniowy z nazwą i adresem firmy
- • Dokument przydziału TIN z nazwą i adresem firmy`),
+ Prześlij jeden z poniższych plików:
+ • Aktualny rachunek za media z nazwą i adresem firmy
+ • Wyciąg bankowy z nazwą i adresem firmy
+ • Aktualna umowa najmu z podpisaną stroną zawierającą nazwę i adres firmy
+ • Dokument ubezpieczeniowy z nazwą i adresem firmy
+ • Dokument przydziału TIN z nazwą i adresem firmy
+ `),
userAddressVerification: 'Weryfikacja adresu',
userAddressVerificationDescription: dedent(`
- Prześlij jeden z poniższych plików:
- • Karta rejestracji wyborcy
- • Prawo jazdy
- • Wyciąg bankowy
- • Rachunek za media`),
+ Prześlij jeden z poniższych plików:
+ • Karta rejestracji wyborcy
+ • Prawo jazdy
+ • Wyciąg bankowy
+ • Rachunek za media
+ `),
userDOBVerification: 'Weryfikacja daty urodzenia',
userDOBVerificationDescription: 'Prześlij dokument tożsamości wydany w USA',
finishViaChat: 'Zakończ przez czat',
@@ -8223,6 +8226,8 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
[CONST.SEARCH.ACTION_FILTERS.PAY]: 'Zapłać',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Eksportuj',
},
+ firstApprover: 'Pierwszy zatwierdzający',
+ firstApproved: 'Najpierw zatwierdzono',
},
display: {
label: 'Wyświetl',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index f8942f7398f..3e7bede5094 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -4110,27 +4110,30 @@ ${amount} para ${merchant} - ${date}`,
verificationFailed: 'A verificação falhou, então precisaremos de documentos adicionais para verificar você e sua empresa',
taxIDVerification: 'Verificação de ID fiscal',
taxIDVerificationDescription: dedent(`
- Envie um dos seguintes arquivos:
- • Carta de atribuição de TIN/EIN do IRS
- • Confirmação de solicitação de TIN/EIN do IRS (normalmente contém "Congratulations! The EIN has been successfully assigned")
- • Carta de isenção fiscal do IRS com o nome da empresa e o EIN`),
+ Envie um dos seguintes arquivos:
+ • Carta de atribuição de TIN/EIN do IRS
+ • Confirmação de solicitação de TIN/EIN do IRS (normalmente contém "Congratulations! The EIN has been successfully assigned")
+ • Carta de isenção fiscal do IRS com o nome da empresa e o EIN
+ `),
nameChangeDocument: 'Documento de alteração de nome',
nameChangeDocumentDescription: 'Se o nome da sua empresa mudou desde a solicitação do TIN/EIN, precisamos deste documento para verificar o número de identificação fiscal informado',
companyAddressVerification: 'Verificação de endereço da empresa',
companyAddressVerificationDescription: dedent(`
- Envie um dos seguintes arquivos:
- • Conta recente de serviços públicos com nome e endereço da empresa
- • Extrato bancário com nome e endereço da empresa
- • Contrato de locação atual incluindo a página de assinatura com nome e endereço atual da empresa
- • Apólice ou declaração de seguro com nome e endereço da empresa
- • Documento de atribuição de TIN com nome e endereço da empresa`),
+ Envie um dos seguintes arquivos:
+ • Conta recente de serviços públicos com nome e endereço da empresa
+ • Extrato bancário com nome e endereço da empresa
+ • Contrato de locação atual incluindo a página de assinatura com nome e endereço atual da empresa
+ • Apólice ou declaração de seguro com nome e endereço da empresa
+ • Documento de atribuição de TIN com nome e endereço da empresa
+ `),
userAddressVerification: 'Verificação de endereço',
userAddressVerificationDescription: dedent(`
- Envie um dos seguintes arquivos:
- • Título de eleitor
- • Carteira de motorista
- • Extrato bancário
- • Conta de serviços públicos`),
+ Envie um dos seguintes arquivos:
+ • Título de eleitor
+ • Carteira de motorista
+ • Extrato bancário
+ • Conta de serviços públicos
+ `),
userDOBVerification: 'Verificação de data de nascimento',
userDOBVerificationDescription: 'Envie um documento de identidade emitido nos EUA',
finishViaChat: 'Finalizar pelo chat',
@@ -8225,6 +8228,8 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
[CONST.SEARCH.ACTION_FILTERS.PAY]: 'Pagar',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: 'Exportar',
},
+ firstApprover: 'Primeira pessoa aprovadora',
+ firstApproved: 'Primeira aprovada',
},
display: {
label: 'Exibir',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 2a75e959f48..90abf0dd790 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -4022,27 +4022,30 @@ ${amount},商户:${merchant} - 日期:${date}`,
verificationFailed: '验证失败,因此我们需要额外的文件来验证你及你的企业',
taxIDVerification: '税务识别号验证',
taxIDVerificationDescription: dedent(`
- 请上传以下任一文件:
- • IRS TIN/EIN 分配函
- • IRS TIN/EIN 申请确认函(通常包含“Congratulations! The EIN has been successfully assigned”)
- • 显示公司名称和 EIN 的 IRS 免税函`),
+ 请上传以下任一文件:
+ • IRS TIN/EIN 分配函
+ • IRS TIN/EIN 申请确认函(通常包含“Congratulations! The EIN has been successfully assigned”)
+ • 显示公司名称和 EIN 的 IRS 免税函
+ `),
nameChangeDocument: '名称变更文件',
nameChangeDocumentDescription: '如果你的公司名称在申请 TIN/EIN 后发生更改,我们需要此文件来验证你提供的税务识别号',
companyAddressVerification: '公司地址验证',
companyAddressVerificationDescription: dedent(`
- 请上传以下任一文件:
- • 显示公司名称和地址的近期水电账单
- • 显示公司名称和地址的银行对账单
- • 包含签字页的有效租赁协议,显示公司名称和当前地址
- • 显示公司名称和地址的保险声明
- • 显示公司名称和地址的 TIN 分配文件`),
+ 请上传以下任一文件:
+ • 显示公司名称和地址的近期水电账单
+ • 显示公司名称和地址的银行对账单
+ • 包含签字页的有效租赁协议,显示公司名称和当前地址
+ • 显示公司名称和地址的保险声明
+ • 显示公司名称和地址的 TIN 分配文件
+ `),
userAddressVerification: '地址验证',
userAddressVerificationDescription: dedent(`
- 请上传以下任一文件:
- • 选民登记卡
- • 驾驶证
- • 银行对账单
- • 水电账单`),
+ 请上传以下任一文件:
+ • 选民登记卡
+ • 驾驶证
+ • 银行对账单
+ • 水电账单
+ `),
userDOBVerification: '出生日期验证',
userDOBVerificationDescription: '请上传美国签发的身份证件',
finishViaChat: '通过聊天完成',
@@ -8007,6 +8010,8 @@ ${reportName}
[CONST.SEARCH.ACTION_FILTERS.PAY]: '支付',
[CONST.SEARCH.ACTION_FILTERS.EXPORT]: '导出',
},
+ firstApprover: '首位审批人',
+ firstApproved: '首次批准',
},
display: {
label: '显示',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@DylanDylann @grgia I think we're good to proceed here |
Preserves PR work through the merge (known merge-fragility): ReportUtils recompute block + pushTransactionAutoSelectionsOnyxData export, category/tag disabled-alert keys, WorkspaceMoreFeaturesPage policyData arg, MoneyRequestView isMultiLevelTags/hasEnabledTags, ViolationsUtils tag-gate + tax fix, UpdateMoneyRequest tag strip. Expensify#93169 (First Approver) stays reverted. Restored pushNewlyCreatedWorkspaceUnderActiveModal dropped by the prior fork-main merge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
@DylanDylann kindly bump here, pls) |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eea14df26b
ℹ️ 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".
|
@mukhrr Just want to confirm again, is this intentional?
Because I see other user columns as from and to are sortable |
…h places that derive it:
@DylanDylann thanks for pointing this. Now I removed sorting from First approved column too. They are not sortable by design: the Search backend has no sort key for First approver/First approved — they're derived from the report's |
| DATE: 'date', | ||
| SUBMITTED: 'submitted', | ||
| APPROVED: 'approved', | ||
| FIRST_APPROVER: 'firstApprover', |
There was a problem hiding this comment.
I think these need to be lowercase to sort correctly, same with the one below
| } | ||
|
|
||
| /** | ||
| * @private |
There was a problem hiding this comment.
I dont think we should be doing this
There was a problem hiding this comment.
👍 removed the submit-cycle scoping. We now just take the earliest APPROVED
|
failing test is not related |
|
@mukhrr Conflict again |
@DylanDylann resolved cc @grgia |
|
🚧 grgia 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/grgia in version: 9.4.27-1 🚀
|
|
🤖 Help site review: no changes required I reviewed this PR's changes against the help site articles under What the PR does: Adds two optional columns — First approver and First approved — to the Spend > Reports table (selectable via Display > Edit columns), plus a fix for a truncated year value in date columns. Why no docs update is needed: The help site describes the Edit columns feature generically and never enumerates the individual columns available. The three articles that mention it all point to Display > Edit columns without listing specific columns, so they remain accurate as-is:
Adding new selectable columns doesn't invalidate any documented behavior or step, so there's nothing to change. If you'd prefer the help site to explicitly enumerate available columns (including these two new ones), let me know and I can draft that addition. @mukhrr, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
Deploy Blocker #95299 was identified to be related to this PR. |
Explanation of Change
Added First Approver and First Approved columns into Spend -> Reports table. And also made an improvement of another bug: fixed truncated year value.
Fixed Issues
$ #90507
#94526
PROPOSAL: #90507 (comment)
Tests
Jane Doe/2026-06-08.2025-12-20), verify the First approved cell shows the full year and the header stays aligned with the body (the column widens in both).Tests for improvement and #94526:
Precondition:
• Have Date, Exported, Submitted, First Approved, Approved, Posted columns with last year (2025 date)
Note you see [Month Date Year] under each columns above and verify none of columns value are truncated
Verify that no errors appear in the JS console
Offline tests
QA Steps
// 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
web specificAndroid: mWeb Chrome
web specificiOS: Native
web specificiOS: mWeb Safari
web specificMacOS: Chrome / Safari
web.mp4