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 = ;