From 6a44090c57ec6a04c1f59625ef066e14f2f70475 Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Sun, 18 Aug 2024 17:37:47 +0800 Subject: [PATCH 1/2] show RBR when there is a modified amount/date violation --- src/libs/ReportUtils.ts | 6 +++++- src/libs/TransactionUtils/index.ts | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index d21ace8ecc1e..62c27818153c 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5810,7 +5810,11 @@ function doesTransactionThreadHaveViolations( if (report?.stateNum !== CONST.REPORT.STATE_NUM.OPEN && report?.stateNum !== CONST.REPORT.STATE_NUM.SUBMITTED) { return false; } - return TransactionUtils.hasViolation(IOUTransactionID, transactionViolations) || TransactionUtils.hasWarningTypeViolation(IOUTransactionID, transactionViolations); + return ( + TransactionUtils.hasViolation(IOUTransactionID, transactionViolations) || + TransactionUtils.hasWarningTypeViolation(IOUTransactionID, transactionViolations) || + TransactionUtils.hasModifiedAmountOrDateViolation(IOUTransactionID, transactionViolations) + ); } /** diff --git a/src/libs/TransactionUtils/index.ts b/src/libs/TransactionUtils/index.ts index 4fc850c83631..529a0b1a722b 100644 --- a/src/libs/TransactionUtils/index.ts +++ b/src/libs/TransactionUtils/index.ts @@ -734,6 +734,15 @@ function hasWarningTypeViolation(transactionID: string, transactionViolations: O return !!transactionViolations?.[ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS + transactionID]?.some((violation: TransactionViolation) => violation.type === CONST.VIOLATION_TYPES.WARNING); } +/** + * Checks if any violations for the provided transaction are of modifiedAmount or modifiedDate + */ +function hasModifiedAmountOrDateViolation(transactionID: string, transactionViolations: OnyxCollection): boolean { + return !!transactionViolations?.[ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS + transactionID]?.some( + (violation: TransactionViolation) => violation.name === CONST.VIOLATIONS.MODIFIED_AMOUNT || violation.name === CONST.VIOLATIONS.MODIFIED_DATE, + ); +} + /** * Calculates tax amount from the given expense amount and tax percentage */ @@ -1113,6 +1122,7 @@ export { hasViolation, hasNoticeTypeViolation, hasWarningTypeViolation, + hasModifiedAmountOrDateViolation, isCustomUnitRateIDForP2P, getRateID, getTransaction, From 05331601106512cf4c3b610a96dd26b744357eb9 Mon Sep 17 00:00:00 2001 From: Bernhard Owen Josephus Date: Wed, 21 Aug 2024 19:41:46 +0800 Subject: [PATCH 2/2] re-render when violations data changed --- src/components/LHNOptionsList/LHNOptionsList.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/LHNOptionsList/LHNOptionsList.tsx b/src/components/LHNOptionsList/LHNOptionsList.tsx index b35b14016235..a734890a1f38 100644 --- a/src/components/LHNOptionsList/LHNOptionsList.tsx +++ b/src/components/LHNOptionsList/LHNOptionsList.tsx @@ -188,8 +188,8 @@ function LHNOptionsList({style, contentContainerStyles, data, onSelectRow, optio ); const extraData = useMemo( - () => [reportActions, reports, policy, personalDetails, data.length, draftComments, optionMode, preferredLocale], - [reportActions, reports, policy, personalDetails, data.length, draftComments, optionMode, preferredLocale], + () => [reportActions, reports, transactionViolations, policy, personalDetails, data.length, draftComments, optionMode, preferredLocale], + [reportActions, reports, transactionViolations, policy, personalDetails, data.length, draftComments, optionMode, preferredLocale], ); const previousOptionMode = usePrevious(optionMode);