From 6d04a901a33164b03423bc1e62a01fae886905bc Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Mon, 10 Jun 2024 15:26:58 +0700 Subject: [PATCH 1/5] fix: Dismissing the error for corrupted PDF scan request does not delete the expense --- .../ReportActionItem/MoneyRequestView.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 12a325f6aa19..f2ef388b9b26 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -22,6 +22,7 @@ import * as CardUtils from '@libs/CardUtils'; import * as CurrencyUtils from '@libs/CurrencyUtils'; import type {MileageRate} from '@libs/DistanceRequestUtils'; import DistanceRequestUtils from '@libs/DistanceRequestUtils'; +import * as ErrorUtils from '@libs/ErrorUtils'; import * as OptionsListUtils from '@libs/OptionsListUtils'; import * as PolicyUtils from '@libs/PolicyUtils'; import {isTaxTrackingEnabled} from '@libs/PolicyUtils'; @@ -274,6 +275,18 @@ function MoneyRequestView({ [transactionAmount, isSettled, isCancelled, isPolicyExpenseChat, isEmptyMerchant, transactionDate, hasErrors, canUseViolations, hasViolations, translate, getViolationsForField], ); + const deleteTransaction = useCallback(() => { + if (!parentReportAction) { + return; + } + const iouTransactionID = parentReportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? parentReportAction.originalMessage?.IOUTransactionID ?? '' : ''; + if (ReportActionsUtils.isTrackExpenseAction(parentReportAction)) { + IOU.deleteTrackExpense(parentReport?.reportID ?? '', iouTransactionID, parentReportAction, true); + return; + } + IOU.deleteMoneyRequest(iouTransactionID, parentReportAction, true); + }, [parentReport?.reportID, parentReportAction]); + const distanceRequestFields = canUseP2PDistanceRequests ? ( <> @@ -352,6 +365,9 @@ function MoneyRequestView({ if (!transaction?.transactionID) { return; } + if (Object.values(transaction?.errors ?? {})?.find((error) => ErrorUtils.isReceiptError(error))) { + deleteTransaction(); + } Transaction.clearError(transaction.transactionID); ReportActions.clearAllRelatedReportActionErrors(report.reportID, parentReportAction); }} From 8a2df50cdba6ba9ab75c6f8b8610e8fda9de8170 Mon Sep 17 00:00:00 2001 From: nkdengineer <161821005+nkdengineer@users.noreply.github.com> Date: Fri, 21 Jun 2024 09:52:04 +0700 Subject: [PATCH 2/5] Update src/components/ReportActionItem/MoneyRequestView.tsx Co-authored-by: Eric Han <117511920+eh2077@users.noreply.github.com> --- src/components/ReportActionItem/MoneyRequestView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index c1209fe00dd1..d3d750f9a8f9 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -283,7 +283,7 @@ function MoneyRequestView({ } const iouTransactionID = parentReportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? parentReportAction.originalMessage?.IOUTransactionID ?? '' : ''; if (ReportActionsUtils.isTrackExpenseAction(parentReportAction)) { - IOU.deleteTrackExpense(parentReport?.reportID ?? '', iouTransactionID, parentReportAction, true); + IOU.deleteTrackExpense(parentReport?.reportID ?? '-1', iouTransactionID, parentReportAction, true); return; } IOU.deleteMoneyRequest(iouTransactionID, parentReportAction, true); From 2866a96e8b0004dc1373277b1df74a0adc60fe2d Mon Sep 17 00:00:00 2001 From: nkdengineer <161821005+nkdengineer@users.noreply.github.com> Date: Fri, 21 Jun 2024 09:52:12 +0700 Subject: [PATCH 3/5] Update src/components/ReportActionItem/MoneyRequestView.tsx Co-authored-by: Eric Han <117511920+eh2077@users.noreply.github.com> --- src/components/ReportActionItem/MoneyRequestView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index d3d750f9a8f9..ea946a102a9f 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -281,7 +281,7 @@ function MoneyRequestView({ if (!parentReportAction) { return; } - const iouTransactionID = parentReportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? parentReportAction.originalMessage?.IOUTransactionID ?? '' : ''; + const iouTransactionID = parentReportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? parentReportAction.originalMessage?.IOUTransactionID ?? '-1' : '-1'; if (ReportActionsUtils.isTrackExpenseAction(parentReportAction)) { IOU.deleteTrackExpense(parentReport?.reportID ?? '-1', iouTransactionID, parentReportAction, true); return; From f4b30e9ef850f91d05c59074ba5af6dc16f9a9e0 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Fri, 21 Jun 2024 16:16:35 +0700 Subject: [PATCH 4/5] fix: delete useCallBack in deleteTransaction --- .../ReportActionItem/MoneyRequestView.tsx | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 0c6df38c9331..ec758b45313c 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -85,6 +85,18 @@ type MoneyRequestViewPropsWithoutTransaction = MoneyRequestViewOnyxPropsWithoutT type MoneyRequestViewProps = MoneyRequestViewTransactionOnyxProps & MoneyRequestViewPropsWithoutTransaction; +const deleteTransaction = (parentReport: OnyxEntry, parentReportAction: OnyxEntry) => { + if (!parentReportAction) { + return; + } + const iouTransactionID = parentReportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? parentReportAction.originalMessage?.IOUTransactionID ?? '-1' : '-1'; + if (ReportActionsUtils.isTrackExpenseAction(parentReportAction)) { + IOU.deleteTrackExpense(parentReport?.reportID ?? '-1', iouTransactionID, parentReportAction, true); + return; + } + IOU.deleteMoneyRequest(iouTransactionID, parentReportAction, true); +}; + function MoneyRequestView({ report, parentReport, @@ -283,18 +295,6 @@ function MoneyRequestView({ [transactionAmount, isSettled, isCancelled, isPolicyExpenseChat, isEmptyMerchant, transactionDate, hasErrors, hasViolations, translate, getViolationsForField], ); - const deleteTransaction = useCallback(() => { - if (!parentReportAction) { - return; - } - const iouTransactionID = parentReportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? parentReportAction.originalMessage?.IOUTransactionID ?? '-1' : '-1'; - if (ReportActionsUtils.isTrackExpenseAction(parentReportAction)) { - IOU.deleteTrackExpense(parentReport?.reportID ?? '-1', iouTransactionID, parentReportAction, true); - return; - } - IOU.deleteMoneyRequest(iouTransactionID, parentReportAction, true); - }, [parentReport?.reportID, parentReportAction]); - const distanceRequestFields = canUseP2PDistanceRequests ? ( <> @@ -405,7 +405,7 @@ function MoneyRequestView({ return; } if (Object.values(transaction?.errors ?? {})?.find((error) => ErrorUtils.isReceiptError(error))) { - deleteTransaction(); + deleteTransaction(parentReport, parentReportAction); } Transaction.clearError(transaction.transactionID); ReportActions.clearAllRelatedReportActionErrors(report.reportID, parentReportAction); From 3d724a69089caa54694badce96bff98fe2820013 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Fri, 21 Jun 2024 16:31:51 +0700 Subject: [PATCH 5/5] fix typecheck --- src/components/ReportActionItem/MoneyRequestView.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index 44060971907a..5db3f92d5493 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -89,7 +89,7 @@ const deleteTransaction = (parentReport: OnyxEntry, parentRepo if (!parentReportAction) { return; } - const iouTransactionID = parentReportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? parentReportAction.originalMessage?.IOUTransactionID ?? '-1' : '-1'; + const iouTransactionID = ReportActionsUtils.isMoneyRequestAction(parentReportAction) ? ReportActionsUtils.getOriginalMessage(parentReportAction)?.IOUTransactionID ?? '-1' : '-1'; if (ReportActionsUtils.isTrackExpenseAction(parentReportAction)) { IOU.deleteTrackExpense(parentReport?.reportID ?? '-1', iouTransactionID, parentReportAction, true); return; @@ -116,7 +116,7 @@ function MoneyRequestView({ const {translate, toLocaleDigit} = useLocalize(); const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID); - const parentReportAction = parentReportActions?.[report.parentReportActionID ?? '-1'] ?? null; + const parentReportAction = parentReportActions?.[report.parentReportActionID ?? '-1']; const isTrackExpense = ReportUtils.isTrackExpenseReport(report); const {canUseViolations, canUseP2PDistanceRequests} = usePermissions(isTrackExpense ? CONST.IOU.TYPE.TRACK : undefined); const moneyRequestReport = parentReport;