fix reset-balance

This commit is contained in:
etreshenkov 2023-06-30 09:28:09 +03:00
parent 9146fb67b0
commit 6b036c8e91

View file

@ -92,24 +92,44 @@ public class RegistryService {
);
for (Registry registry : registriesA) {
if (RegistryUnit.F.equalsByKey(registry.getRegistryUnit())) {
continue;
}
if (RegistryUnit.B.equalsByKey(registry.getRegistryUnit())) {
registry.setBalance(BigDecimal.ZERO);
Optional<Registry> registryFOptional = registriesA.stream().filter(rgs -> rgs.getSecurityId().equals(registry.getSecurityId()) &&
rgs.getCompanyId().equals(registry.getCompanyId()) &&
RegistryUnit.F.equalsByKey(rgs.getRegistryUnit())).findFirst();
registryFOptional.ifPresent(rgsF -> rgsF.getBalance().subtract(registry.getBalance()));
}
if (RegistryUnit.F.equalsByKey(registry.getRegistryUnit())) {
Optional<Registry> registryBOptional = registriesA.stream().filter(rgs ->
rgs.getAccount() != null && rgs.getSecurityId() != null &&
rgs.getTradingClearingRegistryId() != null && rgs.getCompanyId() != null &&
RegistryUnit.B.equalsByKey(rgs.getRegistryUnit()) &&
rgs.getSecurityId().equals(registry.getSecurityId()) &&
rgs.getCompanyId().equals(registry.getCompanyId()) &&
rgs.getAccount().equals(registry.getAccount()) &&
rgs.getTradingClearingRegistryId().equals(registry.getTradingClearingRegistryId())).findFirst();
Optional<Registry> registryTOptional = registriesA.stream().filter(rgs ->
rgs.getAccount() != null && rgs.getSecurityId() != null &&
rgs.getTradingClearingRegistryId() != null && rgs.getCompanyId() != null &&
RegistryUnit.T.equalsByKey(rgs.getRegistryUnit()) &&
rgs.getSecurityId().equals(registry.getSecurityId()) &&
rgs.getCompanyId().equals(registry.getCompanyId()) &&
rgs.getAccount().equals(registry.getAccount()) &&
rgs.getTradingClearingRegistryId().equals(registry.getTradingClearingRegistryId())).findFirst();
BigDecimal balanceB;
if (registryBOptional.isPresent()) {
balanceB = registryBOptional.get().getBalance();
} else {
balanceB = BigDecimal.ZERO;
}
registryTOptional.ifPresent(rgsT -> registry.setBalance(rgsT.getBalance().subtract(balanceB)));
}
if (RegistryUnit.T.equalsByKey(registry.getRegistryUnit())) {
registry.setOpenBalance(registry.getBalance());
}
registry.setCloseBalance(BigDecimal.ZERO);
registry.setCheckBalance(BigDecimal.ZERO);
registry.setDiffBalance(BigDecimal.ZERO);
registry.setDebit(BigDecimal.ZERO);
registry.setSettledDebit(BigDecimal.ZERO);
registry.setCredit(BigDecimal.ZERO);
registry.setSettledCredit(BigDecimal.ZERO);
registry.setPlanBalance(BigDecimal.ZERO);
registry.setCloseBalance(registry.getBalance());
registry.setUpdated(Instant.now());
registryImdg.update(registry);