Перейти к основному содержимому

Инструкция использования сервиса печатных форм

Вкладка Template

Для загрузки формы в сервис нужно находиться на странице (Template) загрузки формы

Данная страница содержит поля:

  • Template Name – наименование файла
  • Data Collection method – тип сборщика и обработки переменных (по умолчанию должен быть JS Loader)
  • Template File – путь к файлу, который требуется загрузить
  • Кнопка SUBMIT – загружает по итогу указанный файл в БД сервиса

Далее после нажатия submit перейдет на страницу по структуре определения переменных той формы, которую в данный момент загружали

На странице располагаются следующие поля:

  • Template Name наименование файла
  • Download Template – cкачать текущий загруженный шаблон
  • Replace File – загрузить и заменить текущий загруженный шаблон
  • Data Collection method – тип сборщика и обработки переменных (по умолчанию должен быть JS Loader)
  • Text – редактор структуры переменных и блоков формы

В данном редакторе можно и необходимо определять\переопределять переменные и блоки

Пример структуры определения и переопределения

"generator": "libreoffice",
"variables": {
"totalDebtFormatted": "((contractBalance.all | arr_pick('inBalance.local') | arr_sum) + (contractBalance.all | arr_pick('outBalance.local') | arr_sum)) | float_format(2)",
"properties": {
"rows": [
[
"contractCalculatedSchedule.tranches._.number",
"contractCalculatedSchedule.tranches._.repaymentDate | date_format('DD.MM.YYYY')",
"contractCalculatedSchedule.tranches._.(principal + interest + eachRepaymentFee) | int_format",
"contractCalculatedSchedule.tranches._.principal | int_format",
"contractCalculatedSchedule.tranches._.interest | int_format",
"contractCalculatedSchedule.tranches._.eachRepaymentFee | int_format",
"contractCalculatedSchedule.tranches._.rest | int_format"
]
],
"blocks": {
"leaseBack": "contract.creditProductName includes 'LeaseBack'",
"leaseClassic": "contract.creditProductName includes 'Leasing classic'"
},
"emptyChar": "-",
"undefinedChar": "-"
}

Самые нужные и самые часто используемые разделы структуры

variables – тут переопределяются переменные для быстрого доступа позволяя не редактировать шаблон с переменными. Так же упрощает эстетический вид шаблона формы от длинных ссылок переменных, которые сложно читать среди текста шаблона.

Например в форме длинную ссылку переменной, которая может быть прописана в форме шаблона

${((contractBalance.all | arr_pick('inBalance.local') | arr_sum) + (contractBalance.all | arr_pick('outBalance.local') | arr_sum)) | float_format(2)}

Можно переопределить так:

"totalDebtFormatted": "((contractBalance.all | arr_pick('inBalance.local') | arr_sum) + (contractBalance.all | arr_pick('outBalance.local') | arr_sum)) | float_format(2)" Данная переменная достает баланс по всем траншам (за балансом + в балансе)

и указать в шаблоне формы как ${totalDebtFormatted} так же в редакторе поля Text можно корректировать структуру данной переменной, не редактируя при этом в самом шаблоне формы. Например, в переопределении переменных можно использовать условия. “naturalPerson”: "client.naturalperson && !client.businessman ? ‘физ.лицо’ : ‘юр.лицо’"Данная переменная выводит текст “физ.лицо” или “юр.лицо” в зависимости от значения переменных client.naturalperson и client.businessman

properties – определяет по шаблону формы наличие переменных, выводящих коллекцию\список данных в таблицу (например график или свойства залога) В данном поле переменные обязательно должны быть одинаково определены как в форме, так и в поле. Выше пример показывает определения переменных для вывода графика в таблицу формы (шаблона)

Пример заполнения таблицы для вывода планового графика из контракта

Дата погашенияСумма оплатыОсновная суммаПроцентыСборыОстатки
${contractCalculatedSchedule.tranches._.number}${contractCalculatedSchedule.tranches._.repaymentDate | date_format('DD.MM.YYYY')}${contractCalculatedSchedule.tranches._.(principal + interest + eachRepaymentFee) | float_format}${contractCalculatedSchedule.tranches._.principal | float_format}${contractCalculatedSchedule.tranches._.interest | float_format}${contractCalculatedSchedule.tranches._.eachRepaymentFee | float_format}${contractCalculatedSchedule.tranches._.rest | float_format}
${(contractCalculatedSchedule.tranches | arr_pick('principal') | arr_sum) + (contractCalculatedSchedule.tranches | arr_pick('interest') | arr_sum) + (contractCalculatedSchedule.tranches | arr_pick('eachRepaymentFee') | arr_sum)}${(contractCalculatedSchedule.tranches | arr_pick('principal') | arr_sum)}${(contractCalculatedSchedule.tranches | arr_pick('interest') | arr_sum)}${(contractCalculatedSchedule.tranches | arr_pick('eachRepaymentFee') | arr_sum)}

blocks – определяет блоки которые при встраиваемых условия будут отображать или скрывать текс (с переменными и без) шаблона формы. Пример

            "leaseBack": "contract.creditProductName includes 'LeaseBack'",
"leaseClassic": "contract.creditProductName includes 'Leasing classic'"
},
или
"blocks": {
"block_person": "client.naturalperson && !client.businessman",
"block_company": "!client.naturalperson"
},
  • Первый пример в переменной contract.creditProductName (содержит строку имени кр. Продукта) проверяет на содержание в строке фразы LeaseBack
  • Второй пример проверяет тип клиента – физ лицо или юр лицо

Пример использования блоков

Таблица загруженных форм

  • Переключение режима между действующими и недействующими формами. Удалить форму нельзя, но ее можно деактивировать и восстановить снова.
  • Переход на аналитику быстродействия ПФ
  • Переход на страницу старого сборщика переменных
  • Кнопка архивации формы
  • Колонка наименования ПФ – содержит ссылки перехода на страницу редактора структуры переменных формы
  • Тип загрузчика (JS-LOADER является основным и в будущем основным)
  • Основные сущности, которые привязаны к форме
  • Дата/Время обновления формы

Вкладка Test PrintForm

Старый сборщик и транслятор переменных, по нему есть отдельная инструкция

Вкладка Expressions

Примеры форматирования данных (сущности, нумерации, строки, логические данные, массивы), подробные примеры на самой вкладке

Вкладка Used variables

Список переменных и их комбинации, которые используются в формах текущего кастомера. У того или иного кастомера может быть очень богатый список примеров использования тех или иных переменных формах. Очень удобная реализация для того чтобы не лазить в формы и не искать среди текста в поисках нужного.

Вкладка Generations

Показывает сессии сгенерированных форм и скорость их обрабатывания.

Вкладка Sandbox

Данная вкладка является песочницей, в которой можно и нужно тестировать, отрабатывать комбинации переменных. Так же содержит встроенный поисковик по сущностям и переменным. На данной странице расположены поля для заполнения ID сущностей. Служат для отработки по содержащейся в базе информации той или иной введенной в поле с ID сущности.

Основные сущности которые требуют заполнения ID в Sandbox при тестах

В скобках указаны обозначение сущности для работе в переменных и песочнице

  • Leads (lead) – лиды
  • Clients (client) – клиенты
  • LoanApps (loanApp) – заявки на займ
  • Contracts (contract) – кредитный контракты
  • Group of Signature Id (groupOfSignature) – группы подписей
  • Manager for Signature Id (managerForSignature) – менеджер (Кредитный специалист)
  • Share Contract (shareContract) - паевой контракт
  • Deposit Contract (deposit Contract) – депозитный контракт
  • Group Agreements – групповые соглашения, но по ним нет переменных
  • Collateral Line (collateralLine) – линии кредитов (кредитные линии)
  • Fund transaction (fundTransaction) - движение денежных средств (ДДС)
  • On date – дата в Финансовой информации (для просмотра информации по операциям на дату)

Дополнительные сущности (работают при заполненных ID основных сущностей)

ПО ЛИДАМ

leadRecurrentConsent \ clientRecurrentConsent – возвращает true\false согласие на рекуррентное списание (содержится на ланистере) ссылка на API (https://flame-orangutan-1ed.notion.site/cc6badbca098498ea397663ff6219d66)

ПО КЛИЕНТАМ
  • clientRfmTerroristHistory – переменные по МВК
  • clientRfmFreezeHistory – переменные по РФМ
  • clientRfmFromuHistory – переменные по ФРОМУ
  • client.contracts – список всех контрактов по клиенту
ПО ЗАЯВКАМ
  • loanAppFullCost – расчет ПСК по заявке
  • loanAppSchedule – график по заявке
  • loanAppInsurance – страховки по заявке
  • loanAppStatuses – список статусов заявки
  • loanApp.calc – перерасчет ПСК и графика по заявке (без учета firstRepaymentDate, repaymentPlanDate)
  • loanApp.calcExtraField – перерасчет ПСК и графика по заявке (без учета repaymentPlanDate и с Экстрофилдом contract.firstRepaymentDate)
  • loanApp.calcExtraField_HOTFIX - перерасчет ПСК и графика по заявке (с учетом Экстрафилдов contract.firstRepaymentDate (обязательный) и contract.repaymentPlanDate (необязательный))
  • loanApp.calcCollateralLine - перерасчет ПСК и графика по заявке для кредитных линий (с учетом Экстрофилдов collateralLine.paymentDay = 0 и collateralLine.recalcGracePeriod = 5 для расчета interestGracePeriod)
  • loanApp.calcSecondaryProduct - перерасчет ПСК и графика по заявке c ВСПОМОГАТЕЛЬНЫМ кредитным продуктом (без учета firstRepaymentDate, repaymentPlanDate)
  • loanApp.calcExtraFieldSecondaryProduct - перерасчет ПСК и графика по заявке c ВСПОМОГАТЕЛЬНЫМ кредитным продуктом (без учета repaymentPlanDate и с Экстрофилдом contract.firstRepaymentDate)
  • loanApp.calcCollateralLineSecondaryProduct - перерасчет ПСК и графика по заявке c ВСПОМОГАТЕЛЬНЫМ кредитным продуктом (с учетом Экстрофилдов collateralLine.paymentDay = 0 и collateralLine.recalcGracePeriod = 5 для расчета interestGracePeriod)
ПО КОНТРАКТАМ
  • contractFullCost – расчет ПСК по контракту
  • contractEffectiveInterestRateAFN – ЭПС для Казахстана
  • contractOperations – список всех операций произведенных по контракту
  • contractBalance – баланс по контракту (можно взаимодействовать во вкладке Sandbox с полем On date для установки даты процесса как в Финансовой информации)
  • contractStatuses – список статусов контракта
  • contractCalculatedSchedule – рассчитанный плановый график
  • contractCompositeSchedule – составной плановый график
  • contractFactSchedule – фактический график по выданному контракту
  • contractCourtResolution – переменные по судебнику (если контракт попал под судебное решение)
  • collateralTerminationRecord – переменные по откреплению залога от контракта (от ID контракта)
  • contractFundTransactions – список ДДС по контракту
  • contract.calc – перерасчет графика контракта, ПСК. Содержит в себе пересчитаный график (contract.calc.schedule)
ПО КРЕДИТНОЙ ЛНИИ
  • collateralLineOperations – список операций по кредитной линии
  • collateralLineEstimatedPaymentEarlyRepayment – расчет погашения по кредитной линии (досрочное)
  • collateralLineEstimatedPaymentRepayment – расчет погашения по кредитной линии (текущее)
  • collateralLine.collaterals – список залогов по кредитной линии
  • collateralLine.loanApps – список заявок по кредитной линии
  • collateralLine.contracts – список контрактов по кредитной линии
ПО ДДС
  • fundTransactionCashbox – список ДДС по Казахскому микросервису (Cashbox)
  • fundTransaction.operations – список операций содержащиеся в ДДС

Поиск переменных в сущностях (вкладка Sandbox)

В поле напротив лейбла Variables нужно вбить основную или дополнительную сущность и просмотреть доступные по релевантности (частоте использования) переменные. ВАЖНО !!! перед тем как нажать SEND нужно убедиться, что заполнен ID сущности с которой работаете (в разделе Expressions sandbox)

Так же можно в само поле Variables (под лейблом) вбить сущность нажать на кнопку Sand и посмотреть ее структуру (наименование, значение и тип переменных)

Важные ПРИМЕРЫ по работе с коллекциями и массивами сущностей.

  • суммирование массива (contractCalculatedSchedule.tranches) по полю (principal) contractCalculatedSchedule.tranches | arr_pick('principal') | arr_sum | arr_pick('principal') - отвечает за преобразование в массив по указанному полю | arr_sum - считает сумму по значению поля, которое предварительно сформировали в массив

  • работа с условиями по коллекции для вывода в таблицу Допустим вы хотите проставить прочерк если поле eachRepaymentFee равно нулю В данном примере есть проблема, что при проверке в форме поле уже подается как строка, а в песочнице как число, может не корректно работать, нужно удостовериться и сообщить разработчику. Пока работает таким образом. contractCalculatedSchedule.tranches._.(eachRepaymentFee != '0') ? (eachRepaymentFee | float_format(2)) : '-'

  • суммирование полей по конкретному элементу массива contractCalculatedSchedule.tranches._.(principal + interest + eachRepaymentFee) | float_format contractCalculatedSchedule.tranches.0.(principal + interest + eachRepaymentFee) | float_format

  • вызов элемента массива по значению под поля Допустим вам в первом по списку залоге нужно вытащить значение из поля, где значение подполя является Model. Данный пример демонстрирует как достать свойство Модель и вывести ее значение. loanApp.collaterals[0].collateralProperties[.collateralPropertyType.name == 'Model'].value

  • достать сумму баланса по ID вида суммы contractBalance.inBalance[.amountType.id == 101291] | arr_pick('inBalance.local') | arr_sum

  • текущая дата now() | date_format('DD.MM.YYYY')

  • вывод свойств залога с исключением конкретных свойств loanApp.collaterals[.collateralTypeId != 1017515 && .collateralTypeId != 121754]._.collateralType.name loanApp.collaterals[.collateralTypeId == 1017515 || .collateralTypeId == 121754]._.collateralType.name

  • вывод значений из экстрафилдов extraField(loanApp.collaterals[0].depositor, 'passport.managerKZ')

Пример выражения – находятся ли ID в поле 'collateralTypeId' по всем залогам

!((121754 || 1017515) in loanApp.collaterals | arr_pick('collateralTypeId'))

Расчет общей суммы соборов (по ставке и по сумме)

contract.creditFieldReq.fees[.amountTypeId == 10129159][0].value + (contract.loanAmount * contract.creditFieldReq.fees[.amountTypeId == 10129161][0].value / 100) + contract.creditFieldReq.fees[.amountTypeId == 10129162][0].value

contract.creditFieldReq.fees[.amountTypeId == 10129159].value + (contract.loanAmount * contract.creditFieldReq.fees[.amountTypeId == 10129161].value / 100) + contract.creditFieldReq.fees[.amountTypeId == 10129162].value

Вывод либо ФИО либо юо лицо организации

"loanApp.collaterals[.collateralTypeId == 1017515 || .collateralTypeId == 121754]._.(depositor.naturalperson ? (depositor.lastName + ' ' + depositor.firstName + ' ' + depositor.patronymic) : depositor.title)",

contractFullCost ПСК

вычитать даты можно

date_diff ∙ feat(js-loader): добавлен date_diff (пример: contract.issueDate | date_diff(contract.issuePlanDate); contract.issueDate | date_diff(contract.issuePlanDate, 'day'(unit), false(float)) (sttvld)

КАРТЫ

lead.cardByToken

В настройках шаблона надо указывать в формате

Подставление даты заявки в поле даты Фин инфы

"overrideInputExpressions": {
"clientId": "loanApp.clientId",
"ondate": "ondate ? ondate : loanApp.creationDate | date_format('YYYY-MM-DD')"
}

Вывод согласия на рекуррент (нужен адрес ланистера)

clientRecurrentConsent
leadRecurrentConsent

ВЫТАЩИТЬ ПРОСРОЧЕННЫЕ ТРАНШИ

contractBalance.all[.repaymentDate | date_format('U') <= now() | date_format('U')]._.inBalance.local

ДАТА НАЧАЛА ПРОСРОЧКИ

contractBalance.all[.repaymentDate | date_format('U') <= now() | date_format('U')][0].repaymentDate  | date_format('DD MM YYYY')

КОЛИЧЕСТВО ДНЕЙ ПРОСРОЧКИ

now() | date_diff((contractBalance.all[.repaymentDate | date_format('U') <= now() | date_format('U')][0].repaymentDate), 'days')