Требования и особенности формирования конфигурационного файла описаны в виде комментариев в примере ниже.
ВНИМАНИЕ!
Оформлять отдельными продуктами нужно отличающиеся наборы обязательных для заполнения данных. Если продукт предоставляется для ЮЛ и ИП, то требуется оформлять два продукта: "Продукт... для ЮЛ", "Продукт... для ИП", т.к. у них отличаются наборы обязательных для заполнения полей (например, у ИП нет поля КПП, нельзя это поле указать для ИП как обязательное).
ПРИМЕЧАНИЕ
Рекомендуется перед импортом проверить файл с помощью любого валидатора yaml, чтобы исключить явные ошибки форматирования.
Скачать пример можно также по ссылке Пример для документации - Продукт БГ(И) для ЮЛ ред.12.04.2021.yaml
Пример конфигурационного файла с описанием требований в виде комментариев
#настройки конкретного продукта #элемент product обязателен и один product: #общие сведения о продукте #полное наименование продукта, необязательно должно совпадать с наименованиями линейки продуктов банка, т.к. в системе Goodfin продукт объединяет единые настройки обязательности по заполнению данных заявки #name varchar(500) NOT NULL name: "Банковская гарантия на исполнение для ЮЛ банка БАНК1 (ред.12.04.21)" #shortname varchar(50) NOT NULL #краткое наименование продукта, выводимое пользователям shortName: "БГ на исполнение для ЮЛ (ред.12.04.21, БАНК1)" #producttype varchar(50) NOT NULL #мнемокод типа продукта, выбирается из справочника product_types #тип продукта должен совпадать с префиксам в перечне обязательных продуктовых полей #например, "BG" - Банковская гарантия на исполнение контракта, "PARTICIPATION_BG" - Банковская гарантия на участие, "TENDER_LOAN" - Тендерный займ productType: "BG" #description varchar(1000) NULL #Краткое описание паспорта продукта для вывода пользователям, чтобы пользователи могли понять ограничения по продукту #можно использовать при описании формат BBCode description: "[b]Законы:[/b] 44, 223, 615-ПП/185.[br][b]Макс. сумма БГ:[/b] 150 млн.р.[br][b]Maкс. срок действия БГ:[/b] 1095 дн.[br][b]Срок существования клиента:[/b] от 3 мес.-до 500 т.р.; от 6 мес.-до 1 м.р.; от 9 мес.-от 1 м.р. до 7 м.р.; от 12 мес.-от 7 м.р. до 50 м.р.; от 24 мес.-от 50 м.р. до 150 м.р.[br][b]Maкс. лимит на клиента:[/b] 150 м.р.[br][b]ОПФ клиента:[/b] АО, ООО, ИП.[br][b]Стоп регионы (по принципалу, бенефициару и месту выполнения контракта) :[/b] Респ. Адыгея; Карачаево-Черкесская Респ.; Кабардино-Балкарская Респ.; Респ. Северная Осетия – Алания; Респ. Ингушетия; Чеченская Респ.; Респ. Дагестан; Респ. Крым, г. Севастополь (допускается как место выполнения работ).[br][b]Предметы в стопе:[/b] автодорожное строительство «с нуля»; строительство жилых домов, высотных домов, коммерческой недвижимости, производственных объектов; приобретение жилья в рамках 214 ФЗ от 31.12.2004; строительство объектов для нужд МВД РФ, ФСБ РФ, Министерства обороны РФ, Администрации Президента РФ.[br]" # workterm integer NULL #Минимальное количество рабочих дней, в течение которых сервис готов предоставить продукт или услугу в законченном виде, измеряется в рабочих днях workTerm: 1 #externalid uuid NOT NULL #задается согласно требованиям к guid, например, использовать https://www.guidgenerator.com для генерации значения #если externalId совпадет с существующим продуктом в БД, то будет выполнена попытка перезаписи настроек продукта, иначе создается новый продукт externalId: "12f6fa12-3f16-4ab6-94b6-466c3ce3a09e" #правило применимости продукта, данные клиента и сделки должны удовлетворять этому правилу, чтобы получить предложение по продукту #правило обязательно и одно на продукт productApplicabilityRule: #name varchar(150) NOT NULL #используется для понимания сути правила name: "БГ на исполнение ЮЛ банка БАНК1. Доступно: по ФЗ 223, 44, 185/615 ПП; для коммер. и некомм. головных компаний" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE, FALSE или NULL. #Если функция возвращает true, то считается, что продукт применим и может быть показан клиенту в Предложениях #примеры готовых скриптов см. в документации - статья "Правила применимости: productApplicabilityRule, applicabilityRule" script: "function isAvailableForDealApplicationData(dealApplicationData) { var orgTypes = ['COM', 'UNCOM']; var companyClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.CompanyDto'); var clientCompany = dealApplicationData.fetchFields[companyClass][dealApplicationData.result.client.id]; if(clientCompany == null || clientCompany.orgType == null || clientCompany.legalType == null) { return null; } var clientOrgTypeId = clientCompany.orgType.id; var clientLegalTypeId = clientCompany.legalType.id; return orgTypes.indexOf(clientOrgTypeId) !== -1 && clientLegalTypeId == 'ORGANIZATION'; }" #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #требования к карточке компании/ИП #данный раздел должен существовать в настройках, если тип продукта предоставляется компаниям/ИП, иначе будет раздел individualFields #при анализе yaml считать, если поле в списке required не найдено, то оно необязательно #список доступных полей для настройки обязательности см. в справочнике company_fields companyFields: required: - "bankingDetails" - "bankingDetails.bankName" - "bankingDetails.bik" - "bankingDetails.paymentAccount" - "baseOkved" - "factAddress" - "factAddress.addressType" - "factAddress.city" - "factAddress.house" - "factAddress.isOwned" - "factAddress.postCode" - "factAddress.region" - "factAddress.street" - "fullName" - "inn" - "kpp" - "legalAddress" - "legalAddress.addressType" - "legalAddress.city" - "legalAddress.house" - "legalAddress.isOwned" - "legalAddress.postCode" - "legalAddress.region" - "legalAddress.street" - "legalFounders.address" - "legalFounders.inn" - "legalFounders.kpp" - "legalFounders.name" - "legalFounders.ogrn" - "legalFounders.percent" - "licenses.activity" - "licenses.date" - "licenses.listActivities" - "licenses.number" - "licenses.who" - "ogrn" - "okopf" - "okpo" - "orgType" - "persons" - "persons.birthday" - "persons.birthdayPlace" - "persons.docDate" - "persons.docNumber" - "persons.docType" - "persons.docWho" - "persons.firstName" - "persons.inn" - "persons.lastName" - "persons.mainOksm" - "persons.middleName" - "persons.regAddress" - "regDate" - "regOrg" - "regPlace" - "shortName" - "taxSystem" #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #требования к продуктовым полям #набор продуктовых полей будет отличаться в зависимости от типа продукта #при анализе yaml считать, если поле в списке required не найдено, то оно необязательно #при описании продуктовых полей важно, чтобы префикс типа продукта совпадал с типом продукта в общем описании продукта (с полем productType) #можно использовать только те продуктовые поля, которые соответствуют настраиваемому типу продакта #полный перечень см. в справочнике product_types_fields productFields: required: - "BG:productDealState.actualContractPrice" - "BG:productDealState.amount" - "BG:productDealState.concludedContracts" - "BG:productDealState.customer" - "BG:productDealState.customer.inn" - "BG:productDealState.customer.kpp" - "BG:productDealState.customer.name" - "BG:productDealState.customer.ogrn" - "BG:productDealState.customer.region" - "BG:productDealState.deadlineForGrant" - "BG:productDealState.endDate" - "BG:productDealState.hasLoss" - "BG:productDealState.isIndisputableWriteOff" - "BG:productDealState.isPrepayment" - "BG:productDealState.isQuickDecision" - "BG:productDealState.isWarrantyPeriod" - "BG:productDealState.loanCommitments" - "BG:productDealState.startDate" - "BG:productDealState.tender" - "BG:productDealState.tender.federalLaw" - "BG:productDealState.tender.initialContractPrice" - "BG:productDealState.tender.isMultiCustomer" - "BG:productDealState.tender.isMultiLot" - "BG:productDealState.tender.lotName" - "BG:productDealState.tender.lotNumber" - "BG:productDealState.tender.name" - "BG:productDealState.tender.placementType" - "BG:productDealState.tender.publishDateTime" - "BG:productDealState.tender.registryNumber" - "BG:productDealState.tender.url" #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #валидаторы по табл. products_validators и validators validators: #обязательно в каждом блоке массива элемент type с наименованием функции валидатора #прочие элементы в блоке массива после type играют роль входных параметров для функции валидатора, параметров может не быть, а может быть несколько с разными наименованиями #полный перечень см. в справочнике validators - #validator type: "COMPANY_PERSON_ROLE_REQUIRED" role: "BOOKER" - #validator type: "COMPANY_PERSON_ROLE_REQUIRED" role: "DIRECTOR" - #validator type: "COMPANY_FOUNDER_REQUIRED" #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #пакеты обязательных документов, можно настроить несколько пакетов документов в зависимости от данных в заявке и требований продукта #в списке столько Блоков "- docsPackage:" сколько пакетов для продукта #если в пакете документов отсутствует блок applicabilityRule, то это значит, что документы из пакета будут безусловно запрашиваться для продукта docsPackages: - #docsPackage 1 #name varchar(500) NOT NULL #Указать полное наименование пакета документов, включая наименование продукта и сервиса для полноты понимания name: "Пакет БГ(И), Банк БАНК1: ВСЕ клиенты, 1 млн < сумма БГ на исполнение < = 50 млн" #shortname varchar(50) NOT NULL #Указать краткое наименование пакета документов, чтобы по нему понять условия применимости пакета документов shortName: "ЮЛ, 1 млн < сумма < = 50 млн" #description varchar(1000) NULL, описание пакета документов, которое может выводиться как подсказка в системе description: NULL #полный перечень типов документов см. в docs_types #списком перечисляются мнемокоды типов обязательных документов в пакете #полный перечень см. в справочнике docs_types docsTypes: - "ANALYTICAL_BALANCE_LAST_REPORTING_YEAR" - "LEASE_AGREEMENT_OWNERSHIP" - "FINANCE_REPORT_LAST_QUARTER" #правило применимости пакета документов applicabilityRule: #name varchar(150) NOT NULL #наименование правила применимости name: "сумма БГ на исполнение больше 1 млн И меньше или равна 50 млн" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE, FALSE или NULL. #Если функция возвращает true, то считается, что пакет документов применим и при заполнении заявки у клиента будут запрошены документы в составе пакета #примеры готовых скриптов см. в документации - статья "Правила применимости: productApplicabilityRule, applicabilityRule" script: "function isAvailableForDealApplicationData(dealApplicationData) { if (dealApplicationData.result.productDealState.amount == null) { return null; } return dealApplicationData.result.productDealState.amount > 1000000 && dealApplicationData.result.productDealState.amount <= 50000000; }" - #docsPackage 2 #name varchar(500) NOT NULL #Указать полное наименование пакета документов, включая наименование продукта и сервиса для полноты понимания name: "Пакет БГ(И), Банк БАНК1: ВСЕ клиенты, сумма БГ на исполнение > 50 млн" #shortname varchar(50) NOT NULL #Указать краткое наименование пакета документов, чтобы по нему понять условия применимости пакета документов shortName: "ЮЛ, сумма > 50 млн" #description varchar(1000) NULL, описание пакета документов, которое может выводиться как подсказка в системе description: NULL #полный перечень типов документов см. в docs_types #списком перечисляются мнемокоды типов обязательных документов в пакете #полный перечень см. в справочнике docs_types docsTypes: - "FINANCE_REPORT_LAST_QUARTER" - "ANALYTICAL_BALANCE_LAST_REPORTING_YEAR" - "ANNUAL_ACCOUNTING_FINANCIAL_STATEMENTS" - "LEASE_AGREEMENT_OWNERSHIP" #правило применимости пакета документов applicabilityRule: #name varchar(150) NOT NULL #наименование правила применимости name: "сумма БГ на исполнение больше 50 млн" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE, FALSE или NULL. #Если функция возвращает true, то считается, что пакет документов применим и при заполнении заявки у клиента будут запрошены документы в составе пакета #примеры готовых скриптов см. в документации - статья "Правила применимости: productApplicabilityRule, applicabilityRule" script: "function isAvailableForDealApplicationData(dealApplicationData) { if (dealApplicationData.result.productDealState.amount == null) { return null; } return dealApplicationData.result.productDealState.amount > 50000000; }" - #docsPackage 3 #name varchar(500) NOT NULL #Указать полное наименование пакета документов, включая наименование продукта и сервиса для полноты понимания name: "Пакет БГ(И), Банк БАНК1: ЮЛ на ОСНО, сумма БГ на исполнение > 10 млн" #shortname varchar(50) NOT NULL #Указать краткое наименование пакета документов, чтобы по нему понять условия применимости пакета документов shortName: "ЮЛ на ОСНО, сумма > 10 млн" #description varchar(1000) NULL, описание пакета документов, которое может выводиться как подсказка в системе description: NULL #полный перечень типов документов см. в docs_types #списком перечисляются мнемокоды типов обязательных документов в пакете #полный перечень см. в справочнике docs_types docsTypes: - "TAX_DECL_VALUE_ADDED_TAX_LAST_TAX_PERIOD" - "TAX_DECL_ORGANIZATION_INCOME_TAX_LAST_TAX_PERIOD" #правило применимости пакета документов applicabilityRule: #name varchar(150) NOT NULL #наименование правила применимости name: "ЮЛ с налогообложением = ОСНО И сумма БГ на исполнение больше 10 млн" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE, FALSE или NULL. #Если функция возвращает true, то считается, что пакет документов применим и при заполнении заявки у клиента будут запрошены документы в составе пакета #примеры готовых скриптов см. в документации - статья "Правила применимости: productApplicabilityRule, applicabilityRule" script: "function isAvailableForDealApplicationData(dealApplicationData) { var companyClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.CompanyDto'); var clientCompany = dealApplicationData.fetchFields[companyClass][dealApplicationData.result.client.id]; if (clientCompany == null) { return null; } var taxSystemClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.catalog.TaxSystemCatalogDto'); var taxSystemDto = dealApplicationData.fetchFields[taxSystemClass][clientCompany.taxSystem]; if (clientCompany.legalType == null || taxSystemDto == null || dealApplicationData.result.productDealState.amount == null) { return null; } var taxSystems = ['OSNO']; return taxSystems.indexOf(taxSystemDto.code) !== -1 && clientCompany.legalType.id == 'ORGANIZATION' && dealApplicationData.result.productDealState.amount > 10000000; }" - #docsPackage 4 #name varchar(500) NOT NULL #Указать полное наименование пакета документов, включая наименование продукта и сервиса для полноты понимания name: "Пакет БГ(И), Банк БАНК1: ЮЛ на УСН/Сельхоз, 1 млн < сумма БГ на исполнение < = 10 млн" #shortname varchar(50) NOT NULL #Указать краткое наименование пакета документов, чтобы по нему понять условия применимости пакета документов shortName: "ЮЛ на УСН/Сельхоз, 1млн < сумма <= 10млн" #description varchar(1000) NULL, описание пакета документов, которое может выводиться как подсказка в системе description: NULL #полный перечень типов документов см. в docs_types #списком перечисляются мнемокоды типов обязательных документов в пакете #полный перечень см. в справочнике docs_types docsTypes: - "TAX_DECLARATION_LAST_PERIOD" #правило применимости пакета документов applicabilityRule: #name varchar(150) NOT NULL #наименование правила применимости name: "ЮЛ с налогообложением = (УСНО ИЛИ Сельхоз) И сумма БГ на исполнение больше 1 млн И меньше или равна 10 млн" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE, FALSE или NULL. #Если функция возвращает true, то считается, что пакет документов применим и при заполнении заявки у клиента будут запрошены документы в составе пакета #примеры готовых скриптов см. в документации - статья "Правила применимости: productApplicabilityRule, applicabilityRule" script: "function isAvailableForDealApplicationData(dealApplicationData) { var companyClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.CompanyDto'); var clientCompany = dealApplicationData.fetchFields[companyClass][dealApplicationData.result.client.id]; if (clientCompany == null) { return null; } var taxSystemClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.catalog.TaxSystemCatalogDto'); var taxSystemDto = dealApplicationData.fetchFields[taxSystemClass][clientCompany.taxSystem]; if (clientCompany.legalType == null || taxSystemDto == null || dealApplicationData.result.productDealState.amount == null) { return null; } var taxSystems = ['USN','ESHN']; return taxSystems.indexOf(taxSystemDto.code) !== -1 && clientCompany.legalType.id == 'ORGANIZATION' && dealApplicationData.result.productDealState.amount > 1000000 && dealApplicationData.result.productDealState.amount <= 10000000; }" - #docsPackage 5 #name varchar(500) NOT NULL #Указать полное наименование пакета документов, включая наименование продукта и сервиса для полноты понимания name: "Пакет БГ(И), Банк БАНК1: ЮЛ на УСН/Сельхоз, сумма БГ на исполнение > 10 млн" #shortname varchar(50) NOT NULL #Указать краткое наименование пакета документов, чтобы по нему понять условия применимости пакета документов shortName: "ЮЛ на УСН/Сельхоз, сумма > 10 млн" #description varchar(1000) NULL, описание пакета документов, которое может выводиться как подсказка в системе description: NULL #полный перечень типов документов см. в docs_types #списком перечисляются мнемокоды типов обязательных документов в пакете #полный перечень см. в справочнике docs_types docsTypes: - "BREAKDOWN_ACCOUNTS_RECEIVABLE_LAST_REPORTING_DATE" - "TAX_DECLARATION_LAST_PERIOD" #правило применимости пакета документов applicabilityRule: #name varchar(150) NOT NULL #наименование правила применимости name: "ЮЛ с налогообложением = (УСНО ИЛИ Сельхоз) И сумма БГ на исполнение больше 10 млн" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE, FALSE или NULL. #Если функция возвращает true, то считается, что пакет документов применим и при заполнении заявки у клиента будут запрошены документы в составе пакета #примеры готовых скриптов см. в документации - статья "Правила применимости: productApplicabilityRule, applicabilityRule" script: "function isAvailableForDealApplicationData(dealApplicationData) { var companyClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.CompanyDto'); var clientCompany = dealApplicationData.fetchFields[companyClass][dealApplicationData.result.client.id]; if (clientCompany == null) { return null; } var taxSystemClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.catalog.TaxSystemCatalogDto'); var taxSystemDto = dealApplicationData.fetchFields[taxSystemClass][clientCompany.taxSystem]; if (clientCompany.legalType == null || taxSystemDto == null || dealApplicationData.result.productDealState.amount == null) { return null; } var taxSystems = ['USN','ESHN']; return taxSystems.indexOf(taxSystemDto.code) !== -1 && clientCompany.legalType.id == 'ORGANIZATION' && dealApplicationData.result.productDealState.amount > 10000000; }" - #docsPackage 6 #name varchar(500) NOT NULL #Указать полное наименование пакета документов, включая наименование продукта и сервиса для полноты понимания name: "Пакет документов для АО (БГ на исполнение, БИН)" #shortname varchar(50) NOT NULL #Указать краткое наименование пакета документов, чтобы по нему понять условия применимости пакета документов shortName: "Пакет документов для АО (БГ, БИН)" #description varchar(1000) NULL, описание пакета документов, которое может выводиться как подсказка в системе description: NULL #полный перечень типов документов см. в docs_types #списком перечисляются мнемокоды типов обязательных документов в пакете #полный перечень см. в справочнике docs_types docsTypes: - "EXTRACT_FROM_REGISTER_SHAREHOLDERS" #правило применимости пакета документов applicabilityRule: #name varchar(150) NOT NULL #наименование правила применимости name: "Компания-клиент является акционерным обществом" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE, FALSE или NULL. #Если функция возвращает true, то считается, что пакет документов применим и при заполнении заявки у клиента будут запрошены документы в составе пакета #примеры готовых скриптов см. в документации - статья "Правила применимости: productApplicabilityRule, applicabilityRule" script: "function isAvailableForDealApplicationData(dealApplicationData) { if (dealApplicationData.result.client.clientType.id != 'COMPANY') { return false; } var okopfTypes = ['12200', '12247', '12267']; var companyClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.CompanyDto'); var clientCompany = dealApplicationData.fetchFields[companyClass][dealApplicationData.result.client.id]; var okopfClass = java.lang.Class.forName('com.keyintegrity.shb.company.query.dto.catalog.OkopfCatalogDto'); var okopfDto = dealApplicationData.fetchFields[okopfClass][clientCompany.okopf]; return okopfDto !== null && okopfTypes.indexOf(okopfDto.code) !== -1; }" - #docsPackage 7 #name varchar(500) NOT NULL #Указать полное наименование пакета документов, включая наименование продукта и сервиса для полноты понимания name: "Пакет документов для ЮЛ (БГ на исполнение, БИН)" #shortname varchar(50) NOT NULL #Указать краткое наименование пакета документов, чтобы по нему понять условия применимости пакета документов shortName: "Пакет документов для ЮЛ (БГ, БИН)" #description varchar(1000) NULL, описание пакета документов, которое может выводиться как подсказка в системе description: NULL #полный перечень типов документов см. в docs_types #списком перечисляются мнемокоды типов обязательных документов в пакете #полный перечень см. в справочнике docs_types docsTypes: - "CHARTER" - "HEAD_APPOINTMENT_PROTOCOL" - "HEAD_PASSPORT_COPY" #нет applicabilityRule -пакет применим безусловно для всего продукта #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #требования к фин. показателям financePackages: - #FinancePackage 1 name: "Открытие БГ(И), до 1 млн" userTooltip: "Разрешается или заполнить финансовые показатели, или прикрепить обязательные документы." #описываются требования к каждой фин. форме, на текущий момент поддерживается два набора отчетности по две формы в каждом #набор отчетности КНД 0710098 с формами ОКУД 0710001 и ОКУД 0710002 #набор отчетности КНД 0710099 с формами ОКУД 0710001 и ОКУД 0710002 #полный перечень см. в справочнике finance_fields #в formSet подставляем значение из КНД набора форм #в form подставляем значение из Формы по ОКУД #в indicators.required подставляем значение из мнемокода #periodTypes определяет обязательный набор выводимых отчетных периодов для заполнения отчетности #для заполнения periodTypes полный перечень см. в справочнике period_types forms: - #form and indicators formSet: "0710098" form: "0710001" periodTypes: - "currentReportingPeriod" - "previousYear" - "yearPrecedingPrevious" indicators: required: - "noMaterial" - "material" - "1210" - "finAssets" - "1250" - "capital" - "1410" - "longTermDuties" - "1510" - "1520" - "shortTermDuties" - "1600" - "1700" - #form and indicators formSet: "0710098" form: "0710002" periodTypes: - "currentReportingPeriod" - "previousYear" - "yearPrecedingPrevious" indicators: required: - "2110" - "expenses" - "otherIncomes" - "2330" - "2350" - "2400" - "incomeTaxes" - #form and indicators formSet: "0710099" form: "0710001" periodTypes: - "currentReportingPeriod" - "previousYear" - "yearPrecedingPrevious" indicators: required: - "1100" - "1110" - "1120" - "1130" - "1140" - "1150" - "1160" - "1170" - "1180" - "1190" - "1200" - "1210" - "1220" - "1230" - "1240" - "1250" - "1260" - "1300" - "1310" - "1320" - "1340" - "1350" - "1360" - "1370" - "1400" - "1410" - "1420" - "1430" - "1450" - "1500" - "1510" - "1520" - "1530" - "1540" - "1550" - "1600" - "1700" - #form and indicators formSet: "0710099" form: "0710002" periodTypes: - "currentReportingPeriod" - "previousYear" - "yearPrecedingPrevious" indicators: required: - "2100" - "2110" - "2120" - "2200" - "2210" - "2220" - "2300" - "2310" - "2320" - "2330" - "2340" - "2350" - "2400" - "2410" - "2411" - "2412" - "2460" - "2500" - "2510" - "2520" - "2530" - "2900" - "2910" #правило применимости пакета фин. показателей applicabilityRule: #name varchar(150) NOT NULL #наименование правила применимости name: "Сумма БГ < 1 млн И нет документов FINANCE_REPORT_LAST_QUARTER, ANALYTICAL_BALANCE_LAST_REPORTING_YEAR" #type varchar(50) NOT NULL, по умолчанию значение = "script" type: "script" #script character varying(4000) NOT NULL #Скрипт правила в виде функции isAvailableForDealApplicationData(dealApplicationData), возвращающей TRUE или FALSE. script: "function isAvailableForDealApplicationData(dealApplicationData) { var clientCompany = dealApplicationData.getFetchField('Company', dealApplicationData.result.client.id); if (clientCompany == null || dealApplicationData.result.productDealState.amount == null) { return null; } var financeReportExists = false; var analyticalBalanceExists = false; var documentsMap = dealApplicationData.getFetchFieldAsMap('ApplicationDocument'); if (documentsMap !== null) { var documents = documentsMap.values(); 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'; }); } return clientCompany.legalType.id == 'ORGANIZATION' && !(financeReportExists && analyticalBalanceExists) && dealApplicationData.result.productDealState.amount < 1000000; }"