Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
6bb6106
new endpoint prepared
burczu Mar 13, 2025
b8d1ee1
calling email endpoint on submit added
burczu Mar 14, 2025
c1b88ef
loading state handling when asking for signer info API call added
burczu Mar 14, 2025
f534a60
loading while asking for signer info handled
burczu Mar 17, 2025
142bc82
director info report action handling added (WIP)
burczu Mar 31, 2025
7c62c30
missing email submit params type added
burczu Apr 11, 2025
9aeb338
redirect added
burczu Apr 15, 2025
404dd25
Merge branch 'main' into feat/50908-GR-Phase-3-Step5-chat-view
burczu Apr 28, 2025
d475923
bank account fix after merge
burczu Apr 28, 2025
29c2c04
Merge branch 'main' into feat/50908-GR-Phase-3-Step5-chat-view
burczu May 7, 2025
e304698
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk May 27, 2025
aa4ab3d
fix: lint
MrMuzyk May 27, 2025
11d15ce
fix: small refactor
MrMuzyk May 28, 2025
673f7d4
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk May 28, 2025
88145f9
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk May 30, 2025
66f9b70
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Jun 30, 2025
814edce
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Jul 31, 2025
c6ef1cb
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 1, 2025
377e876
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 1, 2025
1f7bacd
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 4, 2025
1574c85
feat: added separate form for signer info via invite
MrMuzyk Aug 5, 2025
12b2d48
feat: submits and hang tight
MrMuzyk Aug 6, 2025
98448d8
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 7, 2025
940d123
feat: final touches
MrMuzyk Aug 7, 2025
ed7ee73
fix: linters
MrMuzyk Aug 7, 2025
3a8b97f
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 7, 2025
0481eee
de translations
MrMuzyk Aug 7, 2025
9481bfb
fix: param import
MrMuzyk Aug 7, 2025
31cb6b9
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 13, 2025
4cdc40d
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 18, 2025
0580f14
fix: extract autofocus delay to reusable hook
MrMuzyk Aug 18, 2025
63c5431
feat: change copy for gbp registration number
MrMuzyk Aug 19, 2025
8775ba1
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 20, 2025
6c2abfa
fix: linter
MrMuzyk Aug 20, 2025
7616bd8
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 27, 2025
f394e79
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 28, 2025
0000af8
Merge branch 'main' of https://github.com/Expensify/App into feat/509…
MrMuzyk Aug 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,9 @@ const CONST = {
},
ALLOWED_FILE_TYPES: ['pdf', 'jpg', 'jpeg', 'png'],
},
ENTER_SIGNER_INFO: {
ALLOWED_FILE_TYPES: ['pdf', 'jpg', 'jpeg', 'png'],
},
INCORPORATION_TYPES: {
LLC: 'LLC',
CORPORATION: 'Corp',
Expand Down Expand Up @@ -1196,6 +1199,7 @@ const CONST = {
REIMBURSEMENT_REQUESTED: 'REIMBURSEMENTREQUESTED', // Deprecated OldDot Action
REIMBURSEMENT_SETUP: 'REIMBURSEMENTSETUP', // Deprecated OldDot Action
REIMBURSEMENT_SETUP_REQUESTED: 'REIMBURSEMENTSETUPREQUESTED', // Deprecated OldDot Action
REIMBURSEMENT_DIRECTOR_INFORMATION_REQUIRED: 'DIRECTORINFORMATIONREQUIRED',
REJECTED: 'REJECTED',
REMOVED_FROM_APPROVAL_CHAIN: 'REMOVEDFROMAPPROVALCHAIN',
DEMOTED_FROM_WORKSPACE: 'DEMOTEDFROMWORKSPACE',
Expand Down
3 changes: 3 additions & 0 deletions src/ONYXKEYS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -783,6 +783,8 @@ const ONYXKEYS = {
REPORT_FIELDS_EDIT_FORM_DRAFT: 'reportFieldsEditFormDraft',
REIMBURSEMENT_ACCOUNT_FORM: 'reimbursementAccount',
REIMBURSEMENT_ACCOUNT_FORM_DRAFT: 'reimbursementAccountDraft',
ENTER_SINGER_INFO_FORM: 'enterSignerInfoForm',
ENTER_SINGER_INFO_FORM_DRAFT: 'enterSignerInfoFormDraft',
PERSONAL_BANK_ACCOUNT_FORM: 'personalBankAccount',
PERSONAL_BANK_ACCOUNT_FORM_DRAFT: 'personalBankAccountDraft',
DISABLE_AUTO_RENEW_SURVEY_FORM: 'disableAutoRenewSurveyForm',
Expand Down Expand Up @@ -935,6 +937,7 @@ type OnyxFormValuesMapping = {
[ONYXKEYS.FORMS.REPORT_PHYSICAL_CARD_FORM]: FormTypes.ReportPhysicalCardForm;
[ONYXKEYS.FORMS.REPORT_FIELDS_EDIT_FORM]: FormTypes.ReportFieldsEditForm;
[ONYXKEYS.FORMS.REIMBURSEMENT_ACCOUNT_FORM]: FormTypes.ReimbursementAccountForm;
[ONYXKEYS.FORMS.ENTER_SINGER_INFO_FORM]: FormTypes.EnterSignerInfoForm;
[ONYXKEYS.FORMS.PERSONAL_BANK_ACCOUNT_FORM]: FormTypes.PersonalBankAccountForm;
[ONYXKEYS.FORMS.WORKSPACE_DESCRIPTION_FORM]: FormTypes.WorkspaceDescriptionForm;
[ONYXKEYS.FORMS.WORKSPACE_MEMBER_CUSTOM_FIELD_FORM]: FormTypes.WorkspaceMemberCustomFieldsForm;
Expand Down
9 changes: 9 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,15 @@ const ROUTES = {
return getUrlWithBackToParam(`bank-account/${stepToOpen}?policyID=${policyID}`, backTo);
},
},
BANK_ACCOUNT_ENTER_SIGNER_INFO: {
route: 'bank-account/enter-signer-info',
getRoute: (policyID: string | undefined, bankAccountID: string | undefined, isCompleted: boolean) => {
if (!policyID) {
Log.warn('Invalid policyID is used to build the BANK_ACCOUNT_ENTER_SIGNER_INFO route');
}
return `bank-account/enter-signer-info?policyID=${policyID}&bankAccountID=${bankAccountID}&isCompleted=${isCompleted}` as const;
},
},
PUBLIC_CONSOLE_DEBUG: {
route: 'troubleshoot/console',
getRoute: (backTo?: string) => getUrlWithBackToParam(`troubleshoot/console`, backTo),
Expand Down
1 change: 1 addition & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -741,6 +741,7 @@ const SCREENS = {
},
FLAG_COMMENT_ROOT: 'FlagComment_Root',
REIMBURSEMENT_ACCOUNT: 'ReimbursementAccount',
REIMBURSEMENT_ACCOUNT_ENTER_SIGNER_INFO: 'Reimbursement_Account_Signer_Info',
REFERRAL_DETAILS: 'Referral_Details',
KEYBOARD_SHORTCUTS: 'KeyboardShortcuts',
SHARE: {
Expand Down
2 changes: 1 addition & 1 deletion src/components/SubStepForms/RegistrationNumberStep.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ function RegistrationNumberStep<TFormID extends keyof OnyxFormValuesMapping>({
style={[styles.mh5, styles.flexGrow1]}
shouldHideFixErrorsAlert
>
<Text style={[styles.textHeadlineLineHeightXXL]}>{translate('businessInfoStep.whatsTheBusinessRegistrationNumber')}</Text>
<Text style={[styles.textHeadlineLineHeightXXL]}>{translate('businessInfoStep.whatsTheBusinessRegistrationNumber', {country})}</Text>
<InputWrapper
InputComponent={TextInput}
label={translate('businessInfoStep.registrationNumber')}
Expand Down
15 changes: 12 additions & 3 deletions src/components/SubStepForms/SingleFieldStep.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import React from 'react';
import React, {forwardRef, useRef} from 'react';
import type {InputModeOptions} from 'react-native';
import {View} from 'react-native';
import FormProvider from '@components/Form/FormProvider';
import InputWrapper from '@components/Form/InputWrapper';
import type {FormInputErrors, FormOnyxValues} from '@components/Form/types';
import type {AnimatedTextInputRef} from '@components/RNTextInput';
import Text from '@components/Text';
import TextInput from '@components/TextInput';
import useDelayedAutoFocus from '@hooks/useDelayAutoFocus';
import useLocalize from '@hooks/useLocalize';
import type {SubStepProps} from '@hooks/useSubStep/types';
import useThemeStyles from '@hooks/useThemeStyles';
Expand Down Expand Up @@ -58,6 +60,9 @@ type SingleFieldStepProps<TFormID extends keyof OnyxFormValuesMapping> = SubStep

/** Placeholder displayed inside input */
placeholder?: string;

/** Whether to delay autoFocus to avoid conflicts with navigation animations */
shouldDelayAutoFocus?: boolean;
};

function SingleFieldStep<TFormID extends keyof OnyxFormValuesMapping>({
Expand All @@ -77,9 +82,12 @@ function SingleFieldStep<TFormID extends keyof OnyxFormValuesMapping>({
shouldUseDefaultValue = true,
disabled = false,
placeholder,
shouldDelayAutoFocus = false,
}: SingleFieldStepProps<TFormID>) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const internalInputRef = useRef<AnimatedTextInputRef>(null);
useDelayedAutoFocus(internalInputRef, shouldDelayAutoFocus);

return (
<FormProvider
Expand Down Expand Up @@ -110,7 +118,8 @@ function SingleFieldStep<TFormID extends keyof OnyxFormValuesMapping>({
shouldUseDefaultValue={shouldUseDefaultValue}
disabled={disabled}
placeholder={placeholder}
autoFocus
autoFocus={!shouldDelayAutoFocus}
ref={internalInputRef}
/>
</View>
{shouldShowHelpLinks && <HelpLinks containerStyles={[styles.mt5]} />}
Expand All @@ -121,4 +130,4 @@ function SingleFieldStep<TFormID extends keyof OnyxFormValuesMapping>({

SingleFieldStep.displayName = 'SingleFieldStep';

export default SingleFieldStep;
export default forwardRef(SingleFieldStep);
30 changes: 30 additions & 0 deletions src/hooks/useDelayAutoFocus.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import {useFocusEffect} from '@react-navigation/native';
import type {RefObject} from 'react';
import {useCallback, useRef} from 'react';
import CONST from '@src/CONST';

function useDelayedAutoFocus(ref: RefObject<{focus: () => void} | null>, shouldDelayAutoFocus: boolean) {
const focusTimeoutRef = useRef<NodeJS.Timeout | null>(null);

useFocusEffect(
useCallback(() => {
if (!shouldDelayAutoFocus) {
return undefined;
}

focusTimeoutRef.current = setTimeout(() => {
ref.current?.focus();
}, CONST.ANIMATED_TRANSITION);

return () => {
const timeout = focusTimeoutRef.current;
if (timeout) {
clearTimeout(timeout);
focusTimeoutRef.current = null;
}
};
}, [shouldDelayAutoFocus, ref]),
);
}

export default useDelayedAutoFocus;
27 changes: 27 additions & 0 deletions src/hooks/useEnterSignerInfoStepFormSubmit.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import type {FormOnyxKeys} from '@components/Form/types';
import type {OnyxFormKey} from '@src/ONYXKEYS';
import ONYXKEYS from '@src/ONYXKEYS';
import useStepFormSubmit from './useStepFormSubmit';
import type {SubStepProps} from './useSubStep/types';

type UseEnterSignerInfoStepFormSubmit = Pick<SubStepProps, 'onNext'> & {
formId?: OnyxFormKey;
fieldIds: Array<FormOnyxKeys<typeof ONYXKEYS.FORMS.ENTER_SINGER_INFO_FORM>>;
shouldSaveDraft: boolean;
};

/**
* Hook for handling submit method in EnterSignerInfo substeps.
* When user is in editing mode, we should save values only when user confirms the change
* @param onNext - callback
* @param fieldIds - field IDs for particular step
* @param shouldSaveDraft - if we should save draft values
*/
export default function useEnterSignerInfoStepFormSubmit({onNext, fieldIds, shouldSaveDraft}: UseEnterSignerInfoStepFormSubmit) {
return useStepFormSubmit<typeof ONYXKEYS.FORMS.ENTER_SINGER_INFO_FORM>({
formId: ONYXKEYS.FORMS.ENTER_SINGER_INFO_FORM,
onNext,
fieldIds,
shouldSaveDraft,
});
}
15 changes: 14 additions & 1 deletion src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import type {
BillingBannerOwnerAmountOwedOverdueParams,
BillingBannerSubtitleWithDateParams,
BusinessBankAccountParams,
BusinessRegistrationNumberParams,
BusinessTaxIDParams,
CanceledRequestParams,
CardEndingParams,
Expand Down Expand Up @@ -203,6 +204,7 @@ import type {
SettlementAccountInfoParams,
SettlementDateParams,
ShareParams,
SignerInfoMessageParams,
SignUpNewFaceCodeParams,
SizeExceededParams,
SplitAmountParams,
Expand Down Expand Up @@ -3001,7 +3003,14 @@ const translations = {
whatsTheBusinessName: 'Wie lautet der Firmenname?',
whatsTheBusinessAddress: 'Wie lautet die Geschäftsadresse?',
whatsTheBusinessContactInformation: 'Wie lauten die Geschäftskontaktdaten?',
whatsTheBusinessRegistrationNumber: 'Wie lautet die Handelsregisternummer?',
whatsTheBusinessRegistrationNumber: ({country}: BusinessRegistrationNumberParams) => {
switch (country) {
case CONST.COUNTRY.GB:
return 'Wie lautet die Handelsregisternummer (CRN)?';
default:
return 'Wie lautet die Handelsregisternummer?';
}
},
whatsTheBusinessTaxIDEIN: ({country}: BusinessTaxIDParams) => {
switch (country) {
case CONST.COUNTRY.US:
Expand Down Expand Up @@ -3234,6 +3243,10 @@ const translations = {
PDSandFSGDescription:
'Unsere Partnerschaft mit Corpay nutzt eine API-Verbindung, um das umfangreiche Netzwerk internationaler Bankpartner zu nutzen und globale Rückerstattungen in Expensify zu ermöglichen. Gemäß der australischen Vorschriften stellen wir Ihnen den Financial Services Guide (FSG) und die Product Disclosure Statement (PDS) von Corpay zur Verfügung.\n\nBitte lesen Sie die FSG- und PDS-Dokumente sorgfältig durch, da sie vollständige Details und wichtige Informationen zu den von Corpay angebotenen Produkten und Dienstleistungen enthalten. Bewahren Sie diese Dokumente für zukünftige Referenz auf.',
pleaseUpload: 'Bitte laden Sie zusätzliche Unterlagen hoch, um uns bei der Überprüfung Ihrer Identität als Direktor oder leitender Angestellter des Unternehmens zu unterstützen.',
enterSignerInfo: 'Unterschriftsberechtigte Person eingeben',
thisStep: 'Dieser Schritt wurde abgeschlossen',
isConnecting: ({bankAccountLastFour, currency}: SignerInfoMessageParams) =>
`verbindet ein Geschäftskonto in ${currency} mit der Endung ${bankAccountLastFour} mit Expensify, um Mitarbeitende in ${currency} zu bezahlen. Der nächste Schritt erfordert Informationen einer unterschriftsberechtigten Person wie einem Geschäftsführer oder einer Führungskraft.`,
},
agreementsStep: {
agreements: 'Vereinbarungen',
Expand Down
17 changes: 15 additions & 2 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import type {
BillingBannerOwnerAmountOwedOverdueParams,
BillingBannerSubtitleWithDateParams,
BusinessBankAccountParams,
BusinessRegistrationNumberParams,
BusinessTaxIDParams,
CanceledRequestParams,
CardEndingParams,
Expand Down Expand Up @@ -192,6 +193,7 @@ import type {
SettlementAccountInfoParams,
SettlementDateParams,
ShareParams,
SignerInfoMessageParams,
SignUpNewFaceCodeParams,
SizeExceededParams,
SplitAmountParams,
Expand Down Expand Up @@ -3001,7 +3003,14 @@ const translations = {
whatsTheBusinessName: "What's the business name?",
whatsTheBusinessAddress: "What's the business address?",
whatsTheBusinessContactInformation: "What's the business contact information?",
whatsTheBusinessRegistrationNumber: "What's the business registration number?",
whatsTheBusinessRegistrationNumber: ({country}: BusinessRegistrationNumberParams) => {
switch (country) {
case CONST.COUNTRY.GB:
return "What's the Company Registration Number (CRN)?";
default:
return "What's the business registration number?";
}
},
whatsTheBusinessTaxIDEIN: ({country}: BusinessTaxIDParams) => {
switch (country) {
case CONST.COUNTRY.US:
Expand Down Expand Up @@ -3217,7 +3226,7 @@ const translations = {
legalName: 'Legal name',
proofOf: 'Proof of personal address',
enterOneEmail: ({companyName}: CompanyNameParams) => `Enter the email of director or senior officer at ${companyName}`,
regulationRequiresOneMoreDirector: 'Regulation requires at least more director or senior officer as a signer.',
regulationRequiresOneMoreDirector: 'Regulation requires at least one more director or senior officer as a signer.',
hangTight: 'Hang tight...',
enterTwoEmails: ({companyName}: CompanyNameParams) => `Enter the emails of two directors or senior officers at ${companyName}`,
sendReminder: 'Send a reminder',
Expand All @@ -3232,6 +3241,10 @@ const translations = {
PDSandFSGDescription:
"Our partnership with Corpay utilizes an API connection to take advantage of their vast network of international banking partners to power Global Reimbursements in Expensify. As per Australian regulation we are providing you with Corpay's Financial Services Guide (FSG) and Product Disclosure Statement (PDS).\n\nPlease read the FSG and PDS documents carefully as they contain full details and important information on the products and services Corpay offers. Retain these documents for future reference.",
pleaseUpload: 'Please upload additional documentation below to help us verify your identity as a director or senior officer of the business entity.',
enterSignerInfo: 'Enter signer info',
thisStep: 'This step has been completed',
isConnecting: ({bankAccountLastFour, currency}: SignerInfoMessageParams) =>
`is connecting a ${currency} business bank account ending in ${bankAccountLastFour} to Expensify to pay employees in ${currency}. The next step requires signer info from a director or senior officer.`,
},
agreementsStep: {
agreements: 'Agreements',
Expand Down
15 changes: 14 additions & 1 deletion src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import type {
BillingBannerOwnerAmountOwedOverdueParams,
BillingBannerSubtitleWithDateParams,
BusinessBankAccountParams,
BusinessRegistrationNumberParams,
BusinessTaxIDParams,
CanceledRequestParams,
CardEndingParams,
Expand Down Expand Up @@ -190,6 +191,7 @@ import type {
SettlementAccountInfoParams,
SettlementDateParams,
ShareParams,
SignerInfoMessageParams,
SignUpNewFaceCodeParams,
SizeExceededParams,
SplitAmountParams,
Expand Down Expand Up @@ -2988,7 +2990,14 @@ const translations = {
whatsTheBusinessName: '¿Cuál es el nombre de la empresa?',
whatsTheBusinessAddress: '¿Cuál es la dirección de la empresa?',
whatsTheBusinessContactInformation: '¿Cuál es la información de contacto de la empresa?',
whatsTheBusinessRegistrationNumber: '¿Cuál es el número de registro de la empresa?',
whatsTheBusinessRegistrationNumber: ({country}: BusinessRegistrationNumberParams) => {
switch (country) {
case CONST.COUNTRY.GB:
return '¿Cuál es el número de registro de la empresa (CRN)?';
default:
return '¿Cuál es el número de registro de la empresa?';
}
},
whatsTheBusinessTaxIDEIN: ({country}: BusinessTaxIDParams) => {
switch (country) {
case CONST.COUNTRY.US:
Expand Down Expand Up @@ -3220,6 +3229,10 @@ const translations = {
PDSandFSGDescription:
'Nuestra colaboración con Corpay utiliza una conexión API para aprovechar su amplia red de socios bancarios internacionales y facilitar los reembolsos globales en Expensify. Según la normativa australiana, te proporcionamos la Guía de Servicios Financieros (FSG) y el Documento de Divulgación del Producto (PDS) de Corpay.\n\nPor favor, lee detenidamente los documentos FSG y PDS, ya que contienen información completa e importante sobre los productos y servicios que ofrece Corpay. Conserva estos documentos para futuras consultas.',
pleaseUpload: 'Sube documentación adicional a continuación para ayudarnos a verificar tu identidad como director o alto ejecutivo de la entidad comercial.',
enterSignerInfo: 'Ingrese la información del firmante',
thisStep: 'Este paso ha sido completado',
isConnecting: ({bankAccountLastFour, currency}: SignerInfoMessageParams) =>
`está conectando una cuenta bancaria comercial en ${currency} que termina en ${bankAccountLastFour} a Expensify para pagar a los empleados en ${currency}. El siguiente paso requiere la información del firmante de un director o alto ejecutivo.`,
},
agreementsStep: {
agreements: 'Acuerdos',
Expand Down
15 changes: 14 additions & 1 deletion src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import type {
BillingBannerOwnerAmountOwedOverdueParams,
BillingBannerSubtitleWithDateParams,
BusinessBankAccountParams,
BusinessRegistrationNumberParams,
BusinessTaxIDParams,
CanceledRequestParams,
CardEndingParams,
Expand Down Expand Up @@ -203,6 +204,7 @@ import type {
SettlementAccountInfoParams,
SettlementDateParams,
ShareParams,
SignerInfoMessageParams,
SignUpNewFaceCodeParams,
SizeExceededParams,
SplitAmountParams,
Expand Down Expand Up @@ -3006,7 +3008,14 @@ const translations = {
whatsTheBusinessName: "Quel est le nom de l'entreprise ?",
whatsTheBusinessAddress: "Quelle est l'adresse de l'entreprise ?",
whatsTheBusinessContactInformation: 'Quelles sont les coordonnées professionnelles ?',
whatsTheBusinessRegistrationNumber: "Quel est le numéro d'enregistrement de l'entreprise ?",
whatsTheBusinessRegistrationNumber: ({country}: BusinessRegistrationNumberParams) => {
switch (country) {
case CONST.COUNTRY.GB:
return 'Quel est le numéro d’enregistrement de l’entreprise (CRN) ?';
default:
return 'Quel est le numéro d’enregistrement de l’entreprise ?';
}
},
whatsTheBusinessTaxIDEIN: ({country}: BusinessTaxIDParams) => {
switch (country) {
case CONST.COUNTRY.US:
Expand Down Expand Up @@ -3242,6 +3251,10 @@ const translations = {
"Notre partenariat avec Corpay utilise une connexion API pour tirer parti de leur vaste réseau de partenaires bancaires internationaux afin d'alimenter les Remboursements Globaux dans Expensify. Conformément à la réglementation australienne, nous vous fournissons le Guide des Services Financiers (FSG) et le Document de Révélation de Produit (PDS) de Corpay.\n\nVeuillez lire attentivement les documents FSG et PDS car ils contiennent des détails complets et des informations importantes sur les produits et services offerts par Corpay. Conservez ces documents pour référence future.",
pleaseUpload:
"Veuillez télécharger ci-dessous des documents supplémentaires pour nous aider à vérifier votre identité en tant que directeur ou cadre supérieur de l'entité commerciale.",
enterSignerInfo: 'Entrez les informations du signataire',
thisStep: 'Cette étape a été complétée',
isConnecting: ({bankAccountLastFour, currency}: SignerInfoMessageParams) =>
`connecte un compte bancaire professionnel en ${currency} se terminant par ${bankAccountLastFour} à Expensify pour payer les employés en ${currency}. L'étape suivante nécessite les informations d’un signataire, tel qu’un directeur ou un cadre supérieur.`,
},
agreementsStep: {
agreements: 'Accords',
Expand Down
Loading
Loading