Add exchange for currency in money exchange utils
This commit is contained in:
parent
cb28bc0d6a
commit
b93c4ef5ac
@ -2,7 +2,7 @@ package com.cubetiqs.libra.moneyutils
|
|||||||
|
|
||||||
open class Money(
|
open class Money(
|
||||||
var value: Double,
|
var value: Double,
|
||||||
var currency: String = "USD"
|
private var currency: String = "USD"
|
||||||
) : StdMoney {
|
) : StdMoney {
|
||||||
|
|
||||||
//////////////////// - PROPERTIES - ////////////////////
|
//////////////////// - PROPERTIES - ////////////////////
|
||||||
@ -20,4 +20,9 @@ open class Money(
|
|||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "Money(value=${getMoneyValue()}, currency='${getMoneyCurrency()}')"
|
return "Money(value=${getMoneyValue()}, currency='${getMoneyCurrency()}')"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val ZERO: StdMoney
|
||||||
|
get() = Money(value = 0.0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@ object MoneyConfig {
|
|||||||
* Value is the rate
|
* Value is the rate
|
||||||
*/
|
*/
|
||||||
private val config: MutableMap<String, Double> = mutableMapOf()
|
private val config: MutableMap<String, Double> = mutableMapOf()
|
||||||
|
private var valid: Boolean = false
|
||||||
|
fun isValid() = valid
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Money properties for money config format
|
* Money properties for money config format
|
||||||
@ -56,6 +58,9 @@ object MoneyConfig {
|
|||||||
throw MoneyCurrencyStateException("money config format is not valid!")
|
throw MoneyCurrencyStateException("money config format is not valid!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// validate the config is load or not
|
||||||
|
this.valid = this.config.isNotEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
// all currencies with its rate
|
// all currencies with its rate
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
package com.cubetiqs.libra.moneyutils
|
package com.cubetiqs.libra.moneyutils
|
||||||
|
|
||||||
object MoneyExchangeUtils {
|
object MoneyExchangeUtils {
|
||||||
fun computeRate(rateFrom: Double, rateTo: Double, baseRate: Double = 1.0, amountFrom: Double = 1.0): Double {
|
fun exchange(exchangeFrom: StdMoney, exchangeToCurrency: String): StdMoney {
|
||||||
|
val rateFrom = MoneyConfig.getRate(exchangeFrom.getMoneyCurrency())
|
||||||
|
val rateTo = MoneyConfig.getRate(exchangeToCurrency)
|
||||||
|
return Money(value = computeRate(rateFrom, rateTo, amountFrom = exchangeFrom.getMoneyValue()), currency = exchangeToCurrency)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun computeRate(rateFrom: Double, rateTo: Double, baseRate: Double = 1.0, amountFrom: Double = 1.0): Double {
|
||||||
return amountFrom * ((baseRate / rateFrom) / (baseRate / rateTo))
|
return amountFrom * ((baseRate / rateFrom) / (baseRate / rateTo))
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user