формирование PaymentInstruction, для возврата депозитов: обнуляю баланс AM*B регистра при наличии DM*X

This commit is contained in:
ialbert 2025-07-31 16:20:22 +03:00
parent a81d4b2f0a
commit bcbc335089

View file

@ -125,11 +125,17 @@ public class FormingPaymentInstructionReturnMkrAction extends AbstractSessionAct
}
Registry lm_t = lmtO.get(); //obligation by money
Registry cm_t = cmtO.get();
//изменение активов - блокируем средства беред отправкой sdf'ов
Optional<Registry> receiverAmbO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B);
Optional<Registry> dmx = rgsMng.searchDmxByCounterPartyNotOk(lm_t);
if (dmx.isPresent()) {
log.debug("LM*T#id={}, DM*X#id={} found, no action needed for group {}, skipping liability",
lm_t.getId(), dmx.get().getId(), lm_t.getGroupId());
dmx.get().setRegistryStatus(RegistryStatus.OK.getKey());
receiverAmbO.ifPresent(r -> {
r.setBalance(BigDecimal.ZERO);
setUpdatedStoreInImdg(r, now);
});
setUpdatedStoreInImdg(dmx.get(), now);
continue;
}
@ -152,13 +158,12 @@ public class FormingPaymentInstructionReturnMkrAction extends AbstractSessionAct
}
{
//изменение активов - блокируем средства беред отправкой sdf'ов
Optional<Registry> receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B);
log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*T(receiver).id={}",
lm_t.getId(),
cm_t.getId(),
receiverAmtO.map(Registry::getId).orElse(null)
receiverAmbO.map(Registry::getId).orElse(null)
);
receiverAmtO.ifPresent(amt -> {
receiverAmbO.ifPresent(amt -> {
// у отправителя и получателя одинаково, см. в FormingPaymentInstruction
amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(lm_t.getBalance())));
setUpdatedStoreInImdg(amt, now);