Оглавление
Примеры правил применимости, которые можно использовать в правиле применимости продукта в целом или для пакетов документов в составе продукта.
Вы можете по аналогии написать собственные правила.
Примеры сформированных тестовых заявок на дату 25/05/2020 со структурой, актуальной для версии 1.12 и выше, по которым можно посмотреть структуру данных:
для типа продукта Банковская гарантия на исполнение от клиента ИП - БГ(И) ИП.json
для типа продукта Банковская гарантия на возврат аванса от клиента ЮЛ - БГ(А) ЮЛ.json
для типа продукта Банковская гарантия обеспечения гарантийных обязательств от клиента ЮЛ - БГ(О) ЮЛ.json
для типа продукта Банковская гарантия на участие от клиента ЮЛ - БГ(У) ЮЛ.json
для типа продукта Тендерный займ от клиента ЮЛ - ТЗ ЮЛ.json
1 Примеры скриптов правил применимости
Описание правила | Пример правила применимости, script |
---|---|
(пример синтаксиса действует с версии 1.9.0) | |
для ИП (пример синтаксиса действует с версии 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); if (clientCompany == null || clientCompany.legalType == null) { return null; } var legalFounders = dealApplicationData.getFetchFieldAsMap('LegalFounder'); var keyArray = legalFounders.keySet().toArray(); if(keyArray.length !== 0) { return null; } 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 null; } return clientCompany.legalType.id == 'ORGANIZATION'; } |
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.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); |