Атестаційні завдання K2 ERP/TMS
Атестаційне завдання K2 ERP — TMS — це практична задача для перевірки навичок розробника або впроваджувача K2 ERP у створенні модуля управління транспортними перевезеннями.
Модуль має забезпечувати облік замовлень на доставку, транспортних засобів, водіїв, маршрутів, статусів доставки, витрат, друкованих документів і звітності.
Коротко. Потрібно реалізувати TMS-модуль, який дозволяє створювати замовлення на перевезення, призначати машину й водія, контролювати статус доставки, розраховувати вартість перевезення, друкувати транспортну накладну та аналізувати рентабельність транспорту.
Назва завдання
Модуль управління транспортними перевезеннями (TMS).
Мета завдання
Мета завдання — створити в K2 ERP модуль для управління доставками та транспортною логістикою.
Система повинна допомагати компанії контролювати весь процес перевезення: від створення замовлення до завершення доставки, формування документів і аналізу витрат.
У результаті модуль має дозволяти:
- вести довідник транспортних засобів;
- вести довідник водіїв;
- створювати замовлення на перевезення;
- планувати маршрути;
- призначати автомобіль і водія;
- контролювати статус доставки;
- розраховувати вартість перевезення;
- враховувати додаткові витрати;
- друкувати транспортну накладну;
- формувати акт виконаних робіт;
- будувати звіти по перевезеннях і рентабельності транспорту.
Головний принцип. TMS — це не просто список машин і водіїв. Це система керування доставкою: замовлення → маршрут → машина → водій → статус → витрати → документи → аналітика.
Реальний бізнес-контекст
Компанія здійснює доставку товарів власним або залученим транспортом.
У системі потрібно вести облік:
- замовлень на доставку;
- автомобілів;
- водіїв;
- маршрутів;
- витрат на перевезення;
- статусів виконання доставки;
- друкованих документів;
- рентабельності транспорту.
Менеджери повинні мати можливість призначати машини на замовлення, бачити доступність транспорту, контролювати статуси перевезень у реальному часі та отримувати документи після завершення доставки.
Основний бізнес-процес
Типовий процес роботи TMS-модуля виглядає так:
- менеджер створює замовлення на перевезення;
- вказує замовника, пункт відправлення і пункт призначення;
- задає планову дату завантаження та доставки;
- система пропонує доступні транспортні засоби;
- менеджер обирає машину та водія;
- замовлення переходить у статус «Призначено»;
- водій або менеджер запускає доставку;
- замовлення переходить у статус «В дорозі»;
- після завершення доставки замовлення переходить у статус «Доставлено»;
- система формує транспортну накладну та акт виконаних робіт;
- дані потрапляють у звіти по перевезеннях, витратах і рентабельності.
Основні об’єкти модуля
| Об’єкт | Призначення |
|---|---|
| Транспортні засоби | Автомобілі компанії або підрядників, які виконують перевезення |
| Водії | Працівники або підрядники, які керують транспортом |
| Контрагенти-замовники | Клієнти, які замовляють доставку |
| Замовлення на перевезення | Основний документ TMS-модуля |
| Маршрути | Пункт відправлення, пункт призначення та проміжні точки |
| Статуси доставки | Поточний стан виконання замовлення |
| Тарифи | Правила розрахунку вартості перевезення |
| Додаткові витрати | Очікування, навантаження, розвантаження та інші витрати |
| Транспортна накладна | Друкований документ по перевезенню |
| Акт виконаних робіт | Документ, що підтверджує надання послуги доставки |
| Журнал змін | Історія змін замовлення та статусів |
Довідник «Транспортні засоби»
Довідник транспортних засобів містить інформацію про автомобілі, які можуть виконувати перевезення.
Мінімальний склад даних:
| Поле | Опис |
|---|---|
| Державний номер | Реєстраційний номер транспортного засобу |
| Марка та модель | Наприклад, MAN, Mercedes-Benz, Ford, Renault |
| Тип кузова | Тент, фургон, рефрижератор, бортовий, контейнеровоз тощо |
| Вантажопідйомність | Максимальна вага вантажу |
| Власник транспорту | Компанія або підрядник |
| Стан | Активний, на ремонті, недоступний |
| Примітки | Додаткова інформація по машині |
Транспортний засіб має брати участь у виборі доступних машин на дату перевезення.
Стани транспортного засобу
| Стан | Значення |
|---|---|
| Активний | Машина доступна для призначення на перевезення |
| На ремонті | Машина тимчасово недоступна |
| Недоступний | Машина не може використовуватися в роботі |
Важливо. Машина, яка перебуває на ремонті або вже зайнята на інше перевезення в той самий час, не повинна пропонуватися як доступна для нового замовлення.
Довідник «Водії»
Довідник водіїв містить інформацію про людей, які виконують перевезення.
Мінімальний склад даних:
| Поле | Опис |
|---|---|
| ПІБ | Прізвище, ім’я та по батькові водія |
| Телефон | Контактний номер |
| Водійське посвідчення | Номер або дані посвідчення |
| Закріплений транспортний засіб | Машина, за якою закріплений водій |
| Статус | Активний, відпустка, недоступний |
Система повинна пропонувати водія, який закріплений за обраною машиною, але також має дозволяти вибрати іншого водія.
Журнал «Замовлення на перевезення»
Журнал замовлень на перевезення відображає всі доставки та їхній поточний стан.
У журналі менеджер повинен швидко бачити, які замовлення нові, які вже в дорозі, які завершені, а які скасовані.
Колонки журналу
| Колонка | Опис |
|---|---|
| Номер замовлення | Унікальний номер перевезення |
| Дата створення | Дата створення замовлення |
| Замовник | Контрагент, який замовив перевезення |
| Пункт відправлення | Адреса завантаження |
| Пункт призначення | Адреса доставки |
| Дата та час завантаження | Плановий або фактичний час завантаження |
| Дата та час доставки | Плановий або фактичний час доставки |
| Машина | Призначений транспортний засіб |
| Водій | Призначений водій |
| Статус | Нове, призначено, в дорозі, доставлено, скасовано |
| Вартість | Розрахована сума перевезення |
Функціональність журналу
Журнал має підтримувати:
- пошук за номером замовлення;
- пошук за замовником;
- пошук за датами;
- фільтрацію за статусом;
- фільтрацію за водієм;
- фільтрацію за машиною;
- фільтрацію за складом або зоною відповідальності;
- підсумки за обраним періодом.
У журналі потрібно показувати підсумки:
- кількість замовлень;
- загальну вартість перевезень;
- кількість доставлених замовлень;
- кількість скасованих замовлень.
Форма створення замовлення на перевезення
Форма замовлення повинна містити всю інформацію, необхідну для планування та виконання доставки.
Заголовок замовлення
У заголовку замовлення потрібно передбачити:
| Поле | Опис |
|---|---|
| Замовник | Контрагент через AJAX-пошук |
| Контактна особа | Представник замовника |
| Пункт відправлення | Пошук адреси або ручне введення |
| Пункт призначення | Адреса доставки |
| Планова дата завантаження | Коли потрібно завантажити товар |
| Планова дата доставки | Коли потрібно доставити товар |
| Примітки | Додаткові умови перевезення |
| Статус | Поточний статус замовлення |
Вибір транспортного засобу
Потрібно реалізувати вибір із вільних машин, доступних на дату перевезення.
Система повинна враховувати:
- дату та час перевезення;
- зайнятість машини в інших замовленнях;
- стан транспортного засобу;
- вантажопідйомність;
- тип кузова, якщо він важливий для доставки.
Також потрібно реалізувати автоматичний фільтр за вантажопідйомністю.
Наприклад, якщо вага вантажу становить 5 тонн, система не повинна пропонувати машину з вантажопідйомністю 2 тонни.
Вибір водія
Після вибору транспортного засобу система повинна пропонувати водія, який закріплений за машиною.
При цьому користувач повинен мати можливість вибрати іншого водія, якщо це потрібно.
Водій не повинен бути зайнятий в іншому перевезенні на той самий період.
Статуси замовлення
Потрібно реалізувати такі статуси замовлення:
| Статус | Значення |
|---|---|
| Нове | Замовлення створене, але ще не призначено машину й водія |
| Призначено | Обрано машину та водія |
| В дорозі | Машина вирушила, статус встановлюється кнопкою «Почати доставку» |
| Доставлено | Машина прибула, статус встановлюється кнопкою «Завершити доставку» |
| Скасовано | Замовлення скасоване |
Операції зі статусами
Зміна статусів має виконуватися через зрозумілі дії користувача.
| Дія | Результат |
|---|---|
| Зберегти замовлення | Статус «Нове» |
| Призначити машину й водія | Статус «Призначено» |
| Натиснути «Почати доставку» | Статус «В дорозі» |
| Натиснути «Завершити доставку» | Статус «Доставлено» |
| Натиснути «Скасувати» | Статус «Скасовано» |
Зміна всіх статусів повинна працювати через AJAX без повного перезавантаження сторінки.
Критично. Статуси доставки мають відображати реальний стан перевезення. Не можна завершити доставку, якщо машина й водій не були призначені.
Розрахунок вартості перевезення
Вартість доставки розраховується за тарифами.
Можливі варіанти тарифікації:
- фіксована ціна за доставку;
- ціна за кілометр з автоматичним розрахунком відстані через Google Maps API;
- ціна за кілометр із ручним введенням відстані;
- комбінований тариф.
Формула розрахунку вартості
Вартість = Відстань × Тариф за 1 км + Додаткові витрати
До додаткових витрат можуть належати:
- очікування;
- навантаження;
- розвантаження;
- платні дороги;
- додаткові заїзди;
- інші витрати, пов’язані з перевезенням.
Маршрути та карти
Опціонально можна використовувати Google Maps API або OpenStreetMap для пошуку адрес і розрахунку відстані.
Модуль має підтримувати:
- пункт відправлення;
- пункт призначення;
- за потреби — проміжні точки маршруту;
- ручне введення відстані;
- автоматичний розрахунок відстані, якщо підключено карту;
- збереження маршруту в замовленні.
Транспортна накладна
Транспортна накладна — це друкований документ, який супроводжує перевезення.
У транспортній накладній потрібно виводити:
- номер замовлення;
- машину;
- водія;
- замовника;
- пункт відправлення;
- пункт призначення;
- планову або фактичну дату доставки;
- список товарів, якщо потрібен;
- підписи водія і представника замовника.
Акт виконаних робіт
Акт виконаних робіт формується після завершення доставки.
Акт має підтверджувати факт надання транспортної послуги.
У ньому потрібно показати:
- замовника;
- номер замовлення;
- маршрут;
- дату виконання;
- вартість перевезення;
- додаткові витрати;
- підсумкову суму;
- реквізити сторін;
- місце для підписів.
Звіт «Перевезення за період»
Звіт має показувати загальну картину виконаних перевезень за вибраний період.
У звіті потрібно відображати:
- кількість замовлень;
- суми за перевезення;
- витрати по транспорту;
- кількість доставлених замовлень;
- кількість скасованих замовлень;
- коефіцієнт використання транспорту.
Звіт «Рентабельність транспорту»
Звіт має показувати ефективність використання кожного транспортного засобу.
У звіті потрібно відображати:
- транспортний засіб;
- кількість перевезень;
- доходи;
- витрати;
- прибуток;
- рентабельність.
Приклад формули:
Рентабельність = (Доходи - Витрати) / Витрати × 100%
Контроль доступу
Модуль повинен підтримувати контроль доступу.
Можливі правила:
- менеджери бачать лише свої замовлення;
- менеджери бачать замовлення за певними складами;
- керівник бачить усі замовлення;
- диспетчер бачить замовлення по транспорту;
- бухгалтер бачить документи та акти.
Логування змін
Потрібно логувати зміни в замовленнях і статусах.
Журнал змін має фіксувати:
- хто створив замовлення;
- хто призначив машину;
- хто змінив водія;
- хто змінив статус;
- хто скасував замовлення;
- дату й час зміни;
- старе та нове значення.
Технічні вимоги
| Параметр | Опис |
|---|---|
| Бекенд | K2 ERP на Python або PHP |
| База даних | PostgreSQL або MySQL |
| Фронтенд | HTML5, JavaScript |
| AJAX | Fetch API або Axios |
| UI-компоненти | DataTables, Select2 для автопошуку |
| Карти, опціонально | Google Maps API або OpenStreetMap для розрахунку відстаней |
| Друк | Stimulsoft Reports або внутрішній PDF-генератор |
Рекомендовані сутності бази даних
Для реалізації задачі доцільно передбачити такі сутності:
- транспортні засоби;
- водії;
- контрагенти-замовники;
- замовлення на перевезення;
- статуси замовлень;
- маршрути;
- точки маршруту;
- тарифи;
- додаткові витрати;
- транспортні накладні;
- акти виконаних робіт;
- журнали змін статусів;
- права доступу менеджерів;
- склади або зони відповідальності.
Практичне завдання
У межах атестації потрібно продемонструвати робочий сценарій.
Мінімальний сценарій:
- створити транспортний засіб;
- створити водія;
- прив’язати водія до транспортного засобу;
- створити замовника;
- створити замовлення на перевезення;
- вказати пункт відправлення та пункт призначення;
- вказати планову дату завантаження й доставки;
- обрати доступну машину;
- перевірити фільтр за вантажопідйомністю;
- обрати або автоматично підтягнути водія;
- перевести замовлення в статус «Призначено»;
- натиснути «Почати доставку»;
- перевести замовлення в статус «В дорозі»;
- натиснути «Завершити доставку»;
- перевести замовлення в статус «Доставлено»;
- розрахувати вартість перевезення;
- додати додаткові витрати;
- сформувати транспортну накладну;
- сформувати акт виконаних робіт;
- сформувати звіт перевезень за період;
- сформувати звіт рентабельності транспорту;
- показати журнал змін статусів.
Критерії оцінювання
| Критерій | Бали | Що перевіряється |
|---|---|---|
| Реалізація журналу замовлень | 20 | Список перевезень, пошук, фільтри, статуси, підсумки за період |
| Форма замовлення з вибором машини і водія | 20 | AJAX-пошук замовника, адреси, доступні машини, фільтр вантажопідйомності, вибір водія |
| Логіка статусів доставки | 20 | Нове, призначено, в дорозі, доставлено, скасовано; зміна через кнопки та AJAX |
| Розрахунок вартості перевезення | 15 | Тариф за км, фіксована ціна, відстань, додаткові витрати, підсумкова сума |
| Друковані документи | 15 | Транспортна накладна та акт виконаних робіт |
| Звітність і аналітика | 10 | Перевезення за період, рентабельність транспорту, підсумки |
| Разом | 100 | Максимальна оцінка |
Шкала оцінювання
| Бали | Рівень | Опис |
|---|---|---|
| 90–100 | Відмінно | Модуль повністю працює: замовлення, машини, водії, статуси, тарифи, документи, звіти й контроль доступу реалізовані коректно |
| 75–89 | Добре | Основна логіка працює, є незначні недоліки, які не руйнують бізнес-процес |
| 60–74 | Зараховано | Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання |
| 0–59 | Не зараховано | Відсутня критична логіка: статуси, вибір машини й водія, розрахунок вартості, документи або звіти |
Критичні помилки
Критичними помилками вважаються ситуації, коли:
- неможливо створити замовлення на перевезення;
- машина на ремонті пропонується як доступна;
- зайнята машина може бути призначена на інше перевезення в той самий час;
- водій може бути призначений на два перевезення одночасно;
- доставку можна завершити без призначеної машини й водія;
- статуси змінюються хаотично або без логіки;
- розрахунок вартості перевезення неправильний;
- транспортна накладна або акт не формуються;
- звіти не враховують фактичні замовлення;
- зміни статусів не логуються.
Умова складання. Завдання не може бути зараховане, якщо система не дозволяє пройти повний цикл доставки: створення замовлення → призначення машини й водія → доставка → завершення → друк документів → звіт.
Очікуваний результат
У результаті виконання атестаційного завдання має бути створений TMS-модуль K2 ERP.
Модуль має підтримувати довідники транспортних засобів і водіїв, журнал замовлень на перевезення, форму замовлення з вибором машини та водія, логіку статусів, розрахунок вартості доставки, друк транспортної накладної й акту виконаних робіт, а також звіти по перевезеннях і рентабельності транспорту.
Примітка
Такий модуль критично важливий для компаній із логістикою: служб доставки товарів, будівельних компаній, сервісних служб, складів, ТРЦ і транспортних агентств.
Правильна реалізація TMS-модуля дозволяє контролювати весь ланцюжок доставки та оптимізувати витрати на транспорт.
Коротко
| Питання | Відповідь |
|---|---|
| Що потрібно створити? | Модуль управління транспортними перевезеннями |
| Які довідники потрібні? | Транспортні засоби та водії |
| Який головний документ? | Замовлення на перевезення |
| Які статуси потрібні? | Нове, призначено, в дорозі, доставлено, скасовано |
| Як розраховується вартість? | За фіксованим тарифом або за формулою: відстань × тариф за км + додаткові витрати |
| Які друковані документи потрібні? | Транспортна накладна та акт виконаних робіт |
| Які звіти потрібні? | Перевезення за період і рентабельність транспорту |
| Що є критичною вимогою? | Повний цикл доставки зі статусами, документами й звітами |