diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/rules/ProviderMemberCategoryValidationRule.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/rules/ProviderMemberCategoryValidationRule.java index c84922913..a6a18b6c4 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/rules/ProviderMemberCategoryValidationRule.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/rules/ProviderMemberCategoryValidationRule.java @@ -139,28 +139,32 @@ public enum ProviderMemberCategoryValidationRule implements IValidationRule registryIds = registryImdg.getCollectionIdsByPredicate(registryPredicate); - Company company = companyImdg.getSingleObjectByID(category.getCompanyId()); - if (!registryIds.isEmpty()) { - return Optional.of(new EnumMessage( - CompanyErrors.FoundUnfulfilledLiabilities, - company.getShortName()) + ClearingCategory clearingCategory = IEnumKey.getEnumByKey(ClearingCategory.class, category.getClearingMemberCategory()); + if (clearingCategory == ClearingCategory.P) { + ImdgPredicateBuilder predicateBuilder = registryImdg.predicateBuilder(); + ImdgPredicate registryPredicate = predicateBuilder.and( + predicateBuilder.equals("companyId", category.getCompanyId()), + predicateBuilder.regex("registryCode", "^O.{2}T"), + predicateBuilder.or( + predicateBuilder.and( + predicateBuilder.not(predicateBuilder.equals("registryStatus", RegistryStatus.CLRD.getKey())), + predicateBuilder.equals("clearingDate", LocalDate.now()) + ), + predicateBuilder.greater("settlementDate", LocalDate.now()) + ) ); + Collection registryIds = registryImdg.getCollectionIdsByPredicate(registryPredicate); + Company company = companyImdg.getSingleObjectByID(category.getCompanyId()); + if (!registryIds.isEmpty()) { + return Optional.of(new EnumMessage( + CompanyErrors.FoundUnfulfilledLiabilities, + company.getShortName()) + ); + } } return Optional.empty(); } + } } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java index a518a6bca..7bba570a9 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java @@ -234,6 +234,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { if (ClearingCategory.B.equalsByKey(clearingMemberCategory) || ClearingCategory.I.equalsByKey(clearingMemberCategory) || ClearingCategory.V.equalsByKey(clearingMemberCategory) + || ClearingCategory.P.equalsByKey(clearingMemberCategory) ) { svc = MKR.getKey(); } else if (ClearingCategory.C.equalsByKey(clearingMemberCategory) @@ -246,7 +247,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { ru.spcex.platform.enumeration.Service serviceForCMC(ClearingCategory clearingCategory) { switch (Objects.requireNonNull(clearingCategory)) { - case B, I, V: + case B, I, V, P: return MKR; case C, F: return FOND;