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

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Доступно с 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