diff --git a/src/CONST.ts b/src/CONST.ts index 5f95e32d4e0d..191c72355940 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1429,6 +1429,7 @@ const CONST = { CORPORATE_UPGRADE: 'POLICYCHANGELOG_CORPORATE_UPGRADE', TEAM_DOWNGRADE: 'POLICYCHANGELOG_TEAM_DOWNGRADE', }, + RECEIPTSCANFAILED: 'RECEIPTSCANFAILED', RESOLVED_DUPLICATES: 'RESOLVEDDUPLICATES', ROOM_CHANGE_LOG: { INVITE_TO_ROOM: 'INVITETOROOM', diff --git a/src/languages/en.ts b/src/languages/en.ts index 54dec63bb5d6..3f865f80b15f 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -953,6 +953,7 @@ const translations = { deleteReceipt: 'Delete receipt', deleteConfirmation: 'Are you sure you want to delete this receipt?', addReceipt: 'Add receipt', + scanFailed: "The receipt couldn't be scanned, as it's missing a merchant, date, or amount.", }, quickAction: { scanReceipt: 'Scan receipt', diff --git a/src/languages/es.ts b/src/languages/es.ts index d83758e7c7f4..402d12430d34 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -948,6 +948,7 @@ const translations = { deleteReceipt: 'Eliminar recibo', deleteConfirmation: '¿Estás seguro de que quieres borrar este recibo?', addReceipt: 'Añadir recibo', + scanFailed: 'El recibo no pudo ser escaneado, ya que falta el comerciante, la fecha o el monto.', }, quickAction: { scanReceipt: 'Escanear recibo', diff --git a/src/libs/OptionsListUtils.ts b/src/libs/OptionsListUtils.ts index 4160b4bef0a9..76602affa0f0 100644 --- a/src/libs/OptionsListUtils.ts +++ b/src/libs/OptionsListUtils.ts @@ -59,6 +59,7 @@ import { getMessageOfOldDotReportAction, getOneTransactionThreadReportID, getOriginalMessage, + getReceiptScanFailedMessage, getReopenedMessage, getReportActionHtml, getReportActionMessageText, @@ -815,6 +816,8 @@ function getLastMessageTextForReport( lastMessageTextFromReport = getReportActionMessageText(lastReportAction); } else if (lastReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION) { lastMessageTextFromReport = getExportIntegrationLastMessageText(lastReportAction); + } else if (lastReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.RECEIPTSCANFAILED) { + lastMessageTextFromReport = getReceiptScanFailedMessage(); } else if (lastReportAction?.actionName && isOldDotReportAction(lastReportAction)) { lastMessageTextFromReport = getMessageOfOldDotReportAction(lastReportAction, false); } else if (isActionableJoinRequest(lastReportAction)) { diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 3407e181370f..b8fb177ee5f7 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -1590,6 +1590,10 @@ function getReopenedMessage(): string { return translateLocal('iou.reopened'); } +function getReceiptScanFailedMessage() { + return translateLocal('receipt.scanFailed'); +} + function getUpdateRoomDescriptionFragment(reportAction: ReportAction): Message { const html = getUpdateRoomDescriptionMessage(reportAction); return { @@ -2916,6 +2920,7 @@ export { getReportActionFromExpensifyCard, isReopenedAction, getIntegrationSyncFailedMessage, + getReceiptScanFailedMessage, }; export type {LastVisibleMessage}; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index c90c66758f8b..ae76d9ead129 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4632,6 +4632,9 @@ function getReportActionMessage({ personalDetails, }); } + if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.RECEIPTSCANFAILED) { + return translateLocal('receipt.scanFailed'); + } if (isReimbursementDeQueuedOrCanceledAction(reportAction)) { return getReimbursementDeQueuedOrCanceledActionMessage(reportAction, getReportOrDraftReport(reportID, reports)); diff --git a/src/pages/home/report/PureReportActionItem.tsx b/src/pages/home/report/PureReportActionItem.tsx index 6b9056513e2b..9af975922725 100644 --- a/src/pages/home/report/PureReportActionItem.tsx +++ b/src/pages/home/report/PureReportActionItem.tsx @@ -1161,6 +1161,8 @@ function PureReportActionItem({ ); } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION)) { children = ; + } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.RECEIPTSCANFAILED)) { + children = ; } else if (isRenamedAction(action)) { const message = getRenamedAction(action, isExpenseReport(report)); children = ;