From c07ee43b85b62c57426c1038340141c4440ae66e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20S=C3=A1?= Date: Fri, 21 Jan 2022 16:00:03 +0000 Subject: [PATCH] fix: correctly calculate fiat profit --- lib/new-admin/services/transactions.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/new-admin/services/transactions.js b/lib/new-admin/services/transactions.js index e420355a..690f13fc 100644 --- a/lib/new-admin/services/transactions.js +++ b/lib/new-admin/services/transactions.js @@ -124,21 +124,28 @@ function simplifiedBatch (data) { ...it, status: getStatus(it), fiatProfit: getProfit(it).toString(), - cryptoAmount: getCryptoAmount(it) + cryptoAmount: getCryptoAmount(it).toString() })) return _.compose(_.map(_.pick(fields)), addSimplifiedFields)(data) } -const getCryptoAmount = it => coinUtils.toUnit(BN(it.cryptoAtoms), it.cryptoCode).toString() +const getCryptoAmount = it => coinUtils.toUnit(BN(it.cryptoAtoms), it.cryptoCode) const getProfit = it => { - const discountValue = _.isNil(it.discount) ? BN(100) : BN(100).minus(it.discount) - const discountPercentage = BN(discountValue).div(100) - const commissionPercentage = BN(it.commissionPercentage).times(discountPercentage) - const getCommissionFee = it => BN(commissionPercentage).times(BN(it.fiat)) - if (!it.cashInFee) return getCommissionFee(it) - return getCommissionFee(it).plus(BN(it.cashInFee)) + /* fiat - crypto*tickerPrice + fee */ + const calcCashInProfit = (fiat, crypto, tickerPrice, fee) => fiat.minus(crypto.times(tickerPrice)).plus(fee) + /* crypto*tickerPrice - fiat */ + const calcCashOutProfit = (fiat, crypto, tickerPrice) => crypto.times(tickerPrice).minus(fiat) + + const fiat = BN(it.fiat) + const crypto = getCryptoAmount(it) + const tickerPrice = BN(it.rawTickerPrice) + const isCashIn = it.txClass === 'cashIn' + + return isCashIn + ? calcCashInProfit(fiat, crypto, tickerPrice, BN(it.cashInFee)) + : calcCashOutProfit(fiat, crypto, tickerPrice) } const getCashOutStatus = it => {