На работе поступила заявка на интеграцию нашей облачной кассы с clientbase.ru.
На самом сайте ClientBase написано:
CRM Система Клиентская База - Кроссплатформенная CRM-система для ведения клиентской базы, позволяющая в короткие сроки автоматизировать любой бизнес без привлечения программистов.
Под кроссплатформенностью подразумевается движок на php
.
Коротко простыми словами: создаем список таблиц со своими полями, связываем столбцы, назначаем обработчики на разные табличные события (можно даже php код вставить) - CRM готова.
Маркетинг немного лукавит, программист здесь нужен, но его действия можно минимизировать :)
Первая моя заявка в техническую поддержку через сайт была проигнорирована, удалось найти решение самостоятельно.
На вторую заявку (через то же место) ответ дали только через 3 дня.
Общение через чат на сайте оставляет желать лучшего, ответы либо не доходят либо на них долго отвечают - через несколько дней появляются, хотя в онлайн чате ответы должны появляться в течении нескольких минут, а не дней.
Недолгое общение с ТП позволило понять что толку от ТП нет и единственный проводник в мир конструктора CRM ClientBase это сконструированная CRM клиента и документация.
Документация это не краткий и удобный гайд в мир конструктора CRM, как например в AmoCRM. Однако, ответ на один из главных своих вопросов я получил.
Кстати, в сосденей статье рассмотрен опыт интеграции с AmoCRM.
Основной строительный элемент CRM - это таблицы (да, самые простые таблицы в контексте СУБД).
Идем в Настройки
- выбираем нужную категорию таблиц - выбираем таблицу.
В разделе "Поля" можно просмотреть список вообще всех столбцов таблицы и узнать внутренние имена (они действительно могут пригодиться).
Для интеграции я использовал Доп. действия с Вычислением.
В разделе "Доп. действия" можно добавить кнопку (обработчик события клика по кнопке и есть то самое "Доп. действие") и вставить в нее php
и/или js
код.
В вычислениях доступно все тоже самое что доступно в php
, для http
запросов я использовал curl
.
Применить доп. действие к записи можно на странице просмотра записи:
Либо при просмотре таблицы отметить нужные строки и выбрать действие:
В самом простом варианте в php
коде мы можем использовать глобальную переменную $line
(ассоциативный массив), которая и есть та самая строка с которой мы работаем. Обращаться к элементам массива можно по реальным названием столбцов типа $line['f513']
или по псевдонимам $line['Сумма']
, данные доступны на чтение/запись.
Если написать и сохранить код, который обращается по реальным именам, то при следующем открытии кода реальные имена будут заменены на псевдонимы, что удобно.
Если записать в элемент массива
$line
какие-либо данные, а затемexit
, то данные в ячейке не сохранятся. Вместо этого в вычислении нужно использоватьreturn
.
Если нужно обратиться к связной сущности, на которую в данной таблице есть ссылка по ID
то достаточно просто обратиться к элементу массива с этим самым ID
:
// вывод данных контрагента
print_r($line['Гость']);
Записывать в таблицы можно при помощи функции insert_query
, а извлекать данные из таблиц (когда по связям из текущей строки не дотянутся) можно при помощи функции data_select_array
. Обе они хорошо описаны в приведенной выше ссылке.
// выборка данных
$aPayer = data_select_array(2391, "id=", 113);
// запись
$data['Дата'] = date("Y-m-d H:i:s");
$data['Сумма'] = $line['К оплате'];
$data['Назначение'] = $sPaymentName;
$data['Плательщик'] = $aPayer['id'];
$data['Получатель'] = $line['Собственник']['ID'];
$data['Форма оплаты'] = 'безнал';
$data['Комментарий'] = 'ТЕСТ УДАЛИТЬ';
$idNew = insert_query($data, "Оплаты");
Для второй задачи клиента, мне потребовалось разместить на сервере клиента pem
сертификат и ключ сертификата. Но вот вовремя ответ от ТП ClientBase получить не удалось, поэтому пришлось выкручиваться самому.
Каждый клиентский сайт судя по всему расположен на своей vps и юзер, который запускает скрипты, а точнее вычисления в "Доп. действиях", имеет право на запись/чтение вне корня сайта. Поэтому можно воспользоваться этой возможностью и разместить свои файлы там где надо при помощи file_get_contents/file_put_contents.
Как выяснилось позже, ClientBase предоставляет ftp своим клиентам в облаке, но не к корню файловой системы, а мы тут ходим везде ...
Изначально идея конструктора CRM мягко говоря не вызывала восторга, но по мере изучения устройства клиентской CRM и несколькоих интеграций, мнение изменилось - идея классная, но над реализацией еще нужно работать.
Скорость работы приемлемая, но порой очень медленно (может быть все дело этих самых "Вычислениях"?).
Сперва я подумал что это молодой стартап, которому едва исполнилось пару лет, но спустившись в футер (копирайт 2009 - 2020) увидел что это уже взрослый проект, что весьма не похоже.