etreschenkov 2025-09-17 11:39:03 +03:00
parent 7240066fe6
commit 96d7241e6b
2 changed files with 2 additions and 20 deletions

View file

@ -283,7 +283,6 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
Company company = validator.getStored(ValidationStored.STradesCompany);
Company counterCompany = validator.getStored(ValidationStored.STradesCounterCompany);
TradingClearingRegistry rgstr = validator.getStored(ValidationStored.STradesTradingClearingRegistry);
UtilitarianDigitalRight udr = validator.getStored(ValidationStored.STradesUtilitarianDigitalRight);
ClientCode clientCode = clientCodeImdg.getFirstObjectByFieldValues(Map.of("code", sTrades.getClientCode()));
ExecutionFond eFond = new ExecutionFond();
@ -300,7 +299,7 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
eFond.setMarket(sTrades.getClassCode());
BigDecimal price = sTrades.getPrice();
if (udr != null) {
if (InstrumentType.DGCT.equalsByKey(security.getInstrumentType())) {
DigitalCertificateSecurity dcs = (DigitalCertificateSecurity) security;
BigDecimal baseUnitSize = BigDecimal.valueOf(Optional.ofNullable(dcs.getBaseUnitSize()).orElse(0L));
price = safeBD(sTrades.getPrice())
@ -342,7 +341,7 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
BigDecimal qty = safeBD(eFond.getLots()).multiply(lotSize);
eFond.setQuantity(qty);
BigDecimal settlementAmount = BigDecimal.ZERO;
if (udr != null) {
if (InstrumentType.DGCT.equalsByKey(security.getInstrumentType())) {
settlementAmount = qty.multiply(eFond.getPrice());
} else if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
FixedIncomeSecurity fixedIncome = (FixedIncomeSecurity) security;

View file

@ -6,15 +6,10 @@ import ru.clearing.classes.statics.data.misc.STrades;
import ru.clearing.classes.statics.data.security.DigitalCertificateSecurity;
import ru.clearing.classes.statics.data.security.Security;
import ru.clearing.classes.statics.data.security.UtilitarianDigitalRight;
import ru.spcex.clearing.component.predicate.cash.UtilitarianDigitalRightPredicate;
import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.service.validation.ValidationStored;
import ru.spcex.platform.enumeration.InstrumentType;
import ru.spcex.platform.enumeration.NominalTypeCode;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.iml.hazelcast.adapter.CashV2;
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.enumeration.EnumMessage;
@ -40,17 +35,6 @@ public class STradesSecurityDGCTValidationRule implements IValidationRule<ImdgVa
return empty();
}
DigitalCertificateSecurity dcs = (DigitalCertificateSecurity) security;
Imdg<UtilitarianDigitalRight> udrImdg = ctx.obtainMap(
IMDGDistributedNames.Map_UtilitarianDigitalRight, UtilitarianDigitalRight.class
);
ImdgPredicateBuilder pb = udrImdg.predicateBuilder();
ImdgPredicate cashingPredicate = UtilitarianDigitalRightPredicate
.getPredicate(security.getId())
.cashed(pb, udrCash);
UtilitarianDigitalRight udr = udrImdg.getFirstObjectByPredicate(cashingPredicate);
if (udr == null) {
return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol());
}
if (NominalTypeCode.INDX.equalsByKey(dcs.getNominalTypeCode())) {
if (!Objects.equals(dcs.getNominalIndexationDate(), validatedObject.getSettleDate())) {
return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol());
@ -63,7 +47,6 @@ public class STradesSecurityDGCTValidationRule implements IValidationRule<ImdgVa
return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol());
}
}
ctx.storeObject(ValidationStored.STradesUtilitarianDigitalRight, udr);
return empty();
}
}