Розробка 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
На цьому все, але ми будемо раді попрацювати над вашим проєктом!