Разработка CRM системы с нуля для TristateNDT
Клиент
О клиенте
TristateNDT — американская компания из Нью-Йорка (США), специализирующаяся на неразрушающем контроле труб теплообменников. Инженеры TristateNDT выезжают на площадки заказчиков и с помощью собственного оборудования тестируют трубы различными методами: вихретоковый контроль (Eddy Current), IRIS, RFT и другие. Собственные тестовые приборы компании интегрированы с CRM через API — результаты замеров автоматически подтягиваются в отчёты, без ручного ввода.
- Веб-сайт: tristatendt.com
- Сроки разработки: 8 месяцев
- Использованные услуги: Разработка CRM / ERP системы
Цели и задачи
Цели и задачи
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. Все выезды привязаны к техникам, юнитам оборудования и заказам — система не даёт создать двойное бронирование.
Управление визитами и Dispatch
Отдельная страница со списком всех запланированных выездов — с фильтрами по дате, технику, статусу и клиенту. Здесь же страница Dispatch для отправки бригад на объект: смена статуса визита, привязка оборудования, контроль готовности Ready Units и логика линковки Orders ↔ Visits ↔ Technicians.
Карточка визита в модальном окне
Полная карточка визита в одной модалке: дата и время, назначенные техники, юниты оборудования, привязанный Order и список секций оборудования для тестирования. Поддерживает редактирование в любой момент с сохранением истории изменений и автоматическим перерасчётом расписания.
Заказы (Orders)
Список всех заказов с поиском, сортировкой и фильтрами по клиенту, статусу и периоду. Каждый заказ имеет свой набор секций оборудования, привязанный PO от клиента, график выездов и финансовый статус. Поддерживаются длинные заказы с несколькими визитами и поэтапным биллингом.
Создание заказа
Многошаговый wizard создания заказа: выбор клиента, адреса с координатами, набор секций оборудования с поиском по существующим юнитам, расчёт стоимости по тарифам Eddy Current Tier. Вся сложная NDT-логика ценообразования зашита в форму — менеджер заполняет бизнес-поля, система считает суммы.
Карточка заказа Eddy Current
Специализированная карточка заказа для вихретокового контроля (Eddy Current). Внутри — список секций оборудования с типами труб, их количеством и конфигурацией тестирования. Собственные тестовые приборы TristateNDT отдают данные замеров в CRM через API, и результаты автоматически привязываются к соответствующим секциям.
Коммерческие предложения (Quotes)
Модуль котировок (КП) с двумя типами bundle: Eddy Current и Non-EC. Менеджер собирает предложение из секций оборудования и юнитов, формирует PDF и отправляет клиенту прямо из системы через sendQuote / sendEmailWithQuote. Статус котировки отслеживается вплоть до конвертации в Order.
Конструктор коммерческого предложения
Интерактивный конструктор Quote: подбор позиций из каталога услуг (Eddy Current Tier, Other Services), добавление секций оборудования клиента, ручная корректировка цен и скидок. Автоматический расчёт итогов с валютным форматированием через v-money.
Предварительные сметы (Estimates)
Первый шаг sales-pipeline: Estimate — предварительная оценка работ до подготовки финального Quote. Позволяет быстро зафиксировать скоуп работ, предложить клиенту черновую стоимость и потом перевести в полноценное коммерческое.
Счета и Embargo-политика
Инвойсы с цветовой индикацией статусов: overdue (красный), paid (чёрный), partially paid (жёлтый). Поддержка напоминаний (sendReminder), Share-ссылок и автоматической Embargo-политики: при просроченной оплате свыше 90 дней, отсутствии PO, holiday hold или у первого клиента — система блокирует новые работы до закрытия долга.
Приём платежей от клиентов
Регистрация полученных платежей от клиентов с привязкой к конкретным инвойсам. Поддерживаются частичные оплаты, несколько инвойсов одним платежом и разные методы (чек, ACH, карта). Каждый платёж снижает дебиторку и снимает Embargo по правилам.
Банковские депозиты и сверка
Управление депозитами в банк: группировка полученных платежей в пачки и регистрация факта внесения на банковский счёт. Позволяет сверять данные CRM с банковскими выписками и держать кассовую дисциплину в порядке.
Purchase Orders от клиентов
Отдельный модуль для управления PO (Purchase Orders) — заказами на закупку, которые присылает клиент перед стартом работ. CRM хранит номер PO, файл документа и привязывает его к секциям заказа. Если PO отсутствует — у клиента автоматически включается Embargo и новые работы блокируются.
База клиентов с финансовой историей
База клиентов с полными карточками: компания, контакты, адреса, статус Embargo, финансовая история, все заказы и инвойсы. Отдельный экран добавления нового клиента с валидацией и проверкой дубликатов. Поддержка primary-клиентов (исключаются из некоторых правил Embargo).
Адреса с геокодированием (lat/lng)
Отдельный справочник адресов с геокодированием (lat/lng). На каждом выезде технику выдаётся конкретная точка с координатами — это фундамент под будущую интеграцию Google Maps Directions и трекинг GPS через MQTT-устройства.
Техники и Time Off (отпуска)
Карточки техников с контактами, ставкой, навыками и привязкой к юнитам оборудования. Отдельный модуль Time Off с кодами PTO, VAC, SCK, HOL, BEV, JDY, PPL, BTO, UTO — отпуска и отсутствия автоматически блокируют слоты в календаре.
Юниты оборудования и интеграция через API
Каталог тестового оборудования TristateNDT (юниты) с привязкой к техникам и заказам. Самое важное — каждый прибор интегрирован с CRM через REST API: данные замеров с полевого устройства автоматически попадают в соответствующую секцию заказа без ручного ввода. Это ключевая интеграция, которая убрала ошибки переписывания цифр с бумаги.
Каталог услуг и тарифов
Настройка каталога услуг: тарифы Eddy Current Tier (дифференциация по сложности и типу труб) и Other Services. Все котировки и инвойсы берут цены из этого справочника — изменил ставку в одном месте, пересчиталось везде.
Отчёты и дашборд с 7 виджетами
Отчётность по бизнесу: Travel-отчёт по техникам (пробег, время в дороге), анализ доходов за год, дебиторка по клиентам. На дашборде — 7 виджетов: Invoice Summary, Income, Job Confirmation, Top-10 клиентов, Income by Method, Year-on-Year, User Activities.
Многоролевая система и журнал активности
Многоролевая система: менеджеры, диспетчеры, бухгалтеры, техники. Каждая роль видит свой набор модулей. Отдельный лог UsersActivity записывает все действия — кто создал заказ, кто изменил статус инвойса, кто добавил платёж. Профиль пользователя с настройками уведомлений и доступа.
Все ключевые экраны CRM
На этом все, но мы будем рады поработать над вашим проектом!