라이브 정산
- float 대신 bigdecimal로 변경
This commit is contained in:
		| @@ -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() | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user