Система фильтров и хуков SalesMan CRM

Хуки позволяют внедрить свой код в систему для изменения/дополнения логики работы. Фильтры позволяют изменить/дополнить результаты выполнения программы. Система аналогична хукам и фильтрам CMS Wordpress.

  • Хук - это подсистема, позволяющая выполнить свой код в определенных частях системы
  • Фильтр - это подсистема, позволяющая изменять данные перед выполнением основного кода системы

Подключение хуков и фильтров

Для подключения своих хуков и фильтров требуется разместить необходимые файлы в нужных местах. Для выполнения своих функций требуется её активировать.

Пример хука:

$hooks -> add_action( "task_form_before", "pluginname_form_add_fields" );
function pluginname_form_add_fields( $post = [], $data = [] ) {
    // выполняем свои действия
}

Пример фильтра:

$hooks -> add_filter( 'task_doitfilter', 'pluginname_task_doit_filter' );
function pluginname_task_doit_filter( $data = [] ) {
    // дополняем данные и возвращаем
    return $data;
}

В этом примере мы ставим хук на открытие формы напоминания. При этом будет выполнена наша функция "pluginname_form_add_fields".

Примечание:

Рекомендуется присваивать своим функциям уникальные имена, которые будут ассоциироваться с выполняемым действияем, а также иметь связку с плагином

  • pluginname - уникальный префикс
  • form_add_fields - то, что он делает

Для плагинов

Требуется разместить файл в папку с плагином. Поддерживается 2 вида файлов:

  1. Исполняемые

    Эти файлы подключаются во время работы программы, а также во время активации/деактивации плагина. Должны иметь то же имя, что и папка с плагином, но в нижнем регистре букв.

    crmZarplata/crmzarplata.php
  2. Деинсталляторы

    Эти файлы подключаются только во время удаления плагина. Подразумевается, что в это время должны быть удалены созданные таблицы в БД, а также наработанные временные файлы

    crmZarplata/uninstall.php

Для модулей

Требуется разместить файл в папку с модулем с соблюдением правила названия файлов. Файлы должны именоваться из 2-х частей:

  • 1 часть. Обозначение принадлежности к хуку: hook_
  • 2 часть. Наименование модуля: modulename

Конечный вид составляет следующую конструкцию:

 ```
Projects/hook_projects.php
```

Поддерживаемые Хуки

Хук подключения/отключения/удаления плагинов

  • plugin_activate - активация плагина
$hooks -> add_action( "plugin_activate", "activate_useronline" );
function activate_useronline($argv = []) {

    $database = $GLOBALS['database'];
    $sqlname  = $GLOBALS['sqlname'];
    $db       = $GLOBALS['db'];
    $rootpath = $GLOBALS['rootpath'];

    //если таблицы нет, то создаем её
    $da = $db -> getOne("SELECT COUNT(*) as count FROM INFORMATION_SCHEMA.STATISTICS WHERE table_schema = '$database' and TABLE_NAME = '{$sqlname}useronline'");
    if ($da == 0) {

        $mes = array();

        try {

            $db -> query("
            CREATE TABLE `{$sqlname}useronline` (
                `id` INT(20) NOT NULL AUTO_INCREMENT,
                `datum` DATETIME NOT NULL COMMENT 'время последней активности',
                `iduser` INT(10) NOT NULL DEFAULT '0' COMMENT 'id сотрудника',
                `status` VARCHAR(10) NOT NULL DEFAULT 'offline' COMMENT 'статус сотрудника',
                `identity` INT(10) NOT NULL DEFAULT '1',
                PRIMARY KEY (`id`)
            )
            COMMENT='Хранилище статусов пользователей: online/offline'
            ENGINE=InnoDB
        ");

        }
        catch (Exception $e) {

            $mes[] = 'Ошибка'.$e -> getMessage().' в строке '.$e -> getCode();

        }

    }

    file_put_contents($rootpath."/cash/actions.log", json_encode_cyr($argv));

}
  • plugin_deactivate - деактивация плагина
$hooks -> add_action( 'plugin_deactivate', 'deactivate_useronline' );
function deactivate_useronline($argv = []) {
}
  • plugin_uninstall - удаление плагина
$hooks -> add_action( 'plugin_uninstall', 'uninstall_useronline' );
function uninstall_useronline($argv = []) {
}
  • plugin_update - обновление плагина
$hooks -> add_action( 'plugin_update', 'update_useronline' );
function update_useronline($argv = []) {
}

где $argv - массив с названием плагина ["name" => "my_plugin"], по которому можно определить, что производятся действия именно с указанным плагином

Хук подключения/отключения/удаления модулей

  • module_activate - активация модуля

    $hooks -> add_action( "module_activate", "activate_xmodule" );
    function activate_xmodule($argv = '') {
    }
  • module_deactivate - деактивация модуля
    $hooks -> add_action( 'module_deactivate', 'deactivate_xmodule' );
    function deactivate_xmodule($argv = '') {
    }

где $argv - код модуля

todo: добавить поддержку версий модулей и обновление

Подключение css, js и элементы к интерфейсу

  • main__css - для подключения css-файлов к проекту в основном окне
  • card__css - для подключения css-файлов к проекту в карточках
  • main__js - для подключения собственных js-скриптов к проекту в основном окне
  • card__js - для подключения собственных js-скриптов к проекту в карточках
  • main__body - для подключения файлов к проекту в основном окне
  • card__body - для подключения файлов к проекту в карточках

Примеры:

$hooks -> add_action( 'main__css', 'css_main_useronline' );
function css_main_useronline(){
    print "<link rel=\"stylesheet\" type=\"text/css\" href=\"/plugins/userOnline/css/uo.css\">\n";
}
$hooks -> add_action( 'main__js', 'js_main_useronline' );
function js_main_useronline(){
    print "<script type=\"text/javascript\" src=\"/plugins/userOnline/js/uo.js\"></script>\n";
}

Уведомления ( Notify )

  • add_custom_notify - добавление собственного типа уведомлений (фильтр)
    • в качестве параметра приходит массив событий в виде пар "событие" => "Название"
    • необходимо дополнить массив своим значением и вернуть обратно

Пример:

$hooks -> add_filter( 'add_custom_notify', 'project_notify' );
function project_notify($events = []) {
    $events = array_merge($events, ["project" => "Проекты"]);
    return $events;
}
  • add_custom_notify_icon - добавление собственной иконки для уведомлений (фильтр)
    • в качестве параметра приходит массив:
      • ключ-имя (например, project):
        • icon - код из шрифта (см. /font/fontello/)
        • color - css-класс из набора blue, broun, green, red, orange, fiolet, deepblue, gray2 (см. /css/style.crm.new.css)
    • необходимо дополнить массив своим значением и вернуть обратно

Пример:

$hooks -> add_filter( 'add_custom_notify_icon', 'project_notify_icon' );
function project_notify_icon($icons = []) {
    $icons["project"] = [
        "icon"  => "icon-tools",
        "color" => "deepblue"
    ];
    return $icons;
}

Уведомления ( Email )

  • add_custom_notify - добавление собственного типа подписок (фильтр)
    • в качестве параметра приходит массив событий в виде пар "событие" => "Название"
    • необходимо дополнить массив своим значением и вернуть обратно

Пример:

function comments_subscription($events = []) {

    $events["comments.new"]   = "Обсуждение. Новое обсуждение";
    $events["comments.answer"] = "Обсуждение. Новый ответ";

    return $events;

}

Напоминания

Фильтры и действия, связанные с Напоминаниями. Позволяют добавлять свои элементы в форму напоминаний, изменять их перед сохранением Напоминания, а также выполнять собственные действия.

  • form_task_userfilter - фильтр списка сотрудников (фильтр)

    • array post - входящие данные - массив данных по Напоминанию ($_REQUEST)
    • следует вернуть массив с двумя значениями:
      • str users - перечисление iduser с разделителем (,)
      • array selected - массив выбранных значений
  • task_form_before - блок перед формой напоминания

    • array post - входящие данные ($_REQUEST):
      • int tid - id напоминания, если новое, то не указано
      • int clid - id клиента
      • int did - id сделки
      • int pid - id контакта
  • task_form_after - блок после формы напоминания

    • array post - входящие данные ($_REQUEST):
      • int tid - id напоминания, если новое, то не указано
      • int clid - id клиента
      • int did - id сделки
      • int pid - id контакта
  • task_form_doit_before - блок перед формой выполнения напоминания

    • входящие данные ($_REQUEST):
      • int tid - id напоминания, если новое, то не указано
      • int clid - id клиента
      • int did - id сделки
      • int pid - id контакта
  • task_form_doit_after - блок после формы выполнения напоминания

    • array post - входящие данные ($_REQUEST):
      • int tid - id напоминания, если новое, то не указано
      • int clid - id клиента
      • int did - id сделки
      • int pid - id контакта
  • task_addfilter - выполнение функции перед добавлением напоминания (фильтр)

    • array post - входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • task_editfilter - выполнение функции перед сохранением изменений напоминания (фильтр)

    • array post - входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • task_doitfilter - выполнение функции перед сохранением выполнения напоминания (фильтр)

    • array post - входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • task_add - выполнение функции после добавления напоминания

    • входящие данные
      • array post - массив всех пришедших из формы данных ($_REQUEST)
      • array taskdata - массив данных для Напоминания
    • здесь обрабатываем данные как нам нужно
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • task_edit - выполнение функции после сохранения изменений напоминания

    • входящие данные
      • array post - массив всех пришедших из формы данных ($_REQUEST)
      • array taskdata - массив данных для Напоминания
    • здесь обрабатываем данные как нам нужно
  • task_doit - выполнение напоминания

    • входящие данные
      • array post - массив всех пришедших из формы данных ($_REQUEST)
      • array taskdata - массив данных для Напоминания
    • здесь обрабатываем данные как нам нужно
  • task_view - просмотр напоминания

    • входящие данные
      • int tid - id напоминания
  • task_delete - удаление напоминания

    • входящие данные
      • int tid - id напоминания
  • task_change_date - изменение даты (перетаскиванием)
    • входящие данные
      • array - массив данных ($_REQUEST)
        • int tid - id напоминания
        • date datum - новая дата
        • time totime - новое время

Активности

Фильтры и действия, связанные с Активностями. Позволяют добавлять свои элементы в форму Активности, изменять перед сохранением Активности, а также выполнять собственные действия.

Хуки для форм действуют только в форме добавления Активности

  • history_form_before - блок перед формой Активности

    • array post - входящие данные ($_REQUEST):
      • int сid - id записи активности, если новое, то не указано
      • int clid - id клиента
      • int did - id сделки
      • int pid - id контакта
  • history_form_after - блок после формы Активности

    • array post - входящие данные ($_REQUEST):
      • int tid - id напоминания, если новое, то не указано
      • int clid - id клиента
      • int did - id сделки
      • int pid - id контакта
  • history_addfilter - выполнение функции перед добавлением Активности (фильтр)

    • array post - входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • history_editfilter - выполнение функции перед сохранением изменений напоминания (фильтр)

    • array post - входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • history_add - выполнение функции после добавления Активности

    • входящие данные
      • array post - массив всех пришедших из формы данных ($_REQUEST)
      • array taskdata - массив данных для Напоминания
    • здесь обрабатываем данные как нам нужно
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • history_edit - выполнение функции после сохранения изменений Активности

    • входящие данные
      • array post - массив всех пришедших из формы данных ($_REQUEST)
      • array taskdata - массив данных для Напоминания
    • здесь обрабатываем данные как нам нужно
  • history_delete - удаление Активности
    • входящие данные
      • int id - id Активности

Клиент

Фильтры и действия, связанные с Клиентом. Позволяют добавлять свои элементы в форму Клиента, изменять их перед сохранением Клиента, а также выполнять собственные действия.

  • client_form_express_before - блок перед экспресс-формой

    • входящие данные ($_REQUEST)
  • client_form_express_after - блок после экспресс-формы

    • входящие данные ($_REQUEST)
  • client_form_before - блок перед формой клиента

    • входящие данные ($_REQUEST)
  • client_form_after - блок после формы клиента

    • входящие данные ($_REQUEST)
  • client_addfilter - выполнение функции перед добавлением клиента (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • client_editfilter - выполнение функции перед сохранением изменений клиента (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • client_add - выполнение функции после добавления клиента

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array clientdata - массив данных для Клиента
    • здесь обрабатываем данные как нам нужно
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • client_edit - выполнение функции после сохранения изменений напоминания

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
        1. array clientdata - массив данных для Клиента
    • здесь обрабатываем данные как нам нужно
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • client_view - просмотр Клиента

    • входящие данные
      • int clid - id Клиента
  • client_delete - удаление Клиента

    • входящие данные
      • int clid - id Клиента
  • client_change_user - выполнение функции после сохранения изменения ответственного за клиента

    • входящие данные
      • array - массив данных ($_REQUEST), в т.ч.
        • int clid - id Клиента
        • int newuser - iduser нового ответственного
        • str reason - комментарий
  • client_change_recvisites - выполнение функции после сохранения изменения реквизитов клиента

    • входящие данные
      • array - массив данных ($_REQUEST)
  • client_change_dostup - выполнение функции после сохранения изменения доступов к карточке клиента

    • входящие данные
      • array - массив данных ($_REQUEST)
  • client_change_relation - выполнение функции после сохранения изменения типа отношений клиента

    • входящие данные
      • array - массив данных ($_REQUEST)
  • client_change_priceLevel - выполнение функции после сохранения изменения уровня цен
    • входящие данные
      • array - массив данных ($_REQUEST), в т.ч.
        • str priceLevel - новый уровень цен
        • str oldLevel - старый уровень цен

Контакт

Фильтры и действия, связанные с Контактами. Позволяют добавлять свои элементы в форму Контакта, изменять их перед сохранением Контакта, а также выполнять собственные действия.

  • person_form_before - блок перед формой Контакта

    • входящие данные ($_REQUEST)
  • person_form_after - блок после формы Контакта

    • входящие данные ($_REQUEST)
  • person_addfilter - выполнение функции перед добавлением Контакта (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • person_editfilter - выполнение функции перед сохранением изменений Контакта (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • person_add - выполнение функции после добавления клиента

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array persondata - массив данных для Контакта
    • здесь обрабатываем данные как нам нужно
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • person_edit - выполнение функции после сохранения изменений напоминания

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array persondata - массив данных для Контакта
    • здесь обрабатываем данные как нам нужно
    • выполняется также при сохранении Экспресс-формы, Обращения, обработки Заявки
  • person_view - просмотр Контакта

    • входящие данные
      • int pid - id Контакта
  • person_delete - удаление Контакта
    • входящие данные
      • int pid - id Контакта

Сделка

Фильтры и действия, связанные со Сделкой. Позволяют добавлять свои элементы в форму Сделки, изменять их перед сохранением Сделки, а также выполнять собственные действия.

  • deal_form_before - блок перед формой Сделки

    • входящие данные ($_REQUEST)
  • deal_form_after - блок после формы Сделки

    • входящие данные ($_REQUEST)
  • deal_form_close_before - блок перед формой закрытия Сделки

    • входящие данные ($_REQUEST)
  • deal_form_close_after - блок после формы закрытия Сделки

    • входящие данные ($_REQUEST)
  • deal_form_changestep_before - блок перед формой изменения этапа Сделки

    • входящие данные ($_REQUEST)
  • deal_form_changestep_after - блок после формы изменения этапа Сделки

    • входящие данные ($_REQUEST)
  • deal_addfilter - выполнение функции перед добавлением Сделки (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при добавлении сделки через Заявку и Обращение
  • deal_editfilter - выполнение функции перед сохранением изменений Сделки (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
    • выполняется также при добавлении сделки через Заявку и Обращение
  • deal_add - выполнение функции после добавления Сделки

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array dealdata - массив данных для Сделки
    • здесь обрабатываем данные как нам нужно
    • выполняется также при добавлении сделки через Заявку и Обращение
  • deal_edit - выполнение функции после сохранения изменений Сделки

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array dealdata - массив данных для Сделки
    • здесь обрабатываем данные как нам нужно
    • выполняется также при добавлении сделки через Заявку и Обращение
  • deal_view - просмотр Сделки

    • входящие данные
      • int did - id Сделки
  • deal_delete - удаление Сделки

    • входящие данные
      • int did - id Сделки
  • deal_restore - восстановление Сделки

    • входящие данные
      • int did - id Сделки
  • deal_freeze - заморозка/разморозка Сделки

    • входящие данные
    • int did - id Сделки
    • string date - Дата разморозки (указывается для заморозки)
  • deal_close - закрытие Сделки

    • входящие данные
      • array - массив данных ($_REQUEST)
  • deal_change_step - выполнение функции после сохранения изменения этапа Сделки

    • входящие данные
      • array - массив данных ($_REQUEST), в т.ч.
        • int did - id Сделки
        • int iduser - iduser автора события
        • str reason - комментарий
        • int step - id нового этапа
        • int stepOld - id старого этапа
        • str stepValue - значение нового этапа, %
        • int stepValueOld - значение старого этапа, %
  • deal_change_user - выполнение функции после сохранения изменения ответственного за Сделку

    • входящие данные
      • array - массив данных ($_REQUEST), в т.ч.
        • int did - id Сделки
        • int newuser - iduser нового ответственного
        • str reason - комментарий
  • deal_change_dostup - выполнение функции после сохранения изменения доступов к карточке Сделки

    • входящие данные
      • array - массив данных ($_REQUEST)
  • deal_change_datumplan - выполнение функции после сохранения изменения плановой даты Сделки
    • входящие данные
      • array - массив данных ($_REQUEST)

Спецификация

Фильтры и действия, связанные со Спецификацией. Позволяют добавлять свои элементы в форму, изменять их перед сохранением Спецификации, а также выполнять собственные действия.

  • speka_form_before - блок перед формой Спецификации

    • входящие данные ($_REQUEST)
  • speka_form_after - блок после формы Спецификации

    • входящие данные ($_REQUEST)
  • speka_addfilter - выполнение функции перед добавлением позиции Спецификации (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • speka_editfilter - выполнение функции перед сохранением изменений позиции Спецификации (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • speka_add - выполнение функции после добавления позиции Спецификации

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array spekadata - массив данных для Спецификации
    • здесь обрабатываем данные как нам нужно
  • speka_edit - выполнение функции после сохранения изменений позиции Спецификации

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array spekadata - массив данных для Спецификации
    • здесь обрабатываем данные как нам нужно
  • speka_delete - удаление позиции Спецификации
    • входящие данные
      • int id - id позиции Спецификации

Счета

Фильтры и действия, связанные со Счетами. Позволяют добавлять свои элементы в форму, изменять их перед сохранением Счетов, а также выполнять собственные действия.

  • invoice_form_before - блок перед формой добавления/редактирования Счета

    • входящие данные ($_REQUEST)
  • invoice_form_after - блок после формы добавления/редактирования Счета

    • входящие данные ($_REQUEST)
  • invoice_addfilter - выполнение функции перед добавлением Счета (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • invoice_editfilter - выполнение функции перед сохранением изменений Счета (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • invoice_add - выполнение функции после добавления Счета

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array invoicedata - массив данных для Счета
    • здесь обрабатываем данные как нам нужно
  • invoice_edit - выполнение функции после сохранения изменений Счета

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array invoicedata - массив данных для Счета
    • здесь обрабатываем данные как нам нужно
  • invoice_form_express_before - блок перед формой внесения оплаты (Счет + фиксация Оплаты)

    • входящие данные ($_REQUEST)
  • invoice_form_express_after - блок после формы внесения оплаты (Счет + фиксация Оплаты)

    • входящие данные ($_REQUEST)
  • invoice_express_filter - выполнение функции перед внесением оплаты (Счет + фиксация Оплаты)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • invoice_express - выполнение функции после внесения оплаты (Счет + фиксация Оплаты)

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array invoicedata - массив данных для Счета
    • здесь обрабатываем данные как нам нужно
  • invoice_form_do_before - блок перед формой отметки Счета оплаченным

    • входящие данные ($_REQUEST)
  • invoice_form_do_after - блок после формы отметки Счета оплаченным

    • входящие данные ($_REQUEST)
  • invoice_dofilter - выполнение фильтра перед отметкой Счета оплаченным (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • invoice_do - выполнение функции после отметки Счета оплаченным Счета

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array invoicedata - массив данных для Счета
    • здесь обрабатываем данные как нам нужно
  • invoice_undo - отмена оплаты счета (доступно с релиза 27072023)

    • входящие данные
      1. int id - id счета
      2. array invoicedata - массив данных
        • did сделки
        • autor - пользователь, выполнивший сделку
    • здесь обрабатываем данные как нам нужно
  • invoice_delete - удаление Счета

    • входящие данные
      • int id - id Счета
  • invoice_getfilter - выполнение фильтра перед генерацией Счета
    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки, дополнив или заменив их своими (например, массив tagsAttached)

Акты

Фильтры и действия, связанные с Актами. Позволяют добавлять свои элементы в форму, изменять их перед сохранением Актов, а также выполнять собственные действия.

  • akt_form_before - блок перед формой добавления/редактирования Акта

    • входящие данные ($_REQUEST)
  • akt_form_after - блок после формы добавления/редактирования Акта

    • входящие данные ($_REQUEST)
  • akt_addfilter - выполнение функции перед добавлением Акта (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • akt_editfilter - выполнение функции перед сохранением изменений Акта (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • akt_add - выполнение функции после добавления Акта

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array aktdata - массив данных для Акта
    • здесь обрабатываем данные как нам нужно
  • akt_edit - выполнение функции после сохранения изменений Акта

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array aktdata - массив данных для Акта
    • здесь обрабатываем данные как нам нужно
  • akt_delete - удаление Акта

    • входящие данные
      • int id - id Акта
  • akt_tags_filter - выполнение функции перед генерацией Акта (фильтр)
    • входящие данные
      1. array tags - массив тегов для Акта
    • следует вернуть эти данные после обработки

Документы

Фильтры и действия, связанные с Документами. Позволяют добавлять свои элементы в форму, изменять их перед сохранением Документов, а также выполнять собственные действия.

  • document_form_before - блок перед формой добавления/редактирования Документа

    • входящие данные ($_REQUEST)
  • document_form_after - блок после формы добавления/редактирования Документа

    • входящие данные ($_REQUEST)
  • document_number_filter - фильтр дает возможность изменить номер документа

    • входящие данные
      • string type - тип документа
      • get_dogovor - если создается договор
      • invoice - если создается счет
      • get_akt - если создается акт приема-передачи
      • get_aktper - если создается акт приема-передачи для сервисных сделок
      • int idtype - id типа документа (таблица contract_type)
      • int did - id сделки
    • здесь обрабатываем данные как нам нужно и возвращаем массив, содержащий:
      • int number - номер документа до применения шаблона формата номера
      • string format - формат номера (если нужен) [пример: {cnum}-{MM}{YY}/{YYYY}]
  • document_addfilter - выполнение функции перед добавлением Документа (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • document_editfilter - выполнение функции перед сохранением изменений Документа (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • document_add - выполнение функции после добавления Документа

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array docdata - массив данных для Документа
    • здесь обрабатываем данные как нам нужно
  • document_edit - выполнение функции после сохранения изменений Документа

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array docdata - массив данных для Документа
    • здесь обрабатываем данные как нам нужно
  • document_generate_filter - коррекция данных Документа перед генерацией (фильтр)

    • входящие данные
      1. array docdata - массив данных для генерации Документа
    • следует вернуть эти данные после обработки
  • document_tags_filter - выполнение функции перед генерацией Документа (фильтр)

    • входящие данные
      1. array tags - массив тегов для Документа
    • следует вернуть эти данные после обработки
  • document_generate - генерация Документа

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array docdata - массив данных
        • file - сгенерированный файл
        • name - имя файла
        • deid - id документа
    • здесь обрабатываем данные как нам нужно
  • document_send_filter - выполнение функции перед отправкой Документа по email

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array docdata - массив данных
    • здесь обрабатываем данные как нам нужно
  • document_send - выполнение функции после отправки Документа по email

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array docdata - массив данных
    • здесь обрабатываем данные как нам нужно
  • document_delete - удаление Документа
    • входящие данные
      • int id - id Документа

Обращения

Фильтры и действия, связанные с Обращениями. Позволяют добавлять свои элементы в форму, изменять их перед добавлением Обращений, а также выполнять собственные действия.

  • entry_form_before - блок перед формой Обращения

    • входящие данные ($_REQUEST)
  • entry_form_after - блок после формы Обращения

    • входящие данные ($_REQUEST)
  • entry_addfilter - выполнение функции перед добавлением Обращения (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • entry_editfilter - выполнение функции перед сохранением изменений Обращения (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • entry_add - выполнение функции после добавления Обращения

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array entrydata - массив данных для Обращения
    • здесь обрабатываем данные как нам нужно
  • entry_edit - выполнение функции после сохранения изменений напоминания
    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
        1. array entrydata - массив данных для Обращения
    • здесь обрабатываем данные как нам нужно

Контрольные точки (КТ)

Действия, связанные с КТ. Позволяют изменять данные перед обработкой, а также выполнять собственные действия.

  • cp_addfilter - выполнение функции перед добавлением КТ (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • cp_editfilter - выполнение функции перед сохранением изменений КТ (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • cp_add - выполнение функции после добавления КТ

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array data - массив данных для КТ
    • здесь обрабатываем данные как нам нужно
  • cp_edit - выполнение функции после сохранения изменений КТ

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array data - массив данных для КТ
    • здесь обрабатываем данные как нам нужно
  • cp_doit - выполнение функции после выполнения КТ

    • входящие данные
      1. int id - id КТ
      2. array data - массив данных для КТ
    • здесь обрабатываем данные как нам нужно
  • cp_undoit - восстановление КТ

    • входящие данные
      • int id - id КТ
  • cp_delete - удаление КТ
    • входящие данные
      • int id - id КТ

Заявки

Фильтры и действия, связанные с Заявками. Позволяют добавлять свои элементы в форму, изменять их перед обработкой Заявок, а также выполнять собственные действия.

  • lead_form_before - блок перед формой добавления/редактирования Заявки

    • входящие данные ($_REQUEST)
  • lead_form_after - блок после формы добавления/редактирования Заявки

    • входящие данные ($_REQUEST)
  • lead_addfilter - выполнение функции перед добавлением Заявки (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • lead_editfilter - выполнение функции перед сохранением изменений Заявки (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • lead_add - выполнение функции после добавления Заявки

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array leaddata - массив данных для Заявки
    • здесь обрабатываем данные как нам нужно
  • lead_edit - выполнение функции после сохранения изменений Заявки

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array leaddata - массив данных для Заявки
    • здесь обрабатываем данные как нам нужно
  • lead_workitform_before - блок перед формой обработки Заявки

    • входящие данные ($_REQUEST)
  • lead_workitform_after - блок после формы обработки Заявки

    • входящие данные ($_REQUEST)
  • lead_workitfilter - выполнение функции перед обработкой Заявки (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • lead_workit - выполнение функции после обработки Заявки

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array leaddata - массив данных для Заявки
    • здесь обрабатываем данные как нам нужно
  • lead_delete - удаление Заявки

    • входящие данные
      • int id - id Акта
  • lead_setuserform_before - блок перед формой обработки Заявки

    • входящие данные ($_REQUEST)
  • lead_setuserform_after - блок после формы обработки Заявки

    • входящие данные ($_REQUEST)
  • lead_setuserfilter - выполнение функции перед обработкой Заявки (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • lead_setuser - выполнение функции после обработки Заявки ( если назначается куратор )

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array leaddata - массив данных для Заявки
    • здесь обрабатываем данные как нам нужно
  • lead_close - выполнение функции после обработки Заявки ( если заявка закрывается )
    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array leaddata - массив данных для Заявки
    • здесь обрабатываем данные как нам нужно

Проекты

Фильтры и действия, связанные с Проектами. Позволяют добавлять свои элементы в форму, изменять их перед сохранением Проектов, а также выполнять собственные действия.

  • project_form_before - блок перед формой добавления/изменения Проекта

    • входящие данные ($_REQUEST)
  • project_form_after - блок после формы добавления/изменения Проекта

    • входящие данные ($_REQUEST)
  • project_addfilter - выполнение функции перед добавлением Проекта (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • project_editfilter - выполнение функции перед сохранением изменений Проекта (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • project_add - выполнение функции после добавления Проекта

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array projectdata - массив данных для Проекта
    • здесь обрабатываем данные как нам нужно
  • project_edit - выполнение функции после изменения Проекта

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array projectdata - массив данных для Проекта
    • здесь обрабатываем данные как нам нужно
  • project_delete - удаление Проекта

    • входящие данные
      • int id - id Проекта
  • project_statusform_before - блок перед формой изменения статуса Проекта

    • входящие данные ($_REQUEST)
  • project_statusform_after - блок после формы изменения статуса Проекта

    • входящие данные ($_REQUEST)
  • project_statusfilter - выполнение функции перед сохранением изменений статуса Проекта (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • project_status - выполнение функции после изменения статуса Проекта

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array projectdata - массив данных для Проекта
    • здесь обрабатываем данные как нам нужно
  • projectwork_form_before - блок перед формой добавления/изменения Работы

    • входящие данные ($_REQUEST)
  • projectwork_form_after - блок после формы добавления/изменения Работы

    • входящие данные ($_REQUEST)
  • projectwork_addfilter - выполнение функции перед добавлением Работы (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • projectwork_editfilter - выполнение функции перед сохранением изменений Работы (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • projectwork_add - выполнение функции после добавления Работы

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array workdata - массив данных для Работы
    • здесь обрабатываем данные как нам нужно
  • projectwork_edit - выполнение функции после изменения Работы

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array workdata - массив данных для Работы
    • здесь обрабатываем данные как нам нужно
  • projectwork_delete - удаление Работы

    • входящие данные
      • int id - id Работы
  • projectwork_statusform_before - блок перед формой изменения статуса Работы

    • входящие данные ($_REQUEST)
  • projectwork_statusform_after - блок после формы изменения статуса Работы

    • входящие данные ($_REQUEST)
  • projectwork_statusfilter - выполнение функции перед сохранением изменений статуса Работы (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • projectwork_status - выполнение функции после изменения статуса Работы
    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array workdata - массив данных для Работы
    • здесь обрабатываем данные как нам нужно

Бюджет

Фильтры и действия, связанные с Бюджетом. Позволяют добавлять свои элементы в форму, изменять их перед сохранением, а также выполнять собственные действия.

  • budjet_form_before - блок перед формой добавления/редактирования/клонирования Расхода

    • входящие данные ($_REQUEST)
  • budjet_form_after - блок после формы добавления/редактирования Расхода

    • входящие данные ($_REQUEST)
  • budjet_addfilter - выполнение функции перед добавлением Расхода (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • budjet_editfilter - выполнение функции перед сохранением изменений Расхода (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • budjet_add - выполнение функции после добавления Расхода

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array budjetdata - массив данных для Расхода
    • здесь обрабатываем данные как нам нужно
  • budjet_edit - выполнение функции после сохранения изменений Расхода

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array budjetdata - массив данных для Расхода
    • здесь обрабатываем данные как нам нужно
  • budjet_moveform_before - блок перед формой перемещения средств

    • входящие данные ($_REQUEST)
  • budjet_moveform_after - блок после формы перемещения средств

    • входящие данные ($_REQUEST)
  • budjet_movefilter - выполнение функции перед перемещением средств (фильтр)

    • входящие данные - массив данных ($_REQUEST)
    • следует вернуть эти данные после обработки
  • budjet_move - выполнение функции после перемещения средств

    • входящие данные
      1. array post - массив всех пришедших из формы данных ($_REQUEST)
      2. array budjetdata - массив данных для Расхода
    • здесь обрабатываем данные как нам нужно
  • budjet_unmove - выполнение функции после отмены перемещения средств

    • входящие данные
      • int id - id Расхода
    • здесь обрабатываем данные как нам нужно
  • budjet_do - выполнение функции после проведения Расхода

    • входящие данные
      • int id - id Расхода
    • здесь обрабатываем данные как нам нужно
  • budjet_undo - выполнение функции после отмены проведения Расхода

    • входящие данные
      • int id - id Расхода
    • здесь обрабатываем данные как нам нужно
  • budjet_delete - удаление Расхода
    • входящие данные
      • int id - id Расхода

Карточки

В этом разделе описаны возможности вставки своих элементов в карточки Клиентов, Контактов, Сделок

  • card_tab - массив данных, требуемый для добавления новой вкладки
    • входящие данные
      • str type - тип карточки: client, contact, deal, project, workplan
      • int id - id записи, соответственно: clid, pid, did, projectid, id
    • ожидаемые данные
      • array tab
        • str name - имя вкладки ( латиница, без пробелов )
        • str title - название вкладки ( отображается )
        • str icon - класс иконки ( см. /font/fontello/demo.html )
        • str url - адрес скрипта, загружаемого во вкладку

Пример применения:

$hooks -> add_filter( "card_tab", "schat_card_tab" );

function schat_card_tab($tab = [], $params = []){

    if($params['type'] == 'client' && $params['clid'] > 0){

        $tab[] = [
            "name"  => "schat",
            "title" => "Диалоги",
            "class" => "",
            "icon"  => "icon-chat",
            "url"   => "/socialChats/php/card.php"
        ];

    }

    return $tab;

}