diff --git a/logic/transaction.js b/logic/transaction.js index fda92f9..a2a91a5 100644 --- a/logic/transaction.js +++ b/logic/transaction.js @@ -1460,7 +1460,7 @@ class TransactionLogic extends BaseLogic { await Promise.all(jobs); // check units and add unit with difference when necessary - const isNew = !newTransaction.id; + const isNew = newTransaction.isNewRecord; if (!isNew) { const units = await newTransaction.getUnits(); if (units.length === 1 && units[0].amount !== newTransaction.amount) { @@ -1492,14 +1492,28 @@ class TransactionLogic extends BaseLogic { } if(!isNew) { + log.debug('Skip guessing the new transaction as transaction is not new'); return newTransaction; } - const guesses = await this.guessBudget(newTransaction); - if(!guesses.length || guesses[0].probability < 1) { + log.debug('Nice, transaction created. Now trying to auto-budget…'); + + const transaction = await this.get(newTransaction.id); + const guesses = await this.guessBudget(transaction); + if(!guesses.length) { + log.debug('Found no guesses, leave the transaction as it is'); + return newTransaction; + } + if(guesses[0].probability < 1) { + log.debug( + 'Found ' + guesses.length + ' guesses, but ' + guesses[0].probability + + ' is quite low with' + guesses[0].probability + '. Stopping here…' + ); + return newTransaction; } + log.debug('Found a match (budget#' + guesses[0].budgetId + '), auto-budget it…'); const unit = await DatabaseHelper.get('unit').create({ transactionId: newTransaction.id, budgetId: guesses[0].budgetId,