Skip to content

Commit e6546d6

Browse files
authored
Merge pull request #47094 from bernhardoj/fix/46791-receipt-verified-shown-even-when-there-is-issue
2 parents 6be470f + 30db77c commit e6546d6

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/components/ReportActionItem/MoneyRequestView.tsx

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ type MoneyRequestViewPropsWithoutTransaction = MoneyRequestViewOnyxPropsWithoutT
8989

9090
type MoneyRequestViewProps = MoneyRequestViewTransactionOnyxProps & MoneyRequestViewPropsWithoutTransaction;
9191

92+
const receiptImageViolationNames: OnyxTypes.ViolationName[] = [
93+
CONST.VIOLATIONS.RECEIPT_REQUIRED,
94+
CONST.VIOLATIONS.RECEIPT_NOT_SMART_SCANNED,
95+
CONST.VIOLATIONS.CASH_EXPENSE_WITH_NO_RECEIPT,
96+
CONST.VIOLATIONS.SMARTSCAN_FAILED,
97+
];
98+
99+
const receiptFieldViolationNames: OnyxTypes.ViolationName[] = [CONST.VIOLATIONS.MODIFIED_AMOUNT, CONST.VIOLATIONS.MODIFIED_DATE];
100+
92101
const deleteTransaction = (parentReport: OnyxEntry<OnyxTypes.Report>, parentReportAction: OnyxEntry<OnyxTypes.ReportAction>) => {
93102
if (!parentReportAction) {
94103
return;
@@ -374,14 +383,24 @@ function MoneyRequestView({
374383
const isReceiptAllowed = !isPaidReport && !isInvoice;
375384
const shouldShowReceiptEmptyState =
376385
isReceiptAllowed && !hasReceipt && !isApproved && !isSettled && (canEditReceipt || isAdmin || isApprover) && (canEditReceipt || ReportUtils.isPaidGroupPolicy(report));
377-
const receiptViolationNames: OnyxTypes.ViolationName[] = [
378-
CONST.VIOLATIONS.RECEIPT_REQUIRED,
379-
CONST.VIOLATIONS.RECEIPT_NOT_SMART_SCANNED,
380-
CONST.VIOLATIONS.CASH_EXPENSE_WITH_NO_RECEIPT,
381-
CONST.VIOLATIONS.SMARTSCAN_FAILED,
382-
];
383-
const receiptViolations =
384-
transactionViolations?.filter((violation) => receiptViolationNames.includes(violation.name)).map((violation) => ViolationsUtils.getViolationTranslation(violation, translate)) ?? [];
386+
387+
const [receiptImageViolations, receiptViolations] = useMemo(() => {
388+
const imageViolations = [];
389+
const allViolations = [];
390+
391+
for (const violation of transactionViolations ?? []) {
392+
const isReceiptFieldViolation = receiptFieldViolationNames.includes(violation.name);
393+
const isReceiptImageViolation = receiptImageViolationNames.includes(violation.name);
394+
if (isReceiptFieldViolation || isReceiptImageViolation) {
395+
const violationMessage = ViolationsUtils.getViolationTranslation(violation, translate);
396+
allViolations.push(violationMessage);
397+
if (isReceiptImageViolation) {
398+
imageViolations.push(violationMessage);
399+
}
400+
}
401+
}
402+
return [imageViolations, allViolations];
403+
}, [transactionViolations, translate]);
385404

386405
// Whether to show receipt audit result (e.g.`Verified`, `Issue Found`) and messages (e.g. `Receipt not verified. Please confirm accuracy.`)
387406
// `!!(receiptViolations.length || didReceiptScanSucceed)` is for not showing `Verified` when `receiptViolations` is empty and `didReceiptScanSucceed` is false.
@@ -498,7 +517,7 @@ function MoneyRequestView({
498517
/>
499518
)}
500519
{!shouldShowReceiptEmptyState && !hasReceipt && <View style={{marginVertical: 6}} />}
501-
{shouldShowAuditMessage && <ReceiptAuditMessages notes={receiptViolations} />}
520+
{shouldShowAuditMessage && <ReceiptAuditMessages notes={receiptImageViolations} />}
502521
<OfflineWithFeedback pendingAction={getPendingFieldAction('amount')}>
503522
<MenuItemWithTopDescription
504523
title={amountTitle}

0 commit comments

Comments
 (0)