Оглавление
Примеры правил применимости, которые можно использовать в правиле применимости продукта в целом или для пакетов документов в составе продукта.
Вы можете по аналогии написать собственные правила.
Примеры сформированных тестовых заявок можно посмотреть и скачать в документе I. Подготовительные работы по интеграции c применением API
1 Примеры скриптов правил применимости
Описание правила | Пример правила применимости, script |
---|---|
для ИП (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null) { return null; } return clientCompany.legalType.id == 'IP'; } где для указания значения clientCompany.legalType.id используется справочник Формы предпринимательской деятельности: legal_types |
ЮЛ с суммой гарантии больше 10 млн (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null || dealApplicationData.result.productDealState.amount == null) { return null; } return clientCompany.legalType.id == 'ORGANIZATION' && dealApplicationData.result.productDealState.amount > 10000000; } |
ЮЛ с фактической ценой контракта до 100 тысяч (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null || dealApplicationData.result.productDealState.actualContractPrice == null) { return null; } return clientCompany.legalType.id == 'ORGANIZATION' && dealApplicationData.result.productDealState.actualContractPrice < 100000; } |
ЮЛ со сроком гарантии меньше 30 дней (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null || dealApplicationData.result.productDealState.termDays == null) { return null; } return clientCompany.legalType.id == 'ORGANIZATION' && dealApplicationData.result.productDealState.termDays < 30; } |
ЮЛ, финансовая (FIN) или некоммерческая организации (UNCOM) (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var clientOrgTypeId = clientCompany.orgType.id; var orgTypes = ['FIN', 'UNCOM']; if(clientCompany == null || clientOrgTypeId == null || clientCompany.legalType == null) { return null; } return orgTypes.indexOf(clientOrgTypeId) !== -1 && clientCompany.legalType.id == 'ORGANIZATION'; } где orgTypes может быть 'COM' - коммерческая организация, 'UNCOM' - некоммерческая организация, 'FIN' - финансовая организация |
ЮЛ, регион заказчика Камчатский край или Чукотский АО (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var customerRegion = dealApplicationData.result.productDealState.customer.region.id; var customerRegions = ['Камчатский край', 'Чукотский АО']; if (clientCompany == null || clientCompany.legalType == null || customerRegion == null) { return null; } return clientCompany.legalType.id == 'ORGANIZATION' && customerRegions.indexOf(customerRegion) !== -1; } |
ИП с типом налогообложения УСН, Сельхоз, ЕНВД (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null) { return null; } var taxSystemDto = dealApplicationData.getFetchField('TaxSystemCatalog', clientCompany.taxSystem); if (clientCompany.legalType == null || taxSystemDto == null ) { return null; } var taxSystems = ['USN', 'ENVD', 'ESHN']; return taxSystems.indexOf(taxSystemDto.code) !== -1 && clientCompany.legalType.id == 'IP'; } |
ЮЛ, дата государственно регистрации после 2003-06-05 (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null || clientCompany.regDate == null) { return null; } return clientCompany.legalType.id == 'ORGANIZATION' && clientCompany.regDate > '2003-06-05'; } |
ЮЛ, Сумма БГ до 2 млн.руб. - срок деятельности клиента от 180 дней. Сумма БГ от 2 млн.руб. срок деятельности клиента - от 365 дней. | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null || clientCompany.regDate == null || dealApplicationData.result.productDealState.amount == null) { return null; } now = new Date(); rD = new Date(clientCompany.regDate); termClient = (now - rD)/(60 * 60 * 24 * 1000); return clientCompany.legalType.id == 'ORGANIZATION' && ((termClient >= 180 && dealApplicationData.result.productDealState.amount <= 2000000) || (termClient >= 365 && dealApplicationData.result.productDealState.amount > 2000000)); } |
ЮЛ, базовый ОКВЭД 86.23 - Стоматологическая практика или 86.90.9 - Деятельность в области медицины прочая, не включенная в другие группировки (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null) { return null; } var сlientBaseOkved = dealApplicationData.getFetchField('OkvedCatalog', clientCompany.baseOkved); if (clientCompany.legalType == null || сlientBaseOkved == null) { return null; } var baseOkveds = ['86.23', '86.90.9']; return baseOkveds.indexOf(сlientBaseOkved.code) !== -1 && clientCompany.legalType.id == 'ORGANIZATION'; } |
ЮЛ с организационно-правовыми формами АО (код 12200), ПАО (код 12247), НАО (код 12267) (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null) { return null; } var okopfDto = dealApplicationData.getFetchField('OkopfCatalog', clientCompany.okopf); if(okopfDto == null || clientCompany.legalType == null) { return null; } var okopfTypes = ['12200', '12247', '12267']; return clientCompany.legalType.id == 'ORGANIZATION' && okopfTypes.indexOf(okopfDto.code) !== -1; } |
ЮЛ, 223-ФЗ или 44-ФЗ (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var federalLaw = dealApplicationData.result.productDealState.tender.federalLaw.id; if (clientCompany == null || clientCompany.legalType == null || federalLaw == null) { return null; } var federalLaws = ['223FL', '44FL']; return federalLaws.indexOf(federalLaw) !== -1 && clientCompany.legalType.id == 'ORGANIZATION'; } где для указания значения federalLaws используется справочник Федеральные законы: federallaw_types |
Продукт применим только для головных компаний (ЮЛ), филиалы исключаются (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if(clientCompany == null) { return null; } var okopfDto = dealApplicationData.getFetchField('OkopfCatalog', clientCompany.okopf); if(okopfDto == null || clientCompany.legalType == null) { return null; } var sourceInfo = clientCompany.sourceInfo; var okopfTypes = ['30000', '30001', '30002', '30003', '30004', '30005', '30006', '30008']; return clientCompany.legalType.id == 'ORGANIZATION' && okopfTypes.indexOf(okopfDto.code) === -1 && sourceInfo.headCompany === true && sourceInfo.hasBranches === false; } |
ЮЛ, регион фактического местоположения компании Камчатский край или Тульская область (пример синтаксиса действует с версии 1.14.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null) { return null; } var factAddressDto = dealApplicationData.getFetchField('CompanyAddress', clientCompany.factAddress); if (clientCompany.legalType == null || factAddressDto == null) { return null; } var companyRegions = ['Камчатский край', 'Тульская область']; return companyRegions.indexOf(factAddressDto.region) !== -1 && clientCompany.legalType.id == 'ORGANIZATION'; } |
ЮЛ, стоп-регионы по юридическому адресу: Адыгея, Республика Ингушетия, Чеченская республика, Республика Дагестан, республика Крым, Севастополь (пример синтаксиса действует с версии 1.14.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var LegalAddress = dealApplicationData.getFetchField('CompanyAddress', clientCompany.legalAddress); if (clientCompany == null || clientCompany.legalType == null || LegalAddress.region == null) { return null; } var regex = new RegExp('адыгея|ингушет|чечен|дагестан|крым|севастоп', 'i'); var clientLegalReg = regex.test(LegalAddress.region); return !clientLegalReg && clientCompany.legalType.id == 'ORGANIZATION'; } |
ЮЛ, среди собственников есть юр. лица (пример синтаксиса действует с версии 1.14.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null) { return null; } var legalFounders = dealApplicationData.getFetchFieldAsMap('LegalFounder'); var keyArray = legalFounders.keySet().toArray(); if(keyArray.length == 0) { return false; } return clientCompany.legalType.id == 'ORGANIZATION'; } |
ЮЛ, среди собственников только физ. лица (пример синтаксиса действует с версии 1.14.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || clientCompany.legalType == null) { return null; } var legalFounders = dealApplicationData.getFetchFieldAsMap('LegalFounder'); var keyArray = legalFounders.keySet().toArray(); if(keyArray.length !== 0) { return false; } return clientCompany.legalType.id == 'ORGANIZATION'; } |
ЮЛ, запрет тендеров по 275-ФЗ (пример синтаксиса действует с версии 1.16.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var tenderClosedLaw = dealApplicationData.result.productDealState.tender.closedLaw; if (clientCompany == null || clientCompany.legalType == null) { return null; } if (tenderClosedLaw === true) { return false; } return clientCompany.legalType.id == 'ORGANIZATION'; } |
ЮЛ, валюта контракта - рубли (пример синтаксиса действует с версии 1.9.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var tenderCurrencyType = dealApplicationData.result.productDealState.tender.currencyType; var сurrencyTypeDto = dealApplicationData.getFetchField('CurrencyTypeCatalog', tenderCurrencyType); if (clientCompany == null || clientCompany.legalType == null) { return null; } var currencyTypes = ['RUB']; return clientCompany.legalType.id == 'ORGANIZATION' && currencyTypes.indexOf(сurrencyTypeDto.code) !== -1; } |
ИП, БГ(У), где сумма БГ на исполнение не превышает 10 млн. (пример синтаксиса действует с версии 1.16.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var isNeedPerformanceBgDeal = dealApplicationData.result.productDealState.isNeedPerformanceBg; if (isNeedPerformanceBgDeal === true) { var amountBG = dealApplicationData.result.productDealState.performanceBg.amount; return amountBG <= 10000000; } if (clientCompany == null || clientCompany.legalType == null ) { return null; } return clientCompany.legalType.id == 'IP'; } |
Не заполнены фин. показатели. (пример синтаксиса действует с версии 1.20.0) Ниже приведен аналог проверки заполнения фин. показателей для версии 1.19.0 | function isAvailableForDealApplicationData(dealApplicationData) { return !isFinanceIndicatorFilledForAllPeriods(dealApplicationData, 'FORM_1', '1600') || !isFinanceIndicatorFilledForAllPeriods(dealApplicationData, 'FORM_1', '1700') || !isFinanceIndicatorFilledForAllPeriods(dealApplicationData, 'FORM_2', '2110'); } |
Сумма БГ меньше 1млн И не заполнены фин. показатели. (пример синтаксиса действует с версии 1.19.0) | function isAvailableForDealApplicationData(dealApplicationData) { if (dealApplicationData.result.productDealState.amount > 1000000) { return false; } if (dealApplicationData.getFetchFieldAsMap('FinanceIndicator') == null) { return true; } var allIndicators = dealApplicationData.getFetchFieldAsMap('FinanceIndicator').values(); var idOf1600 = allIndicators.stream() .filter(function(e) { return '1600' == e.code }) .findFirst() .map(function(e){ return e.id}) .orElse(null); var idOf1700 = allIndicators.stream() .filter(function(e) { return '1700' == e.code }) .findFirst() .map(function(e){ return e.id}) .orElse(null); var idOf2110 = allIndicators.stream() .filter(function(e) { return '2110' == e.code }) .findFirst() .map(function(e){ return e.id}) .orElse(null); if (idOf1600 == null || idOf1700 == null || idOf2110 == null) { return true; } var form1Values = dealApplicationData.result.financeForms.stream() .filter(function(e) { return '1b010932-3e5b-4992-861e-b3648f83a03d' == e.formId }) .findFirst() .get(); var form2Values = dealApplicationData.result.financeForms.stream() .filter(function(e) { return 'a48142d6-ded8-41c2-bfbf-57035a4fc773' == e.formId }) .findFirst() .get(); if (form1Values == null || form2Values == null) { return true; } for (var j = 0; j < form1Values.periods.size(); j++) { if (form1Values.values[form1Values.getIndicators().indexOf(idOf1600)][j] == null || form1Values.values[form1Values.getIndicators().indexOf(idOf1700)][j] == null) { return true; } } for (var j = 0; j < form2Values.periods.size(); j++) { if (form2Values.values[form2Values.getIndicators().indexOf(idOf2110)][j] == null) { return true; } } return false; } |
ЮЛ, если все физ. лица компании с документом "Паспорт гражданина РФ" (пример синтаксиса действует с версии 1.19.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var allPersonsHasPassport = true; var personsMap = dealApplicationData.getFetchFieldAsMap('Person'); if (personsMap !== null) { var persons = personsMap.values(); allPersonsHasPassport = persons.stream().allMatch(function(person) { return person.docType != null && person.docType.id == 'PASSPORT'; }); } return clientCompany.legalType.id == 'ORGANIZATION' && allPersonsHasPassport; } |
ЮЛ, если прикреплены документы: "Бухгалтерская (финансовая) отчетность на последнюю календарную квартальную дату" И "Годовая бухгалтерская (финансовая) отчетность" (пример синтаксиса действует с версии 1.19.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null) { return null; } // Для проверки каждого документа требуются: // 1. переменная, хранящая признак прикрепления документа //---------------------------------------- var financeReportExists = false; //---------------------------------------- var analyticalBalanceExists = false; var documentsMap = dealApplicationData.getFetchFieldAsMap('ApplicationDocument'); if (documentsMap !== null) { var documents = documentsMap.values(); // 2. осуществить поиск прикрепленного документа (не архивного) нужного типа; записать результат (true/false) в переменную //---------------------------------------- financeReportExists = documents.stream().anyMatch(function(doc) { return doc.docType != null && doc.docType.id == 'FINANCE_REPORT_LAST_QUARTER' && doc.docState != null && doc.docState.id == 'ACTUAL'; }); //---------------------------------------- analyticalBalanceExists = documents.stream().anyMatch(function(doc) { return doc.docType != null && doc.docType.id == 'ANALYTICAL_BALANCE_LAST_REPORTING_YEAR' && doc.docState != null && doc.docState.id == 'ACTUAL'; }); } // 3. Если требуются все документы, то в return указать "! (признак_прикрепления_документа_1 && ... && признак_прикрепления_документа_N)" // Если требуется прикрепить один из документов, то в return указать "! (признак_прикрепления_документа_1 || ... || признак_прикрепления_документа_N)" //---------------------------------------- return clientCompany.legalType.id == 'ORGANIZATION' && !(financeReportExists && analyticalBalanceExists); //---------------------------------------- } |
ЮЛ, стоп по ИНН заказчика: 1660049283, 1653014843. (пример синтаксиса действует с версии 1.6.0) | function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var customerInn = dealApplicationData.result.productDealState.customer.inn; if (clientCompany == null || clientCompany.legalType == null) { return null; } var stopCustomerInn = ['1660049283', '1653014843']; return clientCompany.legalType.id == 'ORGANIZATION' && stopCustomerInn.indexOf(customerInn) == -1; } |
2 Примеры получения значений полей по данным заявки для использования в правилах применимости
Поле согласно структуре заявки с учетом вложенности | Описание | Как объявить и получить значение в java |
---|---|---|
result.client | Объект компания клиента/ИП | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); |
result.Company.legalType | Категория клиента (организация, ИП, физ. лицо) | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var companyLegalType = clientCompany.legalType.id; |
result.productDealState.amount | Сумма продукта | var amountProductDealState = dealApplicationData.result.productDealState.amount; |
result.productDealState.actualContractPrice | Сумма ФЦК продукта | var priceProductDealState = dealApplicationData.result.productDealState.actualContractPrice; |
result.productDealState.termDays | Срок гарантии | var termDaysProductDealState = dealApplicationData.result.productDealState.termDays; |
result.Company.orgType | Тип организации | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var clientOrgTypeId = clientCompany.orgType.id; |
result.productDealState.customer.region | Местонахождения (регион) заказчика | var customerRegion = dealApplicationData.result.productDealState.customer.region.id; |
result.Company.taxSystem | Система налогообложения | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var taxSystemDto = dealApplicationData.getFetchField('TaxSystemCatalog', clientCompany.taxSystem); |
result.Company.regDate | Дата государственной регистрации | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var companyRegDate = clientCompany.regDate; |
result.Company.baseOkved | Базовый ОКВЭД | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var сlientBaseOkved = dealApplicationData.getFetchField('OkvedCatalog', clientCompany.baseOkved); |
result.Company.okopf | Организационно-правовая форма | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var okopfDto = dealApplicationData.getFetchField('OkopfCatalog', clientCompany.okopf); |
result.productDealState.tender.federalLaw | Федеральный закон | var federalLaw = dealApplicationData.result.productDealState.tender.federalLaw.id; |
fetchFields.CompanySourceInfo | Головная компания | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var sourceInfo = clientCompany.sourceInfo; |
fetchFields.CompanyAddress.region | Регион фактического местоположения компании | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var factAddressDto = dealApplicationData.getFetchField('CompanyAddress', clientCompany.factAddress); |
fetchFields.CompanyAddress.region | Регион юридического адреса компании | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); var LegalAddress = dealApplicationData.getFetchField('CompanyAddress', clientCompany.legalAddress); |
fetchFields.LegalFounder | Собственники (юр лицо) | var legalFounders = dealApplicationData.getFetchFieldAsMap('LegalFounder'); var keyArray = legalFounders.keySet().toArray(); |
result.Company.regDate | Срок деятельности клиента | var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); now = new Date(); rD = new Date(clientCompany.regDate); termClient = (now - rD)/(60 * 60 * 24 * 1000); |
result.productDealState.tender.closedLaw | Тендер по 275-ФЗ | var tenderClosedLaw = dealApplicationData.result.productDealState.tender.closedLaw; |
result.productDealState.tender.currencyType | Валюта контракта | var tenderCurrencyType = dealApplicationData.result.productDealState.tender.currencyType; var сurrencyTypeDto = dealApplicationData.getFetchField('CurrencyTypeCatalog', tenderCurrencyType); |
result.productDealState.performanceBg.amount | Сумма БГ на исполнение вне типа продукта БГ(И) | var amountBG = dealApplicationData.result.productDealState.performanceBg.amount; |
result.productDealState.isNeedPerformanceBg | Потребуется БГ на исполнение контракта? | var isNeedPerformanceBgDeal = dealApplicationData.result.productDealState.isNeedPerformanceBg; |
result.productDealState.customer.inn | ИНН заказчика | var customerInn = dealApplicationData.result.productDealState.customer.inn; |