Skip to content
Merged
1 change: 1 addition & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1135,6 +1135,7 @@ const translations: TranslationDeepObject<typeof en> = {
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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -885,6 +885,7 @@ const translations: TranslationDeepObject<typeof en> = {
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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1137,6 +1137,7 @@ const translations: TranslationDeepObject<typeof en> = {
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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1132,6 +1132,7 @@ const translations: TranslationDeepObject<typeof en> = {
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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1131,6 +1131,7 @@ const translations: TranslationDeepObject<typeof en> = {
removeSplit: '分割を削除',
splitExpenseCannotBeEditedModalTitle: 'この経費は編集できません',
splitExpenseCannotBeEditedModalDescription: '承認済みまたは支払済みの経費は編集できません',
splitExpenseDistanceErrorModalDescription: '距離レートのエラーを修正して、もう一度お試しください。',
paySomeone: ({name}: PaySomeoneParams = {}) => `${name ?? '誰か'} を支払う`,
expense: '経費',
categorize: 'カテゴリ分け',
Expand Down
1 change: 1 addition & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1132,6 +1132,7 @@ const translations: TranslationDeepObject<typeof en> = {
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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1133,6 +1133,7 @@ const translations: TranslationDeepObject<typeof en> = {
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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1131,6 +1131,7 @@ const translations: TranslationDeepObject<typeof en> = {
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',
Expand Down
1 change: 1 addition & 0 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1116,6 +1116,7 @@ const translations: TranslationDeepObject<typeof en> = {
removeSplit: '移除拆分',
splitExpenseCannotBeEditedModalTitle: '此报销无法编辑',
splitExpenseCannotBeEditedModalDescription: '已批准或已支付的费用无法编辑',
splitExpenseDistanceErrorModalDescription: '请修复距离费率错误后重试。',
paySomeone: ({name}: PaySomeoneParams = {}) => `支付 ${name ?? '某人'}`,
expense: '费用',
categorize: '分类',
Expand Down
14 changes: 14 additions & 0 deletions src/pages/iou/SplitExpensePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
const transactionDetails: Partial<TransactionDetails> = getTransactionDetails(transaction, undefined, currentPolicy) ?? {};
const transactionDetailsAmount = transactionDetails?.amount ?? 0;
const sumOfSplitExpenses = (draftTransaction?.comment?.splitExpenses ?? []).reduce((acc, item) => acc + (item.amount ?? 0), 0);
const splitExpenses = draftTransaction?.comment?.splitExpenses ?? [];

Check warning on line 112 in src/pages/iou/SplitExpensePage.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

The 'splitExpenses' logical expression could make the dependencies of useEffect Hook (at line 148) change on every render. To fix this, wrap the initialization of 'splitExpenses' in its own useMemo() Hook

const currencySymbol = getCurrencySymbol(transactionDetails.currency ?? '') ?? transactionDetails.currency ?? CONST.CURRENCY.USD;

Expand All @@ -131,6 +131,10 @@

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 ?? {});

Expand Down Expand Up @@ -158,6 +162,16 @@
};

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;
Expand Down
Loading