diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java index 9f2e79667..b3a6b4e49 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java @@ -164,6 +164,7 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); + companyIdPayload.setSessionId(currSession.getId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligationsReturn); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java index 867ca0f07..4703321b4 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java @@ -12,17 +12,23 @@ import ru.clearing.classes.statics.data.misc.Market; import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.clearing.classes.statics.data.security.Security; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.session.stage.util.RegistryUtil; import ru.spcex.platform.classes.base.interfaces.ExecutionType; import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.Instant; import java.time.LocalDate; import java.util.Map; +import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; + public class RegistryFondBuilder implements IRegistryBuilder { private Imdg companyImdg; private Imdg tradingClearingRegistryImdg; @@ -33,6 +39,7 @@ public class RegistryFondBuilder implements IRegistryBuilder { private Imdg informationAccountImdg; private Imdg depoAccountImdg; private Imdg currencyImdg; + private SecuritySelector scrSlctr; private ExecutionCommon exec; private RegistryDesignation regDsgn; @@ -54,6 +61,7 @@ public class RegistryFondBuilder implements IRegistryBuilder { this.depoAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class); this.informationAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class); this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class); + this.scrSlctr = new SecuritySelector<>(imdgProvider, Security.class); return this; } @@ -132,8 +140,14 @@ public class RegistryFondBuilder implements IRegistryBuilder { reg.setRegistryStatus(RegistryStatus.PROC.getKey()); ExecutionFond execFond = (ExecutionFond) this.exec; if (isMoney) { - //todo ОКРУГЛЕНИЕ(fixedIncomeSecurity.nominalValue * quantity * price/100) + ОКРУГЛЕНИЕ (executionFond.interestAmount) - reg.setBalance(execFond.getSettlementAmount()); + Security security = scrSlctr.selectSecurityById(execFond.getSecurityId()); + if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { + BigDecimal stlAmt = safeBD(execFond.getSettlementAmount()); + BigDecimal intAmt = safeBD(execFond.getInterestAmount()); + reg.setBalance(stlAmt.add(intAmt.setScale(2, RoundingMode.HALF_UP))); + } else { + reg.setBalance(execFond.getSettlementAmount()); + } } else { reg.setBalance(execFond.getQuantity()); }