Commit f62ad168 authored by d.gareykhanov's avatar d.gareykhanov
Browse files

сначала конвертируем в lion потом считаем комиссию

Showing with 11 additions and 15 deletions
+11 -15
......@@ -622,13 +622,8 @@ func getCommissionAmount(amount nums.PlainCurrencyNumber, user *userCC.User, pro
chaincode.GlobalLogger.Infof("commissionPercent: (%f)", commissionPercent)
currencyTypeKey := amount.CurrencyType.String()
if amount.CurrencyType.IsFiatCurrency() {
currencyTypeKey = nums.GenericFiat
}
keysWithFilter := &requests.KeysWithFilter{
Keys: []string{user.PartnerCode, processType.String(), currencyTypeKey},
Keys: []string{user.PartnerCode, processType.String(), nums.Lion_CurrencyType.String()},
}
preferenceArray, err := manager.SystemPreferenceCC.GetPreferenceArrayByKeysWithFilter(keysWithFilter)
if err != nil {
......@@ -647,7 +642,7 @@ func getCommissionAmount(amount nums.PlainCurrencyNumber, user *userCC.User, pro
scale := uint(scaleUint64)
asset, err := nums.NewAsset(
nums.Lion_CurrencyType.String(),
preference[systempreferenceCC.CURRENCY_TYPE],
scale,
preference[systempreferenceCC.MAX_VALUE],
preference[systempreferenceCC.MIN_VALUE],
......@@ -661,6 +656,15 @@ func getCommissionAmount(amount nums.PlainCurrencyNumber, user *userCC.User, pro
return nil, err
}
if amount.CurrencyType != nums.Lion_CurrencyType {
lionExchangeRate, err := manager.CommissionCC.GetLionExchangeRate(commissionCC.GetLionExchangeRateArg{OrganizationId: user.PartnerCode, CurrencyType: amount.CurrencyType})
if err != nil {
return nil, err
}
chaincode.GlobalLogger.Infof("lion exchange rate: %f", lionExchangeRate.Rate)
numberAmount, err = numberAmount.MulFloat(lionExchangeRate.Rate)
}
commissionAmount, err := numberAmount.MulFloat(commissionPercent.CommissionPercent / 100)
if err != nil {
return nil, err
......@@ -701,14 +705,6 @@ func getCommissionAmount(amount nums.PlainCurrencyNumber, user *userCC.User, pro
commissionAmount = maxCommissionAmount
}
if numberAmount.CurrencyType() != nums.Lion_CurrencyType {
lionExchangeRate, err := manager.CommissionCC.GetLionExchangeRate(commissionCC.GetLionExchangeRateArg{OrganizationId: user.PartnerCode, CurrencyType: numberAmount.CurrencyType()})
if err != nil {
return nil, err
}
chaincode.GlobalLogger.Infof("lion exchange rate: %f", lionExchangeRate.Rate)
commissionAmount, err = commissionAmount.MulFloat(lionExchangeRate.Rate)
}
chaincode.GlobalLogger.Infof("final commission amount: %s", commissionAmount.Num)
return commissionAmount, nil
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment