Child pages
  • Рабочие процессы. Плагины
Skip to end of metadata
Go to start of metadata

Доступно с 1.20.00.

О рабочих процессах CRM и плагинах с точки зрения администратора

Здесь описана техническая часть, как работают плагины рабочих процессов в CRM, их техническую часть и примеры.

Техническая часть

Плагины для рабочих процессов находятся в папке Abills/modules/Crm/Plugins/Workflow
Они формируются как стандартный Perl package module.
Система автоматически сканирует данную папку на предмет валидных модулей.

Обязательным условием для данного API должен быть стандартный конструктор new($db, $admin, $CONF)
И функция непосредственной активации плагина - execute($lead_id)

Система вызывает функцию execute и передаёт в неё id потенциального клиента.
Также, с объектом, вы имеете доступ к базе, можете производить любые действия.
Также можно подключить любую другую библиотеку, и работать с ней.

Пример

плагин Work.pm
# Название плагина, должно совпадать с названием файла
package Crm::Plugins::Workflow::Work;

use strict;
use warnings FATAL => 'all';

=head1 NAME

  Crm::Plugins::Workflow::Work

=head2 SYNOPSIS

  Plugin for test

=cut

my $Crm;
use Abills::Base qw(in_array);
use Crm::db::Crm;
  
#**********************************************************
=head2 new($db,$admin,\%conf)

=cut
#**********************************************************
# Стандартный конструктор
sub new {
  my $class = shift;
  my ($db, $admin, $CONF) = @_;

  my $self = {
    db    => $db,
    admin => $admin,
    conf  => $CONF,
  };

  bless($self, $class);

  # Инициализируем объект Crm
  # Других объектов - рекомендуем делать здесь же, в конструкторе.
  $Crm //= Crm->new(@{$self}{qw/db admin conf/});

  return $self;
}

#**********************************************************
=head2 execute($lead_id)

=cut
#**********************************************************
# Обязательная функция плагина
sub execute {
  my $self = shift;
  my $lead_id = shift;
  
  my $lead = $Crm->crm_lead_info({ ID => $lead_id });
  my $step_id_hash = $Crm->crm_step_number_leads();

  # Исполняем любое нужное вам действие
  # Например, мы меняем информационное поле _IS_STARTED на позитивное значение.
  $Crm->crm_lead_change({
     ID            => $lead_id,
    _IS_STARTED   => 1
  });


  # Cоздаём комментарий.
  # Рекомендуем вам при каждой активации плагина создавать комментарий с нужным описанием
  # Чтобы потом, соответственно, понимать что происходило с данным потенциальным клиентом.
  $Crm->progressbar_comment_add({
    LEAD_ID => $lead_id,
    STEP_ID => $step_id_hash->{$lead->{CURRENT_STEP}} || 1,
    MESSAGE => 'Message created from the test plugin',
    DATE    => "$main::DATE $main::TIME"
  });
}

1;




  • No labels