Разработать свою CRM или купить готовую? Сказ о том, как я писал свою CRM систему

Опубликовано:
28.11.2020 в 10:30
Категория:
Предисловие: В данной статье я расскажу, как я пришел к выводу, что идеальной CRM не бывает. Как я прекратил поиски лучшего решения и погрузился в разработку своей CRM системы.

С чего все началось

Все началось с того, что количество клиентов начинало неуклонно расти. Сам я могу сопровождать только 2-3 клиентов в месяц не больше, иначе я просто не смогу работать. Невозможно проводить бесконечные консультации, рассчитывать стоимость проектов и при этом пахать как лошадь)

Изначально я принял решение взять менеджера в команду. На тот момент мне казалось это лучшим решением проблемы. Однако как же я ошибался!

Одолжил в Яндекс Картинках

Бывали случаи, когда мне звонили клиенты и говорили прямым текстом:

"Ваш Иванов Иван Иваныч пиздюк редкостный, давайте лучше решим все с вами." 

Мне стало интересно в чем заключается дело. Почему к менеджеру такое предвзятое отношение. Послушав запись телефонного разговора я понял, что менеджер вообще ничего не понимает в веб-разработке. 

На все высокоинтеллектуальные вопросы клиента следовали ответы такого плана:

"Да все сделаем", "Не волнуйтесь - это как два пальца" и тд.

Соответственно, когда проект находился в разработке клиент радовал меня новыми сюжетными твистами: 

"Я говорил вашему Иванову Ивану Ивановичу, что мне нужно подключать платежку и API почты России, он сказал, будет сделано".

Чаго!!! Подумал я. Оказывается менеджер в очередной раз что-то не понял! Так мы и расстались с нашим "Ивановым Иваном Ивановичем", учиться он не хотел, его интересовали лишь проценты с проекта. А качество добываемых проектов было очень низким. Крупный заказчик не баран и понимает явно больше чем типичный манарюга. А реклама капает, деньги уходят.

Решение проблемы очевидно. Не пускать менеджера в проект! Но тогда какой смысл делегировать бюрократические полномочия и платить процент! Так я стал искать решение данной проблемы и пустил свой взор на CRM системы.

Какие задачи я ставил перед своей CRM системой

  • Клиенты с указанием источников, статусов, компаний, проектов, смет, документов.
  • Проекты с привязкой к клиенту с расчетом сроков по дням.
  • Компании (ИП) с автозаполнением и привязкой к клиенту
  • Сметы с привязкой к клиенту его компаниям и проектам. С указанием услуг, их количества, расчета общей стоимости.  Смета и счет должны заполняться и генерироваться в одном интерфейсе.
  • Услуги с указанием стоимости за ед.
  • Документы с привязкой к шаблонам и генерацией из переменных.

Если простыми словами, то я просто хочу добавить клиента и быстро сгенерировать все "бумажки". Пусть это будет чудо, магия как угодно назовите лишь бы этим не заниматься!

Поиск CRM системы, дорога в тупик

Про существование CRM систем слышали многие. Как правило, это точно такие же сайты, которые базируется на веб-технологиях. Я стал изучать рынок CRM систем, перепробовал целую массу решений, но всегда сталкивался с одними и теми же проблемами. 

Слишком много функционала и искать заветные функции нужно как иголку в стоге сена. Либо минимализм ради минимализма и работать попросту невозможно!

Большая проблема в том что приходится тратить вагон времени на выполнение простых задач. 

  • Добавить клиента 5 минут. 
  • Компанию 10 минут.
  • Сгенерировать документы еще 20-30 минут. 

В итоге я получаю минимальный прирост в скорости. Идеальная CRM система та, в которой ты проводишь как можно меньше времени.

Как я пришел к разработке своей CRM системы

После долгих изысканий я понял, что пора, что-то делать. Забитые папки с проектами, куева-хуча .xls документов и прочей мерзости не давали мне покоя. Я склонировал Laravel и начал "творить". 

Спустя пару часов понял, что я делаю что-то не так. Ударил себя по башке и сел за рисование. Необходимо проработать связи, таблицы, состав моделей.

Один вечер с пивасиком дал свой результат. 

Моя с позволения сказать архитектура)

Это чуть более профессиональный подход ежели писать код из головы. Мне кажется простые связи проще всего в реализации и удобнее в эксплуатации чем полиморфные

Хочется обратиться к сущности как есть, например customer, а не companyable. Прикинув весь объем работ я понял, что это надолго. Пришлось отбросить родной Laravel и писать на October CMS. 

Это оказалось правильным решением. На октябре все пишется одним взмахом пера.

В итоге через 4 дня я получил готовую CRM с кучей багов. А еще через 5 дней в ней уже можно полноценно работать. И вот что у меня получилось:

1. Управление клиентами

Раздел получился кошерный. Вся нужная информация отображается в таблице. Можно написать на емейл в чаты или позвонить в 1 клик.

Список клиентов

Вывод элементов осуществляется по 10 штук, далее в дело вступает пагинация. Она асинхронная, так что перезагрузок при смене страницы нет. 

Кнопки типа показать еще не делал, мне кажется, что когда-то надо будет иметь возможность показать другому пользователю определенного клиента на 100500 странице.

Статусы и источники тоже имеют свои настройки.

Управление статусами и источниками


Как видите все достаточно просто. Верстал на спех, дизайн взял из головы. Очень удобно реализованы формы. В основном использую стандартные браузерные input, правда для некоторых задач пришлось выдумывать что-то свое. 


Форма управления клиентами

Так я сделал несколько кастомных checkbox и полей. Например, выбор статуса в стилизованных checkbox, для чатов стилизованные блоки со скрытыми input. Но все не ради стиля, а для удобства.

Сами формы разбиты на вкладки. Данный вариант честно скоммуниздил у October CMS. Мне кажется это отличное решение. Плюс можно скрывать целыми вкладками поля, которые требуют что бы модель была в уже наличии. (связи)

Из основных особенностей это все, давайте теперь посмотрим что у меня еще есть интересного для вас.

2. Управление компаниями

Сколько данных содержит одна компания? Просто безумное количество, это инн, огрн, кпп и тд. Добавьте к этому страшные цифры расчетных и  кор. счетов. Одна ошибка в сотнях цифр и все, капут! Для решения этой рутинной задачи я воспользовался сервисом "Дадата". Бесплатных 10т запросов мне вполне хватит. Теперь я заполняю только 3 поля. 

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

Искать можно по любым реквизитам, после клика происходит автозаполнение полей. Третье поле это расчетный счет. К сожалению его нужно вводить вручную (ctrl + c, ctrl + v).

Управление компаниями

4. Управление сметами и услугами, отправка счетов

Самое бесячее в основной деятельности работников малого бизнеса это документооборот. Многие банки уже предоставляют свои прекрасные приложения для смартфонов. Но где удобнее набивать смету услугами представляя звон шекелей? Естественно классическим методом набора символов через клавиатуру вашего компуктера!

Все предельно просто. Создаем нужные нам услуги:

Список услуг

У меня только услуги товаров нет. Но зачем-то я дополнительно сделал таблицу с ед. измерений. На схеме моделей ее нет. В будущем пригодиться, наверное.

Созданные услуги уже можно крепить в смету. Выглядит это так:

Форма создание сметы

Все просто, данные по количеству услуг сохраняются в pivot таблицу отношения belongsToMany (estimates => services). Добавление услуг и расчеты происходят асинхронно, спасибо встроенному AJAX фреймворку Октября. В сметах я учитываю поступающие платежи, что бы было удобнее клиентам с рассрочкой. Они могут посмотреть сколько уже перевели средств и сколько осталось.

Для меня это выглядит так:

Список платежей в смете

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

Смета на печать

Помимо самих смет я очень постарался сделать удобным их общее отображение. В таблице я показываю общую сумму, платежи и остаток. Разным цветом (светофор) это позволяет быстро ориентироваться в ячейках. Дополнительно я отображаю общие сводки по сумме, платежам и остаткам (за все время) и доходы за текущий и прошлый месяц.

Планирую сделать главный экран и показать на нем "большую статистику" по годам, кварталам и тд. Буду рисовать графики и все по-православному. А вот как выглядит общая страница со сметами:

Список смет

Ко всему прочему я добавил кнопки для быстрой печати сметы (EST) или счета (INV). Естественно что бы это сработало необходимо привязать смету к клиенту. А добавил я эти пункты в таблицу, что бы была возможность печати напрямую из клиента без перехода в раздел смет.

В настоящий момент этот раздел меня полностью устраивает и покрывает мои потребности на 100%. Время от ввода клиента в систему до печати сметы занимает порядка 1,5 минуты без учета расчета стоимости услуг.

5. Управление проектами

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

Я веду учет времени и отсчитываю количество дней до завершения каждого проекта. Вроде простой функционал, но крайне полезный. Не нужно держать все в уме.

6. Печать документов

Вишенка на моем тортике. Вообще любая уважающая себя CRM должна мочь генерировать документы из шаблонов используя переменные. Что бы подготовить один договор в ручном режиме нужно потратить не меньше 30 минут, а с приложениями и вовсе час. Плюс сам процесс крайне утомителен.

Для решения этой задачи я создал всего 2 модели. Шаблоны документов (DocumentTemplate)  и документы (Document). Шаблон хранит уже готовый форматированный документ с проставленными переменными. А документ имеет связь с шаблоном и может получать контент из своего шаблона.

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

Форма создания документа

В качестве номера договора выступает его идентификатор, поэтому очень удобно создавать для него приложения установив связи. Остальные данные по связям между моделями. 

Обращение к данным очень удобное:

document->customer, 

document->company и тд.

Хочу сделать связь (document => documents) что бы можно было крепить один документ к другому. Этот момент я упустил изначально. 

В качестве редактора я использую обычный RichEditor. Его вполне достаточно для таких задач.

Куда дальше развивать это ЧУДОвище?

Об этом я думаю последние пару дней. В отличие от вендорных решений самописную легко масштабировать. Из ближайших планов я собираюсь сделать Dashboard со всей статистикой и расширить пользовательские роли. Сейчас в системе живет только администратор.

Необходимо учитывать расходы по каждому проекту, а так же считать налог по УСН с его заковыристым +1% если выручка превысила N рублей.

А вот после уже можно подумать о Канбан доске с задачами. Правда сейчас это лишнее. Уже сделал)

Что в итоге лучше самописная или готовая?

Не смотря на то что моей CRM системой уже можно пользоваться до продакшена она еще не доросла. Постепенно я приведу ее в нужный вид. 

Мне как разработчику лучше писать свою систему, потому что я могу. А бизнесу стоит подумать. Разработка таких CRM систем удовольствие не из дешевых. Но эффективность самописного решения намного выше чем любой коробочный продукт. 

Каждый элемент самописной CRM системы заточен под ваш бизнес. Ее можно расширять, за нее не нужно платить по 499 руб./мес за 1 пользователя и тд. Эх! Звучит как сказка!

Спасибо, что дочитал до конца, надеюсь тебе понравилось. Возможно скоро появяться ссылки с продолжением этой темы. 

Низкий поклон в пол и до новых встреч!

Оцените данный материал

0