From 681d34b1dc7e36076d570d647e44d68f6742137e Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 31 Mar 2022 22:17:36 +0200 Subject: [PATCH] rounding in virtual decay transaction, pass hold available amount to virtual decay creation --- backend/src/graphql/resolver/TransactionResolver.ts | 8 +++++++- backend/src/util/virtualTransactions.ts | 9 ++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 14d44dc2e..c86154583 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -201,7 +201,13 @@ export class TransactionResolver { // The virtual decay is always on the booked amount, not including the generated, not yet booked links, // since the decay is substantially different when the amount is less transactions.push( - virtualDecayTransaction(lastTransaction.balance, lastTransaction.balanceDate, now, self), + virtualDecayTransaction( + lastTransaction.balance, + lastTransaction.balanceDate, + now, + self, + sumHoldAvailableAmount, + ), ) // virtual transaction for pending transaction-links sum if (sumHoldAvailableAmount.greaterThan(0)) { diff --git a/backend/src/util/virtualTransactions.ts b/backend/src/util/virtualTransactions.ts index e4b9eec1f..ff1b7548e 100644 --- a/backend/src/util/virtualTransactions.ts +++ b/backend/src/util/virtualTransactions.ts @@ -59,6 +59,7 @@ const virtualDecayTransaction = ( balanceDate: Date, time: Date = new Date(), user: User, + holdAvailabeAmount: Decimal, ): Transaction => { const decay = calculateDecay(balance, balanceDate, time) // const balance = decay.balance.minus(lastTransaction.balance) @@ -67,10 +68,12 @@ const virtualDecayTransaction = ( userId: -1, previous: -1, typeId: TransactionTypeId.DECAY, - amount: decay.decay ? decay.decay : new Decimal(0), // new Decimal(0), // this kinda is wrong, but helps with the frontend query - balance: decay.balance, + amount: decay.decay ? decay.decay.toDecimalPlaces(2, Decimal.ROUND_FLOOR) : new Decimal(0), // new Decimal(0), // this kinda is wrong, but helps with the frontend query + balance: decay.balance + .minus(holdAvailabeAmount.toString()) + .toDecimalPlaces(2, Decimal.ROUND_DOWN), balanceDate: time, - decay: decay.decay ? decay.decay : new Decimal(0), + decay: decay.decay ? decay.decay.toDecimalPlaces(2, Decimal.ROUND_FLOOR) : new Decimal(0), decayStart: decay.start, memo: '', creationDate: null,