diff --git a/src/languages/de.ts b/src/languages/de.ts
index 3bf6eb8ebcb8..fdba26950e9c 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -3025,6 +3025,7 @@ ${
whenClearStatus: 'Wann sollen wir deinen Status löschen?',
vacationDelegate: 'Urlaubsvertreter',
setVacationDelegate: `Legen Sie eine Urlaubsvertretung fest, die Berichte in Ihrer Abwesenheit in Ihrem Namen genehmigt.`,
+ cannotSetVacationDelegate: `Du kannst keinen Urlaubsvertreter festlegen, da du derzeit der Vertreter für die folgenden Mitglieder bist:`,
vacationDelegateError: 'Beim Aktualisieren deines Urlaubsvertreters ist ein Fehler aufgetreten.',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `als Urlaubsvertretung von ${nameOrEmail}`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) => `an ${submittedToName} als Urlaubsvertreter für ${vacationDelegateName}`,
diff --git a/src/languages/en.ts b/src/languages/en.ts
index fc3b9e4cbd34..f0584e579984 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -2987,6 +2987,7 @@ const translations = {
whenClearStatus: 'When should we clear your status?',
vacationDelegate: 'Vacation delegate',
setVacationDelegate: `Set a vacation delegate to approve reports on your behalf while you're out of office.`,
+ cannotSetVacationDelegate: `You can't set a vacation delegate because you're currently the delegate for the following members:`,
vacationDelegateError: 'There was an error updating your vacation delegate.',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `as ${nameOrEmail}'s vacation delegate`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) => `to ${submittedToName} as vacation delegate for ${vacationDelegateName}`,
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 3a370bfc8e2c..f1c0969a234b 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -2683,6 +2683,7 @@ ${amount} para ${merchant} - ${date}`,
whenClearStatus: '¿Cuándo deberíamos borrar tu estado?',
vacationDelegate: 'Delegado de vacaciones',
setVacationDelegate: 'Configura un delegado de vacaciones para aprobar informes en tu nombre mientras estás fuera de la oficina.',
+ cannotSetVacationDelegate: `No puedes establecer un delegado de vacaciones porque actualmente eres el delegado de los siguientes miembros:`,
vacationDelegateError: 'Hubo un error al actualizar tu delegado de vacaciones.',
asVacationDelegate: ({nameOrEmail: managerName}) => `como delegado de vacaciones de ${managerName}`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}) => `a ${submittedToName} como delegado de vacaciones de ${vacationDelegateName}`,
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index db35ff171216..638507fbc349 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -3030,6 +3030,7 @@ ${
whenClearStatus: 'Quand devons-nous effacer votre statut ?',
vacationDelegate: 'Délégué de vacances',
setVacationDelegate: `Définissez un délégué de vacances pour approuver les rapports en votre nom pendant que vous êtes absent du bureau.`,
+ cannotSetVacationDelegate: `Vous ne pouvez pas définir un délégué de vacances car vous êtes actuellement le délégué des membres suivants :`,
vacationDelegateError: 'Une erreur s’est produite lors de la mise à jour de votre délégué de vacances.',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `en tant que délégué de vacances de ${nameOrEmail}`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) =>
diff --git a/src/languages/it.ts b/src/languages/it.ts
index ca5530401bca..c9123686172c 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -3014,6 +3014,7 @@ ${
whenClearStatus: 'Quando dovremmo cancellare il tuo stato?',
vacationDelegate: 'Delegato ferie',
setVacationDelegate: `Imposta un delegato per le vacanze che approvi i report per tuo conto mentre sei fuori ufficio.`,
+ cannotSetVacationDelegate: `Non puoi impostare un delegato per le ferie perché al momento sei il delegato per i seguenti membri:`,
vacationDelegateError: "Si è verificato un errore durante l'aggiornamento del tuo delegato per le ferie.",
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `come delegato per le vacanze di ${nameOrEmail}`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) => `a ${submittedToName} come delegato per le ferie di ${vacationDelegateName}`,
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 04ae3d174601..2e7a4c4127a0 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -3007,6 +3007,7 @@ ${
whenClearStatus: 'ステータスをいつクリアしますか?',
vacationDelegate: '休暇代理人',
setVacationDelegate: `休暇中に代理承認者を設定して、不在の間にあなたの代わりにレポートを承認してもらいましょう。`,
+ cannotSetVacationDelegate: `現在、次のメンバーの代理人になっているため、休暇代理人を設定できません:`,
vacationDelegateError: '休暇代理人の更新中にエラーが発生しました。',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `${nameOrEmail} の休暇代理として`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) => `${vacationDelegateName} の休暇代理人として ${submittedToName} に`,
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 06e93f0ab145..6e69a05be202 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -3011,6 +3011,7 @@ ${
whenClearStatus: 'Wanneer moeten we je status wissen?',
vacationDelegate: 'Vakantie-gemachtigde',
setVacationDelegate: `Stel een vervangende goedkeurder in om rapporten namens jou te accorderen terwijl je afwezig bent.`,
+ cannotSetVacationDelegate: `Je kunt geen vakantiedelegaat instellen omdat je momenteel de delegaat bent voor de volgende leden:`,
vacationDelegateError: 'Er is een fout opgetreden bij het bijwerken van je vervanger tijdens vakantie.',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `als ${nameOrEmail}'s plaatsvervanger tijdens vakantie`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) => `aan ${submittedToName} als vakantiemachtiging voor ${vacationDelegateName}`,
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index e55050b7811c..c0f915bdca92 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -3008,6 +3008,7 @@ ${
whenClearStatus: 'Kiedy powinniśmy wyczyścić Twój status?',
vacationDelegate: 'Zastępca urlopowy',
setVacationDelegate: `Ustaw zastępcę na czas urlopu, aby zatwierdzał raporty w Twoim imieniu, gdy jesteś poza biurem.`,
+ cannotSetVacationDelegate: `Nie możesz ustawić delegata urlopowego, ponieważ obecnie jesteś delegatem dla następujących członków:`,
vacationDelegateError: 'Wystąpił błąd podczas aktualizowania Twojego zastępcy urlopowego.',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `jako zastępca urlopowy ${nameOrEmail}`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) => `do ${submittedToName} jako zastępca urlopowy dla ${vacationDelegateName}`,
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 66f72484e656..b631d7d7b043 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -3007,6 +3007,7 @@ ${
whenClearStatus: 'Quando devemos limpar seu status?',
vacationDelegate: 'Delegado de férias',
setVacationDelegate: `Defina um delegado de férias para aprovar relatórios em seu nome enquanto você estiver fora do escritório.`,
+ cannotSetVacationDelegate: `Você não pode definir um delegado de férias porque atualmente é o delegado dos seguintes membros:`,
vacationDelegateError: 'Ocorreu um erro ao atualizar o seu delegado de férias.',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `como representante de férias de ${nameOrEmail}`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) =>
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index d7e82bb95e7b..3b33e4d71769 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -2969,6 +2969,7 @@ ${
whenClearStatus: '我们应何时清除你的状态?',
vacationDelegate: '休假代理',
setVacationDelegate: `设置一个休假代理,在你不在办公室时代你审批报销报告。`,
+ cannotSetVacationDelegate: `由于你目前是以下成员的代理人,因此无法设置休假代理人:`,
vacationDelegateError: '更新你的休假代理时出错。',
asVacationDelegate: ({nameOrEmail}: VacationDelegateParams) => `作为 ${nameOrEmail} 的休假代理`,
toAsVacationDelegate: ({submittedToName, vacationDelegateName}: SubmittedToVacationDelegateParams) => `作为 ${vacationDelegateName} 的休假代理,提交给 ${submittedToName}`,
diff --git a/src/pages/settings/Profile/CustomStatus/StatusPage.tsx b/src/pages/settings/Profile/CustomStatus/StatusPage.tsx
index 20f8cce5b6c0..1e4bedb0b7fe 100644
--- a/src/pages/settings/Profile/CustomStatus/StatusPage.tsx
+++ b/src/pages/settings/Profile/CustomStatus/StatusPage.tsx
@@ -60,6 +60,7 @@ function StatusPage() {
const [vacationDelegate] = useOnyx(ONYXKEYS.NVP_PRIVATE_VACATION_DELEGATE, {canBeMissing: true});
const hasVacationDelegate = !!vacationDelegate?.delegate;
+ const hasActiveDelegations = (vacationDelegate?.delegatorFor?.length ?? 0) > 0;
const vacationDelegatePersonalDetails = getPersonalDetailByEmail(vacationDelegate?.delegate ?? '');
const formattedDelegateLogin = formatPhoneNumber(vacationDelegatePersonalDetails?.login ?? '');
@@ -189,6 +190,32 @@ function StatusPage() {
const {inputCallbackRef, inputRef} = useAutoFocusInput();
const fallbackVacationDelegateLogin = formattedDelegateLogin === '' ? vacationDelegate?.delegate : formattedDelegateLogin;
+ const renderDelegatorList = () => {
+ if (!vacationDelegate?.delegatorFor) {
+ return null;
+ }
+
+ return vacationDelegate.delegatorFor.map((delegatorEmail) => {
+ const delegatorDetails = getPersonalDetailByEmail(delegatorEmail);
+ const formattedLogin = formatPhoneNumber(delegatorDetails?.login ?? '');
+ const displayLogin = formattedLogin || delegatorEmail;
+
+ return (
+
+ );
+ });
+ };
+
return (
- {translate('statusPage.setVacationDelegate')}
- {hasVacationDelegate && {translate('statusPage.vacationDelegate')}}
- {hasVacationDelegate ? (
- clearVacationDelegateError(vacationDelegate?.previousDelegate)}
- >
-
+ {translate('statusPage.vacationDelegate')}
+ {hasActiveDelegations ? (
+
+ {translate('statusPage.cannotSetVacationDelegate')}
+ {renderDelegatorList()}
+
) : (
-
-
diff --git a/src/pages/settings/Profile/CustomStatus/VacationDelegatePage.tsx b/src/pages/settings/Profile/CustomStatus/VacationDelegatePage.tsx
index 2d09aa9960f7..6048000a9823 100644
--- a/src/pages/settings/Profile/CustomStatus/VacationDelegatePage.tsx
+++ b/src/pages/settings/Profile/CustomStatus/VacationDelegatePage.tsx
@@ -18,6 +18,7 @@ import {formatPhoneNumber} from '@libs/LocalePhoneNumber';
import Navigation from '@libs/Navigation/Navigation';
import {getHeaderMessage} from '@libs/OptionsListUtils';
import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils';
+import NotFoundPage from '@pages/ErrorPage/NotFoundPage';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
@@ -35,6 +36,7 @@ function VacationDelegatePage() {
const [vacationDelegate] = useOnyx(ONYXKEYS.NVP_PRIVATE_VACATION_DELEGATE, {canBeMissing: true});
const currentVacationDelegate = vacationDelegate?.delegate;
const delegatePersonalDetails = getPersonalDetailByEmail(currentVacationDelegate ?? '');
+ const hasActiveDelegations = (vacationDelegate?.delegatorFor?.length ?? 0) > 0;
const icons = useMemoizedLazyExpensifyIcons(['FallbackAvatar']);
const excludeLogins = useMemo(
@@ -164,6 +166,10 @@ function VacationDelegatePage() {
searchInServer(debouncedSearchTerm);
}, [debouncedSearchTerm]);
+ if (hasActiveDelegations) {
+ return ;
+ }
+
return (
<>