return deposit dm*x/dm*t
This commit is contained in:
parent
9a074addcf
commit
b749839963
4 changed files with 41 additions and 31 deletions
|
|
@ -20,6 +20,7 @@ import ru.spcex.clearing.platform.messaging.service.Status;
|
|||
import ru.spcex.clearing.service.builder.PaymentInstructionBuilderV2;
|
||||
import ru.spcex.clearing.service.integration.GatewayRequestCreator;
|
||||
import ru.spcex.clearing.service.registry.AssetTBFProcessing;
|
||||
import ru.spcex.clearing.service.registry.RegistryManager;
|
||||
import ru.spcex.clearing.service.schedule.TradingTimeService;
|
||||
import ru.spcex.clearing.service.validation.ValidationStored;
|
||||
import ru.spcex.clearing.session.stage.impl.GatewayRequester;
|
||||
|
|
@ -166,12 +167,14 @@ public class RegistryService {
|
|||
msgResolver.resolve(err.get()));
|
||||
return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(err.get()));
|
||||
}
|
||||
Registry _m_t = validator.getStored(Stored.PresentById);
|
||||
Registry _m_t = validator.getStored(ValidationStored.ReturnDepositOm_t);
|
||||
if (_m_t == null) _m_t = validator.getStored(Stored.PresentById);
|
||||
|
||||
Registry dm__ = validator.getStored(ValidationStored.ReturnDepositDm__);
|
||||
if (dm__ != null) {
|
||||
dm__.setSessionId(null);
|
||||
dm__.setSessionType(null);
|
||||
dm__.setBalance(requestPayload.getBalance());
|
||||
dm__.setBalance(safeBD(dm__.getBalance()).add(requestPayload.getBalance()));
|
||||
dm__.setUpdated(Instant.now());
|
||||
registryImdg.update(dm__);
|
||||
log.debug("updated {}.id={} by RegistryReturnDepositRequest.id={}",
|
||||
|
|
@ -181,13 +184,14 @@ public class RegistryService {
|
|||
} else {
|
||||
dm__ = _m_t.clone();
|
||||
dm__.setRegistryDesignation(RegistryDesignation.D.getKey());
|
||||
RegistryManager.zeroState(dm__);
|
||||
if (RegistryDesignation.T.equalsByKey(_m_t.getRegistryDesignation())) {
|
||||
dm__.setRegistryUnit(RegistryUnit.X.getKey());
|
||||
} else {
|
||||
dm__.setRegistryUnit(RegistryUnit.T.getKey());
|
||||
}
|
||||
dm__.setRegistryCode(RegistryUtil.clearingCode(dm__));
|
||||
dm__.setBalance(requestPayload.getBalance());
|
||||
dm__.setBalance(safeBD(dm__.getBalance()).add(requestPayload.getBalance()));
|
||||
dm__.setSessionId(null);
|
||||
dm__.setSessionType(null);
|
||||
registryImdg.insert(dm__);
|
||||
|
|
|
|||
|
|
@ -183,6 +183,8 @@ public class RegistryManager {
|
|||
//балансы
|
||||
rgs.setBalance(BigDecimal.ZERO);
|
||||
rgs.setDebit(BigDecimal.ZERO);
|
||||
rgs.setSettledDebit(BigDecimal.ZERO);
|
||||
rgs.setSettledCredit(BigDecimal.ZERO);
|
||||
rgs.setCredit(BigDecimal.ZERO);
|
||||
rgs.setDiffBalance(BigDecimal.ZERO);
|
||||
rgs.setCheckBalance(BigDecimal.ZERO);
|
||||
|
|
|
|||
|
|
@ -5,16 +5,20 @@ import ru.clearing.classes.statics.data.registry.Registry;
|
|||
import ru.spcex.clearing.error.ClearingError;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistryReturnDepositRequest;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||
import ru.spcex.platform.imdg.validation.Stored;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
import static ru.spcex.clearing.service.registry.RegistryManager.equalsByCode;
|
||||
|
|
@ -36,7 +40,7 @@ public enum ReturnDepositValidationRule implements IValidationRule<ImdgValidatio
|
|||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<RegistryReturnDepositRequest> context) {
|
||||
Registry rgs = context.getStoredObject(Stored.PresentById);
|
||||
if (!equalsByCode(RegistryTradingParams.TM_T, rgs) && !equalsByCode(RegistryTradingParams.OM_T, rgs)) {
|
||||
if (!equalsByCode(RegistryTradingParams.TM_T, rgs)) { //!equalsByCode(RegistryTradingParams.OM_T, rgs)
|
||||
return of(ClearingError.RgsWrongCode, "{}.id={}", rgs.getRegistryCode(), rgs.getId());
|
||||
}
|
||||
return empty();
|
||||
|
|
@ -46,35 +50,34 @@ public enum ReturnDepositValidationRule implements IValidationRule<ImdgValidatio
|
|||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<RegistryReturnDepositRequest> context) {
|
||||
Registry rgs = context.getStoredObject(Stored.PresentById);
|
||||
ClearingCategory ctgr = null;
|
||||
if (equalsByCode(RegistryTradingParams.TM_T, rgs)) {
|
||||
ctgr = ClearingCategory.I;
|
||||
} else {
|
||||
ctgr = ClearingCategory.V;
|
||||
}
|
||||
Imdg<ClearingMemberCategory> ctgImdg = context.obtainMap(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
ClearingMemberCategory category =
|
||||
ctgImdg.getFirstObjectBySQL("companyId = %d and clearingMemberCategory = '%s'"
|
||||
.formatted(rgs.getCompanyId(), ctgr.getKey()));
|
||||
if (category == null) {
|
||||
return of(ClearingError.CategoryNotFound, ctgr.getKey(), rgs.getCompanyId());
|
||||
Collection<ClearingMemberCategory> category = ctgImdg.getCollectionObjectsBySQL(
|
||||
"companyId = %d".formatted(rgs.getCompanyId()));
|
||||
|
||||
Optional<ClearingCategory> ctgr = category.stream()
|
||||
.map(c -> IEnumKey.getEnumByKey(ClearingCategory.class, c.getClearingMemberCategory()))
|
||||
.filter(c -> ClearingCategory.V.equals(c) || ClearingCategory.I.equals(c))
|
||||
.findFirst();
|
||||
|
||||
if (ctgr.isEmpty()) {
|
||||
return of(ClearingError.CategoryNotFound, "I/V", rgs.getCompanyId());
|
||||
}
|
||||
if (ctgr.get().equals(ClearingCategory.V)) {
|
||||
Imdg<Registry> rgsImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
Collection<Registry> group = rgsImdg.getCollectionObjectsBySQL("groupId = %d".formatted(rgs.getGroupId()));
|
||||
Optional<Registry> om_t = group.stream()
|
||||
.filter(r -> r.getSettlementDate() != null)
|
||||
.filter(r -> r.getValueDate() != null)
|
||||
.filter(r -> r.getSettlementDate().isAfter(r.getValueDate()))
|
||||
.filter(r -> equalsByCode(RegistryTradingParams.OM_T, r))
|
||||
.findFirst();
|
||||
if (om_t.isEmpty()) return of(ClearingError.RecordNotFound, "OM*T.groupId=%d".formatted(rgs.getGroupId()));
|
||||
context.storeObject(ValidationStored.ReturnDepositOm_t, om_t.get());
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
},
|
||||
@Deprecated
|
||||
RegistryCodeCheck() {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<RegistryReturnDepositRequest> context) {
|
||||
Registry rgs = context.getStoredObject(Stored.PresentById);
|
||||
if (!RegistryDesignation.T.equalsByKey(rgs.getRegistryDesignation())
|
||||
|| !RegistryInstrumentType.M.equalsByKey(rgs.getRegistryInstrumentType())
|
||||
|| !RegistryUnit.T.equalsByKey(rgs.getRegistryUnit())) {
|
||||
return of(ClearingError.RecordNotFoundInDictionary, "TM*T", "Registry");
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
}, BalanceCheck() {
|
||||
BalanceCheck() {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<RegistryReturnDepositRequest> context) {
|
||||
Registry rgs = context.getStoredObject(Stored.PresentById);
|
||||
|
|
@ -90,7 +93,8 @@ public enum ReturnDepositValidationRule implements IValidationRule<ImdgValidatio
|
|||
}, Dm_Check() {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<RegistryReturnDepositRequest> context) {
|
||||
Registry rgs = context.getStoredObject(Stored.PresentById);
|
||||
Registry rgs = context.getStoredObject(ValidationStored.ReturnDepositOm_t);
|
||||
if (rgs == null) rgs = context.getStoredObject(Stored.PresentById);
|
||||
Imdg<Registry> rgsImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
if (TextUtil.isEmpty(rgs.getContract())) {
|
||||
return empty();
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ public enum ValidationStored {
|
|||
|
||||
Sdf06Company, Sdf06Account, Sdf06Tcr,
|
||||
|
||||
ReturnDepositDm__,
|
||||
ReturnDepositDm__, ReturnDepositOm_t,
|
||||
|
||||
IdentificationFundsTcrSearch, IdentificationFundsAssetTrio,
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue