Разработка CRM системы с нуля для TristateNDT

Разработка CRM системы с нуля для TristateNDT

CRM / ERP системы
CRM NDTmanager — главная страница с виджетами

Клиент

О клиенте

TristateNDT — американская компания из Нью-Йорка (США), специализирующаяся на неразрушающем контроле труб теплообменников. Инженеры TristateNDT выезжают на площадки заказчиков и с помощью собственного оборудования тестируют трубы различными методами: вихретоковый контроль (Eddy Current), IRIS, RFT и другие. Собственные тестовые приборы компании интегрированы с CRM через API — результаты замеров автоматически подтягиваются в отчёты, без ручного ввода.

Скриншот кейса №1 – Разработка CRM системы с нуля для TristateNDT

Цели и задачи

Цели и задачи

1. Перевести бизнес из Excel в полноценную CRM. До разработки команда TristateNDT вела все выезды, заказы и платежи в Excel-таблицах. Готовых SaaS-решений под NDT-индустрию на рынке не существовало — нужна была кастомная система под специфику неразрушающего контроля труб.

2. Календарь-диспетчер с drag-and-drop и real-time обновлениями. Интерактивное планирование выездов техников с пулом нераспределённых заявок (Unassigned Pool), статусами Pending → Scheduled → Confirmed → Dispatched и синхронизацией изменений через WebSocket между всеми открытыми сессиями менеджеров.

3. Сквозной sales-workflow. Реализовать полную цепочку от предварительной оценки до инвойса: Estimate → Quote → Purchase Order → Order → Invoice. Без двойного ввода данных, с автоматической конвертацией между сущностями.

4. Интеграция тестового оборудования через API. Собственные приборы TristateNDT должны отдавать данные замеров в CRM через REST API, чтобы результаты автоматически попадали в соответствующие секции заказа без ручного переписывания с бумаги.

5. NDT-специфика с нуля. Покрыть вихретоковый контроль (Eddy Current), секции оборудования теплообменников, тарифы Eddy Current Tier, Embargo-политику дебиторки, юниты тестового оборудования, Time Off техников со всеми отраслевыми кодами.

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

Результат

Результат

Разработали с нуля полноценную отраслевую CRM/ERP систему под TristateNDT — около 35 модулей от календаря-диспетчера и клиентской базы до финансового контура с Embargo-политикой и интеграции тестового оборудования через API. Заказчик полностью перешёл с Excel на NDTmanager: все выезды, заказы, счета и платежи теперь ведутся в одной системе. Дизайн разрабатывал клиент самостоятельно, Moveiton отвечала за вёрстку (фронт) и программирование (бек) всех модулей согласно ТЗ.

Команда
  • Менеджер проекта
  • Бэкенд-разработчик
  • Фронтенд-разработчик
Технологии
  • PHP
  • CodeIgniter 4
  • MySQL
  • Vue.js
  • Bootstrap
  • HTML
  • CSS
  • JavaScript
  • REST API

Календарь-диспетчер с drag-and-drop

Сердце системы — интерактивный календарь планирования выездов с real-time обновлениями через WebSocket. Менеджер видит всех техников в виде колонок, тащит визит из списка нераспределённых заявок (Unassigned Pool) на нужный день и час — и изменения мгновенно появляются во всех остальных открытых сессиях диспетчеров, без перезагрузки страницы. Поддерживаются статусы Pending → Scheduled → Confirmed → Dispatched. Все выезды привязаны к техникам, юнитам оборудования и заказам — система не даёт создать двойное бронирование.

Календарь-диспетчер с drag-and-drop

Управление визитами и Dispatch

Отдельная страница со списком всех запланированных выездов — с фильтрами по дате, технику, статусу и клиенту. Здесь же страница Dispatch для отправки бригад на объект: смена статуса визита, привязка оборудования, контроль готовности Ready Units и логика линковки Orders ↔ Visits ↔ Technicians.

Управление визитами и Dispatch

Карточка визита в модальном окне

Полная карточка визита в одной модалке: дата и время, назначенные техники, юниты оборудования, привязанный Order и список секций оборудования для тестирования. Поддерживает редактирование в любой момент с сохранением истории изменений и автоматическим перерасчётом расписания.

Карточка визита в модальном окне

Заказы (Orders)

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

Заказы (Orders)

Создание заказа

Многошаговый wizard создания заказа: выбор клиента, адреса с координатами, набор секций оборудования с поиском по существующим юнитам, расчёт стоимости по тарифам Eddy Current Tier. Вся сложная NDT-логика ценообразования зашита в форму — менеджер заполняет бизнес-поля, система считает суммы.

Создание заказа

Карточка заказа Eddy Current

Специализированная карточка заказа для вихретокового контроля (Eddy Current). Внутри — список секций оборудования с типами труб, их количеством и конфигурацией тестирования. Собственные тестовые приборы TristateNDT отдают данные замеров в CRM через API, и результаты автоматически привязываются к соответствующим секциям.

Карточка заказа Eddy Current

Коммерческие предложения (Quotes)

Модуль котировок (КП) с двумя типами bundle: Eddy Current и Non-EC. Менеджер собирает предложение из секций оборудования и юнитов, формирует PDF и отправляет клиенту прямо из системы через sendQuote / sendEmailWithQuote. Статус котировки отслеживается вплоть до конвертации в Order.

Коммерческие предложения (Quotes)

Конструктор коммерческого предложения

Интерактивный конструктор Quote: подбор позиций из каталога услуг (Eddy Current Tier, Other Services), добавление секций оборудования клиента, ручная корректировка цен и скидок. Автоматический расчёт итогов с валютным форматированием через v-money.

Конструктор коммерческого предложения

Предварительные сметы (Estimates)

Первый шаг sales-pipeline: Estimate — предварительная оценка работ до подготовки финального Quote. Позволяет быстро зафиксировать скоуп работ, предложить клиенту черновую стоимость и потом перевести в полноценное коммерческое.

Предварительные сметы (Estimates)

Счета и Embargo-политика

Инвойсы с цветовой индикацией статусов: overdue (красный), paid (чёрный), partially paid (жёлтый). Поддержка напоминаний (sendReminder), Share-ссылок и автоматической Embargo-политики: при просроченной оплате свыше 90 дней, отсутствии PO, holiday hold или у первого клиента — система блокирует новые работы до закрытия долга.

Счета и Embargo-политика

Приём платежей от клиентов

Регистрация полученных платежей от клиентов с привязкой к конкретным инвойсам. Поддерживаются частичные оплаты, несколько инвойсов одним платежом и разные методы (чек, ACH, карта). Каждый платёж снижает дебиторку и снимает Embargo по правилам.

Приём платежей от клиентов

Банковские депозиты и сверка

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

Банковские депозиты и сверка

Purchase Orders от клиентов

Отдельный модуль для управления PO (Purchase Orders) — заказами на закупку, которые присылает клиент перед стартом работ. CRM хранит номер PO, файл документа и привязывает его к секциям заказа. Если PO отсутствует — у клиента автоматически включается Embargo и новые работы блокируются.

Purchase Orders от клиентов

База клиентов с финансовой историей

База клиентов с полными карточками: компания, контакты, адреса, статус Embargo, финансовая история, все заказы и инвойсы. Отдельный экран добавления нового клиента с валидацией и проверкой дубликатов. Поддержка primary-клиентов (исключаются из некоторых правил Embargo).

База клиентов с финансовой историей

Адреса с геокодированием (lat/lng)

Отдельный справочник адресов с геокодированием (lat/lng). На каждом выезде технику выдаётся конкретная точка с координатами — это фундамент под будущую интеграцию Google Maps Directions и трекинг GPS через MQTT-устройства.

Адреса с геокодированием (lat/lng)

Техники и Time Off (отпуска)

Карточки техников с контактами, ставкой, навыками и привязкой к юнитам оборудования. Отдельный модуль Time Off с кодами PTO, VAC, SCK, HOL, BEV, JDY, PPL, BTO, UTO — отпуска и отсутствия автоматически блокируют слоты в календаре.

Техники и Time Off (отпуска)

Юниты оборудования и интеграция через API

Каталог тестового оборудования TristateNDT (юниты) с привязкой к техникам и заказам. Самое важное — каждый прибор интегрирован с CRM через REST API: данные замеров с полевого устройства автоматически попадают в соответствующую секцию заказа без ручного ввода. Это ключевая интеграция, которая убрала ошибки переписывания цифр с бумаги.

Юниты оборудования и интеграция через API

Каталог услуг и тарифов

Настройка каталога услуг: тарифы Eddy Current Tier (дифференциация по сложности и типу труб) и Other Services. Все котировки и инвойсы берут цены из этого справочника — изменил ставку в одном месте, пересчиталось везде.

Каталог услуг и тарифов

Отчёты и дашборд с 7 виджетами

Отчётность по бизнесу: Travel-отчёт по техникам (пробег, время в дороге), анализ доходов за год, дебиторка по клиентам. На дашборде — 7 виджетов: Invoice Summary, Income, Job Confirmation, Top-10 клиентов, Income by Method, Year-on-Year, User Activities.

Отчёты и дашборд с 7 виджетами

Многоролевая система и журнал активности

Многоролевая система: менеджеры, диспетчеры, бухгалтеры, техники. Каждая роль видит свой набор модулей. Отдельный лог UsersActivity записывает все действия — кто создал заказ, кто изменил статус инвойса, кто добавил платёж. Профиль пользователя с настройками уведомлений и доступа.

Многоролевая система и журнал активности

Все ключевые экраны CRM

the end.

На этом все, но мы будем рады поработать над вашим проектом!

Telegram
Написать в Telegram Ответим за 5 минут