updating credit amount functionality
This commit is contained in:
@@ -72,6 +72,7 @@ public class Transaction extends BaseEntity {
|
||||
@Enumerated(EnumType.STRING)
|
||||
private CurrencyType creditCurrency;
|
||||
private BigDecimal creditAmount;
|
||||
private BigDecimal creditTotalAmount;
|
||||
private String creditName;
|
||||
private String creditCard;
|
||||
private String creditRef;
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import zw.qantra.tm.domain.enums.CurrencyType;
|
||||
import zw.qantra.tm.domain.enums.RequestType;
|
||||
import zw.qantra.tm.domain.models.AdditionalData;
|
||||
import zw.qantra.tm.domain.models.Currency;
|
||||
@@ -33,23 +34,16 @@ public class TransactionService {
|
||||
private final AdditionalDataService additionalDataService;
|
||||
private final CurrencyService currencyService;
|
||||
|
||||
public BigDecimal calculateCreditAmount(Transaction transaction) {
|
||||
if (transaction.getCreditCurrency() == null) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
Currency debitCurrency = currencyService.findCurrencyByIsoCode(transaction.getDebitCurrency().name());
|
||||
Currency creditCurrency = currencyService.findCurrencyByIsoCode(transaction.getCreditCurrency().name());
|
||||
public BigDecimal calculateCurrencyExchangeValue(CurrencyType from, CurrencyType to, BigDecimal amount) {
|
||||
Currency debitCurrency = currencyService.findCurrencyByIsoCode(from.name());
|
||||
Currency creditCurrency = currencyService.findCurrencyByIsoCode(to.name());
|
||||
|
||||
BigDecimal debitBankRate = new BigDecimal(debitCurrency.getBankRate());
|
||||
BigDecimal creditBankRate = new BigDecimal(creditCurrency.getBankRate());
|
||||
|
||||
BigDecimal bankRate = creditBankRate.divide(debitBankRate, 4, RoundingMode.HALF_UP);
|
||||
|
||||
BigDecimal creditAmount = transaction.getAmount().multiply(bankRate).setScale(4, RoundingMode.HALF_UP);
|
||||
|
||||
transaction.setCreditAmount(creditAmount);
|
||||
return creditAmount;
|
||||
return amount.multiply(bankRate).setScale(4, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
public void reassignTransactions(UUID oldWorkspaceId, UUID newWorkspaceId){
|
||||
|
||||
@@ -181,7 +181,7 @@ public class VelocityPaymentService {
|
||||
? "VMC" : transaction.getPaymentProcessorLabel();
|
||||
VelocityTransactionDto payload = VelocityTransactionDto.builder()
|
||||
.salesOrderId(transaction.getOrderId())
|
||||
.amount(transaction.getCreditAmount())
|
||||
.amount(transaction.getCreditTotalAmount())
|
||||
.debitPhone(transaction.getDebitPhone())
|
||||
.debitRegion("ZW")
|
||||
.type("REQUEST")
|
||||
|
||||
@@ -56,8 +56,9 @@ public class NetoneConfirmationHotProcessor implements TransactionProcessorInter
|
||||
}
|
||||
}
|
||||
|
||||
transaction.setCreditCurrency(CurrencyType.USD);
|
||||
transaction.setCreditCurrency(transaction.getDebitCurrency());
|
||||
transaction.setCreditAmount(transaction.getAmount());
|
||||
transaction.setCreditTotalAmount(transaction.getTotalAmount());
|
||||
transaction.setCreditAccount(Utils.formatPhoneNumber(transaction.getCreditAccount(), "ZW"));
|
||||
transaction.setStatus(Status.SUCCESS);
|
||||
transaction.setResponseCode("00");
|
||||
|
||||
@@ -5,14 +5,11 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import zw.qantra.tm.domain.enums.CurrencyType;
|
||||
import zw.qantra.tm.domain.enums.RequestType;
|
||||
import zw.qantra.tm.domain.enums.Status;
|
||||
import zw.qantra.tm.domain.models.AdditionalData;
|
||||
import zw.qantra.tm.domain.models.Provider;
|
||||
import zw.qantra.tm.domain.models.Transaction;
|
||||
import zw.qantra.tm.domain.services.*;
|
||||
import zw.qantra.tm.domain.services.processors.TransactionProcessorInterface;
|
||||
@@ -20,7 +17,6 @@ import zw.qantra.tm.exceptions.ApiException;
|
||||
import zw.qantra.tm.rest.RestService;
|
||||
import zw.qantra.tm.utils.Utils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
@Service("CONFIRM_ZESA_HOT")
|
||||
@@ -69,7 +65,14 @@ public class ZesaConfirmationHotProcessor implements TransactionProcessorInterfa
|
||||
transaction.setCreditCurrency(CurrencyType.USD);
|
||||
}
|
||||
|
||||
transaction.setCreditAmount(transactionService.calculateCreditAmount(transaction));
|
||||
transaction.setCreditAmount(transactionService.calculateCurrencyExchangeValue(
|
||||
transaction.getDebitCurrency(),
|
||||
transaction.getCreditCurrency(),
|
||||
transaction.getAmount()));
|
||||
transaction.setCreditTotalAmount(transactionService.calculateCurrencyExchangeValue(
|
||||
transaction.getDebitCurrency(),
|
||||
transaction.getCreditCurrency(),
|
||||
transaction.getTotalAmount()));
|
||||
|
||||
// token should've been updated by checkCustomer
|
||||
if (!hotRechargeBalanceService.checkBalance(token, transaction.getCreditAmount(), accId)) {
|
||||
|
||||
Reference in New Issue
Block a user