diff --git a/src/languages/de.ts b/src/languages/de.ts index eabba2b966c8..9bd3faf31985 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1135,6 +1135,7 @@ const translations: TranslationDeepObject = { removeSplit: 'Aufteilung entfernen', splitExpenseCannotBeEditedModalTitle: 'Diese Ausgabe kann nicht bearbeitet werden', splitExpenseCannotBeEditedModalDescription: 'Genehmigte oder bezahlte Ausgaben können nicht bearbeitet werden', + splitExpenseDistanceErrorModalDescription: 'Bitte beheben Sie den Fehler bei der Entfernungsrate und versuchen Sie es erneut.', paySomeone: ({name}: PaySomeoneParams = {}) => `Bezahle ${name ?? 'jemand'}`, expense: 'Ausgabe', categorize: 'Kategorisieren', diff --git a/src/languages/en.ts b/src/languages/en.ts index 614ea2671298..f4ab877773a2 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1139,6 +1139,7 @@ const translations = { removeSplit: 'Remove split', splitExpenseCannotBeEditedModalTitle: "This expense can't be edited", splitExpenseCannotBeEditedModalDescription: 'Approved or paid expenses cannot be edited', + splitExpenseDistanceErrorModalDescription: 'Please fix the distance rate error and try again.', paySomeone: ({name}: PaySomeoneParams = {}) => `Pay ${name ?? 'someone'}`, expense: 'Expense', categorize: 'Categorize', diff --git a/src/languages/es.ts b/src/languages/es.ts index 14439b936205..c389f1b84c29 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -885,6 +885,7 @@ const translations: TranslationDeepObject = { removeSplit: 'Eliminar división', splitExpenseCannotBeEditedModalTitle: 'Este gasto no se puede editar', splitExpenseCannotBeEditedModalDescription: 'Los gastos aprobados o pagados no se pueden editar', + splitExpenseDistanceErrorModalDescription: 'Corrige el error de la tarifa de distancia e inténtalo de nuevo.', addExpense: 'Agregar gasto', expense: 'Gasto', categorize: 'Categorizar', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index b7c6e7534a9d..60aa59af7d83 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1137,6 +1137,7 @@ const translations: TranslationDeepObject = { removeSplit: 'Supprimer la répartition', splitExpenseCannotBeEditedModalTitle: 'Cette dépense ne peut pas être modifiée', splitExpenseCannotBeEditedModalDescription: 'Les dépenses approuvées ou payées ne peuvent pas être modifiées', + splitExpenseDistanceErrorModalDescription: 'Veuillez corriger l’erreur du taux de distance et réessayer.', paySomeone: ({name}: PaySomeoneParams = {}) => `Payer ${name ?? 'quelqu’un'}`, expense: 'Dépense', categorize: 'Catégoriser', diff --git a/src/languages/it.ts b/src/languages/it.ts index 3100a3eadfb9..fb5d0eb02e7b 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1132,6 +1132,7 @@ const translations: TranslationDeepObject = { removeSplit: 'Rimuovi suddivisione', splitExpenseCannotBeEditedModalTitle: 'Questa spesa non può essere modificata', splitExpenseCannotBeEditedModalDescription: 'Le spese approvate o pagate non possono essere modificate', + splitExpenseDistanceErrorModalDescription: 'Correggi l’errore della tariffa di distanza e riprova.', paySomeone: ({name}: PaySomeoneParams = {}) => `Paga ${name ?? 'qualcuno'}`, expense: 'Spesa', categorize: 'Classifica', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index b36cda31a929..ccf33510ebe1 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1131,6 +1131,7 @@ const translations: TranslationDeepObject = { removeSplit: '分割を削除', splitExpenseCannotBeEditedModalTitle: 'この経費は編集できません', splitExpenseCannotBeEditedModalDescription: '承認済みまたは支払済みの経費は編集できません', + splitExpenseDistanceErrorModalDescription: '距離レートのエラーを修正して、もう一度お試しください。', paySomeone: ({name}: PaySomeoneParams = {}) => `${name ?? '誰か'} を支払う`, expense: '経費', categorize: 'カテゴリ分け', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 9badcb5f15ee..0c80b7192b7d 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1132,6 +1132,7 @@ const translations: TranslationDeepObject = { removeSplit: 'Splitsing verwijderen', splitExpenseCannotBeEditedModalTitle: 'Deze uitgave kan niet worden bewerkt', splitExpenseCannotBeEditedModalDescription: 'Goedgekeurde of betaalde uitgaven kunnen niet worden bewerkt', + splitExpenseDistanceErrorModalDescription: 'Los de fout in het afstandstarief op en probeer het opnieuw.', paySomeone: ({name}: PaySomeoneParams = {}) => `Betaal ${name ?? 'iemand'}`, expense: 'Uitgave', categorize: 'Categoriseren', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 6c1f64e9da16..3979a19420d0 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1133,6 +1133,7 @@ const translations: TranslationDeepObject = { removeSplit: 'Usuń podział', splitExpenseCannotBeEditedModalTitle: 'Ten wydatek nie może zostać edytowany', splitExpenseCannotBeEditedModalDescription: 'Zatwierdzonych lub opłaconych wydatków nie można edytować', + splitExpenseDistanceErrorModalDescription: 'Popraw błąd stawki odległości i spróbuj ponownie.', paySomeone: ({name}: PaySomeoneParams = {}) => `Zapłać ${name ?? 'ktoś'}`, expense: 'Wydatek', categorize: 'Kategoryzuj', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 415a160d19d9..955d497b1f53 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1131,6 +1131,7 @@ const translations: TranslationDeepObject = { removeSplit: 'Remover divisão', splitExpenseCannotBeEditedModalTitle: 'Esta despesa não pode ser editada', splitExpenseCannotBeEditedModalDescription: 'Despesas aprovadas ou pagas não podem ser editadas', + splitExpenseDistanceErrorModalDescription: 'Corrija o erro da taxa de distância e tente novamente.', paySomeone: ({name}: PaySomeoneParams = {}) => `Pagar ${name ?? 'alguém'}`, expense: 'Despesa', categorize: 'Categorizar', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 687d564aca16..f76aaf39d93f 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1116,6 +1116,7 @@ const translations: TranslationDeepObject = { removeSplit: '移除拆分', splitExpenseCannotBeEditedModalTitle: '此报销无法编辑', splitExpenseCannotBeEditedModalDescription: '已批准或已支付的费用无法编辑', + splitExpenseDistanceErrorModalDescription: '请修复距离费率错误后重试。', paySomeone: ({name}: PaySomeoneParams = {}) => `支付 ${name ?? '某人'}`, expense: '费用', categorize: '分类', diff --git a/src/pages/iou/SplitExpensePage.tsx b/src/pages/iou/SplitExpensePage.tsx index 48eb6b6fa391..2f71b1030eda 100644 --- a/src/pages/iou/SplitExpensePage.tsx +++ b/src/pages/iou/SplitExpensePage.tsx @@ -131,6 +131,10 @@ function SplitExpensePage({route}: SplitExpensePageProps) { const {isBetaEnabled} = usePermissions(); + // Check if the transaction has customUnitOutOfPolicy violation (distance rate error) + const currentTransactionViolations = transactionViolations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`] ?? []; + const hasDistanceRateError = currentTransactionViolations.some((violation) => violation.name === CONST.VIOLATIONS.CUSTOM_UNIT_OUT_OF_POLICY); + useEffect(() => { const errorString = getLatestErrorMessage(draftTransaction ?? {}); @@ -158,6 +162,16 @@ function SplitExpensePage({route}: SplitExpensePageProps) { }; const onSaveSplitExpense = () => { + if (hasDistanceRateError) { + showConfirmModal({ + title: translate('iou.splitExpense'), + prompt: translate('iou.splitExpenseDistanceErrorModalDescription'), + confirmText: translate('common.buttonConfirm'), + shouldShowCancelButton: false, + }); + return; + } + if (splitExpenses.length > CONST.IOU.SPLITS_LIMIT) { setErrorMessage(translate('iou.error.manySplitsProvided')); return;