Атестаційні завдання K2 ERP/Інтернет-магазин: відмінності між версіями
R (обговорення | внесок) Пененос з Гугл док. |
R (обговорення | внесок) Немає опису редагування |
||
| Рядок 1: | Рядок 1: | ||
'''Атестаційне завдання K2 ERP — Інтернет-магазин''' — практична задача для розробника K2 ERP | {{DISPLAYTITLE:Атестаційні завдання K2 ERP/Інтернет-магазин}} | ||
'''Атестаційне завдання K2 ERP — Інтернет-магазин''' — це практична задача для перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля онлайн-продажів, інтегрованого з ERP-системою. | |||
Модуль має забезпечувати управління каталогом товарів, категоріями, кошиком, оформленням замовлень, онлайн-оплатою, залишками, медіафайлами, email-сповіщеннями та адміністративним інтерфейсом. | |||
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;"> | |||
'''Коротко.''' Потрібно реалізувати інтернет-магазин на базі K2 ERP: каталог товарів, сторінку товару, кошик, оформлення замовлення, оплату, журнал замовлень, зміну статусів, списання залишків і адміністративне керування товарами. | |||
</div> | |||
__TOC__ | |||
== Назва завдання == | |||
'''Модуль Інтернет-магазин: управління товарами, кошиком, замовленнями та оплатою'''. | '''Модуль Інтернет-магазин: управління товарами, кошиком, замовленнями та оплатою'''. | ||
== Мета завдання == | |||
Мета завдання — створити в K2 ERP модуль інтернет-магазину, який дозволяє компанії продавати товари онлайн і при цьому не відривати сайт від облікової системи. | |||
Система повинна дозволяти: | |||
* вести каталог товарів; | |||
* керувати категоріями; | |||
* створювати сторінки товарів; | |||
* завантажувати фото й медіафайли; | |||
* показувати залишки товарів; | |||
* додавати товари в кошик; | |||
* оформлювати замовлення; | |||
* приймати оплату онлайн або при отриманні; | |||
* автоматично змінювати статус замовлення після оплати; | |||
* зменшувати залишки після покупки; | |||
* повідомляти покупця та співробітників про нове замовлення; | |||
* керувати товарами, категоріями й замовленнями з адміністративної частини; | |||
* завантажувати велику кількість товарів через CSV або Excel. | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
'''Головний принцип.''' Інтернет-магазин у K2 ERP — це не окрема “вітрина”, яка живе сама по собі. Це частина ERP: товар, ціна, залишок, замовлення, оплата, клієнт і склад мають бути пов’язані в одній системі. | |||
</div> | |||
== Реальний бізнес-контекст == | == Реальний бізнес-контекст == | ||
Компанія хоче продавати товари через власний сайт, не використовуючи сторонні маркетплейси або окремі SaaS-платформи. | |||
Покупець повинен зайти на сайт, знайти товар у каталозі, переглянути картку товару, додати позиції в кошик, оформити замовлення, обрати спосіб оплати та отримати підтвердження. | |||
Менеджер у K2 ERP має бачити замовлення в адміністративній частині, контролювати статус, оплату, залишки, відправлення та історію змін. | |||
== | == Основний бізнес-процес == | ||
Типовий процес роботи інтернет-магазину виглядає так: | |||
==== | # адміністратор створює категорії товарів; | ||
# додає товари, фото, ціни, описи та SEO-поля; | |||
# система показує товари на сайті; | |||
# покупець відкриває каталог або сторінку товару; | |||
# додає товар у кошик; | |||
# змінює кількість товарів у кошику; | |||
# переходить до оформлення замовлення; | |||
# вводить контактні дані та адресу доставки; | |||
# обирає спосіб оплати; | |||
# система створює замовлення; | |||
# покупець отримує email-підтвердження; | |||
# співробітники отримують повідомлення про нове замовлення; | |||
# після успішної оплати статус змінюється автоматично; | |||
# товар списується із залишків згідно з правилами обліку; | |||
# менеджер обробляє, відправляє та завершує замовлення. | |||
== Основні об’єкти модуля == | |||
{| class="wikitable" style="width:100%;" | |||
! Об’єкт | |||
! Призначення | |||
|- | |||
| Категорії товарів | |||
| Ієрархія каталогу інтернет-магазину | |||
|- | |||
| Товари | |||
| Основні одиниці продажу | |||
|- | |||
| Фото товарів | |||
| Прев’ю та додаткові зображення товару | |||
|- | |||
| Залишки товарів | |||
| Дані про доступну кількість товару на складах | |||
|- | |||
| Склади | |||
| Місця зберігання товарів | |||
|- | |||
| Кошик | |||
| Тимчасовий список товарів, які покупець хоче придбати | |||
|- | |||
| Рядки кошика | |||
| Конкретні товари, кількість і суми в кошику | |||
|- | |||
| Замовлення | |||
| Основний документ онлайн-продажу | |||
|- | |||
| Рядки замовлення | |||
| Товари, кількість, ціни й суми в замовленні | |||
|- | |||
| Покупці | |||
| Дані клієнтів, які оформили замовлення | |||
|- | |||
| Способи оплати | |||
| Оплата при отриманні, онлайн-оплата та інші варіанти | |||
|- | |||
| Платежі | |||
| Дані про оплату замовлення | |||
|- | |||
| Статуси замовлень | |||
| Поточний стан обробки замовлення | |||
|- | |||
| Email-сповіщення | |||
| Повідомлення покупцям і співробітникам | |||
|- | |||
| Імпорт товарів | |||
| Масове завантаження товарів із CSV або Excel | |||
|- | |||
| SEO-налаштування | |||
| URL, Title, Description для категорій і товарів | |||
|} | |||
* | == Довідник «Категорії товарів» == | ||
* | |||
* | Довідник категорій товарів потрібен для побудови каталогу інтернет-магазину. | ||
* SEO-поля: | |||
Категорії повинні підтримувати ієрархію. Наприклад: | |||
* Електроніка; | |||
* Електроніка → Ноутбуки; | |||
* Електроніка → Смартфони; | |||
* Одяг → Чоловічий одяг; | |||
* Одяг → Жіночий одяг. | |||
== Поля категорії товарів == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Назва категорії | |||
| Назва, яку бачить покупець | |||
|- | |||
| Батьківська категорія | |||
| Для побудови ієрархії каталогу | |||
|- | |||
| Сортування | |||
| Порядок показу категорій | |||
|- | |||
| URL | |||
| Частина адреси категорії | |||
|- | |||
| Title | |||
| SEO-заголовок категорії | |||
|- | |||
| Description | |||
| SEO-опис категорії | |||
|- | |||
| Статус | |||
| Активна або прихована | |||
|} | |||
== Довідник «Товари» == | |||
Довідник товарів містить усі товари, які можуть продаватися через інтернет-магазин. | |||
Товар повинен мати не лише назву й ціну, а й опис, артикул, фото, статус, залишок, SEO-поля та зв’язок із категоріями. | |||
== Поля товару == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Назва товару | |||
| Основна назва товару | |||
|- | |||
| Опис товару | |||
| HTML-опис через WYSIWYG-редактор | |||
|- | |||
| Код товару або артикул | |||
| Внутрішній код, SKU або артикул | |||
|- | |||
| Категорія | |||
| Категорія каталогу | |||
|- | |||
| Ціна | |||
| Основна ціна продажу | |||
|- | |||
| Акційна ціна | |||
| Опціональна знижена ціна | |||
|- | |||
| Залишок на складі | |||
| Доступна кількість товару | |||
|- | |||
| Статус товару | |||
| Активний або прихований | |||
|- | |||
| Прев’ю-зображення | |||
| Основне фото товару | |||
|- | |||
| Додаткові фото | |||
| Галерея зображень товару | |||
|- | |||
| SEO title | |||
| SEO-заголовок сторінки товару | |||
|- | |||
| SEO description | |||
| SEO-опис сторінки товару | |||
|- | |||
| URL | |||
| Адреса сторінки товару | |||
|} | |||
== Статуси товару == | |||
{| class="wikitable" style="width:100%;" | |||
! Статус | |||
! Значення | |||
|- | |||
| Активний | |||
| Товар доступний у каталозі | |||
|- | |||
| Прихований | |||
| Товар не показується покупцям, але зберігається в системі | |||
|- | |||
| Немає в наявності | |||
| Товар можна показувати, але не можна купити | |||
|- | |||
| Архівний | |||
| Товар більше не продається | |||
|} | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Критично.''' Прихований або архівний товар не повинен бути доступний для покупки. Товар без залишку не повинен продаватися, якщо в системі не дозволено продаж “під замовлення”. | |||
</div> | |||
== Фронтенд магазину для покупців == | |||
Фронтенд магазину — це публічна частина, яку бачить покупець. | |||
Вона повинна бути простою, зрозумілою та швидкою: каталог, фільтри, пошук, сторінка товару, кошик і оформлення замовлення. | |||
== | == Каталог товарів == | ||
Каталог товарів повинен підтримувати: | Каталог товарів повинен підтримувати: | ||
| Рядок 54: | Рядок 251: | ||
* фільтрацію за наявністю; | * фільтрацію за наявністю; | ||
* фільтрацію за акційними пропозиціями; | * фільтрацію за акційними пропозиціями; | ||
* пошук товарів по назві або | * пошук товарів по назві; | ||
* пошук товарів по коду або артикулу; | |||
* сортування за ціною; | |||
* сортування за назвою; | |||
* сортування за популярністю або датою додавання, якщо така логіка реалізована. | |||
== Сторінка товару == | |||
Сторінка товару повинна містити: | |||
Сторінка товару повинна містити всю інформацію, необхідну для прийняття рішення про покупку. | |||
На сторінці товару потрібно показати: | |||
* фото з можливістю збільшення; | * фото з можливістю збільшення; | ||
* додаткові фото; | |||
* назву товару; | * назву товару; | ||
* артикул або код; | |||
* опис; | * опис; | ||
* ціну; | * ціну; | ||
* кнопку '''«Додати у кошик»'''. | * акційну ціну, якщо вона є; | ||
* наявність; | |||
* кнопку '''«Додати у кошик»'''; | |||
* пов’язані або рекомендовані товари, опціонально. | |||
== Акційні товари == | |||
Потрібно передбачити окрему категорію або фільтр '''«Акції»''' для товарів з акційною ціною. | |||
Акційний товар має показувати основну ціну й акційну ціну. Покупець повинен чітко бачити, що товар продається зі знижкою. | |||
== Кошик == | |||
Кошик повинен підтримувати: | Кошик повинен підтримувати: | ||
* перелік товарів у кошику; | * перелік товарів у кошику; | ||
* кількість кожного товару; | |||
* ціну товару; | |||
* суму по кожному рядку; | |||
* загальну суму замовлення; | |||
* можливість змінити кількість товару; | * можливість змінити кількість товару; | ||
* можливість видалити товар із кошика; | |||
* автоматичний перерахунок загальної суми; | * автоматичний перерахунок загальної суми; | ||
* кнопку '''«Оформити замовлення»'''. | * кнопку '''«Оформити замовлення»'''. | ||
=== | <div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;"> | ||
Форма оформлення замовлення повинна містити: | '''Важливо.''' Кількість у кошику не повинна перевищувати доступний залишок, якщо продаж понад залишок не дозволений правилами магазину. | ||
</div> | |||
== Оформлення замовлення == | |||
Форма оформлення замовлення повинна містити контактні дані покупця, адресу доставки, коментар і спосіб оплати. | |||
== Поля форми замовлення == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Ім’я та прізвище покупця | |||
| Хто оформлює замовлення | |||
|- | |||
| Телефон | |||
| Основний контактний номер | |||
|- | |||
| Email | |||
| Email для підтвердження замовлення | |||
|- | |||
| Адреса доставки | |||
| Куди потрібно доставити товар | |||
|- | |||
| Коментар до замовлення | |||
| Додаткова інформація від покупця | |||
|- | |||
| Спосіб оплати | |||
| Оплата при отриманні або онлайн | |||
|} | |||
Після оформлення система повинна створити замовлення в адміністративній частині та надіслати підтвердження покупцю. | |||
== Способи оплати == | |||
Потрібно передбачити щонайменше два способи оплати: | |||
{| class="wikitable" style="width:100%;" | |||
! Спосіб оплати | |||
! Опис | |||
|- | |||
| Оплата при отриманні | |||
| Покупець оплачує товар під час отримання | |||
|- | |||
| Оплата онлайн | |||
| Покупець оплачує замовлення через платіжну систему | |||
|} | |||
== Інтеграція з платіжною системою == | |||
Потрібно реалізувати підключення до однієї з популярних платіжних платформ: | Потрібно реалізувати підключення до однієї з популярних платіжних платформ: | ||
| Рядок 91: | Рядок 351: | ||
* LiqPay; | * LiqPay; | ||
* Stripe; | * Stripe; | ||
* | * інша платіжна система. | ||
Після успішної оплати статус замовлення повинен | Після успішної оплати система повинна автоматично змінювати статус замовлення. | ||
Платіж має бути пов’язаний із замовленням, сумою, способом оплати, датою, статусом і відповіддю платіжної системи. | |||
== Статуси платежу == | |||
{| class="wikitable" style="width:100%;" | |||
! Статус | |||
! Значення | |||
|- | |||
| Очікує оплати | |||
| Замовлення створене, але оплата ще не проведена | |||
|- | |||
| Оплачено | |||
| Платіж успішно підтверджено платіжною системою | |||
|- | |||
| Помилка оплати | |||
| Платіж не пройшов | |||
|- | |||
| Повернено | |||
| Оплату повернуто покупцю | |||
|} | |||
== Журнал замовлень в адміністративній частині == | |||
Журнал замовлень повинен бути доступний в адміністративній частині K2 ERP. | |||
Менеджер має бачити всі замовлення, їхні статуси, покупців, суми, спосіб оплати та поточний етап обробки. | |||
== Колонки журналу замовлень == | |||
{| class="wikitable" style="width:100%;" | |||
! Колонка | |||
! Опис | |||
|- | |||
| Номер замовлення | |||
| Унікальний номер замовлення | |||
|- | |||
| Дата замовлення | |||
| Дата й час оформлення | |||
|- | |||
| Покупець | |||
| Ім’я покупця або клієнта | |||
|- | |||
| Телефон | |||
| Контактний номер покупця | |||
|- | |||
| Email | |||
| Email покупця | |||
|- | |||
| Сума | |||
| Загальна сума замовлення | |||
|- | |||
| Статус | |||
| Нове, в обробці, відправлено, завершено, скасовано | |||
|- | |||
| Тип оплати | |||
| Оплата при отриманні або онлайн | |||
|- | |||
| Статус платежу | |||
| Очікує оплати, оплачено, помилка, повернено | |||
|} | |||
=== | == Статуси замовлення == | ||
== | {| class="wikitable" style="width:100%;" | ||
! Статус | |||
! Значення | |||
|- | |||
| Нове | |||
| Замовлення щойно створено | |||
|- | |||
| В обробці | |||
| Менеджер прийняв замовлення в роботу | |||
|- | |||
| Відправлено | |||
| Замовлення передано на доставку | |||
|- | |||
| Завершено | |||
| Замовлення виконано | |||
|- | |||
| Скасовано | |||
| Замовлення скасовано | |||
|} | |||
== Функціональність журналу замовлень == | |||
Журнал замовлень має підтримувати: | Журнал замовлень має підтримувати: | ||
* фільтрацію за статусом; | * фільтрацію за статусом; | ||
* фільтрацію за періодом; | * фільтрацію за періодом; | ||
* фільтрацію за типом оплати; | |||
* фільтрацію за статусом платежу; | |||
* пошук за номером замовлення; | |||
* пошук за телефоном або email покупця; | |||
* перегляд деталей замовлення; | * перегляд деталей замовлення; | ||
* зміну статусу замовлення. | * зміну статусу замовлення; | ||
* перегляд історії зміни статусів; | |||
* експорт списку замовлень, якщо потрібно. | |||
== Деталі замовлення == | |||
У картці замовлення потрібно показати: | |||
* дані покупця; | |||
* адресу доставки; | |||
* спосіб оплати; | |||
* статус платежу; | |||
* список товарів; | |||
* кількість; | |||
* ціни; | |||
* суми; | |||
* загальну суму; | |||
* коментар покупця; | |||
* історію зміни статусів. | |||
== Робота із залишками == | |||
Інтернет-магазин має бути пов’язаний зі складським обліком. | |||
Система повинна: | |||
* відображати залишки в реальному часі; | |||
* не дозволяти купити товар у кількості, більшій за доступний залишок; | |||
* автоматично зменшувати залишок товару після покупки або після підтвердження замовлення — залежно від налаштувань; | |||
* показувати статус '''«Немає в наявності»'''; | |||
* підтримувати окремі склади, якщо магазин працює з кількома складами. | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
'''Правильна логіка.''' Замовлення в інтернет-магазині має впливати на облік залишків. Якщо товар продано, система повинна відобразити це у складському обліку. | |||
</div> | |||
== Email-сповіщення == | |||
Потрібно реалізувати email-сповіщення. | |||
== Email покупцю == | |||
Після оформлення замовлення покупець має отримати підтвердження. | |||
У листі потрібно показати: | |||
* номер замовлення; | |||
* дату; | |||
* список товарів; | |||
* суму; | |||
* спосіб оплати; | |||
* адресу доставки; | |||
* контактну інформацію магазину. | |||
== Email співробітникам == | |||
Співробітники магазину повинні отримати повідомлення про нове замовлення. | |||
У листі потрібно показати: | |||
* номер замовлення; | |||
* покупця; | |||
* телефон; | |||
* суму; | |||
* спосіб оплати; | |||
* список товарів; | |||
* посилання на замовлення в адмінці. | |||
== Адміністративний інтерфейс == | |||
Адміністративний інтерфейс повинен підтримувати керування товарами, категоріями, фото, залишками та замовленнями. | |||
== Керування товарами == | |||
Адміністративний інтерфейс має підтримувати: | |||
* додавання товарів через AJAX; | |||
* редагування товарів через AJAX; | |||
* видалення товарів через AJAX; | |||
* завантаження фото товарів; | |||
* редагування опису через WYSIWYG-редактор; | |||
* зміну ціни; | |||
* зміну акційної ціни; | |||
* зміну статусу товару; | |||
* управління SEO-полями. | |||
== Керування категоріями == | |||
Категоріями потрібно керувати без перезавантаження сторінки. | |||
Потрібно реалізувати: | Потрібно реалізувати: | ||
* | * створення категорій; | ||
* | * редагування категорій; | ||
* | * зміну батьківської категорії; | ||
* | * сортування; | ||
* | * приховування категорій; | ||
* керування SEO-полями категорії. | |||
=== | == Імпорт товарів CSV або Excel == | ||
Потрібно реалізувати завантаження великої кількості товарів через CSV або Excel. | |||
* | |||
* видалення | Імпорт має підтримувати: | ||
* | |||
* | * назву товару; | ||
* артикул; | |||
* категорію; | |||
* опис; | |||
* ціну; | |||
* акційну ціну; | |||
* залишок; | |||
* статус; | |||
* SEO-поля; | |||
* посилання або назву фото, якщо це передбачено форматом. | |||
Перед імпортом система повинна перевіряти файл і показувати помилки. | |||
== Медіафайли товарів == | |||
Для товарів потрібно реалізувати завантаження зображень через FilePond або аналогічний інструмент. | |||
Медіаблок має підтримувати: | |||
* основне фото; | |||
* додаткові фото; | |||
* видалення фото; | |||
* сортування фото; | |||
* прив’язку фото до товару; | |||
* прев’ю фото в адміністративній частині. | |||
== AJAX-інтерактив == | |||
Ключові дії мають виконуватися без зайвого перезавантаження сторінок. | |||
Через AJAX мають працювати: | |||
* додавання товару; | |||
* редагування товару; | |||
* видалення товару; | |||
* зміна статусу товару; | |||
* керування категоріями; | |||
* додавання товару в кошик; | |||
* зміна кількості в кошику; | |||
* перерахунок суми кошика; | |||
* оформлення замовлення; | |||
* зміна статусу замовлення; | |||
* завантаження фото товарів. | |||
== Технічні вимоги == | == Технічні вимоги == | ||
{| class="wikitable" | |||
!Параметр | {| class="wikitable" style="width:100%;" | ||
!Опис | ! Параметр | ||
! Опис | |||
|- | |- | ||
|Бекенд | | Бекенд | ||
|K2 ERP на Python або PHP | | K2 ERP на Python або PHP | ||
|- | |- | ||
| | | База даних | ||
|PostgreSQL або MySQL | | PostgreSQL або MySQL | ||
|- | |- | ||
|Фронтенд | | Фронтенд | ||
|HTML5, JavaScript | | HTML5, JavaScript | ||
|- | |- | ||
| | | AJAX | ||
| | | Fetch або Axios | ||
|- | |- | ||
| | | UI-компоненти | ||
| | | DataTables, Select2, WYSIWYG-редактор для опису товару | ||
|- | |- | ||
| | | Платіжні шлюзи | ||
| | | WayForPay, LiqPay або Stripe | ||
|- | |- | ||
| | | Медіа | ||
| | | Завантаження зображень через FilePond або аналог | ||
|- | |- | ||
| Імпорт | |||
| CSV або Excel | |||
|} | |} | ||
== | == Рекомендовані сутності бази даних == | ||
Для реалізації задачі доцільно передбачити такі сутності: | |||
* категорії товарів; | * категорії товарів; | ||
| Рядок 217: | Рядок 650: | ||
* імпорт товарів; | * імпорт товарів; | ||
* SEO-налаштування. | * SEO-налаштування. | ||
== Практичне завдання == | |||
У межах атестації потрібно продемонструвати робочий сценарій. | |||
Мінімальний сценарій: | |||
# створити категорію товарів; | |||
# створити товар із ціною, описом, фото й залишком; | |||
# створити акційний товар; | |||
# перевірити відображення товару в каталозі; | |||
# відкрити сторінку товару; | |||
# додати товар у кошик; | |||
# змінити кількість у кошику; | |||
# перевірити автоматичний перерахунок суми; | |||
# оформити замовлення; | |||
# обрати спосіб оплати; | |||
# перевірити створення замовлення в адмінці; | |||
# виконати або змоделювати онлайн-оплату; | |||
# перевірити автоматичну зміну статусу платежу; | |||
# перевірити зміну статусу замовлення; | |||
# перевірити зменшення залишку товару; | |||
# отримати email-підтвердження покупцю; | |||
# отримати email-сповіщення співробітнику; | |||
# імпортувати товари з CSV або Excel; | |||
# змінити товар через AJAX-адмінку; | |||
# показати журнал замовлень із фільтрами. | |||
== Критерії оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Критерій | |||
! Бали | |||
! Що перевіряється | |||
|- | |||
| Реалізація довідника товарів і категорій | |||
| 20 | |||
| Категорії, товари, ціни, акції, фото, SEO, статуси | |||
|- | |||
| Робота кошика і оформлення замовлення | |||
| 20 | |||
| Додавання товарів, зміна кількості, перерахунок сум, форма замовлення | |||
|- | |||
| Інтеграція з платіжною системою | |||
| 20 | |||
| Онлайн-оплата, статус платежу, зв’язок платежу із замовленням | |||
|- | |||
| Журнал замовлень і управління статусами | |||
| 20 | |||
| Адмінка, фільтри, деталі замовлення, статуси, історія змін | |||
|- | |||
| Інтерактивність через AJAX | |||
| 10 | |||
| Каталог, кошик, адмінка, товари, категорії, замовлення без перезавантаження | |||
|- | |||
| Збереження структури і логіки бізнес-процесів | |||
| 10 | |||
| Зв’язок магазину зі складом, залишками, оплатами, покупцями й статусами | |||
|- | |||
! Разом | |||
! 100 | |||
! Максимальна оцінка | |||
|} | |||
== Шкала оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Бали | |||
! Рівень | |||
! Опис | |||
|- | |||
| 90–100 | |||
| Відмінно | |||
| Інтернет-магазин повністю працює: каталог, кошик, замовлення, оплата, залишки, адмінка, імпорт і сповіщення реалізовані коректно | |||
|- | |||
| 75–89 | |||
| Добре | |||
| Основна логіка працює, є незначні недоліки, які не руйнують процес продажу | |||
|- | |||
| 60–74 | |||
| Зараховано | |||
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання | |||
|- | |||
| 0–59 | |||
| Не зараховано | |||
| Відсутня критична логіка: каталог, кошик, замовлення, оплата, залишки або журнал замовлень | |||
|} | |||
== Критичні помилки == | |||
Критичними помилками вважаються ситуації, коли: | |||
* неможливо створити товар; | |||
* товар не відображається в каталозі; | |||
* неможливо додати товар у кошик; | |||
* сума кошика розраховується неправильно; | |||
* неможливо оформити замовлення; | |||
* замовлення не потрапляє в адміністративну частину; | |||
* статус замовлення не змінюється; | |||
* оплата не пов’язується із замовленням; | |||
* після успішної оплати статус не оновлюється; | |||
* залишки не зменшуються після покупки; | |||
* можна купити товар у кількості, більшій за доступний залишок, якщо це не дозволено правилами; | |||
* покупець не отримує підтвердження; | |||
* співробітники не бачать нового замовлення; | |||
* імпорт товарів спотворює дані або створює дублікати без контролю. | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Умова складання.''' Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл онлайн-продажу: товар → кошик → оформлення замовлення → оплата → зміна статусу → списання залишку → журнал замовлень. | |||
</div> | |||
== Очікуваний результат == | |||
У результаті виконання атестаційного завдання має бути створений модуль інтернет-магазину K2 ERP. | |||
Модуль має підтримувати каталог товарів і категорій, сторінки товарів, кошик, оформлення замовлення, онлайн-оплату, журнал замовлень, управління статусами, email-сповіщення, облік залишків, акційні товари, імпорт CSV/Excel та AJAX-адміністрування. | |||
== Примітка == | |||
Інтернет-магазин є важливим модулем для багатьох бізнесів незалежно від розміру компанії. | |||
Такий модуль допомагає компаніям вийти в онлайн-продажі без залучення сторонніх платформ і при цьому зберегти зв’язок із внутрішнім обліком, складом, оплатами та клієнтською базою. | |||
== Коротко == | |||
{| class="wikitable" style="width:100%;" | |||
! Питання | |||
! Відповідь | |||
|- | |||
| Що потрібно створити? | |||
| Модуль інтернет-магазину | |||
|- | |||
| Які довідники потрібні? | |||
| Категорії товарів і товари | |||
|- | |||
| Що має бачити покупець? | |||
| Каталог, сторінку товару, кошик і форму оформлення замовлення | |||
|- | |||
| Які способи оплати потрібні? | |||
| Оплата при отриманні та онлайн-оплата | |||
|- | |||
| Які платіжні системи можна використати? | |||
| WayForPay, LiqPay, Stripe або іншу платіжну систему | |||
|- | |||
| Що має бути в адмінці? | |||
| Товари, категорії, замовлення, статуси, платежі, імпорт і залишки | |||
|- | |||
| Що має працювати через AJAX? | |||
| Товари, категорії, кошик, замовлення, зміна статусів і завантаження фото | |||
|- | |||
| Що є критичною вимогою? | |||
| Повний цикл онлайн-продажу з оплатою, статусами й залишками | |||
|} | |||
== Див. також == | == Див. також == | ||
* [[K2 Cloud ERP|K2 ERP]] | * [[K2 Cloud ERP|K2 ERP]] | ||
* [[K2 ERP]] | |||
* [[Атестаційні завдання K2 ERP]] | * [[Атестаційні завдання K2 ERP]] | ||
* [[Інтернет-магазин]] | * [[Інтернет-магазин]] | ||
| Рядок 230: | Рядок 817: | ||
* [[Stripe]] | * [[Stripe]] | ||
* [[Складський облік]] | * [[Складський облік]] | ||
* [[Залишки товарів]] | |||
* [[CSV]] | |||
* [[Excel-імпорт]] | |||
[[Категорія:K2 ERP]] | |||
[[Категорія:Атестаційні завдання K2]] | |||
[[Категорія:Інтернет-магазин]] | |||
[[Категорія:Каталог товарів]] | |||
[[Категорія:Онлайн-оплата]] | |||
[[Категорія:Складський облік]] | |||
[[Категорія:Корпоративна Wiki]] | |||
Поточна версія на 18:28, 1 травня 2026
Атестаційне завдання K2 ERP — Інтернет-магазин — це практична задача для перевірки навичок розробника або впроваджувача K2 ERP у створенні модуля онлайн-продажів, інтегрованого з ERP-системою.
Модуль має забезпечувати управління каталогом товарів, категоріями, кошиком, оформленням замовлень, онлайн-оплатою, залишками, медіафайлами, email-сповіщеннями та адміністративним інтерфейсом.
Коротко. Потрібно реалізувати інтернет-магазин на базі K2 ERP: каталог товарів, сторінку товару, кошик, оформлення замовлення, оплату, журнал замовлень, зміну статусів, списання залишків і адміністративне керування товарами.
Назва завдання
Модуль Інтернет-магазин: управління товарами, кошиком, замовленнями та оплатою.
Мета завдання
Мета завдання — створити в K2 ERP модуль інтернет-магазину, який дозволяє компанії продавати товари онлайн і при цьому не відривати сайт від облікової системи.
Система повинна дозволяти:
- вести каталог товарів;
- керувати категоріями;
- створювати сторінки товарів;
- завантажувати фото й медіафайли;
- показувати залишки товарів;
- додавати товари в кошик;
- оформлювати замовлення;
- приймати оплату онлайн або при отриманні;
- автоматично змінювати статус замовлення після оплати;
- зменшувати залишки після покупки;
- повідомляти покупця та співробітників про нове замовлення;
- керувати товарами, категоріями й замовленнями з адміністративної частини;
- завантажувати велику кількість товарів через CSV або Excel.
Головний принцип. Інтернет-магазин у K2 ERP — це не окрема “вітрина”, яка живе сама по собі. Це частина ERP: товар, ціна, залишок, замовлення, оплата, клієнт і склад мають бути пов’язані в одній системі.
Реальний бізнес-контекст
Компанія хоче продавати товари через власний сайт, не використовуючи сторонні маркетплейси або окремі SaaS-платформи.
Покупець повинен зайти на сайт, знайти товар у каталозі, переглянути картку товару, додати позиції в кошик, оформити замовлення, обрати спосіб оплати та отримати підтвердження.
Менеджер у K2 ERP має бачити замовлення в адміністративній частині, контролювати статус, оплату, залишки, відправлення та історію змін.
Основний бізнес-процес
Типовий процес роботи інтернет-магазину виглядає так:
- адміністратор створює категорії товарів;
- додає товари, фото, ціни, описи та SEO-поля;
- система показує товари на сайті;
- покупець відкриває каталог або сторінку товару;
- додає товар у кошик;
- змінює кількість товарів у кошику;
- переходить до оформлення замовлення;
- вводить контактні дані та адресу доставки;
- обирає спосіб оплати;
- система створює замовлення;
- покупець отримує email-підтвердження;
- співробітники отримують повідомлення про нове замовлення;
- після успішної оплати статус змінюється автоматично;
- товар списується із залишків згідно з правилами обліку;
- менеджер обробляє, відправляє та завершує замовлення.
Основні об’єкти модуля
| Об’єкт | Призначення |
|---|---|
| Категорії товарів | Ієрархія каталогу інтернет-магазину |
| Товари | Основні одиниці продажу |
| Фото товарів | Прев’ю та додаткові зображення товару |
| Залишки товарів | Дані про доступну кількість товару на складах |
| Склади | Місця зберігання товарів |
| Кошик | Тимчасовий список товарів, які покупець хоче придбати |
| Рядки кошика | Конкретні товари, кількість і суми в кошику |
| Замовлення | Основний документ онлайн-продажу |
| Рядки замовлення | Товари, кількість, ціни й суми в замовленні |
| Покупці | Дані клієнтів, які оформили замовлення |
| Способи оплати | Оплата при отриманні, онлайн-оплата та інші варіанти |
| Платежі | Дані про оплату замовлення |
| Статуси замовлень | Поточний стан обробки замовлення |
| Email-сповіщення | Повідомлення покупцям і співробітникам |
| Імпорт товарів | Масове завантаження товарів із CSV або Excel |
| SEO-налаштування | URL, Title, Description для категорій і товарів |
Довідник «Категорії товарів»
Довідник категорій товарів потрібен для побудови каталогу інтернет-магазину.
Категорії повинні підтримувати ієрархію. Наприклад:
- Електроніка;
- Електроніка → Ноутбуки;
- Електроніка → Смартфони;
- Одяг → Чоловічий одяг;
- Одяг → Жіночий одяг.
Поля категорії товарів
| Поле | Опис |
|---|---|
| Назва категорії | Назва, яку бачить покупець |
| Батьківська категорія | Для побудови ієрархії каталогу |
| Сортування | Порядок показу категорій |
| URL | Частина адреси категорії |
| Title | SEO-заголовок категорії |
| Description | SEO-опис категорії |
| Статус | Активна або прихована |
Довідник «Товари»
Довідник товарів містить усі товари, які можуть продаватися через інтернет-магазин.
Товар повинен мати не лише назву й ціну, а й опис, артикул, фото, статус, залишок, SEO-поля та зв’язок із категоріями.
Поля товару
| Поле | Опис |
|---|---|
| Назва товару | Основна назва товару |
| Опис товару | HTML-опис через WYSIWYG-редактор |
| Код товару або артикул | Внутрішній код, SKU або артикул |
| Категорія | Категорія каталогу |
| Ціна | Основна ціна продажу |
| Акційна ціна | Опціональна знижена ціна |
| Залишок на складі | Доступна кількість товару |
| Статус товару | Активний або прихований |
| Прев’ю-зображення | Основне фото товару |
| Додаткові фото | Галерея зображень товару |
| SEO title | SEO-заголовок сторінки товару |
| SEO description | SEO-опис сторінки товару |
| URL | Адреса сторінки товару |
Статуси товару
| Статус | Значення |
|---|---|
| Активний | Товар доступний у каталозі |
| Прихований | Товар не показується покупцям, але зберігається в системі |
| Немає в наявності | Товар можна показувати, але не можна купити |
| Архівний | Товар більше не продається |
Критично. Прихований або архівний товар не повинен бути доступний для покупки. Товар без залишку не повинен продаватися, якщо в системі не дозволено продаж “під замовлення”.
Фронтенд магазину для покупців
Фронтенд магазину — це публічна частина, яку бачить покупець.
Вона повинна бути простою, зрозумілою та швидкою: каталог, фільтри, пошук, сторінка товару, кошик і оформлення замовлення.
Каталог товарів
Каталог товарів повинен підтримувати:
- виведення списку товарів за категоріями;
- фільтрацію за ціною;
- фільтрацію за наявністю;
- фільтрацію за акційними пропозиціями;
- пошук товарів по назві;
- пошук товарів по коду або артикулу;
- сортування за ціною;
- сортування за назвою;
- сортування за популярністю або датою додавання, якщо така логіка реалізована.
Сторінка товару
Сторінка товару повинна містити всю інформацію, необхідну для прийняття рішення про покупку.
На сторінці товару потрібно показати:
- фото з можливістю збільшення;
- додаткові фото;
- назву товару;
- артикул або код;
- опис;
- ціну;
- акційну ціну, якщо вона є;
- наявність;
- кнопку «Додати у кошик»;
- пов’язані або рекомендовані товари, опціонально.
Акційні товари
Потрібно передбачити окрему категорію або фільтр «Акції» для товарів з акційною ціною.
Акційний товар має показувати основну ціну й акційну ціну. Покупець повинен чітко бачити, що товар продається зі знижкою.
Кошик
Кошик повинен підтримувати:
- перелік товарів у кошику;
- кількість кожного товару;
- ціну товару;
- суму по кожному рядку;
- загальну суму замовлення;
- можливість змінити кількість товару;
- можливість видалити товар із кошика;
- автоматичний перерахунок загальної суми;
- кнопку «Оформити замовлення».
Важливо. Кількість у кошику не повинна перевищувати доступний залишок, якщо продаж понад залишок не дозволений правилами магазину.
Оформлення замовлення
Форма оформлення замовлення повинна містити контактні дані покупця, адресу доставки, коментар і спосіб оплати.
Поля форми замовлення
| Поле | Опис |
|---|---|
| Ім’я та прізвище покупця | Хто оформлює замовлення |
| Телефон | Основний контактний номер |
| Email для підтвердження замовлення | |
| Адреса доставки | Куди потрібно доставити товар |
| Коментар до замовлення | Додаткова інформація від покупця |
| Спосіб оплати | Оплата при отриманні або онлайн |
Після оформлення система повинна створити замовлення в адміністративній частині та надіслати підтвердження покупцю.
Способи оплати
Потрібно передбачити щонайменше два способи оплати:
| Спосіб оплати | Опис |
|---|---|
| Оплата при отриманні | Покупець оплачує товар під час отримання |
| Оплата онлайн | Покупець оплачує замовлення через платіжну систему |
Інтеграція з платіжною системою
Потрібно реалізувати підключення до однієї з популярних платіжних платформ:
- WayForPay;
- LiqPay;
- Stripe;
- інша платіжна система.
Після успішної оплати система повинна автоматично змінювати статус замовлення.
Платіж має бути пов’язаний із замовленням, сумою, способом оплати, датою, статусом і відповіддю платіжної системи.
Статуси платежу
| Статус | Значення |
|---|---|
| Очікує оплати | Замовлення створене, але оплата ще не проведена |
| Оплачено | Платіж успішно підтверджено платіжною системою |
| Помилка оплати | Платіж не пройшов |
| Повернено | Оплату повернуто покупцю |
Журнал замовлень в адміністративній частині
Журнал замовлень повинен бути доступний в адміністративній частині K2 ERP.
Менеджер має бачити всі замовлення, їхні статуси, покупців, суми, спосіб оплати та поточний етап обробки.
Колонки журналу замовлень
| Колонка | Опис |
|---|---|
| Номер замовлення | Унікальний номер замовлення |
| Дата замовлення | Дата й час оформлення |
| Покупець | Ім’я покупця або клієнта |
| Телефон | Контактний номер покупця |
| Email покупця | |
| Сума | Загальна сума замовлення |
| Статус | Нове, в обробці, відправлено, завершено, скасовано |
| Тип оплати | Оплата при отриманні або онлайн |
| Статус платежу | Очікує оплати, оплачено, помилка, повернено |
Статуси замовлення
| Статус | Значення |
|---|---|
| Нове | Замовлення щойно створено |
| В обробці | Менеджер прийняв замовлення в роботу |
| Відправлено | Замовлення передано на доставку |
| Завершено | Замовлення виконано |
| Скасовано | Замовлення скасовано |
Функціональність журналу замовлень
Журнал замовлень має підтримувати:
- фільтрацію за статусом;
- фільтрацію за періодом;
- фільтрацію за типом оплати;
- фільтрацію за статусом платежу;
- пошук за номером замовлення;
- пошук за телефоном або email покупця;
- перегляд деталей замовлення;
- зміну статусу замовлення;
- перегляд історії зміни статусів;
- експорт списку замовлень, якщо потрібно.
Деталі замовлення
У картці замовлення потрібно показати:
- дані покупця;
- адресу доставки;
- спосіб оплати;
- статус платежу;
- список товарів;
- кількість;
- ціни;
- суми;
- загальну суму;
- коментар покупця;
- історію зміни статусів.
Робота із залишками
Інтернет-магазин має бути пов’язаний зі складським обліком.
Система повинна:
- відображати залишки в реальному часі;
- не дозволяти купити товар у кількості, більшій за доступний залишок;
- автоматично зменшувати залишок товару після покупки або після підтвердження замовлення — залежно від налаштувань;
- показувати статус «Немає в наявності»;
- підтримувати окремі склади, якщо магазин працює з кількома складами.
Правильна логіка. Замовлення в інтернет-магазині має впливати на облік залишків. Якщо товар продано, система повинна відобразити це у складському обліку.
Email-сповіщення
Потрібно реалізувати email-сповіщення.
Email покупцю
Після оформлення замовлення покупець має отримати підтвердження.
У листі потрібно показати:
- номер замовлення;
- дату;
- список товарів;
- суму;
- спосіб оплати;
- адресу доставки;
- контактну інформацію магазину.
Email співробітникам
Співробітники магазину повинні отримати повідомлення про нове замовлення.
У листі потрібно показати:
- номер замовлення;
- покупця;
- телефон;
- суму;
- спосіб оплати;
- список товарів;
- посилання на замовлення в адмінці.
Адміністративний інтерфейс
Адміністративний інтерфейс повинен підтримувати керування товарами, категоріями, фото, залишками та замовленнями.
Керування товарами
Адміністративний інтерфейс має підтримувати:
- додавання товарів через AJAX;
- редагування товарів через AJAX;
- видалення товарів через AJAX;
- завантаження фото товарів;
- редагування опису через WYSIWYG-редактор;
- зміну ціни;
- зміну акційної ціни;
- зміну статусу товару;
- управління SEO-полями.
Керування категоріями
Категоріями потрібно керувати без перезавантаження сторінки.
Потрібно реалізувати:
- створення категорій;
- редагування категорій;
- зміну батьківської категорії;
- сортування;
- приховування категорій;
- керування SEO-полями категорії.
Імпорт товарів CSV або Excel
Потрібно реалізувати завантаження великої кількості товарів через CSV або Excel.
Імпорт має підтримувати:
- назву товару;
- артикул;
- категорію;
- опис;
- ціну;
- акційну ціну;
- залишок;
- статус;
- SEO-поля;
- посилання або назву фото, якщо це передбачено форматом.
Перед імпортом система повинна перевіряти файл і показувати помилки.
Медіафайли товарів
Для товарів потрібно реалізувати завантаження зображень через FilePond або аналогічний інструмент.
Медіаблок має підтримувати:
- основне фото;
- додаткові фото;
- видалення фото;
- сортування фото;
- прив’язку фото до товару;
- прев’ю фото в адміністративній частині.
AJAX-інтерактив
Ключові дії мають виконуватися без зайвого перезавантаження сторінок.
Через AJAX мають працювати:
- додавання товару;
- редагування товару;
- видалення товару;
- зміна статусу товару;
- керування категоріями;
- додавання товару в кошик;
- зміна кількості в кошику;
- перерахунок суми кошика;
- оформлення замовлення;
- зміна статусу замовлення;
- завантаження фото товарів.
Технічні вимоги
| Параметр | Опис |
|---|---|
| Бекенд | K2 ERP на Python або PHP |
| База даних | PostgreSQL або MySQL |
| Фронтенд | HTML5, JavaScript |
| AJAX | Fetch або Axios |
| UI-компоненти | DataTables, Select2, WYSIWYG-редактор для опису товару |
| Платіжні шлюзи | WayForPay, LiqPay або Stripe |
| Медіа | Завантаження зображень через FilePond або аналог |
| Імпорт | CSV або Excel |
Рекомендовані сутності бази даних
Для реалізації задачі доцільно передбачити такі сутності:
- категорії товарів;
- товари;
- фото товарів;
- залишки товарів;
- склади;
- кошики;
- рядки кошика;
- замовлення;
- рядки замовлення;
- покупці;
- способи оплати;
- платежі;
- статуси замовлень;
- історія зміни статусів;
- email-сповіщення;
- імпорт товарів;
- SEO-налаштування.
Практичне завдання
У межах атестації потрібно продемонструвати робочий сценарій.
Мінімальний сценарій:
- створити категорію товарів;
- створити товар із ціною, описом, фото й залишком;
- створити акційний товар;
- перевірити відображення товару в каталозі;
- відкрити сторінку товару;
- додати товар у кошик;
- змінити кількість у кошику;
- перевірити автоматичний перерахунок суми;
- оформити замовлення;
- обрати спосіб оплати;
- перевірити створення замовлення в адмінці;
- виконати або змоделювати онлайн-оплату;
- перевірити автоматичну зміну статусу платежу;
- перевірити зміну статусу замовлення;
- перевірити зменшення залишку товару;
- отримати email-підтвердження покупцю;
- отримати email-сповіщення співробітнику;
- імпортувати товари з CSV або Excel;
- змінити товар через AJAX-адмінку;
- показати журнал замовлень із фільтрами.
Критерії оцінювання
| Критерій | Бали | Що перевіряється |
|---|---|---|
| Реалізація довідника товарів і категорій | 20 | Категорії, товари, ціни, акції, фото, SEO, статуси |
| Робота кошика і оформлення замовлення | 20 | Додавання товарів, зміна кількості, перерахунок сум, форма замовлення |
| Інтеграція з платіжною системою | 20 | Онлайн-оплата, статус платежу, зв’язок платежу із замовленням |
| Журнал замовлень і управління статусами | 20 | Адмінка, фільтри, деталі замовлення, статуси, історія змін |
| Інтерактивність через AJAX | 10 | Каталог, кошик, адмінка, товари, категорії, замовлення без перезавантаження |
| Збереження структури і логіки бізнес-процесів | 10 | Зв’язок магазину зі складом, залишками, оплатами, покупцями й статусами |
| Разом | 100 | Максимальна оцінка |
Шкала оцінювання
| Бали | Рівень | Опис |
|---|---|---|
| 90–100 | Відмінно | Інтернет-магазин повністю працює: каталог, кошик, замовлення, оплата, залишки, адмінка, імпорт і сповіщення реалізовані коректно |
| 75–89 | Добре | Основна логіка працює, є незначні недоліки, які не руйнують процес продажу |
| 60–74 | Зараховано | Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання |
| 0–59 | Не зараховано | Відсутня критична логіка: каталог, кошик, замовлення, оплата, залишки або журнал замовлень |
Критичні помилки
Критичними помилками вважаються ситуації, коли:
- неможливо створити товар;
- товар не відображається в каталозі;
- неможливо додати товар у кошик;
- сума кошика розраховується неправильно;
- неможливо оформити замовлення;
- замовлення не потрапляє в адміністративну частину;
- статус замовлення не змінюється;
- оплата не пов’язується із замовленням;
- після успішної оплати статус не оновлюється;
- залишки не зменшуються після покупки;
- можна купити товар у кількості, більшій за доступний залишок, якщо це не дозволено правилами;
- покупець не отримує підтвердження;
- співробітники не бачать нового замовлення;
- імпорт товарів спотворює дані або створює дублікати без контролю.
Умова складання. Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл онлайн-продажу: товар → кошик → оформлення замовлення → оплата → зміна статусу → списання залишку → журнал замовлень.
Очікуваний результат
У результаті виконання атестаційного завдання має бути створений модуль інтернет-магазину K2 ERP.
Модуль має підтримувати каталог товарів і категорій, сторінки товарів, кошик, оформлення замовлення, онлайн-оплату, журнал замовлень, управління статусами, email-сповіщення, облік залишків, акційні товари, імпорт CSV/Excel та AJAX-адміністрування.
Примітка
Інтернет-магазин є важливим модулем для багатьох бізнесів незалежно від розміру компанії.
Такий модуль допомагає компаніям вийти в онлайн-продажі без залучення сторонніх платформ і при цьому зберегти зв’язок із внутрішнім обліком, складом, оплатами та клієнтською базою.
Коротко
| Питання | Відповідь |
|---|---|
| Що потрібно створити? | Модуль інтернет-магазину |
| Які довідники потрібні? | Категорії товарів і товари |
| Що має бачити покупець? | Каталог, сторінку товару, кошик і форму оформлення замовлення |
| Які способи оплати потрібні? | Оплата при отриманні та онлайн-оплата |
| Які платіжні системи можна використати? | WayForPay, LiqPay, Stripe або іншу платіжну систему |
| Що має бути в адмінці? | Товари, категорії, замовлення, статуси, платежі, імпорт і залишки |
| Що має працювати через AJAX? | Товари, категорії, кошик, замовлення, зміна статусів і завантаження фото |
| Що є критичною вимогою? | Повний цикл онлайн-продажу з оплатою, статусами й залишками |