This commit is contained in:
ialbert 2023-02-03 13:39:53 +03:00
parent af192d5a32
commit da5d08e1d8

View file

@ -98,6 +98,7 @@ public class AccountBalanceService {
public void updateAccountBalanceByClearing(AccountBalanceClearingRequest req) {
ClearingCategory category = getClearingCategoryByCompanyId(req.getCompanyId());
req.setFirstLegAmount(safeBD(req.getFirstLegAmount()));
if (category.equals(ClearingCategory.I)) {
updateAccountCategoryIClrn(req.getAccountId(), req.getCompanyId(), req.getFirstLegAmount());
updateAccountCategoryITran(req.getFirstLegAmount());
@ -118,9 +119,10 @@ public class AccountBalanceService {
private void updateAccountCategoryIClrn(Long accountId, Long companyId, BigDecimal firstLegAmount) {
AccountBalance accountBalance = loadAccountBalance(accountId, companyId, AccountType.Clrn);
BigDecimal previousFreeBalanceAmount = accountBalance.getFreeBalanceAmount();
BigDecimal previousChangeBalanceAmount = accountBalance.getChangeBalanceAmount();
BigDecimal previousBalanceAmount = accountBalance.getBalanceAmount();
log.trace("updating AccountBalance {} I CLRN", accountBalance.getId());
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
@ -131,7 +133,8 @@ public class AccountBalanceService {
private void updateAccountCategoryITran(BigDecimal firstLegAmount) {
AccountBalance accountBalance = loadAccountBalance(AccountType.Tran);
BigDecimal previousDebitAmount = accountBalance.getDebitAmount();
log.trace("updating AccountBalance {} I TRAN", accountBalance.getId());
BigDecimal previousDebitAmount = safeBD(accountBalance.getDebitAmount());
accountBalance.setDebitAmount(previousDebitAmount.add(firstLegAmount.abs()));
accountBalance.setUpdated(Instant.now());
log.trace("updateAccountCategoryITran: {}", accountBalance.getId());
@ -140,9 +143,10 @@ public class AccountBalanceService {
private void updateAccountCategoryVInfo(Long accountId, Long companyId, BigDecimal firstLegAmount) {
AccountBalance accountBalance = loadAccountBalance(accountId, companyId, AccountType.Info);
BigDecimal previousFreeBalanceAmount = accountBalance.getFreeBalanceAmount();
BigDecimal changeBalanceAmount = accountBalance.getChangeBalanceAmount();
BigDecimal balanceAmount = accountBalance.getBalanceAmount();
log.trace("updating AccountBalance {} V INFO", accountBalance.getId());
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
BigDecimal changeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
BigDecimal balanceAmount = safeBD(accountBalance.getBalanceAmount());
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
accountBalance.setChangeBalanceAmount(changeBalanceAmount.subtract(firstLegAmount));
accountBalance.setBalanceAmount(balanceAmount.subtract(firstLegAmount));
@ -153,9 +157,10 @@ public class AccountBalanceService {
private void updateAccountCategoryVAnlt(BigDecimal firstLegAmount) {
AccountBalance accountBalance = loadAccountBalance(AccountType.Anlt);
BigDecimal previousFreeBalanceAmount = accountBalance.getFreeBalanceAmount();
BigDecimal previousChangeBalanceAmount = accountBalance.getChangeBalanceAmount();
BigDecimal previousBalanceAmount = accountBalance.getBalanceAmount();
log.trace("updating AccountBalance {} V ANLT", accountBalance.getId());
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
@ -166,7 +171,8 @@ public class AccountBalanceService {
private void updateAccountCategoryBClrn(Long accountId, Long companyId, BigDecimal firstLegAmount) {
AccountBalance accountBalance = loadAccountBalance(accountId, companyId, AccountType.Clrn);
BigDecimal debitAmount = accountBalance.getDebitAmount();
log.trace("updating AccountBalance {} B CLRN", accountBalance.getId());
BigDecimal debitAmount = safeBD(accountBalance.getDebitAmount());
accountBalance.setDebitAmount(plus(debitAmount, firstLegAmount.abs()));
accountBalance.setUpdated(Instant.now());
log.trace("updateAccountCategoryBClrn: {}", accountBalance.getId());
@ -186,4 +192,8 @@ public class AccountBalanceService {
"accountType", type.getKey())
);
}
private BigDecimal safeBD(BigDecimal bd) {
return bd == null ? BigDecimal.ZERO : bd;
}
}