From ccecd1955d0c8db68af4d60fb53a47afe2cb3f2b Mon Sep 17 00:00:00 2001 From: Anusha Date: Sat, 19 Oct 2024 19:56:58 +0500 Subject: [PATCH 1/3] fix negative amount --- src/libs/actions/IOU.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index fb8cd014ec7b..ddb451c30c1b 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -6510,15 +6510,20 @@ function getReportFromHoldRequestsOnyxData( const firstHoldTransaction = holdTransactions.at(0); const newParentReportActionID = rand64(); - const optimisticExpenseReport = ReportUtils.buildOptimisticExpenseReport( - chatReport.reportID, - chatReport.policyID ?? iouReport?.policyID ?? '', - recipient.accountID ?? 1, - holdTransactions.reduce((acc, transaction) => acc + TransactionUtils.getAmount(transaction), 0), - getCurrency(firstHoldTransaction), - false, - newParentReportActionID, - ); + const isPolicyExpenseChat = ReportUtils.isPolicyExpenseChat(chatReport); + const holdTransactionAmount = holdTransactions.reduce((acc, transaction) => acc + TransactionUtils.getAmount(transaction), 0); + const optimisticExpenseReport = isPolicyExpenseChat + ? ReportUtils.buildOptimisticExpenseReport( + chatReport.reportID, + chatReport.policyID ?? iouReport?.policyID ?? '', + recipient.accountID ?? 1, + holdTransactionAmount, + getCurrency(firstHoldTransaction), + false, + newParentReportActionID, + ) + : ReportUtils.buildOptimisticIOUReport(recipient.accountID ?? 1, iouReport?.managerID ?? 1, holdTransactionAmount, chatReport.reportID, getCurrency(firstHoldTransaction), false); + const optimisticExpenseReportPreview = ReportUtils.buildOptimisticReportPreview( chatReport, optimisticExpenseReport, From 6c4547d8fcf3c1f029c0c5ca7fa529f963b25ed6 Mon Sep 17 00:00:00 2001 From: Anusha Date: Thu, 31 Oct 2024 00:49:05 +0500 Subject: [PATCH 2/3] add tests --- tests/unit/IOUUtilsTest.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/unit/IOUUtilsTest.ts b/tests/unit/IOUUtilsTest.ts index 2ab1247ec5b0..9d8fa23c5d4a 100644 --- a/tests/unit/IOUUtilsTest.ts +++ b/tests/unit/IOUUtilsTest.ts @@ -146,3 +146,19 @@ describe('isValidMoneyRequestType', () => { expect(IOUUtils.isValidMoneyRequestType('money')).toBe(false); }); }); + +describe('Check valid amout for IOU/Expense request', () => { + test('IOU amount should be positive', () => { + const iouReport = ReportUtils.buildOptimisticIOUReport(1, 2, 100, '1', 'USD'); + const iouTransaction = TransactionUtils.buildOptimisticTransaction(100, 'USD', iouReport.reportID); + const iouAmount = TransactionUtils.getAmount(iouTransaction, false, false); + expect(iouAmount).toBeGreaterThan(0); + }); + + test('Expense amount should be negative', () => { + const expenseReport = ReportUtils.buildOptimisticExpenseReport('212', '123', 100, 122, 'USD'); + const expenseTransaction = TransactionUtils.buildOptimisticTransaction(100, 'USD', expenseReport.reportID); + const expenseAmount = TransactionUtils.getAmount(expenseTransaction, true, false); + expect(expenseAmount).toBeLessThan(0); + }); +}); From d734c9c6f38e88767960370b39705a8d2cb0a7fc Mon Sep 17 00:00:00 2001 From: Anusha Date: Thu, 31 Oct 2024 02:34:46 +0500 Subject: [PATCH 3/3] fix typo --- tests/unit/IOUUtilsTest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/IOUUtilsTest.ts b/tests/unit/IOUUtilsTest.ts index 9d8fa23c5d4a..7031045e3f05 100644 --- a/tests/unit/IOUUtilsTest.ts +++ b/tests/unit/IOUUtilsTest.ts @@ -147,7 +147,7 @@ describe('isValidMoneyRequestType', () => { }); }); -describe('Check valid amout for IOU/Expense request', () => { +describe('Check valid amount for IOU/Expense request', () => { test('IOU amount should be positive', () => { const iouReport = ReportUtils.buildOptimisticIOUReport(1, 2, 100, '1', 'USD'); const iouTransaction = TransactionUtils.buildOptimisticTransaction(100, 'USD', iouReport.reportID);