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

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

CRM / ERP системи
CRM NDTmanager — головна сторінка з віджетами

Клієнт

Про клієнта

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

Cкриншот кейсу №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 хвилин