fix: profit calculation in transactions list

This commit is contained in:
André Sá 2022-01-21 16:01:59 +00:00
parent 2cb4ad1443
commit 59af490613
2 changed files with 31 additions and 11 deletions

View file

@ -78,6 +78,27 @@ const CANCEL_CASH_IN_TRANSACTION = gql`
} }
` `
const getCryptoAmount = tx =>
coinUtils.toUnit(new BigNumber(tx.cryptoAtoms), tx.cryptoCode).toNumber()
/* Port of getProfit() from lib/new-admin/services/transactions.js */
const getCommission = tx => {
const calcCashInProfit = (fiat, crypto, tickerPrice, fee) =>
fiat - crypto * tickerPrice + fee
const calcCashOutProfit = (fiat, crypto, tickerPrice) =>
crypto * tickerPrice - fiat
const fiat = Number.parseFloat(tx.fiat)
const crypto = getCryptoAmount(tx)
const tickerPrice = Number.parseFloat(tx.rawTickerPrice)
const isCashIn = tx.txClass === 'cashIn'
const cashInFee = isCashIn ? Number.parseFloat(tx.cashInFee) : 0
return isCashIn
? calcCashInProfit(fiat, crypto, tickerPrice, cashInFee)
: calcCashOutProfit(fiat, crypto, tickerPrice)
}
const formatAddress = (cryptoCode = '', address = '') => const formatAddress = (cryptoCode = '', address = '') =>
coinUtils.formatCryptoAddress(cryptoCode, address).replace(/(.{5})/g, '$1 ') coinUtils.formatCryptoAddress(cryptoCode, address).replace(/(.{5})/g, '$1 ')
@ -108,13 +129,15 @@ const DetailsRow = ({ it: tx, timezone }) => {
} }
) )
const commission = getCommission(tx).toFixed(2)
const commissionPercentage =
Number.parseFloat(tx.commissionPercentage, 2) * 100
const cashInFee = isCashIn ? Number.parseFloat(tx.cashInFee) : 0
const fiat = Number.parseFloat(tx.fiat) const fiat = Number.parseFloat(tx.fiat)
const crypto = coinUtils.toUnit(new BigNumber(tx.cryptoAtoms), tx.cryptoCode) const crypto = getCryptoAmount(tx)
const commissionPercentage = Number.parseFloat(tx.commissionPercentage, 2) const exchangeRate = (fiat / crypto).toFixed(2)
const commission = Number(fiat * commissionPercentage).toFixed(2)
const discount = tx.discount ? `-${tx.discount}%` : null
const exchangeRate = BigNumber(fiat / crypto).toFormat(2)
const displayExRate = `1 ${tx.cryptoCode} = ${exchangeRate} ${tx.fiatCode}` const displayExRate = `1 ${tx.cryptoCode} = ${exchangeRate} ${tx.fiatCode}`
const discount = tx.discount ? `-${tx.discount}%` : null
const parseDateString = parse(new Date(), 'yyyyMMdd') const parseDateString = parse(new Date(), 'yyyyMMdd')
@ -263,7 +286,7 @@ const DetailsRow = ({ it: tx, timezone }) => {
<div className={classes.commission}> <div className={classes.commission}>
<Label>Commission</Label> <Label>Commission</Label>
<div className={classes.container}> <div className={classes.container}>
{`${commission} ${tx.fiatCode} (${commissionPercentage * 100} %)`} {`${commission} ${tx.fiatCode} (${commissionPercentage} %)`}
{discount && ( {discount && (
<div className={classes.chip}> <div className={classes.chip}>
<Label1 className={classes.chipLabel}>{discount}</Label1> <Label1 className={classes.chipLabel}>{discount}</Label1>
@ -273,11 +296,7 @@ const DetailsRow = ({ it: tx, timezone }) => {
</div> </div>
<div> <div>
<Label>Fixed fee</Label> <Label>Fixed fee</Label>
<div> <div>{isCashIn ? `${cashInFee} ${tx.fiatCode}` : 'N/A'}</div>
{isCashIn
? `${Number.parseFloat(tx.cashInFee)} ${tx.fiatCode}`
: 'N/A'}
</div>
</div> </div>
</div> </div>
<div className={classes.secondRow}> <div className={classes.secondRow}>

View file

@ -116,6 +116,7 @@ const GET_TRANSACTIONS = gql`
isAnonymous isAnonymous
batched batched
batchTime batchTime
rawTickerPrice
} }
} }
` `