balance-service http://jira.mfd.msk:8088/browse/CLS-74 правильное обновление AccountBalanceService

This commit is contained in:
AKurakin 2023-01-16 18:08:11 +03:00
parent b1cd2b7a0f
commit 4c687e8d59

View file

@ -35,7 +35,7 @@ public class AccountBalanceService {
} }
public AccountResult createAccountBalance(Long addresseeId, Long accountId, BigDecimal amount, public AccountResult createAccountBalance(Long addresseeId, Long accountId, BigDecimal amount,
String cashMovementCurrencyCode) { String cashMovementCurrencyCode) {
IValidator validator = validationFactory.apply(new AccountBalanceValidation(addresseeId, accountId)); IValidator validator = validationFactory.apply(new AccountBalanceValidation(addresseeId, accountId));
Optional<EnumMessage> validationError = validator Optional<EnumMessage> validationError = validator
.tillFirstError(); .tillFirstError();
@ -66,14 +66,23 @@ public class AccountBalanceService {
return new AccountResult(accountBalance); return new AccountResult(accountBalance);
} else { } else {
accountBalance.setUpdated(Instant.now()); accountBalance.setUpdated(Instant.now());
accountBalance.setAccountId(accountId); accountBalance.setAccountId(accountId);//+
accountBalance.setAccountType(account.getAccountType()); accountBalance.setAccountType(account.getAccountType());//++
accountBalance.setAccount(account.getAccount()); accountBalance.setAccount(account.getAccount());
accountBalance.setOpenBalanceAmount(amount); // accountBalance.setOpenBalanceAmount();// на базе изменения statement по sDf16/sDf09): не меняется.
accountBalance.setFreeBalanceAmount(amount); accountBalance.setFreeBalanceAmount(plus(accountBalance.getFreeBalanceAmount(), amount));
accountBalance.setBalanceAmount(amount); accountBalance.setChangeBalanceAmount(plus(accountBalance.getChangeBalanceAmount(), amount));
accountBalance.setCreditAmount(plus(accountBalance.getCreditAmount(), amount));
accountBalance.setDebitAmount(plus(accountBalance.getDebitAmount(), amount));
accountBalance.setBalanceAmount(plus(accountBalance.getBalanceAmount(), amount));
accountBalance.setCurrencyCode(cashMovementCurrencyCode); accountBalance.setCurrencyCode(cashMovementCurrencyCode);
return new AccountResult(accountBalance); return new AccountResult(accountBalance);
} }
} }
BigDecimal plus(BigDecimal a, BigDecimal b) {
if (a == null) return b;
if (b == null) return a;
return a.add(b);
}
} }