From 92de4fb0000d5a3035f6f3c5bf706ac7a9e8d99f Mon Sep 17 00:00:00 2001 From: madmax330 Date: Tue, 11 Aug 2026 20:11:58 +0000 Subject: [PATCH 1/5] Add bank statement to US onboarding --- .../EnableGlobalReimbursementsForUSDBankAccountParams.ts | 1 + .../EnableGlobalReimbursementsAgreementsPage.tsx | 3 +++ .../EnableGlobalReimbursementsSignPage.tsx | 1 + src/types/form/EnableGlobalReimbursementsForm.ts | 2 ++ 4 files changed, 7 insertions(+) diff --git a/src/libs/API/parameters/EnableGlobalReimbursementsForUSDBankAccountParams.ts b/src/libs/API/parameters/EnableGlobalReimbursementsForUSDBankAccountParams.ts index 5c5877880542..6d93609f422b 100644 --- a/src/libs/API/parameters/EnableGlobalReimbursementsForUSDBankAccountParams.ts +++ b/src/libs/API/parameters/EnableGlobalReimbursementsForUSDBankAccountParams.ts @@ -3,6 +3,7 @@ import type {FileObject} from '@src/types/utils/Attachment'; type EnableGlobalReimbursementsForUSDBankAccountParams = { inputs: string; achAuthorizationForm?: FileObject; + bankStatement?: FileObject; bankAccountID: number; }; diff --git a/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsAgreementsPage.tsx b/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsAgreementsPage.tsx index a71f0012f637..769dc989869b 100644 --- a/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsAgreementsPage.tsx +++ b/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsAgreementsPage.tsx @@ -33,6 +33,7 @@ function EnableGlobalReimbursementsAgreementsPage({route}: EnableGlobalReimburse return [typedKey, enableGlobalReimbursementsDraft?.[typedKey] ?? false]; }), ) as Record; + const bankStatementDefaultValue = enableGlobalReimbursementsDraft?.[INPUT_IDS.BANK_STATEMENT] ?? []; const goBack = () => { Navigation.goBack(ROUTES.SETTINGS_WALLET_ENABLE_GLOBAL_REIMBURSEMENTS_BUSINESS.getRoute(Number(bankAccountID), CONST.ENABLE_GLOBAL_REIMBURSEMENTS.PAGE_NAME.BUSINESS_INFO.CONFIRM)); @@ -53,6 +54,8 @@ function EnableGlobalReimbursementsAgreementsPage({route}: EnableGlobalReimburse currency={currency} startStepIndex={1} stepNames={CONST.ENABLE_GLOBAL_REIMBURSEMENTS.STEP_INDEX_LIST} + bankStatementInputID={INPUT_IDS.BANK_STATEMENT} + bankStatementDefaultValue={bankStatementDefaultValue} /> ); } diff --git a/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsSignPage.tsx b/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsSignPage.tsx index 938a5cfdb729..ada704664d1b 100644 --- a/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsSignPage.tsx +++ b/src/pages/settings/Wallet/EnableGlobalReimbursements/EnableGlobalReimbursementsSignPage.tsx @@ -48,6 +48,7 @@ function EnableGlobalReimbursementsSignPage({route}: EnableGlobalReimbursementsS purposeOfTransactionId: CONST.NON_USD_BANK_ACCOUNT.PURPOSE_OF_TRANSACTION_ID, }), achAuthorizationForm: enableGlobalReimbursementsDraft?.[INPUT_IDS.ACH_AUTHORIZATION_FORM].at(0), + bankStatement: enableGlobalReimbursementsDraft?.[INPUT_IDS.BANK_STATEMENT]?.at(0), bankAccountID: Number(bankAccountID), }); }; diff --git a/src/types/form/EnableGlobalReimbursementsForm.ts b/src/types/form/EnableGlobalReimbursementsForm.ts index b86c2389ad6d..051bd917e1e0 100644 --- a/src/types/form/EnableGlobalReimbursementsForm.ts +++ b/src/types/form/EnableGlobalReimbursementsForm.ts @@ -15,6 +15,7 @@ const INPUT_IDS = { CONSENT_TO_PRIVACY_NOTICE: 'consentToPrivacyNotice', AUTHORIZED_TO_BIND_CLIENT_TO_AGREEMENT: 'authorizedToBindClientToAgreement', ACH_AUTHORIZATION_FORM: 'achAuthorizationForm', + BANK_STATEMENT: 'bankStatement', } as const; type InputID = ValueOf; @@ -32,6 +33,7 @@ type EnableGlobalReimbursementsForm = Form< [INPUT_IDS.CONSENT_TO_PRIVACY_NOTICE]: boolean; [INPUT_IDS.AUTHORIZED_TO_BIND_CLIENT_TO_AGREEMENT]: boolean; [INPUT_IDS.ACH_AUTHORIZATION_FORM]: FileObject[]; + [INPUT_IDS.BANK_STATEMENT]: FileObject[]; } > & {isEnablingGlobalReimbursements?: boolean; isSuccess?: boolean}; From 21867301249b4c842a63c3bb895394fc72f6ccb1 Mon Sep 17 00:00:00 2001 From: madmax330 Date: Wed, 12 Aug 2026 21:09:40 +0000 Subject: [PATCH 2/5] Add cad bank statement --- .../ReimbursementAccount/NonUSD/Agreements/index.tsx | 2 +- .../NonUSD/utils/getStartPageForContinueSetup.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/ReimbursementAccount/NonUSD/Agreements/index.tsx b/src/pages/ReimbursementAccount/NonUSD/Agreements/index.tsx index 7c07e6814d58..bbdf5dea7aaa 100644 --- a/src/pages/ReimbursementAccount/NonUSD/Agreements/index.tsx +++ b/src/pages/ReimbursementAccount/NonUSD/Agreements/index.tsx @@ -29,7 +29,7 @@ function Agreements({onBackButtonPress, onSubmit, stepNames, currency}: NonUSDPa const bankAccountID = reimbursementAccount?.achData?.bankAccountID ?? CONST.DEFAULT_NUMBER_ID; const isDocusignStepRequired = requiresDocusignStep(currency); const isSubmittingRef = useRef(false); - const isBankStatementNeeded = currency === CONST.CURRENCY.AUD; + const isBankStatementNeeded = currency === CONST.CURRENCY.AUD || currency === CONST.CURRENCY.CAD; const bankStatementDefaultValue = reimbursementAccountDraft?.[INPUT_IDS.ADDITIONAL_DATA.CORPAY.BANK_STATEMENT] ?? []; const submit = () => { diff --git a/src/pages/ReimbursementAccount/NonUSD/utils/getStartPageForContinueSetup.ts b/src/pages/ReimbursementAccount/NonUSD/utils/getStartPageForContinueSetup.ts index 9151a0ccddbe..9a9c5ed1e279 100644 --- a/src/pages/ReimbursementAccount/NonUSD/utils/getStartPageForContinueSetup.ts +++ b/src/pages/ReimbursementAccount/NonUSD/utils/getStartPageForContinueSetup.ts @@ -48,10 +48,10 @@ function getStartPageForContinueSetup( !!(reimbursementAccountDraft?.consentToPrivacyNotice ?? achData?.corpay?.consentToPrivacyNotice) && !!(reimbursementAccountDraft?.provideTruthfulInformation ?? achData?.corpay?.provideTruthfulInformation); - // AUD accounts must upload a bank statement, which is collected on the Agreements page and only lives in the draft until - // it's submitted on the Docusign page. Accounts that checked the agreements before the bank statement became required won't - // have one, so gate the Docusign resume on it to avoid submitting without a bank statement. - const isBankStatementNeeded = policyCurrency === CONST.CURRENCY.AUD; + // AUD and CAD accounts must upload a bank statement, which is collected on the Agreements page and only lives in the draft + // until it's submitted on the Docusign page. Accounts that checked the agreements before the bank statement became required + // won't have one, so gate the Docusign resume on it to avoid submitting without a bank statement. + const isBankStatementNeeded = policyCurrency === CONST.CURRENCY.AUD || policyCurrency === CONST.CURRENCY.CAD; const isBankStatementUploaded = !!reimbursementAccountDraft?.[INPUT_IDS.ADDITIONAL_DATA.CORPAY.BANK_STATEMENT]?.length; if (nonUSDCountryDraftValue !== '' && achData?.created === undefined) { From 28ad3b77d6414eec772ff61d7ac055b67b428b32 Mon Sep 17 00:00:00 2001 From: madmax330 Date: Thu, 13 Aug 2026 15:51:38 +0000 Subject: [PATCH 3/5] more fixes --- .../SubStepForms/AgreementsFullStep.tsx | 2 + src/languages/de.ts | 2 + src/languages/el.ts | 2 + src/languages/en.ts | 2 + src/languages/es.ts | 2 + src/languages/fr.ts | 2 + src/languages/it.ts | 2 + src/languages/ja.ts | 2 + src/languages/nl.ts | 2 + src/languages/pl.ts | 2 + src/languages/pt-BR.ts | 2 + src/languages/zh-hans.ts | 1 + .../Documents.tsx | 4 +- tests/unit/AgreementsFullStepTest.tsx | 70 +++++++++++++++++++ 14 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 tests/unit/AgreementsFullStepTest.tsx diff --git a/src/components/SubStepForms/AgreementsFullStep.tsx b/src/components/SubStepForms/AgreementsFullStep.tsx index e0fbd45b3a98..59cddae66532 100644 --- a/src/components/SubStepForms/AgreementsFullStep.tsx +++ b/src/components/SubStepForms/AgreementsFullStep.tsx @@ -171,6 +171,8 @@ function AgreementsFullStep({ [inputIDs.agreeToTermsAndConditions, inputIDs.authorizedToBindClientToAgreement, inputIDs.consentToPrivacyNotice, inputIDs.provideTruthfulInformation, stepFields, translate], ); + console.log('AgreementsFullStep render', {defaultValues, formID, inputIDs, isLoading, stepNames, startStepIndex, bankStatementInputID, bankStatementDefaultValue}); + return ( - {translate('ownershipInfoStep.proofOfBeneficialOwnerDescription')} + + {translate(country === CONST.COUNTRY.CA ? 'ownershipInfoStep.proofOfBeneficialOwnerDescriptionCA' : 'ownershipInfoStep.proofOfBeneficialOwnerDescription')} + {(isDocumentNeededStatus.isCopyOfIDNeeded || isDocumentNeededStatus.isProofOfAddressNeeded || isDocumentNeededStatus.isCodiceFiscaleNeeded) && ( )} diff --git a/tests/unit/AgreementsFullStepTest.tsx b/tests/unit/AgreementsFullStepTest.tsx new file mode 100644 index 000000000000..a89c3bae49c4 --- /dev/null +++ b/tests/unit/AgreementsFullStepTest.tsx @@ -0,0 +1,70 @@ +import {render, screen} from '@testing-library/react-native'; + +import AgreementsFullStep from '@components/SubStepForms/AgreementsFullStep'; + +import CONST from '@src/CONST'; +import ONYXKEYS from '@src/ONYXKEYS'; +import INPUT_IDS from '@src/types/form/EnableGlobalReimbursementsForm'; + +import React from 'react'; +import Onyx from 'react-native-onyx'; + +// RenderHTML needs a TRenderEngineProvider that unit tests don't set up, and the two agreement labels that use it aren't +// what these assertions are about. +jest.mock('@components/RenderHTML', () => () => null); + +// Without a LocaleContextProvider every translate() call resolves to an empty string, which would make text queries +// pass or fail regardless of what rendered. Returning the key keeps the assertions about rendering, not translation. +jest.mock('@hooks/useLocalize', () => + jest.fn(() => ({ + translate: (key: string) => key, + })), +); + +const inputIDs = { + provideTruthfulInformation: INPUT_IDS.PROVIDE_TRUTHFUL_INFORMATION, + agreeToTermsAndConditions: INPUT_IDS.AGREE_TO_TERMS_AND_CONDITIONS, + consentToPrivacyNotice: INPUT_IDS.CONSENT_TO_PRIVACY_NOTICE, + authorizedToBindClientToAgreement: INPUT_IDS.AUTHORIZED_TO_BIND_CLIENT_TO_AGREEMENT, +}; + +const defaultValues = { + provideTruthfulInformation: true, + agreeToTermsAndConditions: true, + consentToPrivacyNotice: true, + authorizedToBindClientToAgreement: true, +}; + +function renderStep(bankStatementInputID?: typeof INPUT_IDS.BANK_STATEMENT) { + return render( + , + ); +} + +describe('AgreementsFullStep', () => { + beforeAll(() => { + Onyx.init({keys: ONYXKEYS}); + }); + + it('renders the bank statement upload when bankStatementInputID is passed', () => { + renderStep(INPUT_IDS.BANK_STATEMENT); + expect(screen.getByText('agreementsStep.bankStatement')).toBeOnTheScreen(); + }); + + it('omits the bank statement upload when bankStatementInputID is not passed', () => { + renderStep(undefined); + expect(screen.queryByText('agreementsStep.bankStatement')).not.toBeOnTheScreen(); + }); +}); From 56100a61be5e8b38eeeb7836c68cda3f96d9bad8 Mon Sep 17 00:00:00 2001 From: madmax330 Date: Wed, 19 Aug 2026 11:14:25 +0000 Subject: [PATCH 4/5] get full ssn --- src/CONST/index.ts | 6 ++-- src/languages/de.ts | 8 ++--- src/languages/el.ts | 8 ++--- src/languages/en.ts | 8 ++--- src/languages/es.ts | 8 ++--- src/languages/fr.ts | 8 ++--- src/languages/it.ts | 8 ++--- src/languages/ja.ts | 8 ++--- src/languages/nl.ts | 8 ++--- src/languages/pl.ts | 8 ++--- src/languages/pt-BR.ts | 8 ++--- src/languages/zh-hans.ts | 8 ++--- .../BeneficialOwnerDetailsFormPages.tsx | 6 ++-- .../Confirmation.tsx | 6 ++-- .../{Last4SSN.tsx => SSN.tsx} | 35 ++++++++++--------- ...DetailsAndOwnerFilesForBeneficialOwners.ts | 6 ++-- .../utils/getValuesForBeneficialOwner.ts | 8 ++--- .../BeneficialOwnersStep.tsx | 2 +- .../ConfirmationUBO.tsx | 4 +-- .../SocialSecurityNumberUBO.tsx | 25 ++++++------- .../USD/utils/getValuesForBeneficialOwner.ts | 8 ++--- 21 files changed, 87 insertions(+), 107 deletions(-) rename src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/{Last4SSN.tsx => SSN.tsx} (58%) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 3164bc9b371b..b76e6e0957f4 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -642,7 +642,7 @@ const CONST = { FIRST_NAME: 'firstName', LAST_NAME: 'lastName', DOB: 'dob', - SSN_LAST_4: 'ssnLast4', + SSN: 'ssn', STREET: 'street', CITY: 'city', STATE: 'state', @@ -871,7 +871,7 @@ const CONST = { OWNERSHIP_PERCENTAGE: 'ownership-percentage', DATE_OF_BIRTH: 'date-of-birth', ADDRESS: 'address', - LAST_4_SSN: 'last-4-ssn', + SSN: 'ssn', DOCUMENTS: 'documents', CONFIRMATION: 'confirmation', }, @@ -890,7 +890,7 @@ const CONST = { NATIONALITY: 'nationality', OWNERSHIP_PERCENTAGE: 'ownershipPercentage', DOB: 'dob', - SSN_LAST_4: 'ssnLast4', + SSN: 'ssn', STREET: 'street', CITY: 'city', STATE: 'state', diff --git a/src/languages/de.ts b/src/languages/de.ts index 0367160abc8e..ef73bc508e87 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -4106,8 +4106,7 @@ ${amount} für ${merchant} – ${date}`, legalFirstName: 'Rechtlicher Vorname', legalLastName: 'Rechtlicher Nachname', enterTheDateOfBirthOfTheOwner: 'Wie lautet das Geburtsdatum des Eigentümers?', - enterTheLast4: 'Wie lauten die letzten 4 Ziffern der Sozialversicherungsnummer des Inhabers?', - last4SSN: 'Letzte 4 Ziffern der SSN', + enterTheSSN: 'Wie lautet die Sozialversicherungsnummer des Inhabers?', dontWorry: 'Keine Sorge, wir führen keine persönlichen Bonitätsprüfungen durch!', enterTheOwnersAddress: 'Wie lautet die Adresse des Eigentümers?', letsDoubleCheck: 'Lass uns noch einmal überprüfen, ob alles richtig aussieht.', @@ -4134,13 +4133,12 @@ ${amount} für ${merchant} – ${date}`, whatsYourDOB: 'Wie ist dein Geburtsdatum?', whatsTheOwnersAddress: 'Wie lautet die Adresse des Eigentümers?', whatsYourAddress: 'Wie lautet deine Adresse?', - whatAreTheLast: 'Wie lauten die letzten 4 Ziffern der Sozialversicherungsnummer des Inhabers?', - whatsYourLast: 'Wie lauten die letzten 4 Ziffern Ihrer Sozialversicherungsnummer?', + whatsTheOwnersSSN: 'Wie lautet die Sozialversicherungsnummer des Inhabers?', + whatsYourSSN: 'Wie lautet Ihre Sozialversicherungsnummer?', whatsYourNationality: 'Was ist dein Staatsangehörigkeitsland?', whatsTheOwnersNationality: 'In welchem Land ist der/die Inhaber:in Staatsbürger:in?', countryOfCitizenship: 'Staatsangehörigkeit', dontWorry: 'Keine Sorge, wir führen keine persönlichen Bonitätsprüfungen durch!', - last4: 'Letzte 4 Ziffern der SSN', whyDoWeAsk: 'Warum fragen wir danach?', letsDoubleCheck: 'Lass uns noch einmal überprüfen, ob alles richtig aussieht.', legalName: 'Rechtlicher Name', diff --git a/src/languages/el.ts b/src/languages/el.ts index c5d194f7eb6e..a719ecfc3965 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -4171,8 +4171,7 @@ ${amount} για ${merchant} - ${date}`, legalFirstName: 'Επίσημο μικρό όνομα', legalLastName: 'Επώνυμο (όπως αναγράφεται στα επίσημα έγγραφα)', enterTheDateOfBirthOfTheOwner: 'Ποια είναι η ημερομηνία γέννησης του κατόχου;', - enterTheLast4: 'Ποια είναι τα τελευταία 4 ψηφία του αριθμού κοινωνικής ασφάλισης του κατόχου;', - last4SSN: 'Τελευταία 4 ψηφία του SSN', + enterTheSSN: 'Ποιος είναι ο αριθμός κοινωνικής ασφάλισης του κατόχου;', dontWorry: 'Μην ανησυχείτε, δεν κάνουμε κανέναν προσωπικό έλεγχο πιστοληπτικής ικανότητας!', enterTheOwnersAddress: 'Ποια είναι η διεύθυνση του ιδιοκτήτη;', letsDoubleCheck: 'Ας ελέγξουμε διπλά ότι όλα φαίνονται σωστά.', @@ -4199,13 +4198,12 @@ ${amount} για ${merchant} - ${date}`, whatsYourDOB: 'Ποια είναι η ημερομηνία γέννησής σας;', whatsTheOwnersAddress: 'Ποια είναι η διεύθυνση του ιδιοκτήτη;', whatsYourAddress: 'Ποια είναι η διεύθυνσή σας;', - whatAreTheLast: 'Ποια είναι τα τελευταία 4 ψηφία του αριθμού κοινωνικής ασφάλισης του κατόχου;', - whatsYourLast: 'Ποια είναι τα τελευταία 4 ψηφία του αριθμού κοινωνικής σας ασφάλισης;', + whatsTheOwnersSSN: 'Ποιος είναι ο αριθμός κοινωνικής ασφάλισης του κατόχου;', + whatsYourSSN: 'Ποιος είναι ο αριθμός κοινωνικής σας ασφάλισης;', whatsYourNationality: 'Ποια είναι η χώρα ιθαγένειάς σας;', whatsTheOwnersNationality: 'Ποια είναι η χώρα ιθαγένειας του ιδιοκτήτη;', countryOfCitizenship: 'Χώρα ιθαγένειας', dontWorry: 'Μην ανησυχείτε, δεν κάνουμε κανέναν προσωπικό έλεγχο πιστοληπτικής ικανότητας!', - last4: 'Τελευταία 4 ψηφία του SSN', whyDoWeAsk: 'Γιατί ζητάμε αυτό;', letsDoubleCheck: 'Ας ελέγξουμε διπλά ότι όλα φαίνονται σωστά.', legalName: 'Νομικό όνομα', diff --git a/src/languages/en.ts b/src/languages/en.ts index 42bfab65ebd4..73f0afe02bde 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -4208,8 +4208,7 @@ const translations = { legalFirstName: 'Legal first name', legalLastName: 'Legal last name', enterTheDateOfBirthOfTheOwner: "What's the owner's date of birth?", - enterTheLast4: 'What are the last 4 digits of the owner’s Social Security Number?', - last4SSN: 'Last 4 of SSN', + enterTheSSN: "What's the owner's Social Security Number?", dontWorry: "Don't worry, we don't do any personal credit checks!", enterTheOwnersAddress: "What's the owner's address?", letsDoubleCheck: 'Let’s double check that everything looks right.', @@ -4236,13 +4235,12 @@ const translations = { whatsYourDOB: "What's your date of birth?", whatsTheOwnersAddress: "What's the owner's address?", whatsYourAddress: "What's your address?", - whatAreTheLast: "What are the last 4 digits of the owner's Social Security Number?", - whatsYourLast: 'What are the last 4 digits of your Social Security Number?', + whatsTheOwnersSSN: "What's the owner's Social Security Number?", + whatsYourSSN: 'What is your Social Security Number?', whatsYourNationality: 'What is your country of citizenship?', whatsTheOwnersNationality: "What's the owner's country of citizenship?", countryOfCitizenship: 'Country of citizenship', dontWorry: "Don't worry, we don't do any personal credit checks!", - last4: 'Last 4 of SSN', whyDoWeAsk: 'Why do we ask for this?', letsDoubleCheck: 'Let’s double check that everything looks right.', legalName: 'Legal name', diff --git a/src/languages/es.ts b/src/languages/es.ts index b770b46aae69..6f4d762c554a 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -4024,8 +4024,7 @@ ${amount} para ${merchant} - ${date}`, legalFirstName: 'Nombre legal', legalLastName: 'Apellidos legales', enterTheDateOfBirthOfTheOwner: '¿Cuál es la fecha de nacimiento del dueño?', - enterTheLast4: '¿Cuáles son los últimos 4 dígitos del número de la seguridad social del dueño?', - last4SSN: 'Últimos 4 dígitos del número de la seguridad social', + enterTheSSN: '¿Cuál es el número de la seguridad social del dueño?', dontWorry: 'No te preocupes, ¡no realizamos verificaciones de crédito personales!', enterTheOwnersAddress: '¿Cuál es la dirección del dueño?', letsDoubleCheck: 'Vamos a verificar que todo esté correcto.', @@ -4052,13 +4051,12 @@ ${amount} para ${merchant} - ${date}`, whatsYourDOB: '¿Cuál es su fecha de nacimiento?', whatsTheOwnersAddress: '¿Cuál es la dirección del propietario?', whatsYourAddress: '¿Cuál es su dirección?', - whatAreTheLast: '¿Cuáles son los últimos 4 dígitos del número de seguro social del propietario?', - whatsYourLast: '¿Cuáles son los últimos 4 dígitos de su número de seguro social?', + whatsTheOwnersSSN: '¿Cuál es el número de seguro social del propietario?', + whatsYourSSN: '¿Cuál es su número de seguro social?', whatsYourNationality: '¿Cuál es tu país de ciudadanía?', whatsTheOwnersNationality: '¿Cuál es el país de ciudadanía del propietario?', countryOfCitizenship: 'País de ciudadanía', dontWorry: 'No se preocupe, ¡no realizamos ninguna verificación de crédito personal!', - last4: 'Últimos 4 del SSN', whyDoWeAsk: '¿Por qué solicitamos esto?', letsDoubleCheck: 'Verifiquemos que todo esté correcto.', legalName: 'Nombre legal', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index d1e99a5a0ecd..a93870ae848f 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -4116,8 +4116,7 @@ ${amount} pour ${merchant} - ${date}`, legalFirstName: 'Prénom légal', legalLastName: 'Nom de famille légal', enterTheDateOfBirthOfTheOwner: 'Quelle est la date de naissance du responsable ?', - enterTheLast4: 'Quels sont les 4 derniers chiffres du numéro de sécurité sociale du responsable ?', - last4SSN: '4 derniers chiffres du SSN', + enterTheSSN: 'Quel est le numéro de sécurité sociale du responsable ?', dontWorry: 'Ne vous inquiétez pas, nous ne faisons aucun contrôle de crédit personnel !', enterTheOwnersAddress: 'Quelle est l’adresse du responsable ?', letsDoubleCheck: 'Vérifions une dernière fois que tout est correct.', @@ -4144,13 +4143,12 @@ ${amount} pour ${merchant} - ${date}`, whatsYourDOB: 'Quelle est votre date de naissance ?', whatsTheOwnersAddress: 'Quelle est l’adresse du responsable ?', whatsYourAddress: 'Quelle est votre adresse ?', - whatAreTheLast: 'Quels sont les 4 derniers chiffres du numéro de sécurité sociale du propriétaire ?', - whatsYourLast: 'Quels sont les 4 derniers chiffres de votre numéro de Sécurité sociale ?', + whatsTheOwnersSSN: 'Quel est le numéro de sécurité sociale du propriétaire ?', + whatsYourSSN: 'Quel est votre numéro de Sécurité sociale ?', whatsYourNationality: 'Quel est votre pays de citoyenneté ?', whatsTheOwnersNationality: 'Quel est le pays de citoyenneté du responsable ?', countryOfCitizenship: 'Pays de citoyenneté', dontWorry: 'Ne vous inquiétez pas, nous ne faisons aucun contrôle de crédit personnel !', - last4: '4 derniers chiffres du SSN', whyDoWeAsk: 'Pourquoi demandons-nous cela ?', letsDoubleCheck: 'Vérifions une dernière fois que tout est correct.', legalName: 'Nom légal', diff --git a/src/languages/it.ts b/src/languages/it.ts index 6525fb3598d6..8d966d7c6e21 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -4091,8 +4091,7 @@ ${amount} per ${merchant} - ${date}`, legalFirstName: 'Nome legale di battesimo', legalLastName: 'Cognome legale', enterTheDateOfBirthOfTheOwner: 'Qual è la data di nascita del titolare?', - enterTheLast4: 'Quali sono le ultime 4 cifre del codice fiscale del titolare?', - last4SSN: 'Ultime 4 cifre del SSN', + enterTheSSN: 'Qual è il numero di previdenza sociale del titolare?', dontWorry: 'Non preoccuparti, non effettuiamo alcun controllo del credito personale!', enterTheOwnersAddress: "Qual è l'indirizzo del proprietario?", letsDoubleCheck: 'Controlliamo che sia tutto a posto.', @@ -4119,13 +4118,12 @@ ${amount} per ${merchant} - ${date}`, whatsYourDOB: 'Qual è la tua data di nascita?', whatsTheOwnersAddress: "Qual è l'indirizzo del proprietario?", whatsYourAddress: 'Qual è il tuo indirizzo?', - whatAreTheLast: 'Quali sono le ultime 4 cifre del numero di previdenza sociale del titolare?', - whatsYourLast: 'Quali sono le ultime 4 cifre del tuo numero di previdenza sociale?', + whatsTheOwnersSSN: 'Qual è il numero di previdenza sociale del titolare?', + whatsYourSSN: 'Qual è il tuo numero di previdenza sociale?', whatsYourNationality: 'Qual è il tuo Paese di cittadinanza?', whatsTheOwnersNationality: 'Qual è il paese di cittadinanza del titolare?', countryOfCitizenship: 'Paese di cittadinanza', dontWorry: 'Non preoccuparti, non effettuiamo alcun controllo del credito personale!', - last4: 'Ultime 4 cifre del SSN', whyDoWeAsk: 'Perché lo chiediamo?', letsDoubleCheck: 'Controlliamo che sia tutto a posto.', legalName: 'Nome legale', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 632350ceb1e4..3ddf534bc79a 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -4060,8 +4060,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' legalFirstName: '法的な名', legalLastName: '法的な姓', enterTheDateOfBirthOfTheOwner: '所有者の生年月日はいつですか?', - enterTheLast4: '所有者の社会保障番号の下4桁を入力してください。', - last4SSN: 'SSN の下4桁', + enterTheSSN: '所有者の社会保障番号は何ですか?', dontWorry: 'ご安心ください。個人信用情報の審査は一切行いません。', enterTheOwnersAddress: 'オーナーの住所は何ですか?', letsDoubleCheck: 'すべて正しく表示されているか、もう一度確認しましょう。', @@ -4088,13 +4087,12 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' whatsYourDOB: '生年月日はいつですか?', whatsTheOwnersAddress: 'オーナーの住所は何ですか?', whatsYourAddress: 'あなたの住所は何ですか?', - whatAreTheLast: '所有者の社会保障番号の下4桁は何ですか?', - whatsYourLast: 'あなたの社会保障番号の下4桁は何ですか?', + whatsTheOwnersSSN: '所有者の社会保障番号は何ですか?', + whatsYourSSN: 'あなたの社会保障番号は何ですか?', whatsYourNationality: 'あなたの市民権を持つ国はどこですか?', whatsTheOwnersNationality: '所有者の国籍はどこですか?', countryOfCitizenship: '市民権のある国', dontWorry: 'ご安心ください。個人信用情報の審査は一切行いません。', - last4: 'SSN の下4桁', whyDoWeAsk: 'なぜこの情報が必要なのですか?', letsDoubleCheck: 'すべて正しく表示されているか、もう一度確認しましょう。', legalName: '法的氏名', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 2b80016d51fb..de7786d355fe 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -4090,8 +4090,7 @@ ${amount} voor ${merchant} - ${date}`, legalFirstName: 'Juridische voornaam', legalLastName: 'Wettelijke achternaam', enterTheDateOfBirthOfTheOwner: 'Wat is de geboortedatum van de eigenaar?', - enterTheLast4: 'Wat zijn de laatste 4 cijfers van het burgerservicenummer (BSN) van de eigenaar?', - last4SSN: 'Laatste 4 cijfers van SSN', + enterTheSSN: 'Wat is het burgerservicenummer (BSN) van de eigenaar?', dontWorry: 'Geen zorgen, we voeren geen persoonlijke kredietcontroles uit!', enterTheOwnersAddress: 'Wat is het adres van de eigenaar?', letsDoubleCheck: 'Laten we voor de zekerheid controleren of alles er goed uitziet.', @@ -4118,13 +4117,12 @@ ${amount} voor ${merchant} - ${date}`, whatsYourDOB: 'Wat is je geboortedatum?', whatsTheOwnersAddress: 'Wat is het adres van de eigenaar?', whatsYourAddress: 'Wat is je adres?', - whatAreTheLast: 'Wat zijn de laatste 4 cijfers van het burgerservicenummer (BSN) van de eigenaar?', - whatsYourLast: 'Wat zijn de laatste 4 cijfers van uw sofinummer?', + whatsTheOwnersSSN: 'Wat is het burgerservicenummer (BSN) van de eigenaar?', + whatsYourSSN: 'Wat is uw sofinummer?', whatsYourNationality: 'Wat is uw nationaliteit?', whatsTheOwnersNationality: 'Wat is het land van staatsburgerschap van de eigenaar?', countryOfCitizenship: 'Land van nationaliteit', dontWorry: 'Geen zorgen, we voeren geen persoonlijke kredietcontroles uit!', - last4: 'Laatste 4 cijfers van SSN', whyDoWeAsk: 'Waarom vragen we dit?', letsDoubleCheck: 'Laten we voor de zekerheid controleren of alles er goed uitziet.', legalName: 'Wettelijke naam', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 80e3a6211964..0ea7632c6bf6 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -4075,8 +4075,7 @@ ${amount} dla ${merchant} - ${date}`, legalFirstName: 'Imię (zgodnie z dokumentem tożsamości)', legalLastName: 'Nazwisko zgodne z dokumentami', enterTheDateOfBirthOfTheOwner: 'Jaka jest data urodzenia właściciela?', - enterTheLast4: 'Jakie są ostatnie 4 cyfry numeru Social Security właściciela?', - last4SSN: 'Ostatnie 4 cyfry numeru SSN', + enterTheSSN: 'Jaki jest numer Social Security właściciela?', dontWorry: 'Spokojnie, nie przeprowadzamy żadnych osobistych kontroli kredytowych!', enterTheOwnersAddress: 'Jaki jest adres właściciela?', letsDoubleCheck: 'Sprawdźmy jeszcze raz, czy wszystko wygląda poprawnie.', @@ -4103,13 +4102,12 @@ ${amount} dla ${merchant} - ${date}`, whatsYourDOB: 'Jaka jest twoja data urodzenia?', whatsTheOwnersAddress: 'Jaki jest adres właściciela?', whatsYourAddress: 'Jaki jest twój adres?', - whatAreTheLast: 'Jakie są ostatnie 4 cyfry numeru Social Security właściciela?', - whatsYourLast: 'Jakie są ostatnie 4 cyfry Twojego numeru Social Security?', + whatsTheOwnersSSN: 'Jaki jest numer Social Security właściciela?', + whatsYourSSN: 'Jaki jest Twój numer Social Security?', whatsYourNationality: 'Jaki jest Twój kraj obywatelstwa?', whatsTheOwnersNationality: 'Jaki jest kraj obywatelstwa właściciela?', countryOfCitizenship: 'Kraj obywatelstwa', dontWorry: 'Spokojnie, nie przeprowadzamy żadnych osobistych kontroli kredytowych!', - last4: 'Ostatnie 4 cyfry numeru SSN', whyDoWeAsk: 'Dlaczego o to prosimy?', letsDoubleCheck: 'Sprawdźmy jeszcze raz, czy wszystko wygląda poprawnie.', legalName: 'Imię i nazwisko (pełne)', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 1f6fc329d284..ae1b22f900b2 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -4079,8 +4079,7 @@ ${amount} para ${merchant} - ${date}`, legalFirstName: 'Primeiro nome legal', legalLastName: 'Sobrenome legal', enterTheDateOfBirthOfTheOwner: 'Qual é a data de nascimento do proprietário?', - enterTheLast4: 'Quais são os últimos 4 dígitos do CPF do proprietário?', - last4SSN: 'Últimos 4 do SSN', + enterTheSSN: 'Qual é o número de Social Security do proprietário?', dontWorry: 'Não se preocupe, não fazemos nenhuma análise de crédito pessoal!', enterTheOwnersAddress: 'Qual é o endereço do proprietário?', letsDoubleCheck: 'Vamos conferir se está tudo certo.', @@ -4107,13 +4106,12 @@ ${amount} para ${merchant} - ${date}`, whatsYourDOB: 'Qual é a sua data de nascimento?', whatsTheOwnersAddress: 'Qual é o endereço do proprietário?', whatsYourAddress: 'Qual é o seu endereço?', - whatAreTheLast: 'Quais são os últimos 4 dígitos do Número de Seguridade Social do proprietário?', - whatsYourLast: 'Quais são os últimos 4 dígitos do seu Número de Seguridade Social?', + whatsTheOwnersSSN: 'Qual é o Número de Seguridade Social do proprietário?', + whatsYourSSN: 'Qual é o seu Número de Seguridade Social?', whatsYourNationality: 'Qual é o seu país de cidadania?', whatsTheOwnersNationality: 'Qual é o país de cidadania do proprietário?', countryOfCitizenship: 'País de cidadania', dontWorry: 'Não se preocupe, não fazemos nenhuma análise de crédito pessoal!', - last4: 'Últimos 4 do SSN', whyDoWeAsk: 'Por que pedimos isso?', letsDoubleCheck: 'Vamos conferir se está tudo certo.', legalName: 'Nome legal', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index e8fe8425185f..4de8d531cc42 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -3968,8 +3968,7 @@ ${amount},商户:${merchant} - 日期:${date}`, legalFirstName: '法定名(名)', legalLastName: '法定姓氏', enterTheDateOfBirthOfTheOwner: '所有者的出生日期是什么?', - enterTheLast4: '所有者社会安全号码的后四位数字是多少?', - last4SSN: '社保号后4位', + enterTheSSN: '所有者的社会安全号码是多少?', dontWorry: '别担心,我们不会进行任何个人信用检查!', enterTheOwnersAddress: '所有者的地址是什么?', letsDoubleCheck: '让我们再仔细检查一下,确保一切都正确。', @@ -3996,13 +3995,12 @@ ${amount},商户:${merchant} - 日期:${date}`, whatsYourDOB: '你的出生日期是?', whatsTheOwnersAddress: '所有者的地址是什么?', whatsYourAddress: '你的地址是什么?', - whatAreTheLast: '所有者社会安全号码的后 4 位数字是多少?', - whatsYourLast: '您的社会安全号码的后四位是多少?', + whatsTheOwnersSSN: '所有者的社会安全号码是多少?', + whatsYourSSN: '您的社会安全号码是多少?', whatsYourNationality: '您的国籍是哪个国家?', whatsTheOwnersNationality: '所有者的国籍是哪个国家?', countryOfCitizenship: '国籍', dontWorry: '别担心,我们不会进行任何个人信用检查!', - last4: '社保号后4位', whyDoWeAsk: '我们为什么要询问这个?', letsDoubleCheck: '让我们再仔细检查一下,确保一切都正确。', legalName: '法定姓名', diff --git a/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormPages.tsx b/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormPages.tsx index ca9c2f61146d..6f5a26a3772c 100644 --- a/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormPages.tsx +++ b/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormPages.tsx @@ -24,10 +24,10 @@ import Address from './BeneficialOwnerDetailsFormSubSteps/Address'; import Confirmation from './BeneficialOwnerDetailsFormSubSteps/Confirmation'; import DateOfBirth from './BeneficialOwnerDetailsFormSubSteps/DateOfBirth'; import Documents from './BeneficialOwnerDetailsFormSubSteps/Documents'; -import Last4SSN from './BeneficialOwnerDetailsFormSubSteps/Last4SSN'; import Name from './BeneficialOwnerDetailsFormSubSteps/Name'; import Nationality from './BeneficialOwnerDetailsFormSubSteps/Nationality'; import OwnershipPercentage from './BeneficialOwnerDetailsFormSubSteps/OwnershipPercentage'; +import SSN from './BeneficialOwnerDetailsFormSubSteps/SSN'; const {PAGE_NAME, BENEFICIAL_OWNER_INFO_STEP} = CONST.NON_USD_BANK_ACCOUNT; const SUB_PAGE_NAMES = BENEFICIAL_OWNER_INFO_STEP.SUB_PAGE_NAMES; @@ -48,7 +48,7 @@ const pages = [ }, {pageName: SUB_PAGE_NAMES.DATE_OF_BIRTH, component: DateOfBirth}, {pageName: SUB_PAGE_NAMES.ADDRESS, component: Address}, - {pageName: SUB_PAGE_NAMES.LAST_4_SSN, component: Last4SSN}, + {pageName: SUB_PAGE_NAMES.SSN, component: SSN}, {pageName: SUB_PAGE_NAMES.DOCUMENTS, component: Documents}, {pageName: SUB_PAGE_NAMES.CONFIRMATION, component: Confirmation}, ]; @@ -94,7 +94,7 @@ function BeneficialOwnerDetailsFormPages({stepNames, policyID, onFinished, backT const skipPages = useMemo(() => { const pagesToSkip: string[] = []; if (beneficialOwnerNationality !== CONST.COUNTRY.US) { - pagesToSkip.push(SUB_PAGE_NAMES.LAST_4_SSN); + pagesToSkip.push(SUB_PAGE_NAMES.SSN); } const documentsStatus = getNeededDocumentsStatusForBeneficialOwner(currency, countryStepCountryValue, beneficialOwnerAddressCountry); if (!documentsStatus.isProofOfOwnershipNeeded && !documentsStatus.isCopyOfIDNeeded && !documentsStatus.isProofOfAddressNeeded && !documentsStatus.isCodiceFiscaleNeeded) { diff --git a/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/Confirmation.tsx b/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/Confirmation.tsx index 68111ab00ad2..ab34c9bded05 100644 --- a/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/Confirmation.tsx +++ b/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/Confirmation.tsx @@ -74,8 +74,8 @@ function Confirmation({onNext, onMove, isEditing, ownerBeingModifiedID}: Confirm ? [ { id: 'ssn', - title: values.ssnLast4, - description: translate('ownershipInfoStep.last4'), + title: values.ssn, + description: translate('common.ssnFull9'), shouldShowRightIcon: true, onPress: () => { onMove(5); @@ -163,7 +163,7 @@ function Confirmation({onNext, onMove, isEditing, ownerBeingModifiedID}: Confirm values.nationality, values.ownershipPercentage, values.proofOfOwnership, - values.ssnLast4, + values.ssn, values.state, values.street, values.zipCode, diff --git a/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/Last4SSN.tsx b/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/SSN.tsx similarity index 58% rename from src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/Last4SSN.tsx rename to src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/SSN.tsx index 165dd7a492d4..5765297947d3 100644 --- a/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/Last4SSN.tsx +++ b/src/pages/ReimbursementAccount/NonUSD/BeneficialOwnerInfo/BeneficialOwnerDetailsFormSubSteps/SSN.tsx @@ -6,7 +6,7 @@ import useOnyx from '@hooks/useOnyx'; import useReimbursementAccountStepFormSubmit from '@hooks/useReimbursementAccountStepFormSubmit'; import type {SubPageProps} from '@hooks/useSubPage/types'; -import {getFieldRequiredErrors, isValidSSNLastFour} from '@libs/ValidationUtils'; +import {getFieldRequiredErrors, isValidSSNFullNine} from '@libs/ValidationUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -14,33 +14,33 @@ import ONYXKEYS from '@src/ONYXKEYS'; import {SafeString} from 'expensify-common'; import React, {useCallback} from 'react'; -type Last4SSNProps = SubPageProps & {isUserEnteringHisOwnData: boolean; ownerBeingModifiedID: string}; +type SSNProps = SubPageProps & {isUserEnteringHisOwnData: boolean; ownerBeingModifiedID: string}; -const {SSN_LAST_4, PREFIX} = CONST.NON_USD_BANK_ACCOUNT.BENEFICIAL_OWNER_INFO_STEP.BENEFICIAL_OWNER_DATA; +const {SSN: SSN_KEY, PREFIX} = CONST.NON_USD_BANK_ACCOUNT.BENEFICIAL_OWNER_INFO_STEP.BENEFICIAL_OWNER_DATA; -function Last4SSN({onNext, isEditing, onMove, isUserEnteringHisOwnData, ownerBeingModifiedID}: Last4SSNProps) { +function SSN({onNext, isEditing, onMove, isUserEnteringHisOwnData, ownerBeingModifiedID}: SSNProps) { const {translate} = useLocalize(); const [reimbursementAccountDraft] = useOnyx(ONYXKEYS.FORMS.REIMBURSEMENT_ACCOUNT_FORM_DRAFT); - const last4SSNInputID = `${PREFIX}_${ownerBeingModifiedID}_${SSN_LAST_4}` as const; - const defaultLast4SSN = SafeString(reimbursementAccountDraft?.[last4SSNInputID]); - const formTitle = translate(isUserEnteringHisOwnData ? 'ownershipInfoStep.whatsYourLast' : 'ownershipInfoStep.whatAreTheLast'); + const ssnInputID = `${PREFIX}_${ownerBeingModifiedID}_${SSN_KEY}` as const; + const defaultSSN = SafeString(reimbursementAccountDraft?.[ssnInputID]); + const formTitle = translate(isUserEnteringHisOwnData ? 'ownershipInfoStep.whatsYourSSN' : 'ownershipInfoStep.whatsTheOwnersSSN'); const validate = useCallback( (values: FormOnyxValues): FormInputErrors => { - const errors = getFieldRequiredErrors(values, [last4SSNInputID], translate); + const errors = getFieldRequiredErrors(values, [ssnInputID], translate); - if (values[last4SSNInputID] && !isValidSSNLastFour(SafeString(values[last4SSNInputID]))) { - errors[last4SSNInputID] = translate('bankAccount.error.ssnLast4'); + if (values[ssnInputID] && !isValidSSNFullNine(SafeString(values[ssnInputID]))) { + errors[ssnInputID] = translate('additionalDetailsStep.ssnFull9Error'); } return errors; }, - [last4SSNInputID, translate], + [ssnInputID, translate], ); const handleSubmit = useReimbursementAccountStepFormSubmit({ - fieldIds: [last4SSNInputID], + fieldIds: [ssnInputID], onNext, shouldSaveDraft: isEditing, }); @@ -55,15 +55,16 @@ function Last4SSN({onNext, isEditing, onMove, isUserEnteringHisOwnData, ownerBei formDisclaimer={translate('beneficialOwnerInfoStep.dontWorry')} validate={validate} onSubmit={handleSubmit} - inputId={last4SSNInputID} - inputLabel={translate('ownershipInfoStep.last4')} + inputId={ssnInputID} + inputLabel={translate('common.ssnFull9')} inputMode={CONST.INPUT_MODE.NUMERIC} - defaultValue={defaultLast4SSN} + defaultValue={defaultSSN} shouldShowHelpLinks={false} - maxLength={CONST.BANK_ACCOUNT.MAX_LENGTH.SSN} + maxLength={CONST.BANK_ACCOUNT.MAX_LENGTH.FULL_SSN} + forwardedFSClass={CONST.FULLSTORY.CLASS.MASK} shouldDelayAutoFocus /> ); } -export default Last4SSN; +export default SSN; diff --git a/src/pages/ReimbursementAccount/NonUSD/utils/getOwnerDetailsAndOwnerFilesForBeneficialOwners.ts b/src/pages/ReimbursementAccount/NonUSD/utils/getOwnerDetailsAndOwnerFilesForBeneficialOwners.ts index d46853cd884b..83c3993353b0 100644 --- a/src/pages/ReimbursementAccount/NonUSD/utils/getOwnerDetailsAndOwnerFilesForBeneficialOwners.ts +++ b/src/pages/ReimbursementAccount/NonUSD/utils/getOwnerDetailsAndOwnerFilesForBeneficialOwners.ts @@ -11,7 +11,7 @@ const { LAST_NAME, OWNERSHIP_PERCENTAGE, DOB, - SSN_LAST_4, + SSN, STREET, CITY, COUNTRY, @@ -27,7 +27,7 @@ const { PREFIX, } = CONST.NON_USD_BANK_ACCOUNT.BENEFICIAL_OWNER_INFO_STEP.BENEFICIAL_OWNER_DATA; -const ownerDetailsFields = [FIRST_NAME, LAST_NAME, OWNERSHIP_PERCENTAGE, DOB, SSN_LAST_4, STREET, CITY, STATE, ZIP_CODE, COUNTRY, NATIONALITY]; +const ownerDetailsFields = [FIRST_NAME, LAST_NAME, OWNERSHIP_PERCENTAGE, DOB, SSN, STREET, CITY, STATE, ZIP_CODE, COUNTRY, NATIONALITY]; const ownerFilesFields = [PROOF_OF_OWNERSHIP, COPY_OF_ID, ADDRESS_PROOF, CODICE_FISCALE]; function getOwnerDetailsAndOwnerFilesForBeneficialOwners(ownerKeys: string[], reimbursementAccountDraft: OnyxEntry) { @@ -46,7 +46,7 @@ function getOwnerDetailsAndOwnerFilesForBeneficialOwners(ownerKeys: string[], re continue; } - if (fieldName === SSN_LAST_4 && SafeString(reimbursementAccountDraft?.[ownerDetailsNationalityKey]) !== CONST.COUNTRY.US) { + if (fieldName === SSN && SafeString(reimbursementAccountDraft?.[ownerDetailsNationalityKey]) !== CONST.COUNTRY.US) { continue; } diff --git a/src/pages/ReimbursementAccount/NonUSD/utils/getValuesForBeneficialOwner.ts b/src/pages/ReimbursementAccount/NonUSD/utils/getValuesForBeneficialOwner.ts index 02aedc2ee7f7..9619a2c5151e 100644 --- a/src/pages/ReimbursementAccount/NonUSD/utils/getValuesForBeneficialOwner.ts +++ b/src/pages/ReimbursementAccount/NonUSD/utils/getValuesForBeneficialOwner.ts @@ -10,7 +10,7 @@ type BeneficialOwnerValues = { nationality: string; ownershipPercentage: string; dob: string; - ssnLast4: string; + ssn: string; street: string; city: string; state: string; @@ -30,7 +30,7 @@ function getValuesForOwner(beneficialOwnerBeingModifiedID: string, reimbursement nationality: '', ownershipPercentage: '', dob: '', - ssnLast4: '', + ssn: '', street: '', city: '', state: '', @@ -51,7 +51,7 @@ function getValuesForOwner(beneficialOwnerBeingModifiedID: string, reimbursement nationality: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.NATIONALITY}`, ownershipPercentage: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.OWNERSHIP_PERCENTAGE}`, dob: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.DOB}`, - ssnLast4: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.SSN_LAST_4}`, + ssn: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.SSN}`, street: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.STREET}`, city: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.CITY}`, state: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.STATE}`, @@ -69,7 +69,7 @@ function getValuesForOwner(beneficialOwnerBeingModifiedID: string, reimbursement nationality: reimbursementAccountDraft[INPUT_KEYS.nationality] ?? '', ownershipPercentage: reimbursementAccountDraft[INPUT_KEYS.ownershipPercentage] ?? '', dob: reimbursementAccountDraft[INPUT_KEYS.dob] ?? '', - ssnLast4: reimbursementAccountDraft[INPUT_KEYS.ssnLast4] ?? '', + ssn: reimbursementAccountDraft[INPUT_KEYS.ssn] ?? '', street: reimbursementAccountDraft[INPUT_KEYS.street] ?? '', city: reimbursementAccountDraft[INPUT_KEYS.city] ?? '', state: reimbursementAccountDraft[INPUT_KEYS.state] ?? '', diff --git a/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/BeneficialOwnersStep.tsx b/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/BeneficialOwnersStep.tsx index da0b5bc906e9..f848f2190537 100644 --- a/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/BeneficialOwnersStep.tsx +++ b/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/BeneficialOwnersStep.tsx @@ -98,7 +98,7 @@ function BeneficialOwnersStep({onBackButtonPress, onSubmit, currentSubPage, poli ); const submit = () => { - const beneficialOwnerFields = ['firstName', 'lastName', 'dob', 'ssnLast4', 'street', 'city', 'state', 'zipCode']; + const beneficialOwnerFields = ['firstName', 'lastName', 'dob', 'ssn', 'street', 'city', 'state', 'zipCode']; const beneficialOwnersData = beneficialOwnerKeys.map((ownerKey) => beneficialOwnerFields.reduce( (acc, fieldName) => { diff --git a/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/ConfirmationUBO.tsx b/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/ConfirmationUBO.tsx index 65a80a64969c..cef93c7d4222 100644 --- a/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/ConfirmationUBO.tsx +++ b/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/ConfirmationUBO.tsx @@ -47,8 +47,8 @@ function ConfirmationUBO({onNext, onMove, isEditing, beneficialOwnerBeingModifie }, { id: 'ssn', - description: translate('beneficialOwnerInfoStep.last4SSN'), - title: values.ssnLast4, + description: translate('common.ssnFull9'), + title: values.ssn, shouldShowRightIcon: true, onPress: () => { onMove(UBO_STEP_INDEXES.SSN); diff --git a/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/SocialSecurityNumberUBO.tsx b/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/SocialSecurityNumberUBO.tsx index bc2297af5bf0..ccb1c68eb619 100644 --- a/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/SocialSecurityNumberUBO.tsx +++ b/src/pages/ReimbursementAccount/USD/BeneficialOwnerInfo/subSteps/BeneficialOwnerDetailsFormSubSteps/SocialSecurityNumberUBO.tsx @@ -6,7 +6,7 @@ import useOnyx from '@hooks/useOnyx'; import useReimbursementAccountStepFormSubmit from '@hooks/useReimbursementAccountStepFormSubmit'; import type {SubPageProps} from '@hooks/useSubPage/types'; -import {getFieldRequiredErrors, isValidSSNLastFour} from '@libs/ValidationUtils'; +import {getFieldRequiredErrors, isValidSSNFullNine} from '@libs/ValidationUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -14,7 +14,7 @@ import ONYXKEYS from '@src/ONYXKEYS'; import {SafeString} from 'expensify-common'; import React from 'react'; -const SSN_LAST_4 = CONST.BANK_ACCOUNT.BENEFICIAL_OWNER_INFO_STEP.BENEFICIAL_OWNER_DATA.SSN_LAST_4; +const SSN = CONST.BANK_ACCOUNT.BENEFICIAL_OWNER_INFO_STEP.BENEFICIAL_OWNER_DATA.SSN; const BENEFICIAL_OWNER_PREFIX = CONST.BANK_ACCOUNT.BENEFICIAL_OWNER_INFO_STEP.BENEFICIAL_OWNER_DATA.PREFIX; type SocialSecurityNumberUBOProps = SubPageProps & {beneficialOwnerBeingModifiedID: string}; @@ -24,14 +24,14 @@ function SocialSecurityNumberUBO({onNext, onMove, isEditing, beneficialOwnerBein const [reimbursementAccountDraft] = useOnyx(ONYXKEYS.FORMS.REIMBURSEMENT_ACCOUNT_FORM_DRAFT); - const ssnLast4InputID = `${BENEFICIAL_OWNER_PREFIX}_${beneficialOwnerBeingModifiedID}_${SSN_LAST_4}` as const; - const defaultSsnLast4 = SafeString(reimbursementAccountDraft?.[ssnLast4InputID]); - const stepFields = [ssnLast4InputID]; + const ssnInputID = `${BENEFICIAL_OWNER_PREFIX}_${beneficialOwnerBeingModifiedID}_${SSN}` as const; + const defaultSsn = SafeString(reimbursementAccountDraft?.[ssnInputID]); + const stepFields = [ssnInputID]; const validate = (values: FormOnyxValues): FormInputErrors => { const errors = getFieldRequiredErrors(values, stepFields, translate); - if (values[ssnLast4InputID] && !isValidSSNLastFour(SafeString(values[ssnLast4InputID]))) { - errors[ssnLast4InputID] = translate('bankAccount.error.ssnLast4'); + if (values[ssnInputID] && !isValidSSNFullNine(SafeString(values[ssnInputID]))) { + errors[ssnInputID] = translate('additionalDetailsStep.ssnFull9Error'); } return errors; }; @@ -48,16 +48,17 @@ function SocialSecurityNumberUBO({onNext, onMove, isEditing, beneficialOwnerBein onNext={onNext} onMove={onMove} formID={ONYXKEYS.FORMS.REIMBURSEMENT_ACCOUNT_FORM} - formTitle={translate('beneficialOwnerInfoStep.enterTheLast4')} + formTitle={translate('beneficialOwnerInfoStep.enterTheSSN')} formDisclaimer={translate('beneficialOwnerInfoStep.dontWorry')} validate={validate} onSubmit={handleSubmit} - inputId={ssnLast4InputID} - inputLabel={translate('beneficialOwnerInfoStep.last4SSN')} + inputId={ssnInputID} + inputLabel={translate('common.ssnFull9')} inputMode={CONST.INPUT_MODE.NUMERIC} - defaultValue={defaultSsnLast4} + defaultValue={defaultSsn} shouldShowHelpLinks={false} - maxLength={CONST.BANK_ACCOUNT.MAX_LENGTH.SSN} + maxLength={CONST.BANK_ACCOUNT.MAX_LENGTH.FULL_SSN} + forwardedFSClass={CONST.FULLSTORY.CLASS.MASK} shouldDelayAutoFocus /> ); diff --git a/src/pages/ReimbursementAccount/USD/utils/getValuesForBeneficialOwner.ts b/src/pages/ReimbursementAccount/USD/utils/getValuesForBeneficialOwner.ts index f1a1166a5b0c..f1b73ef0cdad 100644 --- a/src/pages/ReimbursementAccount/USD/utils/getValuesForBeneficialOwner.ts +++ b/src/pages/ReimbursementAccount/USD/utils/getValuesForBeneficialOwner.ts @@ -9,7 +9,7 @@ type BeneficialOwnerValues = { firstName: string; lastName: string; dob: string; - ssnLast4: string; + ssn: string; street: string; city: string; state: string; @@ -22,7 +22,7 @@ function getValuesForBeneficialOwner(beneficialOwnerBeingModifiedID: string, rei firstName: '', lastName: '', dob: '', - ssnLast4: '', + ssn: '', street: '', city: '', state: '', @@ -36,7 +36,7 @@ function getValuesForBeneficialOwner(beneficialOwnerBeingModifiedID: string, rei firstName: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.FIRST_NAME}`, lastName: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.LAST_NAME}`, dob: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.DOB}`, - ssnLast4: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.SSN_LAST_4}`, + ssn: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.SSN}`, street: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.STREET}`, city: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.CITY}`, state: `${beneficialOwnerPrefix}_${beneficialOwnerBeingModifiedID}_${beneficialOwnerInfoKey.STATE}`, @@ -47,7 +47,7 @@ function getValuesForBeneficialOwner(beneficialOwnerBeingModifiedID: string, rei firstName: SafeString(reimbursementAccountDraft[INPUT_KEYS.firstName]), lastName: SafeString(reimbursementAccountDraft[INPUT_KEYS.lastName]), dob: SafeString(reimbursementAccountDraft[INPUT_KEYS.dob]), - ssnLast4: SafeString(reimbursementAccountDraft[INPUT_KEYS.ssnLast4]), + ssn: SafeString(reimbursementAccountDraft[INPUT_KEYS.ssn]), street: SafeString(reimbursementAccountDraft[INPUT_KEYS.street]), city: SafeString(reimbursementAccountDraft[INPUT_KEYS.city]), state: SafeString(reimbursementAccountDraft[INPUT_KEYS.state]), From c784cd5727b7ff2ef671076d1b827883cbf14a84 Mon Sep 17 00:00:00 2001 From: "Maxence Coulibaly (via MelvinBot)" Date: Wed, 19 Aug 2026 18:23:34 +0000 Subject: [PATCH 5/5] Apply Polyglot Parrot translations for bank statement and SSN strings Co-authored-by: Maxence Coulibaly --- src/languages/de.ts | 2 +- src/languages/el.ts | 8 ++++---- src/languages/es.ts | 8 ++++---- src/languages/fr.ts | 6 +++--- src/languages/it.ts | 6 +++--- src/languages/ja.ts | 2 +- src/languages/nl.ts | 4 ++-- src/languages/pl.ts | 4 ++-- src/languages/pt-BR.ts | 8 ++++---- src/languages/zh-hans.ts | 2 +- 10 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index ef73bc508e87..9c7e632ea8c9 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -4164,7 +4164,7 @@ ${amount} für ${merchant} – ${date}`, proofOfBeneficialOwnerDescription: 'Bitte legen Sie eine unterzeichnete Bescheinigung und ein Organigramm vor, ausgestellt von einem vereidigten Buchhalter, Notar oder Rechtsanwalt, die den Besitz von 25 % oder mehr des Unternehmens bestätigt. Das Dokument muss innerhalb der letzten drei Monate datiert sein und die Lizenznummer der unterzeichnenden Person enthalten.', proofOfBeneficialOwnerDescriptionCA: - 'Bitte legen Sie Ihr Schedule 50 (Shareholder Information) aus Ihrer letzten T2-Körperschaftsteuererklärung vor, das jede Person aufführt, die 25 % oder mehr des Unternehmens besitzt.', + 'Bitte geben Sie Ihren Schedule 50 (Aktionärsinformationen) aus Ihrer aktuellsten T2-Körperschaftsteuererklärung an, in dem jede Person aufgeführt ist, die 25 % oder mehr des Unternehmens besitzt.', copyOfID: 'Kopie des Ausweises des wirtschaftlich Berechtigten', copyOfIDDescription: 'Beispiele: Reisepass, Führerschein usw.', proofOfAddress: 'Adressnachweis für wirtschaftlich Berechtigte', diff --git a/src/languages/el.ts b/src/languages/el.ts index a719ecfc3965..ec8ae6fcdec4 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -4171,7 +4171,7 @@ ${amount} για ${merchant} - ${date}`, legalFirstName: 'Επίσημο μικρό όνομα', legalLastName: 'Επώνυμο (όπως αναγράφεται στα επίσημα έγγραφα)', enterTheDateOfBirthOfTheOwner: 'Ποια είναι η ημερομηνία γέννησης του κατόχου;', - enterTheSSN: 'Ποιος είναι ο αριθμός κοινωνικής ασφάλισης του κατόχου;', + enterTheSSN: 'Ποιος είναι ο αριθμός κοινωνικής ασφάλισης του ιδιοκτήτη;', dontWorry: 'Μην ανησυχείτε, δεν κάνουμε κανέναν προσωπικό έλεγχο πιστοληπτικής ικανότητας!', enterTheOwnersAddress: 'Ποια είναι η διεύθυνση του ιδιοκτήτη;', letsDoubleCheck: 'Ας ελέγξουμε διπλά ότι όλα φαίνονται σωστά.', @@ -4198,8 +4198,8 @@ ${amount} για ${merchant} - ${date}`, whatsYourDOB: 'Ποια είναι η ημερομηνία γέννησής σας;', whatsTheOwnersAddress: 'Ποια είναι η διεύθυνση του ιδιοκτήτη;', whatsYourAddress: 'Ποια είναι η διεύθυνσή σας;', - whatsTheOwnersSSN: 'Ποιος είναι ο αριθμός κοινωνικής ασφάλισης του κατόχου;', - whatsYourSSN: 'Ποιος είναι ο αριθμός κοινωνικής σας ασφάλισης;', + whatsTheOwnersSSN: 'Ποιος είναι ο αριθμός κοινωνικής ασφάλισης του ιδιοκτήτη;', + whatsYourSSN: 'Ποιος είναι ο αριθμός κοινωνικής ασφάλισής σας;', whatsYourNationality: 'Ποια είναι η χώρα ιθαγένειάς σας;', whatsTheOwnersNationality: 'Ποια είναι η χώρα ιθαγένειας του ιδιοκτήτη;', countryOfCitizenship: 'Χώρα ιθαγένειας', @@ -4229,7 +4229,7 @@ ${amount} για ${merchant} - ${date}`, proofOfBeneficialOwnerDescription: 'Παρακαλούμε προσκομίστε υπογεγραμμένη βεβαίωση και οργανόγραμμα από ορκωτό λογιστή, συμβολαιογράφο ή δικηγόρο που να επιβεβαιώνουν την κατοχή του 25% ή περισσότερο της επιχείρησης. Πρέπει να φέρουν ημερομηνία εντός των τελευταίων τριών μηνών και να περιλαμβάνουν τον αριθμό άδειας του υπογράφοντος.', proofOfBeneficialOwnerDescriptionCA: - 'Παρακαλούμε υποβάλετε το Schedule 50 (Shareholder Information) από την πιο πρόσφατη εταιρική φορολογική δήλωση T2, όπου εμφανίζεται κάθε άτομο που κατέχει 25% ή περισσότερο της επιχείρησης.', + 'Παρακαλούμε προσκομίστε το Έντυπο Schedule 50 (Shareholder Information) από την πιο πρόσφατη εταιρική δήλωση φόρου εισοδήματος T2, στο οποίο εμφανίζεται κάθε άτομο που κατέχει ποσοστό 25% ή περισσότερο της επιχείρησης.', copyOfID: 'Αντίγραφο ταυτότητας πραγματικού δικαιούχου', copyOfIDDescription: 'Παραδείγματα: διαβατήριο, άδεια οδήγησης κ.λπ.', proofOfAddress: 'Απόδειξη διεύθυνσης για τον πραγματικό δικαιούχο', diff --git a/src/languages/es.ts b/src/languages/es.ts index 6f4d762c554a..45de6dcea622 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -4024,7 +4024,7 @@ ${amount} para ${merchant} - ${date}`, legalFirstName: 'Nombre legal', legalLastName: 'Apellidos legales', enterTheDateOfBirthOfTheOwner: '¿Cuál es la fecha de nacimiento del dueño?', - enterTheSSN: '¿Cuál es el número de la seguridad social del dueño?', + enterTheSSN: '¿Cuál es el número de la Seguridad Social del propietario?', dontWorry: 'No te preocupes, ¡no realizamos verificaciones de crédito personales!', enterTheOwnersAddress: '¿Cuál es la dirección del dueño?', letsDoubleCheck: 'Vamos a verificar que todo esté correcto.', @@ -4051,8 +4051,8 @@ ${amount} para ${merchant} - ${date}`, whatsYourDOB: '¿Cuál es su fecha de nacimiento?', whatsTheOwnersAddress: '¿Cuál es la dirección del propietario?', whatsYourAddress: '¿Cuál es su dirección?', - whatsTheOwnersSSN: '¿Cuál es el número de seguro social del propietario?', - whatsYourSSN: '¿Cuál es su número de seguro social?', + whatsTheOwnersSSN: '¿Cuál es el número de la Seguridad Social del propietario?', + whatsYourSSN: '¿Cuál es tu número de la Seguridad Social?', whatsYourNationality: '¿Cuál es tu país de ciudadanía?', whatsTheOwnersNationality: '¿Cuál es el país de ciudadanía del propietario?', countryOfCitizenship: 'País de ciudadanía', @@ -4080,7 +4080,7 @@ ${amount} para ${merchant} - ${date}`, proofOfBeneficialOwnerDescription: 'Por favor, proporciona una declaración firmada y un organigrama de un contador público, notario o abogado que verifique la propiedad del 25% o más del negocio. Debe estar fechado dentro de los últimos tres meses e incluir el número de licencia del firmante.', proofOfBeneficialOwnerDescriptionCA: - 'Por favor, proporciona tu Schedule 50 (Shareholder Information) de tu declaración de impuestos corporativos T2 más reciente, que muestre a cada persona que posee el 25% o más del negocio.', + 'Por favor, proporciona tu Anexo 50 (Información de los accionistas) de la declaración más reciente del impuesto sobre la renta de sociedades T2, donde se muestren todas las personas físicas que poseen el 25% o más del negocio.', copyOfID: 'Copia de la identificación del propietario beneficiario', copyOfIDDescription: 'Ejemplos: Pasaporte, licencia de conducir, etc.', proofOfAddress: 'Prueba de la dirección del propietario beneficiario', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index a93870ae848f..064573ec7098 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -4116,7 +4116,7 @@ ${amount} pour ${merchant} - ${date}`, legalFirstName: 'Prénom légal', legalLastName: 'Nom de famille légal', enterTheDateOfBirthOfTheOwner: 'Quelle est la date de naissance du responsable ?', - enterTheSSN: 'Quel est le numéro de sécurité sociale du responsable ?', + enterTheSSN: 'Quel est le numéro de sécurité sociale du propriétaire ?', dontWorry: 'Ne vous inquiétez pas, nous ne faisons aucun contrôle de crédit personnel !', enterTheOwnersAddress: 'Quelle est l’adresse du responsable ?', letsDoubleCheck: 'Vérifions une dernière fois que tout est correct.', @@ -4144,7 +4144,7 @@ ${amount} pour ${merchant} - ${date}`, whatsTheOwnersAddress: 'Quelle est l’adresse du responsable ?', whatsYourAddress: 'Quelle est votre adresse ?', whatsTheOwnersSSN: 'Quel est le numéro de sécurité sociale du propriétaire ?', - whatsYourSSN: 'Quel est votre numéro de Sécurité sociale ?', + whatsYourSSN: 'Quel est votre numéro de sécurité sociale ?', whatsYourNationality: 'Quel est votre pays de citoyenneté ?', whatsTheOwnersNationality: 'Quel est le pays de citoyenneté du responsable ?', countryOfCitizenship: 'Pays de citoyenneté', @@ -4173,7 +4173,7 @@ ${amount} pour ${merchant} - ${date}`, proofOfBeneficialOwnerDescription: 'Veuillez fournir une attestation signée et un organigramme émis par un expert-comptable, un notaire ou un avocat, confirmant la détention de 25 % ou plus de l’entreprise. Le document doit être daté de moins de trois mois et inclure le numéro de licence du signataire.', proofOfBeneficialOwnerDescriptionCA: - 'Veuillez fournir votre annexe 50 (Renseignements sur les actionnaires) de votre plus récente déclaration de revenus des sociétés T2, indiquant chaque personne qui détient 25 % ou plus de l’entreprise.', + 'Veuillez fournir votre Annexe 50 (Renseignements sur les actionnaires) de votre plus récente déclaration T2 de l’impôt sur le revenu des sociétés, indiquant chaque personne détenant 25 % ou plus de l’entreprise.', copyOfID: 'Copie de la pièce d’identité du bénéficiaire effectif', copyOfIDDescription: 'Exemples : passeport, permis de conduire, etc.', proofOfAddress: 'Justificatif de domicile du bénéficiaire effectif', diff --git a/src/languages/it.ts b/src/languages/it.ts index 8d966d7c6e21..9e2461ef3346 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -4091,7 +4091,7 @@ ${amount} per ${merchant} - ${date}`, legalFirstName: 'Nome legale di battesimo', legalLastName: 'Cognome legale', enterTheDateOfBirthOfTheOwner: 'Qual è la data di nascita del titolare?', - enterTheSSN: 'Qual è il numero di previdenza sociale del titolare?', + enterTheSSN: 'Qual è il numero di Previdenza Sociale del titolare?', dontWorry: 'Non preoccuparti, non effettuiamo alcun controllo del credito personale!', enterTheOwnersAddress: "Qual è l'indirizzo del proprietario?", letsDoubleCheck: 'Controlliamo che sia tutto a posto.', @@ -4118,7 +4118,7 @@ ${amount} per ${merchant} - ${date}`, whatsYourDOB: 'Qual è la tua data di nascita?', whatsTheOwnersAddress: "Qual è l'indirizzo del proprietario?", whatsYourAddress: 'Qual è il tuo indirizzo?', - whatsTheOwnersSSN: 'Qual è il numero di previdenza sociale del titolare?', + whatsTheOwnersSSN: 'Qual è il numero di Previdenza Sociale del titolare?', whatsYourSSN: 'Qual è il tuo numero di previdenza sociale?', whatsYourNationality: 'Qual è il tuo Paese di cittadinanza?', whatsTheOwnersNationality: 'Qual è il paese di cittadinanza del titolare?', @@ -4147,7 +4147,7 @@ ${amount} per ${merchant} - ${date}`, proofOfBeneficialOwnerDescription: 'Fornisci un’attestazione firmata e un organigramma da parte di un commercialista, notaio o avvocato che verifichi la titolarità del 25% o più dell’azienda. Il documento deve essere datato negli ultimi tre mesi e includere il numero di licenza del firmatario.', proofOfBeneficialOwnerDescriptionCA: - 'Fornisci il tuo Schedule 50 (Shareholder Information) della tua più recente dichiarazione dei redditi societaria T2, che indichi ogni persona che detiene il 25% o più dell’azienda.', + 'Fornisci il tuo modulo Schedule 50 (Informazioni sugli azionisti) dalla più recente dichiarazione T2 dell’imposta sul reddito societario, che mostri ogni persona fisica che possiede il 25% o più dell’attività.', copyOfID: 'Copia del documento d’identità del titolare effettivo', copyOfIDDescription: 'Esempi: passaporto, patente di guida, ecc.', proofOfAddress: 'Prova di indirizzo per il titolare effettivo', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 3ddf534bc79a..cc51f739b07c 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -4115,7 +4115,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' proofOfBeneficialOwnerDescription: '事業の所有権が25%以上であることを証明するため、公認会計士、公証人、または弁護士が署名した宣誓書および組織図をご提出ください。日付は過去3か月以内のものであり、署名者の免許番号が記載されている必要があります。', proofOfBeneficialOwnerDescriptionCA: - '直近のT2法人所得税申告書のSchedule 50(Shareholder Information/株主情報)をご提出ください。事業の25%以上を保有するすべての個人が記載されている必要があります。', + '直近の T2 法人所得税申告書に含まれる Schedule 50(株主情報)をご提出ください。事業の持分を 25%以上所有しているすべての個人が分かるものをご用意ください。', copyOfID: '実質的支配者の本人確認書類のコピー', copyOfIDDescription: '例:パスポート、運転免許証など', proofOfAddress: '実質的支配者の住所証明', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index de7786d355fe..eb380861f36b 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -4118,7 +4118,7 @@ ${amount} voor ${merchant} - ${date}`, whatsTheOwnersAddress: 'Wat is het adres van de eigenaar?', whatsYourAddress: 'Wat is je adres?', whatsTheOwnersSSN: 'Wat is het burgerservicenummer (BSN) van de eigenaar?', - whatsYourSSN: 'Wat is uw sofinummer?', + whatsYourSSN: 'Wat is je sofinummer?', whatsYourNationality: 'Wat is uw nationaliteit?', whatsTheOwnersNationality: 'Wat is het land van staatsburgerschap van de eigenaar?', countryOfCitizenship: 'Land van nationaliteit', @@ -4146,7 +4146,7 @@ ${amount} voor ${merchant} - ${date}`, proofOfBeneficialOwnerDescription: 'Geef een ondertekende verklaring en een organisatieschema van een openbare accountant, notaris of advocaat waarin wordt bevestigd wie 25% of meer van het bedrijf bezit. Deze moeten dateren van binnen de laatste drie maanden en het licentienummer van de ondertekenaar bevatten.', proofOfBeneficialOwnerDescriptionCA: - 'Lever je Schedule 50 (Shareholder Information) aan uit je meest recente T2-aangifte vennootschapsbelasting, waarin iedere persoon staat die 25% of meer van het bedrijf bezit.', + 'Upload alsjeblieft je Schedule 50 (aandeelhoudersinformatie) van je meest recente T2-vennootschapsbelastingaangifte, waarop iedere persoon staat die 25% of meer van het bedrijf bezit.', copyOfID: 'Kopie van identiteitsbewijs van uiteindelijk belanghebbende', copyOfIDDescription: 'Voorbeelden: paspoort, rijbewijs, enz.', proofOfAddress: 'Adresbewijs voor uiteindelijke belanghebbende', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 0ea7632c6bf6..7307f765d1de 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -4103,7 +4103,7 @@ ${amount} dla ${merchant} - ${date}`, whatsTheOwnersAddress: 'Jaki jest adres właściciela?', whatsYourAddress: 'Jaki jest twój adres?', whatsTheOwnersSSN: 'Jaki jest numer Social Security właściciela?', - whatsYourSSN: 'Jaki jest Twój numer Social Security?', + whatsYourSSN: 'Jaki jest twój numer ubezpieczenia społecznego?', whatsYourNationality: 'Jaki jest Twój kraj obywatelstwa?', whatsTheOwnersNationality: 'Jaki jest kraj obywatelstwa właściciela?', countryOfCitizenship: 'Kraj obywatelstwa', @@ -4132,7 +4132,7 @@ ${amount} dla ${merchant} - ${date}`, proofOfBeneficialOwnerDescription: 'Prosimy o dostarczenie podpisanego oświadczenia oraz schematu organizacyjnego od biegłego rewidenta, notariusza lub prawnika, potwierdzających posiadanie 25% lub więcej udziałów w firmie. Dokument musi być opatrzony datą z ostatnich trzech miesięcy i zawierać numer licencji osoby podpisującej.', proofOfBeneficialOwnerDescriptionCA: - 'Prześlij formularz Schedule 50 (Shareholder Information) z najnowszej deklaracji podatkowej spółki T2, wskazujący każdą osobę posiadającą 25% lub więcej udziałów w firmie.', + 'Podaj formularz Schedule 50 (informacje o akcjonariuszach) z Twojego najnowszego zeznania T2 od podatku dochodowego od osób prawnych, pokazujący każdą osobę fizyczną, która posiada 25% lub więcej udziałów w firmie.', copyOfID: 'Kopia dokumentu tożsamości rzeczywistego właściciela', copyOfIDDescription: 'Przykłady: paszport, prawo jazdy itp.', proofOfAddress: 'Potwierdzenie adresu rzeczywistego właściciela', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index ae1b22f900b2..ac940d61d325 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -4079,7 +4079,7 @@ ${amount} para ${merchant} - ${date}`, legalFirstName: 'Primeiro nome legal', legalLastName: 'Sobrenome legal', enterTheDateOfBirthOfTheOwner: 'Qual é a data de nascimento do proprietário?', - enterTheSSN: 'Qual é o número de Social Security do proprietário?', + enterTheSSN: 'Qual é o número do Social Security do proprietário?', dontWorry: 'Não se preocupe, não fazemos nenhuma análise de crédito pessoal!', enterTheOwnersAddress: 'Qual é o endereço do proprietário?', letsDoubleCheck: 'Vamos conferir se está tudo certo.', @@ -4106,8 +4106,8 @@ ${amount} para ${merchant} - ${date}`, whatsYourDOB: 'Qual é a sua data de nascimento?', whatsTheOwnersAddress: 'Qual é o endereço do proprietário?', whatsYourAddress: 'Qual é o seu endereço?', - whatsTheOwnersSSN: 'Qual é o Número de Seguridade Social do proprietário?', - whatsYourSSN: 'Qual é o seu Número de Seguridade Social?', + whatsTheOwnersSSN: 'Qual é o número do Social Security do proprietário?', + whatsYourSSN: 'Qual é o seu número do seguro social?', whatsYourNationality: 'Qual é o seu país de cidadania?', whatsTheOwnersNationality: 'Qual é o país de cidadania do proprietário?', countryOfCitizenship: 'País de cidadania', @@ -4135,7 +4135,7 @@ ${amount} para ${merchant} - ${date}`, proofOfBeneficialOwnerDescription: 'Forneça uma declaração assinada e um organograma emitidos por um contador público, tabelião ou advogado comprovando a titularidade de 25% ou mais do negócio. Eles devem estar datados dos últimos três meses e incluir o número da licença do signatário.', proofOfBeneficialOwnerDescriptionCA: - 'Forneça seu Schedule 50 (Shareholder Information) da sua declaração de imposto de renda corporativa T2 mais recente, mostrando cada pessoa que possui 25% ou mais do negócio.', + 'Forneça o seu Anexo 50 (Informações dos Acionistas) da declaração de imposto de renda corporativo T2 mais recente, mostrando todas as pessoas físicas que possuem 25% ou mais do negócio.', copyOfID: 'Cópia do documento de identificação do beneficiário final', copyOfIDDescription: 'Exemplos: Passaporte, carteira de motorista, etc.', proofOfAddress: 'Comprovante de endereço do beneficiário final', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 4de8d531cc42..c6624f73cb2c 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -4022,7 +4022,7 @@ ${amount},商户:${merchant} - 日期:${date}`, proofOfBeneficialOwner: '受益所有人证明', proofOfBeneficialOwnerDescription: '请提供由注册会计师、公证人或律师出具并签署的声明和组织结构图,以核实对该企业25%或以上的持股情况。文件日期必须在最近三个月内,并包含签署人的执业证书号码。', - proofOfBeneficialOwnerDescriptionCA: '请提供您最近一期 T2 企业所得税申报表中的 Schedule 50(股东信息),列明持有该企业 25% 或以上股份的每一位个人。', + proofOfBeneficialOwnerDescriptionCA: '请提供您最近一次 T2 公司所得税申报表中的 Schedule 50(股东信息),需显示所有持有公司 25% 或以上股份的个人。', copyOfID: '受益所有人身份证复印件', copyOfIDDescription: '示例:护照、驾驶证等。', proofOfAddress: '实益所有人地址证明',