Добавление нового действия на визите в полевых продажах
Glossary Item Box
ВАЖНО Функциональность, описанная в этой статье, доступна для для версии bpm'online 7.11.2 и выше, а также для всех версий мобильного приложения. |
Общие сведения
Действие на странице просмотра активности представляет собой переключатель, который имеет два состояния:
- выполнено — переключатель включен;
- не выполнено — переключатель выключен.
Если необходимо изменить поведение существующего действия или добавить новое, то нужно зарегистрировать класс-обработчик этого действия с методами execute() и cancel(). Класс-обработчик привязывается к коду действия (FieldForceActionType.Code). По умолчанию для действий используется базовый класс-обработчик Terrasoft.configuration.BaseVisitAction.
Класс Terrasoft.configuration.BaseVisitAction
В классе Terrasoft.configuration.BaseVisitAction предусмотрены два основных метода — execute() и cancel().
Метод execute()
Метод вызывается при включении переключателя. Сохраняет запись действия визита (VisitActions) со следующими значениями колонок:
IsComplete — true;
CompleteTime — текущее время.
Метод cancel()
Метод вызывается при включении переключателя. Сохраняет запись действия визита (VisitActions) со следующими значениями колонок:
IsComplete — false;
CompleteTime — null.
Классы-обработчики существующих действий
Классы-обработчики существующих действий, используемые в зависимости от кода действия (FieldForceActionType.Code), перечислены в таблице 1.
Табл. 1. — Классы-обработчики действий
Код действия FieldForceActionType.Code | Название класса |
---|---|
CheckIn | Terrasoft.configuration.CheckInVisitAction |
CheckOut | Terrasoft.configuration.CheckOutVisitAction |
ShowPresentation | Terrasoft.configuration.PresentationVisitAction |
AcceptanceOrder | Terrasoft.configuration.AcceptanceOrderVisitAction |
SKUMonitoring | Terrasoft.configuration.SKUMonitoringVisitAction |
Пример добавления пользовательского действия
Например, нужно добавить пользовательское действие открытия страницы детали. Для этого необходимо:
1. Создать класс-обработчик, в котором нужно расширить базовый метод execute(), вызываемый при выполнении действия. Пример исходного кода класса приведен ниже:
Ext.define("Terrasoft.configuration.OpenMyStandardDetailVisitAction", { extend: "Terrasoft.configuration.BaseVisitAction", execute: function() { Terrasoft.util.openStandardDetail({ parentRecord: this.getActivityRecord(), detailModelName: "MyStandardDetail" }); this.completeWithSuccess(); } });
Метод completeWithSuccess() сохраняет запись действия визита (VisitActions) с заполненными колонками (IsComplete — true и CompleteTime — текущее время). Затем вызывается success-функция, подтверждающая успешное завершение действия.
2. Привязать класс обработчик к коду действия. Пример исходного кода привязки обработчика к коду действия приведен ниже:
Terrasoft.configuration.VisitActionsManager.add("OpenMyStandardDetailActionCode", "Terrasoft.configuration.OpenMyStandardDetailVisitAction");
Один класс-обработчик можно привязывать к нескольким действиям.
Terrasoft.configuration.VisitActionsManager.add("OpenMyStandardDetailActionCode2", "Terrasoft.configuration.OpenMyStandardDetailVisitAction");
Расширение базовой логики выполнения действия
Базовая логика выполнения действий реализована в классе Terrasoft.configuration.BaseVisitAction. Если возникает требование, что для всех пользовательских действий нужно выполнить общий код, то не обязательно для каждого действия регистрировать класс-обработчик. Можно установить класс действия по умолчанию, например:
Ext.define("Terrasoft.configuration.MyBaseVisitAction", { extend: "Terrasoft.configuration.BaseVisitAction", execute: function() { this.callParent(arguments); //Реализация общей пользовательской логики. //... } }); Terrasoft.configuration.VisitActionsManager.setDefaultItemClassName ("Terrasoft.configuration.MyBaseVisitAction");