라이브 정산

- float 대신 bigdecimal로 변경
This commit is contained in:
Klaus 2024-07-02 14:44:36 +09:00
parent 9d7bd8e9ab
commit fded23b97d
1 changed files with 12 additions and 11 deletions

View File

@ -2,7 +2,8 @@ package kr.co.vividnext.sodalive.admin.calculate
import com.querydsl.core.annotations.QueryProjection import com.querydsl.core.annotations.QueryProjection
import kr.co.vividnext.sodalive.can.use.CanUsage import kr.co.vividnext.sodalive.can.use.CanUsage
import kotlin.math.roundToInt import java.math.BigDecimal
import java.math.RoundingMode
data class GetCalculateLiveQueryData @QueryProjection constructor( data class GetCalculateLiveQueryData @QueryProjection constructor(
val email: String, val email: String,
@ -42,20 +43,20 @@ data class GetCalculateLiveQueryData @QueryProjection constructor(
} }
// 원화 = totalCoin * 100 ( 캔 1개 = 100원 ) // 원화 = totalCoin * 100 ( 캔 1개 = 100원 )
val totalKrw = totalAmount * 100 val totalKrw = BigDecimal(totalAmount).multiply(BigDecimal(100))
// 결제수수료 : 6.6% // 결제수수료 : 6.6%
val paymentFee = totalKrw * 0.066f val paymentFee = totalKrw.multiply(BigDecimal(0.066))
// 정산금액 = (원화 - 결제수수료) 의 70% // 정산금액 = (원화 - 결제수수료) 의 70%
val settlementAmount = if (settlementRatio != null) { val settlementAmount = if (settlementRatio != null) {
(totalKrw.toFloat() - paymentFee) * (settlementRatio.toFloat() / 100.0f) totalKrw.subtract(paymentFee).multiply(BigDecimal(settlementRatio).divide(BigDecimal(100)))
} else { } else {
(totalKrw.toFloat() - paymentFee) * 0.7f totalKrw.subtract(paymentFee).multiply(BigDecimal(0.7))
} }
// 원천세 = 정산금액의 3.3% // 원천세 = 정산금액의 3.3%
val tax = settlementAmount * 0.033 val tax = settlementAmount.multiply(BigDecimal(0.033))
// 입금액 // 입금액
val depositAmount = settlementAmount - tax val depositAmount = settlementAmount - tax
@ -69,11 +70,11 @@ data class GetCalculateLiveQueryData @QueryProjection constructor(
canUsageStr = canUsageStr, canUsageStr = canUsageStr,
numberOfPeople = numberOfPeople, numberOfPeople = numberOfPeople,
totalAmount = totalAmount, totalAmount = totalAmount,
totalKrw = totalKrw, totalKrw = totalKrw.toInt(),
paymentFee = paymentFee.roundToInt(), paymentFee = paymentFee.setScale(0, RoundingMode.HALF_UP).toInt(),
settlementAmount = settlementAmount.roundToInt(), settlementAmount = settlementAmount.setScale(0, RoundingMode.HALF_UP).toInt(),
tax = tax.roundToInt(), tax = tax.setScale(0, RoundingMode.HALF_UP).toInt(),
depositAmount = depositAmount.roundToInt() depositAmount = depositAmount.setScale(0, RoundingMode.HALF_UP).toInt()
) )
} }
} }