diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java index 845a3bebc..ce1e4be16 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java @@ -7,6 +7,7 @@ import ru.clearing.classes.statics.data.account.ClearingAccount; import ru.clearing.classes.statics.data.account.DepoAccount; import ru.clearing.classes.statics.data.account.InformationAccount; import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.platform.dictionary.ServiceStatusDictionary; import ru.spcex.clearing.account.errors.AccountError; @@ -19,6 +20,7 @@ import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.enumeration.ServiceStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -41,6 +43,7 @@ public class TradingClearingRegistryValidationConfig { context.setValidatedObject(tradingClearingRegistryNewRequest); Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); addImdg.accept(IMDGDistributedNames.Map_Company); + addImdg.accept(IMDGDistributedNames.Map_CompanySymbols); addImdg.accept(IMDGDistributedNames.Map_Account); addImdg.accept(IMDGDistributedNames.Map_ClearingAccount); addImdg.accept(IMDGDistributedNames.Map_DepoAccount); @@ -52,7 +55,17 @@ public class TradingClearingRegistryValidationConfig { IMDGDistributedNames.Map_Company, Company.class, AccountError.RequiredFieldEmpty, - AccountError.CompanyNotFound), + AccountError.CompanyNotFound, + true, + company -> { + Imdg companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + CompanySymbols symbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companyId", company.getId(), + "companySymbol", CompanySymbol.CLRC.getKey() + )); + if (symbol == null) return AccountError.ClearingCompanySymbolNotFound; + return null; + }), FieldRequiredRule.instance("moneyAccountId", TradingClearingRegistryNewRequest::getMoneyAccountId, AccountError.RequiredFieldEmpty, diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java index 5f8c38044..1a542396e 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java @@ -6,6 +6,7 @@ import org.springframework.context.annotation.Configuration; import ru.clearing.classes.statics.data.account.*; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.platform.dictionary.*; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -28,6 +29,7 @@ public class ValidationConfig { BiConsumer> addImdg = (s, aClass) -> imdg.put(s, imdgProvider.getImdg(s, aClass)); addImdg.accept(IMDGDistributedNames.Map_Company, Company.class); + addImdg.accept(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); addImdg.accept(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); addImdg.accept(IMDGDistributedNames.Map_ClearingAccountTypeDictionary, ClearingAccountTypeDictionary.class); addImdg.accept(IMDGDistributedNames.Map_Account, Account.class); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java index d0ce046ef..ab7cc4129 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java @@ -19,6 +19,7 @@ public enum AccountError implements IErrorEnumId { DepoAccountNotFound(5017L), MoneyAccountNotFound(5018L), ClearingCategoryNotFound(5019L), + ClearingCompanySymbolNotFound(5022L), // Для компании %s отсутствует клиринговый код». TradingClearingRegistryNotFound(3022L), ;