From 866ce5bcbadca310a34ffee868b778863fcb44de Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Tue, 18 Feb 2025 19:55:20 +0300 Subject: [PATCH] updated smart scan failed violation --- .../MoneyRequestPreview/MoneyRequestPreviewContent.tsx | 4 +++- src/components/ReportActionItem/MoneyRequestView.tsx | 8 +++++--- src/components/ViolationMessages.tsx | 9 ++++++--- src/languages/en.ts | 2 +- src/languages/es.ts | 2 +- src/libs/Violations/ViolationsUtils.ts | 4 ++-- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx index 33c0a59dbcd9..89079e4b806d 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx +++ b/src/components/ReportActionItem/MoneyRequestPreview/MoneyRequestPreviewContent.tsx @@ -35,6 +35,7 @@ import {getCleanedTagName} from '@libs/PolicyUtils'; import {getThumbnailAndImageURIs} from '@libs/ReceiptUtils'; import {getOriginalMessage, getReportAction, isMessageDeleted, isMoneyRequestAction as isMoneyRequestActionReportActionsUtils} from '@libs/ReportActionsUtils'; import { + canEditMoneyRequest, getTransactionDetails, getWorkspaceIcon, isPaidGroupPolicy, @@ -253,7 +254,8 @@ function MoneyRequestPreviewContent({ } const firstViolation = violations?.at(0); if (firstViolation) { - const violationMessage = ViolationsUtils.getViolationTranslation(firstViolation, translate); + const canEdit = isMoneyRequestAction && canEditMoneyRequest(action, transaction); + const violationMessage = ViolationsUtils.getViolationTranslation(firstViolation, translate, canEdit); const violationsCount = violations?.filter((v) => v.type === CONST.VIOLATION_TYPES.VIOLATION).length ?? 0; const isTooLong = violationsCount > 1 || violationMessage.length > 15; const hasViolationsAndFieldErrors = violationsCount > 0 && hasFieldErrors; diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 59804ff06fef..5ee5bf8b321e 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -328,7 +328,7 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals const firstViolation = violations.at(0); if (firstViolation) { - return ViolationsUtils.getViolationTranslation(firstViolation, translate); + return ViolationsUtils.getViolationTranslation(firstViolation, translate, canEdit); } } @@ -349,6 +349,7 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals canEditAmount, canEditDate, canEditMerchant, + canEdit, ], ); @@ -411,7 +412,7 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals const isReceiptFieldViolation = receiptFieldViolationNames.includes(violation.name); const isReceiptImageViolation = receiptImageViolationNames.includes(violation.name); if (isReceiptFieldViolation || isReceiptImageViolation) { - const violationMessage = ViolationsUtils.getViolationTranslation(violation, translate); + const violationMessage = ViolationsUtils.getViolationTranslation(violation, translate, canEdit); allViolations.push(violationMessage); if (isReceiptImageViolation) { imageViolations.push(violationMessage); @@ -419,7 +420,7 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals } } return [imageViolations, allViolations]; - }, [transactionViolations, translate]); + }, [transactionViolations, translate, canEdit]); const receiptRequiredViolation = transactionViolations?.some((violation) => violation.name === CONST.VIOLATIONS.RECEIPT_REQUIRED); const customRulesViolation = transactionViolations?.some((violation) => violation.name === CONST.VIOLATIONS.CUSTOM_RULES); @@ -812,6 +813,7 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals containerStyle={[styles.mt1]} textStyle={[styles.ph0]} isLast + canEdit={canEdit} /> )} diff --git a/src/components/ViolationMessages.tsx b/src/components/ViolationMessages.tsx index e30ad251e0a2..ab0543f58011 100644 --- a/src/components/ViolationMessages.tsx +++ b/src/components/ViolationMessages.tsx @@ -7,12 +7,15 @@ import ViolationsUtils from '@libs/Violations/ViolationsUtils'; import type {TransactionViolation} from '@src/types/onyx'; import Text from './Text'; -type ViolationMessagesProps = {violations: TransactionViolation[]; isLast?: boolean; containerStyle?: StyleProp; textStyle?: StyleProp}; +type ViolationMessagesProps = {violations: TransactionViolation[]; isLast?: boolean; containerStyle?: StyleProp; textStyle?: StyleProp; canEdit: boolean}; -export default function ViolationMessages({violations, isLast, containerStyle, textStyle}: ViolationMessagesProps) { +export default function ViolationMessages({violations, isLast, containerStyle, textStyle, canEdit}: ViolationMessagesProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const violationMessages = useMemo(() => violations.map((violation) => [violation.name, ViolationsUtils.getViolationTranslation(violation, translate)]), [translate, violations]); + const violationMessages = useMemo( + () => violations.map((violation) => [violation.name, ViolationsUtils.getViolationTranslation(violation, translate, canEdit)]), + [canEdit, translate, violations], + ); return ( diff --git a/src/languages/en.ts b/src/languages/en.ts index 2c17b74c8947..9c5d206074b3 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -5449,7 +5449,7 @@ const translations = { adminBrokenConnectionError: 'Receipt pending due to broken bank connection. Please resolve in ', memberBrokenConnectionError: 'Receipt pending due to broken bank connection. Please ask a workspace admin to resolve.', markAsCashToIgnore: 'Mark as cash to ignore and request payment.', - smartscanFailed: 'Receipt scanning failed. Enter details manually.', + smartscanFailed: ({canEdit = true}) => `Receipt scanning failed.${canEdit ? ' Enter details manually.' : ''}`, someTagLevelsRequired: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `Missing ${tagName ?? 'Tag'}`, tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `${tagName ?? 'Tag'} no longer valid`, taxAmountChanged: 'Tax amount was modified', diff --git a/src/languages/es.ts b/src/languages/es.ts index 37fd1e29f1f3..c06281ce7218 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -5966,7 +5966,7 @@ const translations = { adminBrokenConnectionError: 'Recibo pendiente debido a una conexión bancaria rota. Por favor, resuélvelo en ', memberBrokenConnectionError: 'Recibo pendiente debido a una conexión bancaria rota. Por favor, pide a un administrador del espacio de trabajo que lo resuelva.', markAsCashToIgnore: 'Márcalo como efectivo para ignorar y solicitar el pago.', - smartscanFailed: 'No se pudo escanear el recibo. Introduce los datos manualmente', + smartscanFailed: ({canEdit = true}) => `No se pudo escanear el recibo.${canEdit ? ' Introduce los datos manualmente.' : ''}`, someTagLevelsRequired: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `Falta ${tagName ?? 'Tag'}`, tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `La etiqueta ${tagName ? `${tagName} ` : ''}ya no es válida`, taxAmountChanged: 'El importe del impuesto fue modificado', diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 8da2a8866913..cd025e0f90ad 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -293,7 +293,7 @@ const ViolationsUtils = { * possible values could be either translation keys that resolve to strings or translation keys that resolve to * functions. */ - getViolationTranslation(violation: TransactionViolation, translate: LocaleContextProps['translate']): string { + getViolationTranslation(violation: TransactionViolation, translate: LocaleContextProps['translate'], canEdit = true): string { const { brokenBankConnection = false, isAdmin = false, @@ -380,7 +380,7 @@ const ViolationsUtils = { rterType, }); case 'smartscanFailed': - return translate('violations.smartscanFailed'); + return translate('violations.smartscanFailed', {canEdit}); case 'someTagLevelsRequired': return translate('violations.someTagLevelsRequired', {tagName}); case 'tagOutOfPolicy':