Merge branch 'dev' into cls-301

This commit is contained in:
akulikov 2023-05-27 13:10:07 +03:00
commit 83909eda50
51 changed files with 1213 additions and 962 deletions

View file

@ -1,5 +1,6 @@
package ru.spcex.clearing.account.service;
import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.producer.Producer;
import org.slf4j.Logger;
@ -29,12 +30,18 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.ImdgTransaction;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.log.ExceptionUtils;
import ru.spcex.platform.utils.validation.IValidator;
import java.time.Instant;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
public class InformationAccountService extends QueueConsumer implements InitializingBean {
@ -48,6 +55,11 @@ public class InformationAccountService extends QueueConsumer implements Initiali
private final Function<InformationAccountNewRequest, IValidator> infoAccountNewRequestValidator;
private final Imdg<InformationAccount> informationAccountImdg;
private final Imdg<Account> accountImdg;
/**
* Кэш-счётчик сквозных номеров счетов.
* См. accountNextId()
*/
protected AtomicLong infoCounter;
@Autowired
public InformationAccountService(Consumer<String, Object> kafkaQueue,
@ -81,6 +93,9 @@ public class InformationAccountService extends QueueConsumer implements Initiali
callback(InformationAccountNewRequest.class)
.setFunction(this::informationAccountNew)
.forDestination(Consts.DESTINATION_INFORMATION_ACCOUNT_NEW, callbacks::put);
callback(InformationAccountNewRequest.class)
.setFunction(this::informationAccountSystemNew)
.forDestination(Consts.INFORMATION_ACCOUNT_SYSTEM_NEW, callbacks::put);
init();
}
@ -91,10 +106,12 @@ public class InformationAccountService extends QueueConsumer implements Initiali
if (requestInfoUpdate != null) return requestInfoUpdate;
Long newId = informationAccountImdg.nextIDSequenceFor();
String accountValue = generateInfoAccount(newId);
Long infoSequenceId = accountNextId();
String accountValue = generateInfoAccount(infoSequenceId);
log.trace("New info-account id={}, sequenceId={}, account={}", newId, infoSequenceId, accountValue);
ImdgPredicateBuilder accountPredicateBuilder = accountImdg.predicateBuilder();
ImdgPredicate companyIdPredicate = accountPredicateBuilder.equals("companyId", 1);
ImdgPredicate companyIdPredicate = accountPredicateBuilder.equals("companyId", 1L);
ImdgPredicate accountTypePredicate = accountPredicateBuilder.equals("accountType", AccountType.Anlt.getKey());
ImdgPredicate andPredicate = accountPredicateBuilder.and(companyIdPredicate, accountTypePredicate);
Collection<Account> accountsAnlt = accountImdg.getCollectionObjectsByPredicate(andPredicate);
@ -154,8 +171,142 @@ public class InformationAccountService extends QueueConsumer implements Initiali
return null;
}
public RequestInfoUpdate informationAccountSystemNew(BaseRequest<InformationAccountNewRequest> userRequest) {
log.debug("InformationAccountNewRequest received (system)");
RequestInfoUpdate requestInfoUpdate;
// RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, infoAccountNewRequestValidator);
// if (requestInfoUpdate != null) return requestInfoUpdate;
final Long forCompanyId = userRequest.getRequestPayload().getCompanyId();
ImdgPredicateBuilder pb = accountImdg.predicateBuilder();
{ // Проверка существования счёта
Collection<Account> accountsAnlt = accountImdg.getCollectionObjectsByFieldValues(Map.of(
"companyId", forCompanyId,
"accountType", AccountType.Info.getKey()
));
if (!accountsAnlt.isEmpty()) {
String trueMessage = messageResolver.resolve(new EnumMessage(AccountError.InfoAccountAlreadyExist, forCompanyId));
log.warn("{}", trueMessage);
return null;
}
}
// todo требуется последовательность n+1
Long newId = informationAccountImdg.nextIDSequenceFor();
Long infoSequenceId = accountNextId();
String accountValue = generateInfoAccount(infoSequenceId);
log.trace("New info-account id={}, sequenceId={}, account={}", newId, infoSequenceId, accountValue);
ImdgPredicate andPredicate = pb.and(
pb.equals("companyId", 1L),
pb.equals("accountType", AccountType.Anlt.getKey())
);
Collection<Account> accountsAnlt = accountImdg.getCollectionObjectsByPredicate(andPredicate);
if (accountsAnlt.isEmpty()) {
return requestHelper.makeErrorResponse(userRequest, AccountError.WrongFieldValue, "clearingAccountId");
} else if (accountsAnlt.size() > 1) {
log.warn("Account for companyId 1 and accountType=ANLT contains multiply elements, use first");
}
Account anltAccount = accountsAnlt.iterator().next();
Instant now = Instant.now();
Account account = new Account();
account.setAccount(accountValue);
account.setAccountType(AccountType.Info.getKey());
account.setStatus(ServiceStatus.Active.getKey());
account.setCompanyId(forCompanyId);
account.setCreated(now);
account.setUpdated(now);
requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId());
if (requestInfoUpdate != null) return requestInfoUpdate;
ImdgTransaction imdgTransaction = imdgProvider.newTransaction();
imdgTransaction.beginTransaction();
boolean txOk = false;
Long informationAccountId = -1L;
Long accountId = -1L;
InformationAccount informationAccount = null;
try {
accountId = accountImdg.insert(account);
informationAccount = new InformationAccount();
informationAccount.setId(newId);
informationAccount.setAccountId(accountId);
informationAccount.setClearingAccountId(anltAccount.getId());
informationAccount.setCompanyId(userRequest.getRequestPayload().getCompanyId());
informationAccountId = informationAccountImdg.insert(informationAccount);
txOk = true;
} finally {
if (txOk) {
imdgTransaction.commitTransaction();
TradingClearingRegistryNewRequest request = new TradingClearingRegistryNewRequest();
request.setMoneyAccountId(informationAccountId);
request.setCompanyId(informationAccount.getCompanyId());
log.debug("Send message to kafka \"{}\": {}", Consts.DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW, LogFormatter.toStringWrapper(request));
kafkaSender.sendRequestToQueue(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW, request);
log.debug("successfully processed, new information account id {}, new account id {}",
informationAccountId,
accountId);
} else {
log.debug("failed insert, new information account id {}, new account id {} (if id = -1 then insert is failed)",
informationAccountId,
accountId);
imdgTransaction.rollbackTransaction();
}
}
return null;
}
public String generateInfoAccount(Long id) {
return "%d%d%08d%d".formatted(39911, 810, id, 7000);
}
/**
* Сквозной номер инфо-счетов
*
* @return infoCounter++
*/
protected Long accountNextId() {
if (infoCounter == null) synchronized (this) {
if (infoCounter == null) {
log.debug("Init account-information counter.");
Collection<Account> allInfoAcc = accountImdg.getCollectionObjectsByFieldValues(Map.of("accountType", AccountType.Info.getKey()));
if (allInfoAcc.isEmpty()) {
infoCounter = new AtomicLong(1);
log.debug("No account information on map. n={}", infoCounter.get());
} else {
Pattern accPattern = Pattern.compile("39911810([0-9]{8})7000");
int maxN = 1;
int parsedCount = 0;
for (Account acc : allInfoAcc) {
try {
String number = acc.getAccount();
if (StringUtils.isEmpty(number)) continue;
Matcher m = accPattern.matcher(number);
if (m.find()) {
String seqNumber = m.group(1);
if (StringUtils.isNotEmpty(seqNumber)) {
int accN = Integer.parseInt(seqNumber);
if (accN > maxN) maxN = accN;
}
parsedCount++;
}
} catch (Exception errParse) {
log.warn("Error parse account {}: {}", acc.getId(), ExceptionUtils.getStackTrace(errParse));
}
}
infoCounter = new AtomicLong(maxN);
log.debug("Parsed {} information accounts ({} pattern match) in map. n={}",
allInfoAcc.size(), parsedCount, infoCounter.get());
}
}
}
return infoCounter.getAndIncrement();
}
}

View file

@ -4,6 +4,7 @@ import org.apache.kafka.clients.consumer.MockConsumer;
import org.apache.kafka.clients.producer.MockProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
@ -32,6 +33,7 @@ import ru.spcex.clearing.test.config.ImdgTestConfig;
import ru.spcex.clearing.test.config.KafkaTestConfig;
import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import javax.annotation.PostConstruct;
@ -179,4 +181,29 @@ class InformationAccountServiceTest {
accountImdg.delete(resultAccountNew);
}
@Autowired ImdgProvider imdgProvider;
@Test
void accountIncrementSequence() {
Imdg<InformationAccount> accountInfoImdg = hazelcastServiceTest.getImdg( IMDGDistributedNames.Map_InformationAccount, InformationAccount.class );
{
Account account = new Account();
account.setId(120L);
account.setAccountType(AccountType.Info.getKey());
account.setCompanyId(10L);
account.setAccount("39911810000000127000");
accountImdg.insert(account);
InformationAccount accountInfo = new InformationAccount();
accountInfo.setId(121L);
accountInfo.setAccountId(account.getId());
accountInfo.setCompanyId(account.getCompanyId());
accountInfoImdg.insert(accountInfo);
}
InformationAccountService infoAccSvc=new InformationAccountService(null,null,null,
null, imdgProvider, null, null, null, null);
Long n = infoAccSvc.accountNextId();
Assertions.assertEquals(12L, n);
n = infoAccSvc.accountNextId();
Assertions.assertEquals(13L, n);
}
}

View file

@ -1,5 +1,8 @@
package ru.spcex.clearing.backendapi.config;
import org.apache.kafka.clients.admin.AdminClient;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.admin.NewTopic;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.MockConsumer;
import org.apache.kafka.clients.consumer.OffsetResetStrategy;
@ -9,9 +12,23 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import ru.spcex.clearing.backendapi.config.element.BackendApiSettings;
import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory;
import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory;
import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider;
import javax.annotation.PostConstruct;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.ExecutionException;
@Configuration
public class KafkaConfig {
@ -23,6 +40,31 @@ public class KafkaConfig {
return KafkaProducerFactory.producer(settings.getKafkaProducer());
}
@Bean
public ProducerFactory<String, Object> pf(BackendApiSettings settings) {
KafkaProducerSettings kafkaSettings = settings.getKafkaProducer();
return KafkaProducerFactory.producerFactory(kafkaSettings);
}
@Bean
public KafkaTemplate<String, Object> kafkaTemplateS(ProducerFactory<String, Object> pf) {
return new KafkaTemplate<>(pf);
}
@Profile("!kafkaDisabled")
@Autowired
@Bean
public KafkaSender kafkaSender(KafkaTemplate<String, Object> kafkaTemplate, ImdgProvider imdgProvider) {
ImdgId imdgIdGenerator = imdgProvider.getImdgIdGenerator();
return KafkaSender.setup()
.saveRequestInfo(false)
.setKafkaTemplate(kafkaTemplate)
.idGenerator(imdgIdGenerator::nextId)
.build();
}
@Profile("kafkaDisabled")
@Bean
public MockProducer<String, Object> createMockProducer() {

View file

@ -8,11 +8,15 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
import ru.clearing.classes.statics.data.security.MoneyMarketSecurity;
import ru.clearing.classes.statics.data.security.Security;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
@ -34,9 +38,16 @@ public class SecurityController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransformSpecificClass(
IMDGDistributedNames.Map_MoneyMarketSecurity,
Security.class);
Collection<Map<String, Object>> all = new ArrayList<>();
all.addAll(stateLoader.getAllMetaTransformSpecificClass(
IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class
));
all.addAll(stateLoader.getAllMetaTransformSpecificClass(
IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class
));
all.addAll(stateLoader.getAllMetaTransformSpecificClass(
IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class
));
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;

View file

@ -0,0 +1,60 @@
package ru.spcex.clearing.backendapi.controller.test;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRawValue;
import com.fasterxml.jackson.databind.JsonNode;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryNewRequest;
public class AnyKafkaMessageAction implements IAction<TradingClearingRegistryNewRequest> {
@ApiModelProperty(value = "полное имя класса payload для BaseRequest", example = "ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest")
@JsonProperty
private String fullClassName;
@JsonProperty
private String topicName;
@JsonRawValue
public String json;
@JsonProperty("json")
private void unpackRawJson(JsonNode json) {
this.json = json.toString();
}
@Override
public TradingClearingRegistryNewRequest toRequest() {
var req = new TradingClearingRegistryNewRequest();
return req;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.SYSTEM;
}
public String getFullClassName() {
return fullClassName;
}
public void setFullClassName(String fullClassName) {
this.fullClassName = fullClassName;
}
public String getTopicName() {
return topicName;
}
public void setTopicName(String topicName) {
this.topicName = topicName;
}
public String getJson() {
return json;
}
public void setJson(String json) {
this.json = json;
}
}

View file

@ -0,0 +1,67 @@
package ru.spcex.clearing.backendapi.controller.test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.error.ValidationException;
import ru.spcex.platform.utils.text.TextUtil;
@Controller
@RequestMapping("/anonymous/kafka-api")
public class KafkaApiController {
private final Logger log = LoggerFactory.getLogger(getClass());
private final KafkaSender kafkaSender;
private static final ObjectMapper json = new ObjectMapper();
static {
}
@Autowired
public KafkaApiController(KafkaSender kafkaSender) {
this.kafkaSender = kafkaSender;
}
@ApiOperation(value = "Test backend-api availability.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = String.class)})
@RequestMapping(method = RequestMethod.POST, path = "/any/message", produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
public String processGet(@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody AnyKafkaMessageAction bankAccountNewAction) throws ClassNotFoundException, ValidationException, JsonProcessingException {
log.info("Call test method for backend-api controller");
validate(bankAccountNewAction);
Class<?> parameterType = ClassUtils.forName(bankAccountNewAction.getFullClassName(), ClassUtils.getDefaultClassLoader());
JavaType requestType = json.getTypeFactory().constructSimpleType(parameterType, null);
Object obj = json.readValue(bankAccountNewAction.getJson(), requestType);
Long idOfBaseRequestMessage = kafkaSender.sendRequestToQueue(bankAccountNewAction.getTopicName(), obj);
return "success: baseRequest.id = " + idOfBaseRequestMessage;
}
private void validate(AnyKafkaMessageAction bankAccountNewAction) throws ValidationException {
if (TextUtil.isEmpty(bankAccountNewAction.getTopicName())) {
throw new ValidationException(new EnumMessage(BackEndError.ValidationError, "topicName"));
}
if (TextUtil.isEmpty(bankAccountNewAction.getFullClassName())) {
throw new ValidationException(new EnumMessage(BackEndError.ValidationError, "fullClassName"));
}
if (TextUtil.isEmpty(bankAccountNewAction.getJson())) {
throw new ValidationException(new EnumMessage(BackEndError.ValidationError, "json"));
}
}
}

View file

@ -63,8 +63,12 @@ public class ActionMetaValidation implements InitializingBean {
return null;
}
static boolean isTrue(Boolean b) {
return b!=null && b;
}
private <T extends Object> Function<T, IValidator> validatorConstructor(ObjectExtracted metaAction) {
if (!metaAction.getFields().stream().anyMatch(field -> field.getField().isRequired())) {
if (!metaAction.getFields().stream().anyMatch(field -> isTrue(field.getField().isRequired()))) {
log.debug("Action {}: no any required fields. Do not need validator.", metaAction.getClassName());
// нет обязательных полей для валидации
return null;
@ -79,7 +83,7 @@ public class ActionMetaValidation implements InitializingBean {
}
for (FieldExtracted field : metaAction.getFields()) {
try {
if (field.getField().isRequired() != null && field.getField().isRequired()) {
if (isTrue(field.getField().isRequired())) {
Object value = field.extractValue(object);
}
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
@ -111,7 +115,7 @@ public class ActionMetaValidation implements InitializingBean {
IAction object = context.getValidatedObject();
for (FieldExtracted field : metaAction.getFields()) {
try {
if (field.getField().isRequired() != null && field.getField().isRequired()) {
if (isTrue(field.getField().isRequired())) {
Object value = field.extractValue(object);
if (value == null)
return of(BackEndError.ValidationError, field.getMemberName());

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<meta version="3.5.0.5">
<meta version="3.5.0.6">
<enums>
<allowed id="1" code="ALWD" name="Разрешено"/>
<allowed id="2" code="DEND" name="Запрещено"/>
@ -172,6 +172,7 @@
<registryStatus id="7" code="POOL" name="В клиринге"/>
<registryStatus id="8" code="NACK" name="Не допущено"/>
<registryStatus id="9" code="NACC" name="Не допущено у контрагента"/>
<registryStatus id="10" code="SPLT" name="Разделен"/>
<balanceDimension id="1" code="PICS" name="Штуки"/>
<balanceDimension id="2" code="LOTS" name="Лоты"/>
<balanceDimension id="3" code="MONY" name="Деньги"/>
@ -193,38 +194,28 @@
<depoAccountType id="7" code="E" name="Счет эмитента"/>
<clearingAccountType id="1" code="A" name="Счет участника"/>
<clearingAccountType id="2" code="B" name="Счет клиента"/>
<task id="1" code="GBAL" name="Зачисление остатков"/>
<task id="3" code="ABLK" name="Блокировка счета"/>
<task id="4" code="GALB" name="Запрос остатков по всем счетам"/>
<task id="5" code="ADBL" name="Дозачисление/списание остатков"/>
<task id="7" code="CORD" name="Формирование сводного платежного поручения"/>
<task id="8" code="CORC" name="Получение подтверждения переводов"/>
<task id="9" code="GVER" name="Запуск сверки"/>
<task id="12" code="CMBA" name="Формирование распоряжения на перевод с ТБС"/>
<task id="14" code="GCMR" name="Формирование реестра участников клиринга"/>
<task id="15" code="GBRR" name="Формирование реестра остатков денежных средств "/>
<task id="16" code="GORR" name="Формирование реестра распоряжений, направленных расчетной организации"/>
<task id="17" code="GREP" name="Формирование отчетности"/>
<task id="21" code="GSRR" name="Формирование реестра отправленных отчетов"/>
<task id="25" code="GTRD" name="Получение сделок из Торговой системы"/>
<task id="32" code="GACA" name="Создание файла остатков CSV по клиринговым счетам"/>
<task id="33" code="GAIA" name="Создание файла остатков CSV по внутренним информацион.счетам"/>
<task id="35" code="SCLR" name="Запуск клиринговой сессии"/>
<task id="36" code="SPRC" name="Запуск преклиринга"/>
<task id="37" code="SPOC" name="Запуск постклиринга"/>
<task id="38" code="LIMM" name="Выгрузка в торговую систему остатков по деньгам"/>
<task id="39" code="LIMS" name="Выгрузка в торговую систему остатков по бумагам"/>
<task id="40" code="LIQU" name="Ликвидационная сессия по обязательтсвам участника"/>
<task id="41" code="STRM" name="Начало торговой сессии секции МКР"/>
<task id="42" code="ETRM" name="Завершение торговой сессии секции МКР"/>
<task id="43" code="SIPO" name="Начало торговой сессии по первичным торгам"/>
<task id="44" code="EIPO" name="Завершение торговой сессии по первичным торгам"/>
<task id="45" code="STRF" name="Начало торговой сессии по вторичным торгам"/>
<task id="46" code="ETRF" name="Завершение торговой сессии по вторичным торгам"/>
<task id="47" code="RCHK" name="Запрос на сверку активов"/>
<task id="48" code="GRYT" name="Сформировать регистр на текущий день"/>
<task id="49" code="GRRT" name="Сформировать реестр на текущий день"/>
<task id="50" code="GORD" name="Формирование реестра распоряжений, направленных расчетному депозитарию"/>
<task id="1" code="GALB" name="Запрос остатков по всем счетам (отправка ДФ-51, ДФ-56 для получения ответа ДФ-01, ДФ-57)"/>
<task id="2" code="OUTV" name="Вывод свободных средств инициаторов В (отправка ДФ-54 для получения ответа ДФ-55)"/>
<task id="3" code="GTRD" name="Получение сделок из Торговой системы"/>
<task id="4" code="LIMM" name="Выгрузка в Торговую систему остатков по деньгам (отправка lim)"/>
<task id="5" code="LIMS" name="Выгрузка в Торговую систему остатков по бумагам (отправка lim)"/>
<task id="6" code="LOCM" name="Загрузка участников"/>
<task id="7" code="LOSC" name="Загрузка инструментов"/>
<task id="8" code="GVER" name="Запуск сверки"/>
<task id="9" code="GRYT" name="Подготовка КС к клиринговому дню"/>
<task id="10" code="SCLR" name="Запуск клиринговой сессии"/>
<task id="11" code="GRRT" name="Формирование реестра остатков ценных бумаг"/>
<task id="12" code="GBRR" name="Формирование реестра остатков денежных средств"/>
<task id="13" code="ADLR" name="Формирование реестра обязательств, допущенных к клирингу"/>
<task id="14" code="CDLR" name="Формирование реестра обязательств, прошедших процедуру контроля обеспечения"/>
<task id="15" code="GORR" name="Формирование реестра распоряжений, направленных расчетной организации"/>
<task id="16" code="GORD" name="Формирование реестра распоряжений, направленных расчетному депозитарию"/>
<task id="17" code="EXLR" name="Формирование реестра обязательств, исключенных из клирингового пула"/>
<task id="18" code="LBSR" name="Формирование реестра учета обязательств"/>
<task id="19" code="ECNR" name="Формирование реестра сделок"/>
<task id="20" code="GREP" name="Формирование отчетности"/>
<task id="21" code="STRS" name="Начало торговой сессии"/>
<task id="22" code="ETRS" name="Завершение торговой сессии"/>
<taskStatus id="1" code="ACTV" name="Активна"/>
<taskStatus id="2" code="BLKD" name="Не активна"/>
<taskStatus id="3" code="CNCL" name="Отмена расписания"/>
@ -312,6 +303,13 @@
<errorCode id="1014" code="SECR" name="Запись по инструменту %s не найдена."/>
<errorCode id="1015" code="SECR" name="Валюта %s уже существует."/>
<errorCode id="1016" code="SECR" name="Валюта %s не найдена."/>
<errorCode id="1017" code="SECR" name="Инструмент на режиме %s уже существует."/>
<errorCode id="1018" code="SECR" name="Инструмент на режиме %s не найден."/>
<errorCode id="1019" code="SECR" name="Инструмент на режиме %s неактивен."/>
<errorCode id="1020" code="SECR" name="Режим %s не найден."/>
<errorCode id="1021" code="SECR" name="Информиция об инструментах Денежного рынка на режимах добавляется автоматически."/>
<errorCode id="1022" code="SECR" name="Информиция об инструментах Денежного рынка на режимах изменяется автоматически."/>
<errorCode id="1023" code="SECR" name="Информиция об инструментах Денежного рынка на режимах блокируется автоматически."/>
<!-- error code for utility-service -->
<errorCode id="2000" code="UTIL" name="Общая ошибка модуля utility-service."/>
@ -436,6 +434,8 @@
<errorCode id="7013" code="SCHD" name="Указанный инструмент неактивен."/>
<errorCode id="7014" code="SCHD" name="Указанная в задаче компания не найдена."/>
<errorCode id="7015" code="SCHD" name="Указанная компания неактивна."/>
<errorCode id="7016" code="SCHD" name="Возможно добавить запись в календарь только на будущую дату."/>
<errorCode id="7017" code="SCHD" name="Возможно добавить задачу только на будущее время."/>
<!-- error code for control-service -->
<errorCode id="8000" code="CNTR" name="Общая ошибка модуля control-service."/>
@ -458,11 +458,11 @@
<company id="2" fullName="ЗАО «Петербургский Расчетный Центр»" shortName="ПРЦ" tradingCode="" clearingCode="" workflowStatus="ACTV"/>
<company id="3" fullName="Торговая организация" shortName="ТС" tradingCode="" clearingCode="" workflowStatus="ACTV"/>
<company id="4" fullName="ЗАО «Санкт-Петербургский Расчетно-Депозитарный Центр»" shortName="РДЦ" tradingCode="" clearingCode="" workflowStatus="ACTV"/>
<company id="5" fullName="Центральный Банк Российской Федерации" shortName="ЦБ РФ" tradingCode="" clearingCode="" workflowStatus="ACTV"/>
<!--company id="5" fullName="Центральный Банк Российской Федерации" shortName="ЦБ РФ" tradingCode="" clearingCode="" workflowStatus="ACTV"/-->
<companySymbols id="1" companyId="1" companySymbol="BIC" companySymbolValue="044030920"/>
<companySymbols id="2" companyId="2" companySymbol="BIC" companySymbolValue="044030505"/>
<currency id="643" currency_code="RUB"/>
<security instrumentType="CRNC" shortName="RUB" fullName="Российский рубль" securitySymbol="RUB" workflowStatus="ACTV" id="643"/>
<account id="1" companyId="1" account="30414810300000006000" accountType="TRAN" status="ACTV" processingSign="ALWD"/>
<account id="2" companyId="1" account="30414810600000007000" accountType="ANLT" status="ACTV" processingSign="ALWD"/>

View file

@ -1,6 +1,6 @@
{
"version": "3.5.0.25",
"version": "3.5.0.27",
"enums": {
@ -1640,11 +1640,11 @@
}
,
{"code": "companySymbol",
"field": "id","type": 12,"name": "Тип реквизита","shortname": "Тип реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbol","link": "companySymbols","extends": "companySymbols"
"field": "id","type": 12,"name": "Тип реквизита","shortname": "Тип реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbol","link": "companySymbols","extends": "companySymbols","ignore": true
}
,
{"code": "companySymbolValue",
"field": "id","type": 2,"length": 255,"name": "Значение реквизита","shortname": "Значение реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbolValue","link": "companySymbols","extends": "companySymbols"
"field": "id","type": 2,"length": 255,"name": "Значение реквизита","shortname": "Значение реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbolValue","link": "companySymbols","extends": "companySymbols","ignore": true
}
,
{"code": "workflowStatus",
@ -1699,6 +1699,8 @@
"confirmation": "shortName,tradingCode",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "company","linkCode": "id","required": true
@ -1911,6 +1913,8 @@
"name": "Удаление категории участника клиринга",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clearingCategory","linkCode": "id","required": true
@ -1990,6 +1994,8 @@
"name": "Удаление контакта компании",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "contact","linkCode": "id","required": true
@ -2189,6 +2195,8 @@
"confirmation": "documentType,number,companyId",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "profileDocument","linkCode": "id","required": true
@ -2270,6 +2278,8 @@
"name": "Удаление реквизита компании",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "profileDocument","linkCode": "id","required": true
@ -2327,7 +2337,7 @@
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","linkCode": "shortName"
}
,
{"code": "shortName",
@ -2463,7 +2473,7 @@
}
,
{"code": "termType",
"type": 12,"dbname": "Код вида инструмента","name": "Наименование вида инструмента","shortname": "Вид инструмента","searchable": true,"sortable": true,"visible": false,"link": "termType","ignore": true
"type": 12,"dbname": "Код вида инструмента","name": "Наименование вида инструмента","shortname": "Вид инструмента","searchable": true,"sortable": true,"visible": false,"link": "termType"
}
,
{"code": "lotSize",
@ -2471,7 +2481,7 @@
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2553,7 +2563,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2628,7 +2638,7 @@
}
,
{"code": "termType",
"type": 12,"name": "Наименование вида инструмента","shortname": "Вид инструмента","link": "termType","visible": false
"type": 12,"name": "Наименование вида инструмента","shortname": "Вид инструмента","link": "termType"
}
,
{"code": "description",
@ -2636,7 +2646,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2663,6 +2673,8 @@
"confirmation": "securitySymbol,shortName",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "moneyMarketSecurity","linkCode": "id","required": true
@ -2744,11 +2756,11 @@
}
,
{"code": "lotSize",
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing"
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing","ignore": true
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","linkCode": "shortName","extends": "security"
}
,
{"code": "shortNameEng",
@ -2806,7 +2818,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2865,7 +2877,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2888,6 +2900,8 @@
"confirmation": "securitySymbol,shortName",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "equitySecurity","linkCode": "id","required": true
@ -2959,11 +2973,11 @@
}
,
{"code": "lotSize",
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing"
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing","ignore": true
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","linkCode": "shortName","extends": "security"
}
,
{"code": "shortNameEng",
@ -3041,7 +3055,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -3120,7 +3134,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -3248,15 +3262,15 @@
"fields": [
{"code": "securityId",
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": true,"sortable": true,"link": "security","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": true,"sortable": true,"visible": true,"link": "security","linkCode": "shortName"
}
,
{"code": "market",
"type": 12,"dbname": "Код торговой секции","name": "Наименование режима","shortname": "Режим","searchable": true,"sortable": true,"link": "market","linkCode": "description"
"type": 12,"dbname": "Код торговой секции","name": "Наименование режима","shortname": "Режим","searchable": true,"sortable": true,"visible": true,"link": "market","linkCode": "description"
}
,
{"code": "lotSize",
"type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true
"type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true
}
,
{"code": "symbolCode",
@ -3300,7 +3314,7 @@
}
,
{"code": "market",
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","required": true,"linkCode": "code"
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","linkCode": "description","required": true
}
,
{"code": "lotSize",
@ -3333,7 +3347,7 @@
}
,
{"code": "market",
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","linkCode": "code","required": true,"enabled": false
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","linkCode": "description","required": true,"enabled": false
}
,
{"code": "lotSize",
@ -3356,6 +3370,8 @@
"confirmation": "securityId,market",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "listing","linkCode": "id","required": true
@ -3593,6 +3609,8 @@
"confirmation": "companyId,code",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true
@ -3628,11 +3646,11 @@
}
,
{"code": "moneyAccountId",
"type": 1,"dbname": "Идентификатор денежного счета","name": "Номер денежного счета","shortname": "Денежный счет","searchable": true,"sortable": true,"link": "account"
"type": 1,"dbname": "Идентификатор денежного счета","name": "Номер денежного счета","shortname": "Денежный счет","searchable": true,"sortable": true,"link": "account","linkCode": "account"
}
,
{"code": "depoAccountId",
"type": 1,"dbname": "Идентификатор депозитарного счета","name": "Номер депозитарного счета","shortname": "Депозитарный счет","searchable": true,"sortable": true,"link": "account"
"type": 1,"dbname": "Идентификатор депозитарного счета","name": "Номер депозитарного счета","shortname": "Депозитарный счет","searchable": true,"sortable": true,"link": "account","linkCode": "account"
}
,
{"code": "tradingClearingRegistryType",
@ -3728,6 +3746,8 @@
"confirmation": "companyId,code",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true
@ -3751,7 +3771,7 @@
"fields": [
{"code": "companyId",
"type": 1,"dbname": "Идентификатор участника","name": "Наименование участника","shortname": "Участник","searchable": true,"sortable": true,"visible": true,"link": "company"
"type": 1,"dbname": "Идентификатор участника","name": "Наименование участника","shortname": "Участник","searchable": true,"sortable": true,"visible": true,"link": "company","linkCode": "shortName"
}
,
{"code": "tradingCode",
@ -3941,7 +3961,7 @@
,"actions":[
{"method":"post",
"name": "Досрочное изъятие части денежных средств по депозиту МКР",
"name": "Досрочное изъятие депозита",
"destination": "registries/splitDeposit",
@ -3950,8 +3970,12 @@
"class": "ru.spcex.clearing.backendapi.controller.request.cud.registry.RSplitDepositActionNew",
"fields": [
{"code": "companyId",
"type": 1,"name": "Наименование участника","shortname": "Инициатор","link": "company","linkCode": "shortName","enabled": false
}
,
{"code": "contract",
"type": 2,"length": 255,"name": "Договор","shortname": "Договор","required": true
"type": 2,"length": 255,"name": "Договор","shortname": "Номер договора","required": true,"enabled": false
}
,
{"code": "outboundAmount",
@ -4242,7 +4266,7 @@
}
,
{"code": "status",
"type": 12,"dbname": "Код статуса","name": "Наименование статуса","shortname": "Статус","searchable": true,"sortable": true,"visible": true,"link": "serviceStatus","extends": "account"
"field": "accountId","type": 12,"dbname": "Код статуса","name": "Наименование статуса","shortname": "Статус","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "id","linkCode": "status","link": "account","extends": "account"
}
,
{"code": "id",
@ -4254,7 +4278,7 @@
"name": "Добавление счета вывода средств из ПРЦ",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account,destination",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountNewAction",
@ -4296,7 +4320,7 @@
}
,
{"code": "companyId",
"type": 1,"name": "Компания","shortname": "Компания","link": "company","linkCode": "shortName","required": true
"type": 1,"name": "Компания","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
]
}
@ -4305,7 +4329,7 @@
"name": "Изменение счета вывода средств из ПРЦ",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account,destination",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountUpdateAction",
@ -4358,6 +4382,8 @@
"confirmation": "currency,bankIdentificationCode,correspondentAccount,taxpayerIdentificationNumber,taxRegistrationReasonCode,account",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "bankAccount","linkCode": "id","required": true
@ -4499,11 +4525,11 @@
}
,
{"code": "companyId",
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"visible": true,"link": "company","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"link": "company","linkCode": "shortName"
}
,
{"code": "securityId",
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"visible": true,"link": "security","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"link": "security","linkCode": "shortName"
}
,
{"code": "id",
@ -4533,6 +4559,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4541,17 +4571,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4574,6 +4600,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4582,17 +4612,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4601,7 +4627,9 @@
"name": "Блокировка шаблона расписания операционного дня",
"confirmation": "task,taskTime,taskStatus,companyId,securityId",
"confirmation": "task,taskTime,taskStatus,section,sessionType",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
@ -4664,7 +4692,7 @@
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
]
}
@ -4689,7 +4717,7 @@
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
]
}
@ -4698,7 +4726,9 @@
"name": "Блокировка записи в календаре",
"confirmation": "clearingDate,dayStatus,companyId",
"confirmation": "clearingDate,dayStatus",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
@ -4749,11 +4779,11 @@
}
,
{"code": "companyId",
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"visible": true,"link": "company","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"link": "company","linkCode": "shortName"
}
,
{"code": "securityId",
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"visible": true,"link": "security","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"link": "security","linkCode": "shortName"
}
,
{"code": "id",
@ -4787,6 +4817,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4795,17 +4829,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4832,6 +4862,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4840,17 +4874,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4859,7 +4889,9 @@
"name": "Блокировка расписания",
"confirmation": "task,taskTime,clearingDate,market,taskStatus,companyId,securityId",
"confirmation": "task,clearingDate,taskTime,taskStatus,section,sessionType",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
@ -4964,81 +4996,55 @@
}
]
,"actions":[
{"method":"post",
"destination": "GBAL",
"group": "Обмен с расчетной организацией",
"name": "Зачисление остатков (загрузка ДФ-57 и ДФ-01)",
"fields": []
}
,
{"method":"post",
"destination": "ABLK",
"group": "Обмен с расчетной организацией",
"name": "Блокировка счета (загрузка ДФ-12)",
"fields": []
}
,
{"method":"post",
"destination": "GALB",
"group": "Обмен с расчетной организацией",
"name": "Запрос остатков по всем счетам (экспорт ДФ-08)",
"name": "Запрос остатков по всем счетам (отправка ДФ-51, ДФ-56 для получения ответа ДФ-01, ДФ-57)",
"fields": []
}
,
{"method":"post",
"destination": "ADBL",
"destination": "OUTV",
"group": "Обмен с расчетной организацией",
"name": "Дозачисление/списание остатков (загрузка ДФ-16)",
"name": "Вывод свободных средств инициаторов В (отправка ДФ-54 для получения ответа ДФ-55)",
"fields": []
}
,
{"method":"post",
"destination": "CORD",
"destination": "SCLR",
"group": "Обмен с расчетной организацией",
"group": "Клиринг",
"name": "Формирование сводного платежного поручения (экспорт ДФ-03/ДФ-11)",
"name": "Запуск клиринговой сессии",
"fields": []
"confirmation": "section,sessionType",
"fields": [
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
}
,
{"method":"post",
"destination": "CORC",
"group": "Обмен с расчетной организацией",
"name": "Получение подтверждения переводов (загрузка ДФ-04)",
"fields": []
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"method":"post",
"destination": "CMBA",
"group": "Обмен с расчетной организацией",
"name": "Формирование распоряжения на перевод с ТБС (экспорт ДФ-11)",
"fields": []
{"code": "companyId",
"type": 1,"name": "Наименование инициатора","shortname": "Инициатор","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
,
{"method":"post",
@ -5054,87 +5060,33 @@
,
{"method":"post",
"destination": "GACA",
"destination": "LIMM",
"group": "Обмен с Торговой системой",
"name": "Создание файла остатков CSV по клиринговым счетам",
"name": "Выгрузка в Торговую систему остатков по деньгам (отправка lim)",
"fields": []
}
,
{"method":"post",
"destination": "GAIA",
"destination": "LIMS",
"group": "Обмен с Торговой системой",
"name": "Создание файла остатков CSV по внутренним информационным счетам",
"name": "Выгрузка в Торговую систему остатков по бумагам (отправка lim)",
"fields": []
}
,
{"method":"post",
"destination": "SCLR",
"destination": "GRRT",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Запуск клиринговой сессии",
"confirmation": "companyId,securityId",
"fields": [
{"code": "companyId",
"type": 1,"name": "Наименование инициатора","shortname": "Инициатор","link": "company","linkCode": "shortName"
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
}
]
}
,
{"method":"post",
"destination": "SPRC",
"group": "Клиринг",
"name": "Запуск преклиринга",
"fields": []
}
,
{"method":"post",
"destination": "SPOC",
"group": "Клиринг",
"name": "Запуск постклиринга",
"fields": []
}
,
{"method":"post",
"destination": "GVER",
"group": "Клиринг",
"name": "Запуск сверки",
"fields": []
}
,
{"method":"post",
"destination": "GCMR",
"group": "Клиринг",
"name": "Формирование реестра участников клиринга",
"name": "Формирование реестра остатков ценных бумаг",
"fields": []
}
@ -5143,18 +5095,40 @@
"destination": "GBRR",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра остатков денежных средств",
"fields": []
}
,
{"method":"post",
"destination": "ADLR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра обязательств, допущенных к клирингу",
"fields": []
}
,
{"method":"post",
"destination": "CDLR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра обязательств, прошедших процедуру контроля обеспечения",
"fields": []
}
,
{"method":"post",
"destination": "GORR",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра распоряжений, направленных расчетной организации",
@ -5163,11 +5137,44 @@
,
{"method":"post",
"destination": "GSRR",
"destination": "GORD",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра отправленных отчетов",
"name": "Формирование реестра распоряжений, направленных расчетному депозитарию",
"fields": []
}
,
{"method":"post",
"destination": "EXLR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра обязательств, исключенных из клирингового пула",
"fields": []
}
,
{"method":"post",
"destination": "LBSR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра учета обязательств",
"fields": []
}
,
{"method":"post",
"destination": "ECNR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра сделок",
"fields": []
}
@ -5176,7 +5183,7 @@
"destination": "GREP",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование отчетности",
@ -5189,143 +5196,11 @@
,
{"method":"post",
"destination": "LIMM",
"destination": "LOCM",
"group": "Обмен с Торговой системой",
"group": "Обмен с интеграционными модулями",
"name": "Выгрузка в торговую систему остатков по деньгам",
"fields": []
}
,
{"method":"post",
"destination": "LIMS",
"group": "Обмен с Торговой системой",
"name": "Выгрузка в торговую систему остатков по бумагам",
"fields": []
}
,
{"method":"post",
"destination": "LIQU",
"group": "Клиринг",
"name": "иквидационная сессия по обязательтсвам участника",
"fields": []
}
,
{"method":"post",
"destination": "STRM",
"group": "Клиринг",
"name": "Начало торговой сессии секции МКР",
"fields": []
}
,
{"method":"post",
"destination": "ETRM",
"group": "Клиринг",
"name": "Завершение торговой сессии секции МКР",
"fields": []
}
,
{"method":"post",
"destination": "SIPO",
"group": "Клиринг",
"name": "Начало торговой сессии по первичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "EIPO",
"group": "Клиринг",
"name": "Завершение торговой сессии по первичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "STRF",
"group": "Клиринг",
"name": "Начало торговой сессии по вторичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "ETRF",
"group": "Клиринг",
"name": "Завершение торговой сессии по вторичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "RCHK",
"group": "Клиринг",
"name": "Запрос на сверку активов",
"fields": []
}
,
{"method":"post",
"destination": "GRYT",
"group": "Клиринг",
"name": "Сформировать регистр на текущий день",
"fields": []
}
,
{"method":"post",
"destination": "GRRT",
"group": "Клиринг",
"name": "Сформировать реестр на текущий день",
"fields": []
}
,
{"method":"post",
"destination": "GORD",
"group": "Клиринг",
"name": "Формирование реестра распоряжений, направленных расчетному депозитарию",
"name": "Загрузка участников",
"fields": []
}
@ -5334,20 +5209,31 @@
"destination": "LOSC",
"group": "Клиринг",
"group": "Обмен с интеграционными модулями",
"name": "Загрузить инструменты",
"name": "Загрузка инструментов",
"fields": []
}
,
{"method":"post",
"destination": "LOCM",
"destination": "GVER",
"group": "Клиринг",
"group": "Общее",
"name": "Загрузить участников",
"name": "Запуск сверки",
"fields": []
}
,
{"method":"post",
"destination": "GRYT",
"group": "Общее",
"name": "Подготовка КС к клиринговому дню",
"fields": []
}

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
<meta version="3.5.0.25">
<meta version="3.5.0.27">
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
<!--Здесь словари-->
<enums>
@ -367,8 +367,8 @@
<tradingCode type="2" length="255" name="Код участника торгов" shortname="Биржевой код" searchable="true" sortable="true" visible="true"/>
<clearingCode type="2" length="255" name="Код участника клиринга" shortname="Клиринговый код" searchable="true" sortable="true" visible="true"/>
<registrationCode type="2" length="255" name="Регистрационный код участника" shortname="Регистрационный код" searchable="true" sortable="true" visible="true"/>
<companySymbol field="id" type="12" name="Тип реквизита" shortname="Тип реквизита" searchable="true" sortable="true" visible="true" linkKeyCode="companyId" linkCode="companySymbol" link="companySymbols" extends="companySymbols"/>
<companySymbolValue field="id" type="2" length="255" name="Значение реквизита" shortname="Значение реквизита" searchable="true" sortable="true" visible="true" linkKeyCode="companyId" linkCode="companySymbolValue" link="companySymbols" extends="companySymbols"/>
<companySymbol field="id" type="12" name="Тип реквизита" shortname="Тип реквизита" searchable="true" sortable="true" visible="true" linkKeyCode="companyId" linkCode="companySymbol" link="companySymbols" extends="companySymbols" ignore="true"/>
<companySymbolValue field="id" type="2" length="255" name="Значение реквизита" shortname="Значение реквизита" searchable="true" sortable="true" visible="true" linkKeyCode="companyId" linkCode="companySymbolValue" link="companySymbols" extends="companySymbols" ignore="true"/>
<workflowStatus type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" link="workflowStatus"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true"/>
@ -381,7 +381,7 @@
<companySymbolValue type="2" length="255" name="Значение реквизита" shortname="Значение реквизита" required="true"/>
<workflowStatus type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus" required="true"/>
</post>
<delete name="Блокировка компании" confirmation="shortName,tradingCode">
<delete name="Блокировка компании" confirmation="shortName,tradingCode" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="company" linkCode="id" required="true"/>
</delete>
</actions>
@ -435,7 +435,7 @@
<id type="1" name="Идентификатор записи" shortname="ID" link="clearingCategory" linkCode="id" required="true"/>
<clearingMemberCategory type="12" name="Категория участника клиринга" shortname="Категория" link="clearingCategory"/>
</put>
<delete name="Удаление категории участника клиринга">
<delete name="Удаление категории участника клиринга" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="clearingCategory" linkCode="id" required="true"/>
</delete>
</actions>
@ -456,7 +456,7 @@
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<contactValue type="2" length="255" name="Значение контакта" shortname="Значение"/>
</put>
<delete name="Удаление контакта компании">
<delete name="Удаление контакта компании" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="contact" linkCode="id" required="true"/>
</delete>
</actions>
@ -505,7 +505,7 @@
<validToDate type="6" name="Дата окончания срока действия" shortname="Окончание"/>
<link type="2" length="255" name="Ссылка на документ" shortname="Ссылка на документ"/>
</put>
<delete name="Удаление документа" confirmation="documentType,number,companyId">
<delete name="Удаление документа" confirmation="documentType,number,companyId" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="profileDocument" linkCode="id" required="true"/>
</delete>
</actions>
@ -526,7 +526,7 @@
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<companySymbolValue type="2" length="255" name="Значение реквизита" shortname="Значение"/>
</put>
<delete name="Удаление реквизита компании">
<delete name="Удаление реквизита компании" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="profileDocument" linkCode="id" required="true"/>
</delete>
</actions>
@ -539,7 +539,7 @@
</companyRoleSet>
<security name="Инструменты" destination="securities" class="ru.clearing.classes.statics.data.security.Security" logUpdates="true" table="security">
<instrumentType type="12" dbname="Код типа инструмента" name="Наименование типа инструмента" shortname="Тип инструмента" searchable="true" sortable="true" visible="true" link="instrumentType"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<shortName type="2" length="255" name="Краткое наименование инструмента" shortname="Краткое наименование" searchable="true" sortable="true" visible="true"/>
<fullName type="2" length="255" name="Полное наименование инструмента" shortname="Наименование" searchable="true" sortable="true" visible="true"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое наименование на английском" searchable="true" sortable="true" visible="true"/>
@ -569,9 +569,9 @@
<fullName type="2" length="255" name="Полное наименование инструмента" shortname="Наименование" searchable="true" sortable="true" visible="true" extends="security"/>
<convention type="2" length="255" name="Нотация наименования инструмента" shortname="Маска" visible="true"/>
<securitySymbol type="2" length="255" name="Код инструмента" shortname="Код" searchable="true" sortable="true" visible="true" extends="security"/>
<termType type="12" dbname="Код вида инструмента" name="Наименование вида инструмента" shortname="Вид инструмента" searchable="true" sortable="true" visible="false" link="termType" ignore="true"/>
<termType type="12" dbname="Код вида инструмента" name="Наименование вида инструмента" shortname="Вид инструмента" searchable="true" sortable="true" visible="false" link="termType"/>
<lotSize field="securityId" type="11" name="Размер лота" shortname="Лот" searchable="true" sortable="true" visible="true" linkKeyCode="securityId" linkCode="lotSize" link="listing" extends="listing"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company" extends="security"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company" extends="security" linkCode="shortName"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое наименование на английском" searchable="true" sortable="true" visible="true" extends="security"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском" searchable="true" sortable="true" visible="true" extends="security"/>
<isin type="2" length="50" name="Наименование инструмента ISIN" shortname="ISIN" searchable="true" sortable="true" visible="true" extends="security"/>
@ -591,7 +591,7 @@
<endDate type="6" name="Дата окончания действия" shortname="Дата окончания" visible="false"/>
<termType type="12" name="Наименование вида инструмента" shortname="Вид инструмента" link="termType"/>
<description type="2" length="255" name="Описание" shortname="Описание" visible="false"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company" linkCode="shortName"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое название на английском"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском"/>
<isin type="2" length="50" name="Наименование инструмента ISIN" shortname="ISIN"/>
@ -609,15 +609,15 @@
<nominalCurrency type="12" name="Наименование валюты номинала" shortname="Валюта номинала" link="currencyCode" linkCode="code"/>
<startDate type="6" name="Дата начала действия" shortname="Дата начала" enabled="false" visible="false"/>
<endDate type="6" name="Дата окончания действия" shortname="Дата окончания" visible="false"/>
<termType type="12" name="Наименование вида инструмента" shortname="Вид инструмента" link="termType" visible="false"/>
<termType type="12" name="Наименование вида инструмента" shortname="Вид инструмента" link="termType"/>
<description type="2" length="255" name="Описание" shortname="Описание" visible="false"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company" linkCode="shortName"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое название на английском"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском"/>
<isin type="2" length="50" name="Наименование инструмента ISIN" shortname="ISIN"/>
<workflowStatus type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
</put>
<delete name="Блокировка инструмента Денежного рынка" confirmation="securitySymbol,shortName">
<delete name="Блокировка инструмента Денежного рынка" confirmation="securitySymbol,shortName" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="moneyMarketSecurity" linkCode="id" required="true"/>
</delete>
</actions>
@ -636,8 +636,8 @@
<isin type="2" length="50" name="Наименование инструмента ISIN" shortname="ISIN" searchable="true" sortable="true" visible="true" extends="security"/>
<instrumentType type="12" dbname="Код типа инструмента" name="Наименование типа инструмента" shortname="Тип инструмента" searchable="true" sortable="true" visible="true" link="instrumentType" extends="security"/>
<shareType type="12" dbname="Код типа акции" name="Наименование типа акции" shortname="Тип акции" searchable="true" sortable="true" visible="true" link="shareType"/>
<lotSize field="securityId" type="11" name="Размер лота" shortname="Лот" searchable="true" sortable="true" visible="true" linkKeyCode="securityId" linkCode="lotSize" link="listing" extends="listing"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company" extends="security"/>
<lotSize field="securityId" type="11" name="Размер лота" shortname="Лот" searchable="true" sortable="true" visible="true" linkKeyCode="securityId" linkCode="lotSize" link="listing" extends="listing" ignore="true"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company" linkCode="shortName" extends="security"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое наименование на английском" searchable="true" sortable="true" visible="true" extends="security"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском" searchable="true" sortable="true" visible="true" extends="security"/>
<workflowStatus type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" visible="true" link="workflowStatus" extends="security"/>
@ -651,7 +651,7 @@
<isin type="2" length="50" name="Наименование инструмента ISIN" shortname="ISIN"/>
<shareType type="12" dbname="Код типа акции" name="Наименование типа акции" shortname="Тип акции" link="shareType"/>
<lotSize type="11" name="Размер лота" shortname="Лот" visible="false"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company" linkCode="shortName"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое название на английском"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском"/>
<workflowStatus type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
@ -665,12 +665,12 @@
<isin type="2" length="50" name="Наименование инструмента ISIN" shortname="ISIN"/>
<shareType type="12" dbname="Код типа акции" name="Наименование типа акции" shortname="Тип акции" link="shareType"/>
<lotSize field="securityId" type="11" name="Размер лота" shortname="Лот" linkKeyCode="securityId" linkCode="lotSize" link="listing" visible="false"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company" linkCode="shortName"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое название на английском"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском"/>
<workflowStatus type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
</put>
<delete name="Блокировка акции" confirmation="securitySymbol,shortName">
<delete name="Блокировка акции" confirmation="securitySymbol,shortName" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="equitySecurity" linkCode="id" required="true"/>
</delete>
</actions>
@ -688,8 +688,8 @@
<nominalCurrency type="12" dbname="Код валюты номинала" name="Наименование валюты номинала" shortname="Валюта номинала" searchable="true" sortable="true" link="currencyCode"/>
<coupon type="10" name="Купон" shortname="Купон" searchable="true" sortable="true"/>
<couponFrequency type="3" name="Длительность купона" shortname="Длительность" searchable="true" sortable="true"/>
<lotSize field="securityId" type="11" name="Размер лота" shortname="Лот" searchable="true" sortable="true" visible="true" linkKeyCode="securityId" linkCode="lotSize" link="listing" extends="listing"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company" extends="security"/>
<lotSize field="securityId" type="11" name="Размер лота" shortname="Лот" searchable="true" sortable="true" visible="true" linkKeyCode="securityId" linkCode="lotSize" link="listing" extends="listing" ignore="true"/>
<issuerId type="1" dbname="Идентификатор эмитента" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company" linkCode="shortName" extends="security"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое наименование на английском" searchable="true" sortable="true" visible="true" extends="security"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском" searchable="true" sortable="true" visible="true" extends="security"/>
<workflowStatus type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" visible="true" link="workflowStatus" extends="security"/>
@ -708,7 +708,7 @@
<maturityDate type="6" name="Дата погашения" shortname="Погашение"/>
<coupon type="10" name="Купон" shortname="Купон"/>
<couponFrequency type="3" name="Длительность купона" shortname="Длительность"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company" linkCode="shortName"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое название на английском"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском"/>
<workflowStatus type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
@ -727,7 +727,7 @@
<maturityDate type="6" name="Дата погашения" shortname="Погашение"/>
<coupon type="10" name="Купон" shortname="Купон"/>
<couponFrequency type="3" name="Длительность купона" shortname="Длительность"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" link="company" linkCode="shortName"/>
<shortNameEng type="2" length="255" name="Краткое наименование инструмента на английском" shortname="Краткое название на английском"/>
<fullNameEng type="2" length="255" name="Полное наименование инструмента на английском" shortname="Наименование на английском"/>
<workflowStatus type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
@ -754,9 +754,9 @@
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
</couponPeriod>
<listing name="Инструменты на режимах" destination="listings" class="ru.clearing.classes.statics.data.misc.Listing" logUpdates="true" table="listing">
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" link="security" linkCode="shortName"/>
<market type="12" dbname="Код торговой секции" name="Наименование режима" shortname="Режим" searchable="true" sortable="true" link="market" linkCode="description"/>
<lotSize type="11" name="Размер лота" shortname="Лот" searchable="true" sortable="true"/>
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" visible="true" link="security" linkCode="shortName"/>
<market type="12" dbname="Код торговой секции" name="Наименование режима" shortname="Режим" searchable="true" sortable="true" visible="true" link="market" linkCode="description"/>
<lotSize type="11" name="Размер лота" shortname="Лот" searchable="true" sortable="true" visible="true"/>
<symbolCode type="2" length="255" name="Код инструмента на торговой площадке" shortname="Код инструмента на режиме" searchable="true" sortable="true"/>
<symbolName type="2" length="255" name="Наименование инструмента на торговой площадке" shortname="Наименование инструмента на режиме" searchable="true" sortable="true"/>
<tradingCurrency type="12" dbname="Код валюты расчета" name="Наименование валюты расчета" shortname="Валюта" searchable="true" sortable="true" visible="true" link="currencyCode" linkCode="code"/>
@ -767,7 +767,7 @@
<actions>
<post name="Добавление инструмента на режимах" confirmation="securityId,market,lotSize,tradingCurrency,workflowStatus">
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" required="true"/>
<market type="12" name="Наименование режима" shortname="Режим" link="market" required="true" linkCode="code"/>
<market type="12" name="Наименование режима" shortname="Режим" link="market" linkCode="description" required="true"/>
<lotSize type="11" name="Размер лота" shortname="Лот" required="true"/>
<tradingCurrency type="12" name="Наименование валюты расчета" shortname="Валюта" link="currencyCode" linkCode="code" required="true"/>
<workflowStatus type="12" name="Наименование статуса листинга в системе" shortname="Статус" link="workflowStatus" required="true"/>
@ -775,12 +775,12 @@
<put name="Изменение инструмента на режимах" confirmation="securityId,market,lotSize,tradingCurrency,workflowStatus">
<id type="1" name="Идентификатор записи" shortname="ID" link="listing" linkCode="id" required="true"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" required="true" enabled="false"/>
<market type="12" name="Наименование режима" shortname="Режим" link="market" linkCode="code" required="true" enabled="false"/>
<market type="12" name="Наименование режима" shortname="Режим" link="market" linkCode="description" required="true" enabled="false"/>
<lotSize type="11" name="Размер лота" shortname="Лот" required="true"/>
<tradingCurrency type="12" name="Наименование валюты расчета" shortname="Валюта" link="currencyCode" linkCode="code" required="true"/>
<workflowStatus type="12" name="Наименование статуса листинга в системе" shortname="Статус" link="workflowStatus" required="true"/>
</put>
<delete name="Блокировка инструмента на режимах" confirmation="securityId,market">
<delete name="Блокировка инструмента на режимах" confirmation="securityId,market" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="listing" linkCode="id" required="true"/>
</delete>
</actions>
@ -835,7 +835,7 @@
<depoAccountId type="1" name="Номер депозитарного счета" shortname="Депозитарный счет" link="account" linkCode="account"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
</put>
<delete name="Блокировка кода клиента" confirmation="companyId,code">
<delete name="Блокировка кода клиента" confirmation="companyId,code" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="clientCode" linkCode="id" required="true"/>
</delete>
</actions>
@ -844,8 +844,8 @@
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<code type="2" length="255" name="Код торгово-клирингового регистра" shortname="ТКР" searchable="true" sortable="true" visible="true"/>
<moneyAccountId type="1" dbname="Идентификатор денежного счета" name="Номер денежного счета" shortname="Денежный счет" searchable="true" sortable="true" link="account"/>
<depoAccountId type="1" dbname="Идентификатор депозитарного счета" name="Номер депозитарного счета" shortname="Депозитарный счет" searchable="true" sortable="true" link="account"/>
<moneyAccountId type="1" dbname="Идентификатор денежного счета" name="Номер денежного счета" shortname="Денежный счет" searchable="true" sortable="true" link="account" linkCode="account"/>
<depoAccountId type="1" dbname="Идентификатор депозитарного счета" name="Номер депозитарного счета" shortname="Депозитарный счет" searchable="true" sortable="true" link="account" linkCode="account"/>
<tradingClearingRegistryType type="12" dbname="Код торгово-клирингового регистра" name="Тип торгово-клирингового регистра" shortname="Тип ТКР" searchable="true" sortable="true" link="tradingClearingRegistryType"/>
<tradingClearingRegistryLevel type="12" dbname="Код торгово-клирингового регистра" name="Уровень торгово-клирингового регистра" shortname="Уровень ТКР" searchable="true" sortable="true" visible="false" link="tradingClearingRegistryLevel"/>
<tradingClearingRegistryPurpose type="12" dbname="Код области применения" name="Область применения" shortname="Область" searchable="true" sortable="true" link="tradingClearingRegistryPurpose"/>
@ -867,13 +867,13 @@
<depoAccountId type="1" name="Номер депозитарного счета" shortname="Депозитарный счет" link="account" linkCode="account" enabled="false"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus" required="true"/>
</put>
<delete name="Блокировка ТКР" confirmation="companyId,code">
<delete name="Блокировка ТКР" confirmation="companyId,code" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="clientCode" linkCode="id" required="true"/>
</delete>
</actions>
</tradingClearingRegistry>
<registry name="Регистр активов, обязательств и требований УК" destination="registries" class="ru.clearing.classes.statics.data.registry.Registry" logUpdates="true" table="registry">
<companyId type="1" dbname="Идентификатор участника" name="Наименование участника" shortname="Участник" searchable="true" sortable="true" visible="true" link="company"/>
<companyId type="1" dbname="Идентификатор участника" name="Наименование участника" shortname="Участник" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<tradingCode type="2" length="255" name="Торговый код участника" shortname="Торговый код" searchable="true" sortable="true" visible="true"/>
<clearingCode type="2" length="255" name="Клиринговый код участника" shortname="Клиринговый код" searchable="true" sortable="true" visible="true"/>
<shortName type="2" length="255" name="Краткое наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true"/>
@ -921,8 +921,9 @@
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
<actions>
<post name="Досрочное изъятие части денежных средств по депозиту МКР" destination="registries/splitDeposit" confirmation="contract,outboundAmount,refundDate" class="ru.spcex.clearing.backendapi.controller.request.cud.registry.RSplitDepositActionNew">
<contract type="2" length="255" name="Договор" shortname="Договор" required="true"/>
<post name="Досрочное изъятие депозита" destination="registries/splitDeposit" confirmation="contract,outboundAmount,refundDate" class="ru.spcex.clearing.backendapi.controller.request.cud.registry.RSplitDepositActionNew">
<companyId type="1" name="Наименование участника" shortname="Инициатор" link="company" linkCode="shortName" enabled="false"/>
<contract type="2" length="255" name="Договор" shortname="Номер договора" required="true" enabled="false"/>
<outboundAmount type="10" name="Сумма изъятия" shortname="Сумма" required="true"/>
<refundDate type="6" name="Дата возврата" shortname="Дата" required="true"/>
<comment type="2" length="255" name="Основание для вывода" shortname="Основание"/>
@ -992,10 +993,10 @@
<taxRegistrationReasonCode type="2" length="255" name="Код причины постановки (КПП)" shortname="КПП" searchable="true" sortable="true" visible="true"/>
<account type="2" length="50" name="Номер счета" shortname="Счет" searchable="true" sortable="true" visible="true"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<status type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" visible="true" link="serviceStatus" extends="account"/>
<status field="accountId" type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" visible="true" linkKeyCode="id" linkCode="status" link="account" extends="account"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<actions>
<post name="Добавление счета вывода средств из ПРЦ" confirmation="currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account,destination" class="ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountNewAction">
<post name="Добавление счета вывода средств из ПРЦ" confirmation="currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account" class="ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountNewAction">
<currency type="12" name="Код валюты" shortname="Валюта" required="true" link="currencyCode" linkCode="code"/>
<bankIdentificationCode type="2" length="255" name="Банковский идентификационный код (БИК)" shortname="БИК" required="true"/>
<bankName type="2" length="255" name="Наименование банка" shortname="Наименование" required="true"/>
@ -1005,9 +1006,9 @@
<taxRegistrationReasonCode type="2" length="255" name="Код причины постановки (КПП)" shortname="КПП"/>
<account type="2" length="50" name="Номер счета" shortname="Счет" required="true"/>
<destination type="2" length="255" name="Назначение платежа" shortname="Назначение платежа" visible="false"/>
<companyId type="1" name="Компания" shortname="Компания" link="company" linkCode="shortName" required="true"/>
<companyId type="1" name="Компания" shortname="Компания" link="company" linkCode="shortName" visible="false"/>
</post>
<put name="Изменение счета вывода средств из ПРЦ" confirmation="currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account,destination" class="ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountUpdateAction">
<put name="Изменение счета вывода средств из ПРЦ" confirmation="currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account" class="ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountUpdateAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="bankAccount" linkCode="id" required="true"/>
<currency type="12" name="Код валюты" shortname="Валюта" link="currencyCode" linkCode="code"/>
<bankIdentificationCode type="2" length="255" name="Банковский идентификационный код (БИК)" shortname="БИК"/>
@ -1019,7 +1020,7 @@
<account type="2" length="50" name="Номер счета" shortname="Счет"/>
<destination type="2" length="255" name="Назначение платежа" shortname="Назначение платежа" visible="false"/>
</put>
<delete name="Блокировка счета вывода средств из ПРЦ" confirmation="currency,bankIdentificationCode,correspondentAccount,taxpayerIdentificationNumber,taxRegistrationReasonCode,account">
<delete name="Блокировка счета вывода средств из ПРЦ" confirmation="currency,bankIdentificationCode,correspondentAccount,taxpayerIdentificationNumber,taxRegistrationReasonCode,account" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="bankAccount" linkCode="id" required="true"/>
</delete>
</actions>
@ -1049,8 +1050,8 @@
<section type="12" dbname="Код наименования секции" name="Наименование секции" shortname="Секция" searchable="true" sortable="true" visible="true" link="section" linkCode="name"/>
<sessionType type="12" dbname="Код типа клиринговой сессии" name="Тип клиринговой сессии" shortname="Тип КС" searchable="true" sortable="true" visible="true" link="sessionType" linkCode="name"/>
<taskStatus type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="false" sortable="true" visible="true" link="taskStatus"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="false" sortable="false" visible="true" link="company" linkCode="shortName"/>
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="security" linkCode="shortName"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="false" sortable="false" link="company" linkCode="shortName"/>
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="false" sortable="true" link="security" linkCode="shortName"/>
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
@ -1058,23 +1059,23 @@
<post name="Новый шаблон расписания операционного дня" class="ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerTemplateNewAction">
<task type="12" name="Наименование задачи" shortname="Задача" link="task" required="true"/>
<taskTime type="5" name="Время задачи" shortname="Время задачи" required="true"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<section type="12" name="Секция" shortname="Секция" link="section" linkCode="name" linkKeyCode="code"/>
<sessionType type="12" name="Тип клиринговой сессии" shortname="Тип клиринговой сессии" link="sessionType" linkCode="name" linkKeyCode="code"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" visible="false"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" visible="false"/>
</post>
<put name="Изменение шаблона расписания операционного дня" class="ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerTemplateUpdateAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="plannerTemplate" linkCode="id" required="true"/>
<task type="12" name="Наименование задачи" shortname="Задача" link="task" required="true"/>
<taskTime type="5" name="Время задачи" shortname="Время задачи" required="true"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<section type="12" name="Секция" shortname="Секция" link="section" linkCode="name" linkKeyCode="code"/>
<sessionType type="12" name="Тип клиринговой сессии" shortname="Тип клиринговой сессии" link="sessionType" linkCode="name" linkKeyCode="code"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" visible="false"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" visible="false"/>
</put>
<delete name="Блокировка шаблона расписания операционного дня" confirmation="task,taskTime,taskStatus,companyId,securityId">
<delete name="Блокировка шаблона расписания операционного дня" confirmation="task,taskTime,taskStatus,section,sessionType" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="plannerTemplate" linkCode="id" required="true"/>
</delete>
</actions>
@ -1090,15 +1091,15 @@
<post name="Добавление записи в календарь" class="ru.spcex.clearing.backendapi.controller.request.cud.schedule.ClearingCalendarNewAction">
<clearingDate type="6" name="Дата" shortname="Дата" required="true"/>
<dayStatus type="12" name="Статус" shortname="Статус" link="dayStatus" required="true"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" visible="false"/>
</post>
<put name="Изменение записи в календаре" class="ru.spcex.clearing.backendapi.controller.request.cud.schedule.ClearingCalendarUpdateAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="clearingCalendar" linkCode="id" required="true"/>
<clearingDate type="6" name="Дата" shortname="Дата" required="true"/>
<dayStatus type="12" name="Статус" shortname="Статус" link="dayStatus" required="true"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" visible="false"/>
</put>
<delete name="Блокировка записи в календаре" confirmation="clearingDate,dayStatus,companyId">
<delete name="Блокировка записи в календаре" confirmation="clearingDate,dayStatus" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="clearingCalendar" linkCode="id" required="true"/>
</delete>
</actions>
@ -1111,8 +1112,8 @@
<section type="12" dbname="Код наименования секции" name="Наименование секции" shortname="Секция" searchable="true" sortable="true" visible="true" link="section" linkCode="name"/>
<sessionType type="12" dbname="Код типа клиринговой сессии" name="Тип клиринговой сессии" shortname="Тип КС" searchable="true" sortable="true" visible="true" link="sessionType" linkCode="name"/>
<taskStatus type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="false" sortable="true" visible="true" link="taskStatus"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="false" sortable="false" visible="true" link="company" linkCode="shortName"/>
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="security" linkCode="shortName"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="false" sortable="false" link="company" linkCode="shortName"/>
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="false" sortable="true" link="security" linkCode="shortName"/>
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
@ -1121,24 +1122,24 @@
<task type="12" name="Наименование задачи" shortname="Задача" link="task" required="true"/>
<clearingDate type="6" name="Дата задачи" shortname="Дата задачи" required="true"/>
<taskTime type="5" name="Время задачи" shortname="Время задачи" required="true"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<section type="12" name="Секция" shortname="Секция" link="section" linkCode="name" linkKeyCode="code"/>
<sessionType type="12" name="Тип клиринговой сессии" shortname="Тип клиринговой сессии" link="sessionType" linkCode="name" linkKeyCode="code"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" visible="false"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" visible="false"/>
</post>
<put name="Изменение расписания" class="ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerUpdateAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="planner" required="true" linkCode="id"/>
<task type="12" name="Наименование задачи" shortname="Задача" link="task" required="true"/>
<clearingDate type="6" name="Дата задачи" shortname="Дата задачи" required="true"/>
<taskTime type="5" name="Время задачи" shortname="Время задачи" required="true"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<section type="12" name="Секция" shortname="Секция" link="section" linkCode="name" linkKeyCode="code"/>
<sessionType type="12" name="Тип клиринговой сессии" shortname="Тип клиринговой сессии" link="sessionType" linkCode="name" linkKeyCode="code"/>
<taskStatus type="12" name="Наименование статуса" shortname="Статус" link="taskStatus" required="true"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" visible="false"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" visible="false"/>
</put>
<delete name="Блокировка расписания" confirmation="task,taskTime,clearingDate,market,taskStatus,companyId,securityId">
<delete name="Блокировка расписания" confirmation="task,clearingDate,taskTime,taskStatus,section,sessionType" class="ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="planner" linkCode="id" required="true"/>
</delete>
</actions>
@ -1164,76 +1165,50 @@
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
<actions>
<post destination="GBAL" group="Обмен с расчетной организацией" name="Зачисление остатков (загрузка ДФ-57 и ДФ-01)">
<post destination="GALB" group="Обмен с расчетной организацией" name="Запрос остатков по всем счетам (отправка ДФ-51, ДФ-56 для получения ответа ДФ-01, ДФ-57)">
</post>
<post destination="ABLK" group="Обмен с расчетной организацией" name="Блокировка счета (загрузка ДФ-12)">
<post destination="OUTV" group="Обмен с расчетной организацией" name="Вывод свободных средств инициаторов В (отправка ДФ-54 для получения ответа ДФ-55)">
</post>
<post destination="GALB" group="Обмен с расчетной организацией" name="Запрос остатков по всем счетам (экспорт ДФ-08)">
</post>
<post destination="ADBL" group="Обмен с расчетной организацией" name="Дозачисление/списание остатков (загрузка ДФ-16)">
</post>
<post destination="CORD" group="Обмен с расчетной организацией" name="Формирование сводного платежного поручения (экспорт ДФ-03/ДФ-11)">
</post>
<post destination="CORC" group="Обмен с расчетной организацией" name="Получение подтверждения переводов (загрузка ДФ-04)">
</post>
<post destination="CMBA" group="Обмен с расчетной организацией" name="Формирование распоряжения на перевод с ТБС (экспорт ДФ-11)">
<post destination="SCLR" group="Клиринг" name="Запуск клиринговой сессии" confirmation="section,sessionType">
<section type="12" name="Секция" shortname="Секция" link="section" linkCode="name" linkKeyCode="code"/>
<sessionType type="12" name="Тип клиринговой сессии" shortname="Тип клиринговой сессии" link="sessionType" linkCode="name" linkKeyCode="code"/>
<companyId type="1" name="Наименование инициатора" shortname="Инициатор" link="company" linkCode="shortName" visible="false"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName" visible="false"/>
</post>
<post destination="GTRD" group="Обмен с Торговой системой" name="Получение сделок из Торговой системы">
</post>
<post destination="GACA" group="Обмен с Торговой системой" name="Создание файла остатков CSV по клиринговым счетам">
<post destination="LIMM" group="Обмен с Торговой системой" name="Выгрузка в Торговую систему остатков по деньгам (отправка lim)">
</post>
<post destination="GAIA" group="Обмен с Торговой системой" name="Создание файла остатков CSV по внутренним информационным счетам">
<post destination="LIMS" group="Обмен с Торговой системой" name="Выгрузка в Торговую систему остатков по бумагам (отправка lim)">
</post>
<post destination="SCLR" group="Клиринг" name="Запуск клиринговой сессии" confirmation="companyId,securityId">
<companyId type="1" name="Наименование инициатора" shortname="Инициатор" link="company" linkCode="shortName"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" link="security" linkCode="shortName"/>
<post destination="GRRT" group="Формирование реестров и отчетности" name="Формирование реестра остатков ценных бумаг">
</post>
<post destination="SPRC" group="Клиринг" name="Запуск преклиринга">
<post destination="GBRR" group="Формирование реестров и отчетности" name="Формирование реестра остатков денежных средств">
</post>
<post destination="SPOC" group="Клиринг" name="Запуск постклиринга">
<post destination="ADLR" group="Формирование реестров и отчетности" name="Формирование реестра обязательств, допущенных к клирингу">
</post>
<post destination="GVER" group="Клиринг" name="Запуск сверки">
<post destination="CDLR" group="Формирование реестров и отчетности" name="Формирование реестра обязательств, прошедших процедуру контроля обеспечения">
</post>
<post destination="GCMR" group="Клиринг" name="Формирование реестра участников клиринга">
<post destination="GORR" group="Формирование реестров и отчетности" name="Формирование реестра распоряжений, направленных расчетной организации">
</post>
<post destination="GBRR" group="Клиринг" name="Формирование реестра остатков денежных средств">
<post destination="GORD" group="Формирование реестров и отчетности" name="Формирование реестра распоряжений, направленных расчетному депозитарию">
</post>
<post destination="GORR" group="Клиринг" name="Формирование реестра распоряжений, направленных расчетной организации">
<post destination="EXLR" group="Формирование реестров и отчетности" name="Формирование реестра обязательств, исключенных из клирингового пула">
</post>
<post destination="GSRR" group="Клиринг" name="Формирование реестра отправленных отчетов">
<post destination="LBSR" group="Формирование реестров и отчетности" name="Формирование реестра учета обязательств">
</post>
<post destination="GREP" group="Клиринг" name="Формирование отчетности">
<post destination="ECNR" group="Формирование реестров и отчетности" name="Формирование реестра сделок">
</post>
<post destination="GREP" group="Формирование реестров и отчетности" name="Формирование отчетности">
<sessionId type="1" name="Клиринговая сессия" shortname="Сессия" link="session"/>
</post>
<post destination="LIMM" group="Обмен с Торговой системой" name="Выгрузка в торговую систему остатков по деньгам">
<post destination="LOCM" group="Обмен с интеграционными модулями" name="Загрузка участников">
</post>
<post destination="LIMS" group="Обмен с Торговой системой" name="Выгрузка в торговую систему остатков по бумагам">
<post destination="LOSC" group="Обмен с интеграционными модулями" name="Загрузка инструментов">
</post>
<post destination="LIQU" group="Клиринг" name="иквидационная сессия по обязательтсвам участника">
<post destination="GVER" group="Общее" name="Запуск сверки">
</post>
<post destination="STRM" group="Клиринг" name="Начало торговой сессии секции МКР">
</post>
<post destination="ETRM" group="Клиринг" name="Завершение торговой сессии секции МКР">
</post>
<post destination="SIPO" group="Клиринг" name="Начало торговой сессии по первичным торгам">
</post>
<post destination="EIPO" group="Клиринг" name="Завершение торговой сессии по первичным торгам">
</post>
<post destination="STRF" group="Клиринг" name="Начало торговой сессии по вторичным торгам">
</post>
<post destination="ETRF" group="Клиринг" name="Завершение торговой сессии по вторичным торгам">
</post>
<post destination="RCHK" group="Клиринг" name="Запрос на сверку активов">
</post>
<post destination="GRYT" group="Клиринг" name="Сформировать регистр на текущий день">
</post>
<post destination="GRRT" group="Клиринг" name="Сформировать реестр на текущий день">
</post>
<post destination="GORD" group="Клиринг" name="Формирование реестра распоряжений, направленных расчетному депозитарию">
</post>
<post destination="LOSC" group="Клиринг" name="Загрузить инструменты">
</post>
<post destination="LOCM" group="Клиринг" name="Загрузить участников">
<post destination="GRYT" group="Общее" name="Подготовка КС к клиринговому дню">
</post>
</actions>
</launcher>

View file

@ -1,6 +1,6 @@
{
"version": "3.5.0.25",
"version": "3.5.0.27",
"enums": {
@ -1640,11 +1640,11 @@
}
,
{"code": "companySymbol",
"field": "id","type": 12,"name": "Тип реквизита","shortname": "Тип реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbol","link": "companySymbols","extends": "companySymbols"
"field": "id","type": 12,"name": "Тип реквизита","shortname": "Тип реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbol","link": "companySymbols","extends": "companySymbols","ignore": true
}
,
{"code": "companySymbolValue",
"field": "id","type": 2,"length": 255,"name": "Значение реквизита","shortname": "Значение реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbolValue","link": "companySymbols","extends": "companySymbols"
"field": "id","type": 2,"length": 255,"name": "Значение реквизита","shortname": "Значение реквизита","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "companyId","linkCode": "companySymbolValue","link": "companySymbols","extends": "companySymbols","ignore": true
}
,
{"code": "workflowStatus",
@ -1699,6 +1699,8 @@
"confirmation": "shortName,tradingCode",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "company","linkCode": "id","required": true
@ -1911,6 +1913,8 @@
"name": "Удаление категории участника клиринга",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clearingCategory","linkCode": "id","required": true
@ -1990,6 +1994,8 @@
"name": "Удаление контакта компании",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "contact","linkCode": "id","required": true
@ -2189,6 +2195,8 @@
"confirmation": "documentType,number,companyId",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "profileDocument","linkCode": "id","required": true
@ -2270,6 +2278,8 @@
"name": "Удаление реквизита компании",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "profileDocument","linkCode": "id","required": true
@ -2327,7 +2337,7 @@
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","linkCode": "shortName"
}
,
{"code": "shortName",
@ -2463,7 +2473,7 @@
}
,
{"code": "termType",
"type": 12,"dbname": "Код вида инструмента","name": "Наименование вида инструмента","shortname": "Вид инструмента","searchable": true,"sortable": true,"visible": false,"link": "termType","ignore": true
"type": 12,"dbname": "Код вида инструмента","name": "Наименование вида инструмента","shortname": "Вид инструмента","searchable": true,"sortable": true,"visible": false,"link": "termType"
}
,
{"code": "lotSize",
@ -2471,7 +2481,7 @@
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2553,7 +2563,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2628,7 +2638,7 @@
}
,
{"code": "termType",
"type": 12,"name": "Наименование вида инструмента","shortname": "Вид инструмента","link": "termType","visible": false
"type": 12,"name": "Наименование вида инструмента","shortname": "Вид инструмента","link": "termType"
}
,
{"code": "description",
@ -2636,7 +2646,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2663,6 +2673,8 @@
"confirmation": "securitySymbol,shortName",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "moneyMarketSecurity","linkCode": "id","required": true
@ -2744,11 +2756,11 @@
}
,
{"code": "lotSize",
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing"
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing","ignore": true
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","linkCode": "shortName","extends": "security"
}
,
{"code": "shortNameEng",
@ -2806,7 +2818,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2865,7 +2877,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -2888,6 +2900,8 @@
"confirmation": "securitySymbol,shortName",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "equitySecurity","linkCode": "id","required": true
@ -2959,11 +2973,11 @@
}
,
{"code": "lotSize",
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing"
"field": "securityId","type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "securityId","linkCode": "lotSize","link": "listing","extends": "listing","ignore": true
}
,
{"code": "issuerId",
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","extends": "security"
"type": 1,"dbname": "Идентификатор эмитента","name": "Наименование эмитента","shortname": "Эмитент","searchable": true,"sortable": true,"link": "company","linkCode": "shortName","extends": "security"
}
,
{"code": "shortNameEng",
@ -3041,7 +3055,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -3120,7 +3134,7 @@
}
,
{"code": "issuerId",
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company"
"type": 1,"name": "Наименование эмитента","shortname": "Эмитент","link": "company","linkCode": "shortName"
}
,
{"code": "shortNameEng",
@ -3248,15 +3262,15 @@
"fields": [
{"code": "securityId",
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": true,"sortable": true,"link": "security","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": true,"sortable": true,"visible": true,"link": "security","linkCode": "shortName"
}
,
{"code": "market",
"type": 12,"dbname": "Код торговой секции","name": "Наименование режима","shortname": "Режим","searchable": true,"sortable": true,"link": "market","linkCode": "description"
"type": 12,"dbname": "Код торговой секции","name": "Наименование режима","shortname": "Режим","searchable": true,"sortable": true,"visible": true,"link": "market","linkCode": "description"
}
,
{"code": "lotSize",
"type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true
"type": 11,"name": "Размер лота","shortname": "Лот","searchable": true,"sortable": true,"visible": true
}
,
{"code": "symbolCode",
@ -3300,7 +3314,7 @@
}
,
{"code": "market",
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","required": true,"linkCode": "code"
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","linkCode": "description","required": true
}
,
{"code": "lotSize",
@ -3333,7 +3347,7 @@
}
,
{"code": "market",
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","linkCode": "code","required": true,"enabled": false
"type": 12,"name": "Наименование режима","shortname": "Режим","link": "market","linkCode": "description","required": true,"enabled": false
}
,
{"code": "lotSize",
@ -3356,6 +3370,8 @@
"confirmation": "securityId,market",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "listing","linkCode": "id","required": true
@ -3593,6 +3609,8 @@
"confirmation": "companyId,code",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true
@ -3628,11 +3646,11 @@
}
,
{"code": "moneyAccountId",
"type": 1,"dbname": "Идентификатор денежного счета","name": "Номер денежного счета","shortname": "Денежный счет","searchable": true,"sortable": true,"link": "account"
"type": 1,"dbname": "Идентификатор денежного счета","name": "Номер денежного счета","shortname": "Денежный счет","searchable": true,"sortable": true,"link": "account","linkCode": "account"
}
,
{"code": "depoAccountId",
"type": 1,"dbname": "Идентификатор депозитарного счета","name": "Номер депозитарного счета","shortname": "Депозитарный счет","searchable": true,"sortable": true,"link": "account"
"type": 1,"dbname": "Идентификатор депозитарного счета","name": "Номер депозитарного счета","shortname": "Депозитарный счет","searchable": true,"sortable": true,"link": "account","linkCode": "account"
}
,
{"code": "tradingClearingRegistryType",
@ -3728,6 +3746,8 @@
"confirmation": "companyId,code",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true
@ -3751,7 +3771,7 @@
"fields": [
{"code": "companyId",
"type": 1,"dbname": "Идентификатор участника","name": "Наименование участника","shortname": "Участник","searchable": true,"sortable": true,"visible": true,"link": "company"
"type": 1,"dbname": "Идентификатор участника","name": "Наименование участника","shortname": "Участник","searchable": true,"sortable": true,"visible": true,"link": "company","linkCode": "shortName"
}
,
{"code": "tradingCode",
@ -3941,7 +3961,7 @@
,"actions":[
{"method":"post",
"name": "Досрочное изъятие части денежных средств по депозиту МКР",
"name": "Досрочное изъятие депозита",
"destination": "registries/splitDeposit",
@ -3950,8 +3970,12 @@
"class": "ru.spcex.clearing.backendapi.controller.request.cud.registry.RSplitDepositActionNew",
"fields": [
{"code": "companyId",
"type": 1,"name": "Наименование участника","shortname": "Инициатор","link": "company","linkCode": "shortName","enabled": false
}
,
{"code": "contract",
"type": 2,"length": 255,"name": "Договор","shortname": "Договор","required": true
"type": 2,"length": 255,"name": "Договор","shortname": "Номер договора","required": true,"enabled": false
}
,
{"code": "outboundAmount",
@ -4242,7 +4266,7 @@
}
,
{"code": "status",
"type": 12,"dbname": "Код статуса","name": "Наименование статуса","shortname": "Статус","searchable": true,"sortable": true,"visible": true,"link": "serviceStatus","extends": "account"
"field": "accountId","type": 12,"dbname": "Код статуса","name": "Наименование статуса","shortname": "Статус","searchable": true,"sortable": true,"visible": true,"linkKeyCode": "id","linkCode": "status","link": "account","extends": "account"
}
,
{"code": "id",
@ -4254,7 +4278,7 @@
"name": "Добавление счета вывода средств из ПРЦ",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account,destination",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountNewAction",
@ -4296,7 +4320,7 @@
}
,
{"code": "companyId",
"type": 1,"name": "Компания","shortname": "Компания","link": "company","linkCode": "shortName","required": true
"type": 1,"name": "Компания","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
]
}
@ -4305,7 +4329,7 @@
"name": "Изменение счета вывода средств из ПРЦ",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account,destination",
"confirmation": "currency,bankIdentificationCode,bankName,correspondentAccount,correspondentAccountName,taxpayerIdentificationNumber,taxRegistrationReasonCode,account",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountUpdateAction",
@ -4358,6 +4382,8 @@
"confirmation": "currency,bankIdentificationCode,correspondentAccount,taxpayerIdentificationNumber,taxRegistrationReasonCode,account",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "bankAccount","linkCode": "id","required": true
@ -4499,11 +4525,11 @@
}
,
{"code": "companyId",
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"visible": true,"link": "company","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"link": "company","linkCode": "shortName"
}
,
{"code": "securityId",
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"visible": true,"link": "security","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"link": "security","linkCode": "shortName"
}
,
{"code": "id",
@ -4533,6 +4559,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4541,17 +4571,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4574,6 +4600,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4582,17 +4612,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4601,7 +4627,9 @@
"name": "Блокировка шаблона расписания операционного дня",
"confirmation": "task,taskTime,taskStatus,companyId,securityId",
"confirmation": "task,taskTime,taskStatus,section,sessionType",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
@ -4664,7 +4692,7 @@
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
]
}
@ -4689,7 +4717,7 @@
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
]
}
@ -4698,7 +4726,9 @@
"name": "Блокировка записи в календаре",
"confirmation": "clearingDate,dayStatus,companyId",
"confirmation": "clearingDate,dayStatus",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
@ -4749,11 +4779,11 @@
}
,
{"code": "companyId",
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"visible": true,"link": "company","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор компании","name": "Наименование компании","shortname": "Компания","searchable": false,"sortable": false,"link": "company","linkCode": "shortName"
}
,
{"code": "securityId",
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"visible": true,"link": "security","linkCode": "shortName"
"type": 1,"dbname": "Идентификатор инструмента","name": "Наименование инструмента","shortname": "Инструмент","searchable": false,"sortable": true,"link": "security","linkCode": "shortName"
}
,
{"code": "id",
@ -4787,6 +4817,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4795,17 +4829,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4832,6 +4862,10 @@
{"code": "taskTime",
"type": 5,"name": "Время задачи","shortname": "Время задачи","required": true
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
@ -4840,17 +4874,13 @@
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"code": "taskStatus",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "taskStatus","required": true
}
,
{"code": "companyId",
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName"
"type": 1,"name": "Наименование компании","shortname": "Компания","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
@ -4859,7 +4889,9 @@
"name": "Блокировка расписания",
"confirmation": "task,taskTime,clearingDate,market,taskStatus,companyId,securityId",
"confirmation": "task,clearingDate,taskTime,taskStatus,section,sessionType",
"class": "ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction",
"fields": [
{"code": "id",
@ -4964,81 +4996,55 @@
}
]
,"actions":[
{"method":"post",
"destination": "GBAL",
"group": "Обмен с расчетной организацией",
"name": "Зачисление остатков (загрузка ДФ-57 и ДФ-01)",
"fields": []
}
,
{"method":"post",
"destination": "ABLK",
"group": "Обмен с расчетной организацией",
"name": "Блокировка счета (загрузка ДФ-12)",
"fields": []
}
,
{"method":"post",
"destination": "GALB",
"group": "Обмен с расчетной организацией",
"name": "Запрос остатков по всем счетам (экспорт ДФ-08)",
"name": "Запрос остатков по всем счетам (отправка ДФ-51, ДФ-56 для получения ответа ДФ-01, ДФ-57)",
"fields": []
}
,
{"method":"post",
"destination": "ADBL",
"destination": "OUTV",
"group": "Обмен с расчетной организацией",
"name": "Дозачисление/списание остатков (загрузка ДФ-16)",
"name": "Вывод свободных средств инициаторов В (отправка ДФ-54 для получения ответа ДФ-55)",
"fields": []
}
,
{"method":"post",
"destination": "CORD",
"destination": "SCLR",
"group": "Обмен с расчетной организацией",
"group": "Клиринг",
"name": "Формирование сводного платежного поручения (экспорт ДФ-03/ДФ-11)",
"name": "Запуск клиринговой сессии",
"fields": []
"confirmation": "section,sessionType",
"fields": [
{"code": "section",
"type": 12,"name": "Секция","shortname": "Секция","link": "section","linkCode": "name","linkKeyCode": "code"
}
,
{"method":"post",
"destination": "CORC",
"group": "Обмен с расчетной организацией",
"name": "Получение подтверждения переводов (загрузка ДФ-04)",
"fields": []
{"code": "sessionType",
"type": 12,"name": "Тип клиринговой сессии","shortname": "Тип клиринговой сессии","link": "sessionType","linkCode": "name","linkKeyCode": "code"
}
,
{"method":"post",
"destination": "CMBA",
"group": "Обмен с расчетной организацией",
"name": "Формирование распоряжения на перевод с ТБС (экспорт ДФ-11)",
"fields": []
{"code": "companyId",
"type": 1,"name": "Наименование инициатора","shortname": "Инициатор","link": "company","linkCode": "shortName","visible": false
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName","visible": false
}
]
}
,
{"method":"post",
@ -5054,87 +5060,33 @@
,
{"method":"post",
"destination": "GACA",
"destination": "LIMM",
"group": "Обмен с Торговой системой",
"name": "Создание файла остатков CSV по клиринговым счетам",
"name": "Выгрузка в Торговую систему остатков по деньгам (отправка lim)",
"fields": []
}
,
{"method":"post",
"destination": "GAIA",
"destination": "LIMS",
"group": "Обмен с Торговой системой",
"name": "Создание файла остатков CSV по внутренним информационным счетам",
"name": "Выгрузка в Торговую систему остатков по бумагам (отправка lim)",
"fields": []
}
,
{"method":"post",
"destination": "SCLR",
"destination": "GRRT",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Запуск клиринговой сессии",
"confirmation": "companyId,securityId",
"fields": [
{"code": "companyId",
"type": 1,"name": "Наименование инициатора","shortname": "Инициатор","link": "company","linkCode": "shortName"
}
,
{"code": "securityId",
"type": 1,"name": "Наименование инструмента","shortname": "Инструмент","link": "security","linkCode": "shortName"
}
]
}
,
{"method":"post",
"destination": "SPRC",
"group": "Клиринг",
"name": "Запуск преклиринга",
"fields": []
}
,
{"method":"post",
"destination": "SPOC",
"group": "Клиринг",
"name": "Запуск постклиринга",
"fields": []
}
,
{"method":"post",
"destination": "GVER",
"group": "Клиринг",
"name": "Запуск сверки",
"fields": []
}
,
{"method":"post",
"destination": "GCMR",
"group": "Клиринг",
"name": "Формирование реестра участников клиринга",
"name": "Формирование реестра остатков ценных бумаг",
"fields": []
}
@ -5143,18 +5095,40 @@
"destination": "GBRR",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра остатков денежных средств",
"fields": []
}
,
{"method":"post",
"destination": "ADLR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра обязательств, допущенных к клирингу",
"fields": []
}
,
{"method":"post",
"destination": "CDLR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра обязательств, прошедших процедуру контроля обеспечения",
"fields": []
}
,
{"method":"post",
"destination": "GORR",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра распоряжений, направленных расчетной организации",
@ -5163,11 +5137,44 @@
,
{"method":"post",
"destination": "GSRR",
"destination": "GORD",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра отправленных отчетов",
"name": "Формирование реестра распоряжений, направленных расчетному депозитарию",
"fields": []
}
,
{"method":"post",
"destination": "EXLR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра обязательств, исключенных из клирингового пула",
"fields": []
}
,
{"method":"post",
"destination": "LBSR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра учета обязательств",
"fields": []
}
,
{"method":"post",
"destination": "ECNR",
"group": "Формирование реестров и отчетности",
"name": "Формирование реестра сделок",
"fields": []
}
@ -5176,7 +5183,7 @@
"destination": "GREP",
"group": "Клиринг",
"group": "Формирование реестров и отчетности",
"name": "Формирование отчетности",
@ -5189,143 +5196,11 @@
,
{"method":"post",
"destination": "LIMM",
"destination": "LOCM",
"group": "Обмен с Торговой системой",
"group": "Обмен с интеграционными модулями",
"name": "Выгрузка в торговую систему остатков по деньгам",
"fields": []
}
,
{"method":"post",
"destination": "LIMS",
"group": "Обмен с Торговой системой",
"name": "Выгрузка в торговую систему остатков по бумагам",
"fields": []
}
,
{"method":"post",
"destination": "LIQU",
"group": "Клиринг",
"name": "иквидационная сессия по обязательтсвам участника",
"fields": []
}
,
{"method":"post",
"destination": "STRM",
"group": "Клиринг",
"name": "Начало торговой сессии секции МКР",
"fields": []
}
,
{"method":"post",
"destination": "ETRM",
"group": "Клиринг",
"name": "Завершение торговой сессии секции МКР",
"fields": []
}
,
{"method":"post",
"destination": "SIPO",
"group": "Клиринг",
"name": "Начало торговой сессии по первичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "EIPO",
"group": "Клиринг",
"name": "Завершение торговой сессии по первичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "STRF",
"group": "Клиринг",
"name": "Начало торговой сессии по вторичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "ETRF",
"group": "Клиринг",
"name": "Завершение торговой сессии по вторичным торгам",
"fields": []
}
,
{"method":"post",
"destination": "RCHK",
"group": "Клиринг",
"name": "Запрос на сверку активов",
"fields": []
}
,
{"method":"post",
"destination": "GRYT",
"group": "Клиринг",
"name": "Сформировать регистр на текущий день",
"fields": []
}
,
{"method":"post",
"destination": "GRRT",
"group": "Клиринг",
"name": "Сформировать реестр на текущий день",
"fields": []
}
,
{"method":"post",
"destination": "GORD",
"group": "Клиринг",
"name": "Формирование реестра распоряжений, направленных расчетному депозитарию",
"name": "Загрузка участников",
"fields": []
}
@ -5334,20 +5209,31 @@
"destination": "LOSC",
"group": "Клиринг",
"group": "Обмен с интеграционными модулями",
"name": "Загрузить инструменты",
"name": "Загрузка инструментов",
"fields": []
}
,
{"method":"post",
"destination": "LOCM",
"destination": "GVER",
"group": "Клиринг",
"group": "Общее",
"name": "Загрузить участников",
"name": "Запуск сверки",
"fields": []
}
,
{"method":"post",
"destination": "GRYT",
"group": "Общее",
"name": "Подготовка КС к клиринговому дню",
"fields": []
}

View file

@ -0,0 +1,23 @@
package ru.spcex.clearing.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.List;
@Configuration
public class MarketCodesBySessionConfig {
@Bean(name = "marketCodesForBn")
public List<String> marketCodesForBn(ImdgProvider imdgProvider) {
// Imdg<Market> marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
// Collection<Market> markets = marketImdg.getCollectionObjectsByFieldValues(Map.of(
// "section", Section.FOND.getKey(),
// "marketType", MarketType.PRMR.getKey()));
// return markets.stream().map(Market::getCode).distinct().collect(Collectors.toList());
return List.of("BMFC", "SMMC", "AEPC", "WBIC", "KBVC", "WBFC", "BMVC", "ABIC",
"AESC", "ABFC", "KBIC", "WBMC", "BMMC", "ABEC", "SMIC", "ABMC", "SMVC", "KBFC", "SKVC", "ABVC", "WEPC",
"KBMC", "SMFC", "BKVC", "WBVC", "BMIC", "WESC");
}
}

View file

@ -8,11 +8,14 @@ import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRe
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf04Request;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.session.stage.PrimaryAuctionB0Session;
import ru.spcex.clearing.session.stage.PrimaryAuctionBnSession;
import ru.spcex.platform.enumeration.Task;
import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED;
@Service
public class EventsReceiver extends QueueConsumer implements InitializingBean {
private final ClearingService clearingService;
@ -62,15 +65,12 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean {
.setConsumer(primaryAuctionBnSession::runSession)
.forDestination(Task.startOfClearing.topic(), callbacks::put);
callback(Object.class)
.setConsumer(primaryAuctionBnSession::continueSessionFirstPart)
.setConsumer(primaryAuctionBnSession::continueSession)
.forDestination(Consts.CONTINUE_SESSION_BN_FIRST_PART, callbacks::put);
callback(Object.class)
.setConsumer(primaryAuctionBnSession::continueSessionSecondPart)
.forDestination(Consts.CONTINUE_SESSION_BN_SECOND_PART, callbacks::put);
callback(Object.class)
callback(STradesImportedRequest.class)
.setConsumer(event -> clearingService.executeSTrade())
.forDestination(Task.getOfTrades.topic(), callbacks::put);
.forDestination(S_TRADES_IMPORTED, callbacks::put);
callback(CreateRegistryRequest.class)
.setConsumer(event -> registryService.createRegistry(event.getRequestPayload()))
.forDestination(Consts.REGISTRY_NEW, callbacks::put);

View file

@ -23,7 +23,9 @@ import ru.spcex.clearing.platform.messaging.domain.cud.registry.DealRegisterNewR
import ru.spcex.clearing.platform.messaging.domain.cud.registry.ExecutionType;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.validation.ValidationStored;
import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.enumeration.Section;
import ru.spcex.platform.enumeration.Side;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.*;
@ -47,6 +49,7 @@ public class ExecutionFondComponent {
private final Imdg<ExecutionFond> executionFondImdg;
private final Imdg<Listing> listingImdg;
private final Imdg<ClientCode> clientCodeImdg;
private final Imdg<ru.clearing.classes.statics.data.misc.Market> marketImdg;
//fixme ждать ТЗ
Long tradeNum;
@ -64,6 +67,7 @@ public class ExecutionFondComponent {
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
this.clientCodeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class);
this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, ru.clearing.classes.statics.data.misc.Market.class);
this.stradesValidator = stradesValidator;
this.kafkaSender = kafkaSender;
@ -105,7 +109,7 @@ public class ExecutionFondComponent {
log.warn("cannot parse strade.tradeNum={} strade.operation {}", sTrd.getTradeNum(), sTrd.getOperation());
return true;
}
MoneyFlowSide excDepSide = sTrdSide.equals(Side.BUY) ? MoneyFlowSide.BUY : MoneyFlowSide.SELL;
Side excDepSide = sTrdSide.equals(Side.BUY) ? Side.BUY : Side.SELL;
return executionFondImdg.getSingleObjectByFieldValues(
Map.of("tradingDate", sTrd.getTradeDate(),
"exchangeExecutionId", sTrd.getTradeNum(),
@ -173,7 +177,11 @@ public class ExecutionFondComponent {
eFond.setExchangeExecutionId(sTrades.getTradeNum());
eFond.setExchangeExecutionTime(sTrades.getTradeDateTime());
eFond.setTradingClearingRegistryId(rgstr.getId());
eFond.setMarket(Market.fond.getKey());
//todo можем ли просто переложить sTrades.getClassCode() или все такие искать, одно и тоже же
ru.clearing.classes.statics.data.misc.Market market = marketImdg.getSingleObjectBySQL("code = '%s'".formatted(sTrades.getClassCode()));
eFond.setMarket(sTrades.getClassCode());
eFond.setPrice(sTrades.getPrice());
eFond.setLots(sTrades.getQty());
eFond.setQuantity(sTrades.getQtyPcs());
@ -181,8 +189,8 @@ public class ExecutionFondComponent {
Side sTradeSide = IEnumKey.getEnumByKey(Side.class, sTrades.getOperation());
if (sTradeSide != null) {
switch (sTradeSide) {
case BUY -> eFond.setSide(MoneyFlowSide.BUY.getKey());
case SELL -> eFond.setSide(MoneyFlowSide.SELL.getKey());
case BUY -> eFond.setSide(Side.BUY.getKey());
case SELL -> eFond.setSide(Side.SELL.getKey());
}
}
}

View file

@ -199,13 +199,13 @@ public class StatementService extends QueueConsumer implements InitializingBean
Optional<Long> uncompletedPair = Optional.empty();
switch (sdfTable) {
case SDF_01 ->
uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() == null).findFirst().map(Map.Entry::getKey);
uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() == null && entry.getValue().getSecond() != null).findFirst().map(Map.Entry::getKey);
case SDF_57 ->
uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() == null && entry.getValue().getSecond() != null).findFirst().map(Map.Entry::getKey);
case SDF_04 ->
uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() == null).findFirst().map(Map.Entry::getKey);
case SDF_13 ->
case SDF_04 ->
uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() == null && entry.getValue().getSecond() != null).findFirst().map(Map.Entry::getKey);
case SDF_13 ->
uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() == null).findFirst().map(Map.Entry::getKey);
}
return uncompletedPair;
}

View file

@ -21,7 +21,6 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.ContinueSessionBnRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.LoggingService;
import ru.spcex.clearing.service.model.Result;
@ -34,7 +33,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IEnumKey;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.number.BigDecimalUtil;
import ru.spcex.platform.utils.validation.IValidator;
@ -46,9 +44,7 @@ import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
@Service
public class Sdf01Executor extends AbstractExecutor<SDf01> {
@ -95,10 +91,6 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
@Override
public void sendCommand(KafkaSender kafkaSender, Result result) {
ContinueSessionBnRequest continueSessionBn = new ContinueSessionBnRequest();
continueSessionBn.setGenerationId(result.getGenerationId());
kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn);
ExportToFileRequest exportRequest = new ExportToFileRequest();
exportRequest.setSdfGroupId(result.getGenerationId());
exportRequest.setNameOfTable(exportTableName());
@ -137,32 +129,24 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
SDf02 sdf02New = createSuccessSdf02(sdf01, generationIdForGroup); //fixme тоже мб убрать
sdf02Imdg.insert(sdf02New);
stmt.setOutSDfId(sdf02New.getId());
statementImdg.update(stmt);
statementImdg.insert(stmt);
Optional<EnumMessage> err = validateActiveness(company, account);
if (err.isEmpty()) {
Consumer<Registry> update = rgs -> {
Optional<Registry> reg = findReg(stmt);
Registry rgs;
if (reg.isPresent()) {
rgs = reg.get();
updateReg(stmt, rgs);
registryImdg.update(rgs);
};
Supplier<Registry> create = () -> {
Registry registry = createRegistryByStatement(stmt, company, account);
registryImdg.insert(registry);
return registry;
};
Optional<Registry> reg = findReg(stmt);
Registry regFinal;
if (reg.isPresent()) {
update.accept(reg.get());
regFinal = reg.get();
} else {
regFinal = create.get();
rgs = createRegistryByStatement(stmt, company, account);
registryImdg.insert(rgs);
}
//todo
//1. stmt.setOperationStatus в зависимости от diffBalance = 0
//2. отправить notification на backend
stmt.setOperationStatus(OperationStatus.Executed.getKey());
statementImdg.update(stmt);
} else {
stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
@ -189,6 +173,11 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
stmt.setOperationStatus(OperationStatus.Pending.getKey());
stmt.setInSDfId(sdf01.getId());
stmt.setInOutSDfType(InOutSDfType.type1.getKey());
stmt.setClearingDate(LocalDate.now());
Currency currency = currencyImdg.getSingleObjectByFieldValues(Map.of("currencyCode", CurrencyCode.RUB.getKey()));
if (currency != null) {
stmt.setSecurityId(currency.getId());
}
stmt.setCreated(Instant.now());
return stmt;
}
@ -292,7 +281,7 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
}
}
rgs.setCheckBalance(BigDecimalUtil.safeBD(statement.getAmount()));
rgs.setCheckBalance(rgs.getCheckBalance().negate());
rgs.setDiffBalance(rgs.getCheckBalance().negate());
rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme ! смотри описание и ссылка на начало html'ки
//fixme !rgs.setSettlementCode();
rgs.setTradingDate(statement.getSettlementDate()); //fixme ! today ?
@ -306,11 +295,10 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
}
private void updateReg(Statement s, Registry r) {
InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, s.getInOutDirection());
switch (direction) {
case in -> r.setBalance(r.getBalance().add(s.getAmount()));
case out -> r.setBalance(r.getBalance().subtract(s.getAmount()));
}
r.setCheckBalance(s.getAmount());
BigDecimal balance = BigDecimalUtil.safeBD(r.getBalance());
BigDecimal checkBalance = BigDecimalUtil.safeBD(r.getCheckBalance());
r.setDiffBalance(balance.subtract(checkBalance));
r.setUpdated(Instant.now());
}

View file

@ -239,6 +239,9 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
statement.setOperationStatus(OperationStatus.Pending.getKey());
statement.setInSDfId(sdf57.getId());
statement.setInOutSDfType(InOutSDfType.type57.getKey());
statement.setClearingDate(LocalDate.now());
statement.setCreated(Instant.now());
return statement;
}
@ -332,7 +335,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
return Optional.ofNullable(registryImdg.getSingleObjectByPredicate(rgstrPredicate));
}
DateTimeFormatter payDateFormatter = DateTimeFormatter.ofPattern("yy.MM.dd");
DateTimeFormatter payDateFormatter = DateTimeFormatter.ofPattern("dd.MM.yy");
private LocalDate payDate(String payDate) {
if (TextUtil.isEmpty(payDate)) {

View file

@ -31,7 +31,7 @@ public enum Sdf01NewValidationRule implements IValidationRule<ImdgValidationCont
Company company = companyImdg.getSingleObjectBySQL("tradingCode = '" + sdf01.getDeal() + "'");
if (company == null) {
of(ClearingError.CompanyNotFoundB, sdf01.getDeal());
return of(ClearingError.CompanyNotFoundB, sdf01.getDeal());
}
context.storeObject(ValidationStored.Sdf01Company, company);
return empty();

View file

@ -61,7 +61,7 @@ public class AbstractSession {
protected boolean checkStage(TaskType t) {
synchronized (this.currStage) {
return this.currStage.get().equals(t);
return t.equals(this.currStage.get());
}
}

View file

@ -99,7 +99,7 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali
{
DealsPreparePayload payload = new DealsPreparePayload();
payload.setSessionId(currSession.getId());
dealsPreparationResult = runStage(TaskType.DealsPrepare , payload, dealsPrepare);
dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare);
}
//stage 2
runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation);

View file

@ -3,6 +3,7 @@ package ru.spcex.clearing.session.stage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
@ -12,7 +13,6 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.session.stage.impl.*;
import ru.spcex.clearing.session.stage.task.*;
import ru.spcex.platform.classes.base.interfaces.ExecutionType;
import ru.spcex.platform.enumeration.MarketType;
import ru.spcex.platform.enumeration.Section;
import ru.spcex.platform.enumeration.SessionStatus;
import ru.spcex.platform.enumeration.SessionType;
@ -41,6 +41,8 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
private final EndStageNotification endStageNotification;
private final Imdg<ExecutionFond> executionFondImdg;
private final List<String> marketCodes;
public PrimaryAuctionBnSession(
ImdgProvider imdgProvider,
@ -52,7 +54,11 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
FormingRegistersOnOS formingRegistersOnOS,
FormingPaymentInstruction formingPaymentInstruction,
UnlockResources unlockResources,
FinishingSession finishingSession, EndStageNotification endStageNotification, IMessageResolver messageResolver, InspectionObligations inspectionObligations) {
FinishingSession finishingSession,
EndStageNotification endStageNotification,
IMessageResolver messageResolver,
InspectionObligations inspectionObligations,
@Qualifier("marketCodesForBn") List<String> marketCodes) {
super(imdgProvider, messageResolver);
this.balanceRevise = balanceRevise;
this.dealsPrepare = dealsPrepare;
@ -66,14 +72,15 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
this.endStageNotification = endStageNotification;
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.inspectionObligations = inspectionObligations;
this.marketCodes = marketCodes;
}
@Override
public void afterPropertiesSet() throws Exception {
dealsPrepare.searchForExecutions(ExecutionType.ExecutionFond);
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B[^0]\\d*$"));
dealsPrepare.addExecutionFondCondition(execFondPb.equals("marketType", MarketType.PRMR.getKey()));
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$"));
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.toArray(new String[0])));
}
public void runSession(BaseRequest<?> req) {
@ -89,20 +96,30 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
}
}
public void continueSessionFirstPart(BaseRequest<?> req) {
public void continueSession(BaseRequest<?> req) {
try {
if (!checkStage(TaskType.StartRevise)) {
log.error("cannot continue session, current stage is {}", currStage.get());
throw new StageException();
}
// //stage 0
// runStage(TaskType.ContinueRevise, balanceRevise);
if (checkStage(TaskType.StartRevise)) {
firstPart(req);
} else if (checkStage(TaskType.FormingPaymentInstruction)) {
finishPart(req);
}
} catch (StageException e) {
//already logged
}
}
private void firstPart(BaseRequest<?> req) {
try {
//stage 1
StageResult<List<ExecutionCommon>> dealsPreparationResult;
{
DealsPreparePayload payload = new DealsPreparePayload();
payload.setSessionId(currSession.getId());
dealsPreparationResult = runStage(TaskType.DealsPrepare , payload, dealsPrepare);
dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare);
}
//stage 2
runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation);
@ -129,18 +146,20 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
}
}
public void continueSessionSecondPart(BaseRequest<?> req) {
public void finishPart(BaseRequest<?> req) {
try {
if (!checkStage(TaskType.FormingPaymentInstruction)) {
log.error("cannot continue session, current stage is {}", currStage.get());
throw new StageException();
}
//stage 9
//stage 10
{
FinishingSessionPayload payload = new FinishingSessionPayload();
payload.setSessionId(currSession.getId());
runStage(TaskType.FinishingSession, payload, finishingSession);
}
//stage 11
{
EndStageNotificationPayload payload = new EndStageNotificationPayload();
payload.setSection(currSession.getSection());

View file

@ -11,6 +11,8 @@ import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.sdf.SDf56;
import ru.clearing.classes.statics.data.statement.Statement;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.SdfClearingRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.session.stage.ISessionStage;
import ru.spcex.clearing.session.stage.StageResult;
@ -186,6 +188,9 @@ public class BalanceRevise implements ISessionStage {
sDf56.setGenerationTime(now);
sDf56.setGenerationId(idGenerator.nextId());
sDf56Imdg.insert(sDf56);
SdfClearingRequest requestForExporter = new SdfClearingRequest();
requestForExporter.setGroupId(sDf56.getGenerationId());
kafkaSender.sendRequestToQueue(Consts.SDF56_PROCESS, requestForExporter);
log.debug("successfully processed, new id {}", sDf56.getId());
}
}

View file

@ -1,6 +1,7 @@
package ru.spcex.clearing.session.stage.impl;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.ClearingAccount;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
@ -16,6 +17,7 @@ import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.Instant;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@ -25,6 +27,7 @@ public class RegistryBuilder {
private Imdg<Account> accountImdg;
private Imdg<Market> marketImdg;
private Imdg<Session> sessionImdg;
private Imdg<ClearingAccount> clearingAccountImdg;
private ExecutionCommon exec;
private RegistryDesignation regDsgn;
@ -41,6 +44,7 @@ public class RegistryBuilder {
this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
return this;
}
@ -58,26 +62,32 @@ public class RegistryBuilder {
ISide side = getSide(exec);
Registry reg = new Registry();
reg.setCompanyId(exec.getCompanyId());
reg.setCreated(Instant.now());
Company company = searchCompany();
reg.setTradingCode(company.getTradingCode());
reg.setClearingCode(company.getClearingCode());
reg.setShortName(company.getShortName());
reg.setFullName(company.getFullName());
TradingClearingRegistry tcr = searchTradingClearingRegistry();
ClearingAccount accountForStatement = null;
if ((regDsgn.equals(RegistryDesignation.O) && side.isBuy()) || (regDsgn.equals(RegistryDesignation.T) && side.isSell())) {
reg.setAccountId(tcr.getMoneyAccountId());
reg.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
reg.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme add second leg code branch
accountForStatement = clearingAccountImdg.getSingleObjectByID(tcr.getMoneyAccountId());
} else if ((regDsgn.equals(RegistryDesignation.T) && side.isBuy()) || (regDsgn.equals(RegistryDesignation.O) && side.isSell())) {
reg.setAccountId(tcr.getDepoAccountId());
reg.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
reg.setBalanceDimension(BalanceDimension.PICS.getKey()); //fixme add second leg code branch
accountForStatement = clearingAccountImdg.getSingleObjectByID(tcr.getDepoAccountId());
}
Account account = accountImdg.getSingleObjectByID(reg.getAccountId());
reg.setAccountType(account.getAccountType());
reg.setAccount(account.getAccount());
reg.setRegistryDesignation(regDsgn.getKey());
reg.setRegistryCapacity(account.getAccountType());
if (accountForStatement != null) {
reg.setRegistryCapacity(accountForStatement.getClearingAccountType());
}
reg.setRegistryUnit(RegistryUnit.T.getKey());
reg.setRegistryCode(RegistryUtil.clearingCode(reg));
reg.setTradingClearingRegistryId(exec.getTradingClearingRegistryId());
@ -136,7 +146,7 @@ public class RegistryBuilder {
}
private TradingClearingRegistry searchTradingClearingRegistry() {
return tradingClearingRegistryImdg.getSingleObjectBySQL("tradingClearingRegistryId = " + exec.getTradingClearingRegistryId());
return tradingClearingRegistryImdg.getSingleObjectByID(exec.getTradingClearingRegistryId());
}
private static ISide getSide(ExecutionCommon exec) {

View file

@ -78,14 +78,14 @@ public class RequirementsAndObligationCreation implements ISessionStage {
regSearchMethod.get().apply(exec, regDsgn)
.ifPresentOrElse(registry -> {
RegistryUpdater.updater()
.exec(partyExec)
.exec(exec)
.registry(registry)
.update();
registryImdg.update(registry);
}, () -> {
Registry newRegister = RegistryBuilder.builder()
.imdg(imdgProvider)
.exec(partyExec)
.exec(exec)
.registryDesignation(regDsgn)
.build();
registryImdg.insert(newRegister);

View file

@ -9,8 +9,12 @@ import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.account.InformationAccountNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountTerminationRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
@ -82,4 +86,15 @@ public class AccountNotificationHelper {
// ответ должен послаться в DESTINATION_COMPANY_BLOCK = "company-block";
return null;
}
public void makeInfoAccount(Long companyId) {
InformationAccountNewRequest r = new InformationAccountNewRequest();
r.setCompanyId(companyId);
// формат "39911"+ "810" +"000001"(счётчик)+"7000"; пример: "39911810000000017000"
log.debug("Sending messages to account-service {} for company {}",
Consts.INFORMATION_ACCOUNT_SYSTEM_NEW, companyId);
Long reqId = kafkaSender.sendRequestToQueue(Consts.INFORMATION_ACCOUNT_SYSTEM_NEW, r);
log.debug("Send request id={}", reqId);
}
}

View file

@ -152,6 +152,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
else
transaction.rollbackTransaction();
}
accountNotification.makeInfoAccount(company.getId());
return null;
}

View file

@ -287,8 +287,11 @@ public class RelationService extends QueueConsumer implements InitializingBean {
ClearingMemberCategory clearingMemberCategory = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class).getSingleObjectByFieldValues(Map.of("companyId", companyId));
WorkflowStatus workflowStatus = getEnumByKey(WorkflowStatus.class, company.getWorkflowStatus());
String serviceStatus = null;
if (clearingMemberCategory == null) {
log.debug("clearingMemberCategory not found for companyId={}", companyId);
} else {
ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
String serviceStatus;
switch (Objects.requireNonNull(clearingCategory)) {
case B:
case I:
@ -302,6 +305,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
default:
throw new IllegalStateException("Illegal state of clearingCategory");
}
}
relation.setCreated(Instant.now());
relation.setUpdated(relation.getCreated());

View file

@ -1,5 +1,5 @@
-- DB version: 3.5.0.21
-- DATA version: 3.5.0.5
-- DB version: 3.5.0.26
-- DATA version: 3.5.0.6
/* Dictionaries */
INSERT INTO ALLOWED_DICTIONARY(ID, CODE, NAME) values (1, 'ALWD', 'Разрешено') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -342,6 +342,8 @@ INSERT INTO REGISTRY_STATUS_DICTIONARY(ID, CODE, NAME) values (8, 'NACK', 'Не
INSERT INTO REGISTRY_STATUS_DICTIONARY(ID, CODE, NAME) values (9, 'NACC', 'Не допущено у контрагента') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO REGISTRY_STATUS_DICTIONARY(ID, CODE, NAME) values (10, 'SPLT', 'Разделен') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO BALANCE_DIMENSION_DICTIONARY(ID, CODE, NAME) values (1, 'PICS', 'Штуки') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO BALANCE_DIMENSION_DICTIONARY(ID, CODE, NAME) values (2, 'LOTS', 'Лоты') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -384,69 +386,49 @@ INSERT INTO CLEARING_ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'A', 'С
INSERT INTO CLEARING_ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'B', 'Счет клиента') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (1, 'GBAL', 'Зачисление остатков') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (1, 'GALB', 'Запрос остатков по всем счетам (отправка ДФ-51, ДФ-56 для получения ответа ДФ-01, ДФ-57)') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (3, 'ABLK', 'Блокировка счета') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (2, 'OUTV', 'Вывод свободных средств инициаторов В (отправка ДФ-54 для получения ответа ДФ-55)') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (4, 'GALB', 'Запрос остатков по всем счетам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (3, 'GTRD', 'Получение сделок из Торговой системы') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (5, 'ADBL', 'Дозачисление/списание остатков') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (4, 'LIMM', 'Выгрузка в Торговую систему остатков по деньгам (отправка lim)') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (7, 'CORD', 'Формирование сводного платежного поручения') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (5, 'LIMS', 'Выгрузка в Торговую систему остатков по бумагам (отправка lim)') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (8, 'CORC', 'Получение подтверждения переводов') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (6, 'LOCM', 'Загрузка участников') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (9, 'GVER', 'Запуск сверки') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (7, 'LOSC', 'Загрузка инструментов') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (12, 'CMBA', 'Формирование распоряжения на перевод с ТБС') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (8, 'GVER', 'Запуск сверки') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (14, 'GCMR', 'Формирование реестра участников клиринга') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (9, 'GRYT', 'Подготовка КС к клиринговому дню') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (15, 'GBRR', 'Формирование реестра остатков денежных средств ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (10, 'SCLR', 'Запуск клиринговой сессии') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (16, 'GORR', 'Формирование реестра распоряжений, направленных расчетной организации') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (11, 'GRRT', 'Формирование реестра остатков ценных бумаг') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (17, 'GREP', 'Формирование отчетности') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (12, 'GBRR', 'Формирование реестра остатков денежных средств') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (21, 'GSRR', 'Формирование реестра отправленных отчетов') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (13, 'ADLR', 'Формирование реестра обязательств, допущенных к клирингу') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (25, 'GTRD', 'Получение сделок из Торговой системы') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (14, 'CDLR', 'Формирование реестра обязательств, прошедших процедуру контроля обеспечения') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (32, 'GACA', 'Создание файла остатков CSV по клиринговым счетам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (15, 'GORR', 'Формирование реестра распоряжений, направленных расчетной организации') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (33, 'GAIA', 'Создание файла остатков CSV по внутренним информацион.счетам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (16, 'GORD', 'Формирование реестра распоряжений, направленных расчетному депозитарию') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (35, 'SCLR', 'Запуск клиринговой сессии') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (17, 'EXLR', 'Формирование реестра обязательств, исключенных из клирингового пула') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (36, 'SPRC', 'Запуск преклиринга') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (18, 'LBSR', 'Формирование реестра учета обязательств') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (37, 'SPOC', 'Запуск постклиринга') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (19, 'ECNR', 'Формирование реестра сделок') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (38, 'LIMM', 'Выгрузка в торговую систему остатков по деньгам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (20, 'GREP', 'Формирование отчетности') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (39, 'LIMS', 'Выгрузка в торговую систему остатков по бумагам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (21, 'STRS', 'Начало торговой сессии') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (40, 'LIQU', 'Ликвидационная сессия по обязательтсвам участника') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (41, 'STRM', 'Начало торговой сессии секции МКР') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (42, 'ETRM', 'Завершение торговой сессии секции МКР') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (43, 'SIPO', 'Начало торговой сессии по первичным торгам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (44, 'EIPO', 'Завершение торговой сессии по первичным торгам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (45, 'STRF', 'Начало торговой сессии по вторичным торгам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (46, 'ETRF', 'Завершение торговой сессии по вторичным торгам') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (47, 'RCHK', 'Запрос на сверку активов') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (48, 'GRYT', 'Сформировать регистр на текущий день') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (49, 'GRRT', 'Сформировать реестр на текущий день') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (50, 'GORD', 'Формирование реестра распоряжений, направленных расчетному депозитарию') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (22, 'ETRS', 'Завершение торговой сессии') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TASK_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'ACTV', 'Активна') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -614,6 +596,20 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1015, 'SECR', 'Вал
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1016, 'SECR', 'Валюта %s не найдена.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1017, 'SECR', 'Инструмент на режиме %s уже существует.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1018, 'SECR', 'Инструмент на режиме %s не найден.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1019, 'SECR', 'Инструмент на режиме %s неактивен.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1020, 'SECR', 'Режим %s не найден.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1021, 'SECR', 'Информиция об инструментах Денежного рынка на режимах добавляется автоматически.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1022, 'SECR', 'Информиция об инструментах Денежного рынка на режимах изменяется автоматически.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1023, 'SECR', 'Информиция об инструментах Денежного рынка на режимах блокируется автоматически.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2000, 'UTIL', 'Общая ошибка модуля utility-service.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2001, 'UTIL', 'Нет прав на проведение данной операции.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -828,6 +824,10 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7014, 'SCHD', 'Ука
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7015, 'SCHD', 'Указанная компания неактивна.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7016, 'SCHD', 'Возможно добавить запись в календарь только на будущую дату.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7017, 'SCHD', 'Возможно добавить задачу только на будущее время.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8000, 'CNTR', 'Общая ошибка модуля control-service.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9000, 'BAPI', 'Ошибка проверки поля %s.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -856,12 +856,14 @@ INSERT INTO COMPANY(ID, FULL_NAME, SHORT_NAME, TRADING_CODE, CLEARING_CODE, WORK
INSERT INTO COMPANY(ID, FULL_NAME, SHORT_NAME, TRADING_CODE, CLEARING_CODE, WORKFLOW_STATUS) values (4, 'ЗАО «Санкт-Петербургский Расчетно-Депозитарный Центр»', 'РДЦ', '', '', 'ACTV') ON CONFLICT (ID) DO UPDATE SET FULL_NAME = EXCLUDED.FULL_NAME, SHORT_NAME = EXCLUDED.SHORT_NAME, TRADING_CODE = EXCLUDED.TRADING_CODE, CLEARING_CODE = EXCLUDED.CLEARING_CODE, WORKFLOW_STATUS = EXCLUDED.WORKFLOW_STATUS;
INSERT INTO COMPANY(ID, FULL_NAME, SHORT_NAME, TRADING_CODE, CLEARING_CODE, WORKFLOW_STATUS) values (5, 'Центральный Банк Российской Федерации', 'ЦБ РФ', '', '', 'ACTV') ON CONFLICT (ID) DO UPDATE SET FULL_NAME = EXCLUDED.FULL_NAME, SHORT_NAME = EXCLUDED.SHORT_NAME, TRADING_CODE = EXCLUDED.TRADING_CODE, CLEARING_CODE = EXCLUDED.CLEARING_CODE, WORKFLOW_STATUS = EXCLUDED.WORKFLOW_STATUS;
INSERT INTO COMPANY_SYMBOLS(ID, COMPANY_ID, COMPANY_SYMBOL, COMPANY_SYMBOL_VALUE) values (1, 1, 'BIC', '044030920') ON CONFLICT (ID) DO UPDATE SET COMPANY_ID = EXCLUDED.COMPANY_ID, COMPANY_SYMBOL = EXCLUDED.COMPANY_SYMBOL, COMPANY_SYMBOL_VALUE = EXCLUDED.COMPANY_SYMBOL_VALUE;
INSERT INTO COMPANY_SYMBOLS(ID, COMPANY_ID, COMPANY_SYMBOL, COMPANY_SYMBOL_VALUE) values (2, 2, 'BIC', '044030505') ON CONFLICT (ID) DO UPDATE SET COMPANY_ID = EXCLUDED.COMPANY_ID, COMPANY_SYMBOL = EXCLUDED.COMPANY_SYMBOL, COMPANY_SYMBOL_VALUE = EXCLUDED.COMPANY_SYMBOL_VALUE;
INSERT INTO CURRENCY(ID, CURRENCY_CODE) values (643, 'RUB') ON CONFLICT (ID) DO UPDATE SET CURRENCY_CODE = EXCLUDED.CURRENCY_CODE;
INSERT INTO SECURITY(INSTRUMENT_TYPE, SHORT_NAME, FULL_NAME, SECURITY_SYMBOL, WORKFLOW_STATUS, ID) values ('CRNC', 'RUB', 'Российский рубль', 'RUB', 'ACTV', 643) ON CONFLICT (ID) DO UPDATE SET INSTRUMENT_TYPE = EXCLUDED.INSTRUMENT_TYPE, SHORT_NAME = EXCLUDED.SHORT_NAME, FULL_NAME = EXCLUDED.FULL_NAME, SECURITY_SYMBOL = EXCLUDED.SECURITY_SYMBOL, WORKFLOW_STATUS = EXCLUDED.WORKFLOW_STATUS;
INSERT INTO ACCOUNT(ID, COMPANY_ID, ACCOUNT, ACCOUNT_TYPE, STATUS, PROCESSING_SIGN) values (1, 1, '30414810300000006000', 'TRAN', 'ACTV', 'ALWD') ON CONFLICT (ID) DO UPDATE SET COMPANY_ID = EXCLUDED.COMPANY_ID, ACCOUNT = EXCLUDED.ACCOUNT, ACCOUNT_TYPE = EXCLUDED.ACCOUNT_TYPE, STATUS = EXCLUDED.STATUS, PROCESSING_SIGN = EXCLUDED.PROCESSING_SIGN;
INSERT INTO ACCOUNT(ID, COMPANY_ID, ACCOUNT, ACCOUNT_TYPE, STATUS, PROCESSING_SIGN) values (2, 1, '30414810600000007000', 'ANLT', 'ACTV', 'ALWD') ON CONFLICT (ID) DO UPDATE SET COMPANY_ID = EXCLUDED.COMPANY_ID, ACCOUNT = EXCLUDED.ACCOUNT, ACCOUNT_TYPE = EXCLUDED.ACCOUNT_TYPE, STATUS = EXCLUDED.STATUS, PROCESSING_SIGN = EXCLUDED.PROCESSING_SIGN;

View file

@ -1,4 +1,4 @@
-- DB version: 3.5.0.22
-- DB version: 3.5.0.26
/* Dictionaries */
-- allowed - Справочник признаков допустимости использования объектов
@ -1376,17 +1376,17 @@ COMMENT ON COLUMN COUPON_PERIOD_HISTORY.PERIOD_START_DATE IS 'Окончание
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.ID IS 'Идентификатор записи';
-- listing - Листинг инструментов
-- listing - Инструменты на режимах
DROP TABLE IF EXISTS LISTING;
CREATE TABLE LISTING(SECURITY_ID bigint, LOT_SIZE numeric(72,2), MARKET varchar(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp);
COMMENT ON TABLE LISTING IS 'Листинг инструментов';
CREATE TABLE LISTING(SECURITY_ID bigint, MARKET varchar(4), LOT_SIZE numeric(72,2), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp);
COMMENT ON TABLE LISTING IS 'Инструменты на режимах';
COMMENT ON COLUMN LISTING.SECURITY_ID IS 'Идентификатор инструмента (linked to security)';
COMMENT ON COLUMN LISTING.LOT_SIZE IS 'Размер лота';
COMMENT ON COLUMN LISTING.MARKET IS 'Код торговой секции (linked to market)';
COMMENT ON COLUMN LISTING.LOT_SIZE IS 'Размер лота';
COMMENT ON COLUMN LISTING.SYMBOL_CODE IS 'Код инструмента на торговой площадке';
COMMENT ON COLUMN LISTING.SYMBOL_NAME IS 'Наименование инструмента на торговой площадке';
@ -1402,9 +1402,9 @@ COMMENT ON COLUMN LISTING.CREATED_AT IS 'Дата-время создания з
COMMENT ON COLUMN LISTING.UPDATED_AT IS 'Дата-время изменения записи';
-- History log of listing - Листинг инструментов
-- History log of listing - Инструменты на режимах
DROP TABLE IF EXISTS LISTING_HISTORY;
CREATE TABLE LISTING_HISTORY(LISTING_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), SECURITY_ID bigint, LOT_SIZE numeric(72,2), MARKET varchar(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp);
CREATE TABLE LISTING_HISTORY(LISTING_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), SECURITY_ID bigint, MARKET varchar(4), LOT_SIZE numeric(72,2), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp);
COMMENT ON TABLE LISTING_HISTORY IS 'История изменений таблицы listing';
COMMENT ON COLUMN LISTING_HISTORY.LISTING_ID IS 'Идентификатор записи в таблице LISTING';
COMMENT ON COLUMN LISTING_HISTORY.EVENT_TIME IS 'Дата и время изменения';
@ -1413,10 +1413,10 @@ COMMENT ON COLUMN LISTING_HISTORY.EVENT_TYPE IS 'Тип изменения';
COMMENT ON COLUMN LISTING_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)';
COMMENT ON COLUMN LISTING_HISTORY.LOT_SIZE IS 'Размер лота';
COMMENT ON COLUMN LISTING_HISTORY.MARKET IS 'Код торговой секции (linked to market)';
COMMENT ON COLUMN LISTING_HISTORY.LOT_SIZE IS 'Размер лота';
COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_CODE IS 'Код инструмента на торговой площадке';
COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_NAME IS 'Наименование инструмента на торговой площадке';
@ -2205,10 +2205,10 @@ COMMENT ON COLUMN LAUNCHER.CREATED_AT IS 'Дата-время создания
COMMENT ON COLUMN LAUNCHER.UPDATED_AT IS 'Дата-время изменения записи';
-- session - Клиринговая сессия
-- session - Клиринговые сессии
DROP TABLE IF EXISTS SESSION;
CREATE TABLE SESSION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4), COMPANY_ID bigint, SECURITY_ID bigint, USER_ID bigint, SECTION varchar(4), SESSION_TYPE varchar(4));
COMMENT ON TABLE SESSION IS 'Клиринговая сессия';
COMMENT ON TABLE SESSION IS 'Клиринговые сессии';
COMMENT ON COLUMN SESSION.ID IS 'Идентификатор записи';
@ -2231,7 +2231,7 @@ COMMENT ON COLUMN SESSION.SECTION IS 'Код наименования секци
COMMENT ON COLUMN SESSION.SESSION_TYPE IS 'Код типа клиринговой сессии (linked to sessionType)';
-- History log of session - Клиринговая сессия
-- History log of session - Клиринговые сессии
DROP TABLE IF EXISTS SESSION_HISTORY;
CREATE TABLE SESSION_HISTORY(SESSION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4), COMPANY_ID bigint, SECURITY_ID bigint, USER_ID bigint, SECTION varchar(4), SESSION_TYPE varchar(4));
COMMENT ON TABLE SESSION_HISTORY IS 'История изменений таблицы session';

View file

@ -13,6 +13,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.lim.exporter.config.settings.ExportLimServiceSettings;
import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory;
import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory;
import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings;
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.imdg.api.Imdg;
@ -35,6 +36,12 @@ public class KafkaConfig {
}
@Bean
public ProducerFactory<String, Object> pf(ExportLimServiceSettings settings) {
KafkaProducerSettings kafkaSettings = settings.getKafkaProducer();
return KafkaProducerFactory.producerFactory(kafkaSettings); // Использует специальный сериализатор в JSON
}
@Bean("kafkaTemplate")
public KafkaTemplate<String, Object> kafkaTemplate(ProducerFactory<String, Object> pf) {
return new KafkaTemplate<>(pf);
}

View file

@ -13,10 +13,6 @@ export-lim-service.store.password=password
export-lim-service.store.server-ip=10.230.238.53
export-lim-service.store.server-port=2222
export-lim-service.hazelcast.cluster-members=127.0.0.1:5701
export-lim-service.hazelcast.login=dev
export-lim-service.hazelcast.password=dev-pass
export-lim-service.kafka-consumer.bootstrap-servers=localhost:9092
export-lim-service.kafka-consumer.group-id=dev-group-balance-service
export-lim-service.kafka-consumer.enable-auto-commit=false

View file

@ -2,6 +2,10 @@ package ru.spcex.clearing.lim.exporter.services;
import org.junit.jupiter.api.Test;
import ru.spcex.clearing.lim.exporter.AbstractServiceTest;
import ru.spcex.clearing.lim.exporter.config.KafkaConfig;
import ru.spcex.clearing.lim.exporter.config.settings.ExportLimServiceSettings;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSenderBuilderImpl;
import ru.spcex.clearing.test.TestUtils;
import javax.annotation.PostConstruct;
@ -23,5 +27,11 @@ class AbstractExporterServiceTest extends AbstractServiceTest {
String fileName = "limits_money_202305241832.lim";
moneyExporterService.sendLimExportedNotification(fileName);
//TestUtils.waitingSendAndCheckRecord(null, mockProducer);
/*
Для интеграционного теста см.
KafkaProducerSettings kafkaSettings = settings.getKafkaProducer();
return KafkaProducerFactory.producerFactory(kafkaSettings); // Использует специальный сериализатор в JSON
*/
}
}

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.register.AdmittedLiabilitiesRegister;
import ru.clearing.classes.statics.data.registry.Registry;
@ -26,6 +27,7 @@ import java.time.Instant;
import java.util.Collection;
import java.util.Map;
@Service
public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.register.CoveredLiabilitiesRegister;
import ru.clearing.classes.statics.data.registry.Registry;
@ -23,6 +24,7 @@ import java.time.Instant;
import java.util.Collection;
import java.util.Map;
@Service
public class CoveredLiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.register.DepoPaymentInstructionRegister;
@ -25,6 +26,7 @@ import java.util.Map;
import static ru.spcex.platform.enumeration.Task.createRegistry_GORR;
import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT;
@Service
public class DepoPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.register.ExcludeLiabilitiesRegister;
import ru.clearing.classes.statics.data.registry.Registry;
@ -25,6 +26,7 @@ import java.time.LocalDate;
import java.util.Collection;
import java.util.Map;
@Service
public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.register.ExecutionRegister;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
@ -17,6 +18,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
import static ru.spcex.clearing.imdg.IMDGDistributedNames.Map_ExecutionRegister;
@Service
public class ExecutionRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.register.LiabilitiesRegister;
@ -28,6 +29,7 @@ import java.time.Instant;
import java.util.Collection;
import java.util.Map;
@Service
public class LiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.register.MoneyBalanceRegister;
@ -24,6 +25,7 @@ import java.util.Map;
import static ru.spcex.platform.enumeration.Task.createRegistry_GBRR;
@Service
public class MoneyBalanceRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.register.MoneyPaymentInstructionRegister;
@ -22,6 +23,7 @@ import java.util.Map;
import static ru.spcex.platform.enumeration.Task.createRegistry_GORR;
@Service
public class MoneyPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());

View file

@ -1,7 +1,9 @@
spring.main.web-application-type=none
registry-service.hazelcast.cluster-members=127.0.0.1:5701
registry-service.hazelcast.login=dev
registry-service.hazelcast.password=dev-pass
registry-service.kafka-consumer.bootstrap-servers=localhost:9092
registry-service.kafka-consumer.group-id=dev-group-registry-service
registry-service.kafka-consumer.enable-auto-commit=true
@ -9,6 +11,7 @@ registry-service.kafka-consumer.session-timeout-ms=30000
registry-service.kafka-consumer.auto-offset-reset=latest
registry-service.kafka-consumer.linger-ms=1
registry-service.kafka-consumer.buffer-memory=33554432
registry-service.kafka-producer.bootstrap-servers=localhost:9092
registry-service.kafka-producer.acks=all
registry-service.kafka-producer.retries=0

View file

@ -8,7 +8,7 @@
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/utility-service.log</file>
<file>./logs/registry-service.log</file>
<encoder>
<!-- |%X{ru.nbch.scoring.web.logging.mdc_key}-->
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class{0}:%msg%n</Pattern>
@ -16,7 +16,7 @@
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>
./logs/utility-service.%i.log
./logs/registry-service.%i.log
</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>10</maxIndex>

View file

@ -10,6 +10,7 @@ import org.springframework.context.annotation.Scope;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings;
import ru.spcex.clearing.swt.exporter.config.settings.ExportSwtServiceSettings;
import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory;
import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory;
@ -35,6 +36,12 @@ public class KafkaConfig {
}
@Bean
public ProducerFactory<String, Object> pf(ExportSwtServiceSettings settings) {
KafkaProducerSettings kafkaSettings = settings.getKafkaProducer();
return KafkaProducerFactory.producerFactory(kafkaSettings); // Использует специальный сериализатор в JSON
}
@Bean("kafkaTemplate")
public KafkaTemplate<String, Object> kafkaTemplate(ProducerFactory<String, Object> pf) {
return new KafkaTemplate<>(pf);
}

View file

@ -15,7 +15,7 @@ public enum Task implements IEnumKey {
startPostClearing("SPOC"),// Запуск постклиринга
createOrder("CORD"),
createOrderConfirm("CORC"),
getAllBalance("GALB"),
getAllBalance("GALB"), // Запрос остатков по всем счетам (отправка ДФ-51, ДФ-56 для получения ответа ДФ-01, ДФ-57)
createReport_GREP("GREP"), // Создание отчёта (report-service) RPRT нескольких видов, этот GREP
unloadingSession_LIMM("LIMM"),//Выгрузка в торговую систему остатков по деньгам
unloadingSession_LIMS("LIMS"),//Выгрузка в торговую систему остатков по бумагам
@ -32,6 +32,13 @@ public enum Task implements IEnumKey {
createRegistry_GBRR("GBRR"),//Сформировать реестр на текущий день
createRegistry_GORD("GORD"), // Формирование реестра распоряжений, направленных расчетному депозитарию
createRegistry_GORR("GORR"), // Формирование реестра распоряжений, направленных расчетному депозитарию
createRegistry_GCMR("GCMR"), // Формирование реестра участников клиринга
createRegistry_GSRR("GSRR"), // Формирование реестра отправленных отчетов
createRegistry_GACA("GACA"), // Создание файла остатков CSV по клиринговым счетам
forming_CMBA("CMBA"), // Формирование распоряжения на перевод с ТБС
creatingFile_GAIA("GAIA"), // Создание файла остатков CSV по внутренним информацион.счетам
loadParty_LOCM("LOCM"), // Загрузка участников
loadIssue_LOSC("LOSC"), // Загрузка инструментов
;
private final String key;

View file

@ -39,6 +39,11 @@
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>

View file

@ -66,6 +66,7 @@ public interface Consts {
String DESTINATION_CLEARING_ACCOUNT_UPDATE = "clearing-account-update";
String DESTINATION_INFORMATION_ACCOUNT_NEW = "information-account-new";
String INFORMATION_ACCOUNT_SYSTEM_NEW = "information-account-system-new";
String DESTINATION_CORRESPONDENT_ACCOUNT_NEW = "correspondent-account-new";
String DESTINATION_CORRESPONDENT_ACCOUNT_UPDATE = "correspondent-account-update";

View file

@ -3,7 +3,7 @@
CLEARING_HOME=/opt/mfd/clearing/
cd $CLEARING_HOME/bin
CMD="java -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7020 -jar backend-api.jar --spring.config.location=$CLEARING_HOME/settings/backend-api/"
CMD="java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:7020 -jar backend-api.jar --spring.config.location=$CLEARING_HOME/settings/backend-api/"
$CMD >/dev/null 2>&1 &

View file

@ -15,5 +15,6 @@ kill -9 $(ps -ef | grep java | grep securities-service.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep utility-service.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep scheduler-service.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep reports-service.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep registry-service.jar | awk '{print $2}')

View file

@ -8,9 +8,11 @@ cd /opt/mfd/clearing/bin
/opt/mfd/clearing/bin/clearing-service.sh
/opt/mfd/clearing/bin/dbf-exporter.sh
/opt/mfd/clearing/bin/lim-exporter.sh
/opt/mfd/clearing/bin/swt-exporter.sh
/opt/mfd/clearing/bin/dbf-importer.sh
/opt/mfd/clearing/bin/trade-importer.sh
/opt/mfd/clearing/bin/securities-service.sh
/opt/mfd/clearing/bin/utility-service.sh
/opt/mfd/clearing/bin/scheduler-service.sh
/opt/mfd/clearing/bin/reports-service.sh
/opt/mfd/clearing/bin/registry-service.sh

View file

@ -0,0 +1,9 @@
#!/bin/bash
CLEARING_HOME=/opt/mfd/clearing/
cd $CLEARING_HOME/bin
CMD="java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:7880 -jar registry-service.jar --spring.config.location=$CLEARING_HOME/settings/registry-service/"
$CMD >/dev/null 2>&1 &

View file

@ -3,7 +3,7 @@
CLEARING_HOME=/opt/mfd/clearing/
cd $CLEARING_HOME/bin
CMD="java -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7080 -jar scheduler-service.jar --spring.config.location=$CLEARING_HOME/settings/scheduler-service/"
CMD="java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:7080 -jar scheduler-service.jar --spring.config.location=$CLEARING_HOME/settings/scheduler-service/"
$CMD >/dev/null 2>&1 &