Skip to content

Commit

Permalink
fix the incorrect calculation of monthly income and expense amount wh…
Browse files Browse the repository at this point in the history
…en filtering multiple accounts
  • Loading branch information
mayswind committed Aug 6, 2024
1 parent d1cd137 commit caa2784
Showing 1 changed file with 27 additions and 10 deletions.
37 changes: 27 additions & 10 deletions src/stores/transaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -188,13 +188,29 @@ function calculateMonthTotalAmount(exchangeRatesStore, transactionMonthList, def
let hasUnCalculatedTotalExpense = false;
let hasUnCalculatedTotalIncome = false;

const allAccountIdsMap = {};
let totalAccountIdsCount = 0;

if (accountIds && accountIds !== '0') {
const allAccountIdsArray = accountIds.split(',');

for (let i = 0; i < allAccountIdsArray.length; i++) {
if (allAccountIdsArray[i]) {
allAccountIdsMap[allAccountIdsArray[i]] = true;
totalAccountIdsCount++;
}
}
}

for (let i = 0; i < transactionMonthList.items.length; i++) {
const transaction = transactionMonthList.items[i];

let amount = transaction.sourceAmount;
let account = transaction.sourceAccount;

if (accountIds && transaction.destinationAccount && (transaction.destinationAccount.id === accountIds || transaction.destinationAccount.parentId === accountIds)) {
if (totalAccountIdsCount > 0 && transaction.destinationAccount
&& (!allAccountIdsMap[transaction.sourceAccount.id] && !allAccountIdsMap[transaction.sourceAccount.parentId])
&& (allAccountIdsMap[transaction.destinationAccount.id] || allAccountIdsMap[transaction.destinationAccount.parentId])) {
amount = transaction.destinationAmount;
account = transaction.destinationAccount;
}
Expand Down Expand Up @@ -223,17 +239,18 @@ function calculateMonthTotalAmount(exchangeRatesStore, transactionMonthList, def
totalExpense += amount;
} else if (transaction.type === transactionConstants.allTransactionTypes.Income) {
totalIncome += amount;
} else if (transaction.type === transactionConstants.allTransactionTypes.Transfer && accountIds && accountIds !== '0') {
if (accountIds === transaction.sourceAccountId) {
totalExpense += amount;
} else if (accountIds === transaction.destinationAccountId) {
totalIncome += amount;
} else if (transaction.sourceAccount && accountIds === transaction.sourceAccount.parentId &&
transaction.destinationAccount && accountIds === transaction.destinationAccount.parentId) {
} else if (transaction.type === transactionConstants.allTransactionTypes.Transfer && totalAccountIdsCount > 0) {
if (allAccountIdsMap[transaction.sourceAccountId] && allAccountIdsMap[transaction.destinationAccountId]) {
// Do Nothing
} else if (transaction.sourceAccount && transaction.destinationAccount && allAccountIdsMap[transaction.sourceAccount.parentId] && allAccountIdsMap[transaction.destinationAccount.parentId]) {
// Do Nothing
} else if (transaction.sourceAccount && allAccountIdsMap[transaction.sourceAccount.parentId] && allAccountIdsMap[transaction.destinationAccountId]) {
// Do Nothing
} else if (transaction.destinationAccount && allAccountIdsMap[transaction.sourceAccountId] && allAccountIdsMap[transaction.destinationAccount.parentId]) {
// Do Nothing
} else if (transaction.sourceAccount && accountIds === transaction.sourceAccount.parentId) {
} else if (allAccountIdsMap[transaction.sourceAccountId] || (transaction.sourceAccount && allAccountIdsMap[transaction.sourceAccount.parentId])) {
totalExpense += amount;
} else if (transaction.destinationAccount && accountIds === transaction.destinationAccount.parentId) {
} else if (allAccountIdsMap[transaction.destinationAccountId] || (transaction.destinationAccount && allAccountIdsMap[transaction.destinationAccount.parentId])) {
totalIncome += amount;
}
}
Expand Down

0 comments on commit caa2784

Please sign in to comment.