Перейти до вмісту

Атестаційні завдання K2 ERP/Інтернет-магазин: відмінності між версіями

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні
Пененос з Гугл док.
 
Немає опису редагування
 
Рядок 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>


== Реальний бізнес-контекст ==
== Реальний бізнес-контекст ==
Компанія хоче створити власний інтернет-магазин на базі K2 ERP, інтегрований із загальною ERP-структурою.


Модуль повинен забезпечувати:
Компанія хоче продавати товари через власний сайт, не використовуючи сторонні маркетплейси або окремі SaaS-платформи.
 
Покупець повинен зайти на сайт, знайти товар у каталозі, переглянути картку товару, додати позиції в кошик, оформити замовлення, обрати спосіб оплати та отримати підтвердження.


* управління каталогом товарів;
Менеджер у K2 ERP має бачити замовлення в адміністративній частині, контролювати статус, оплату, залишки, відправлення та історію змін.
* ведення складів і залишків;
* оформлення замовлень покупцями через сайт;
* інтеграцію з платіжними системами;
* відстеження статусів замовлень.


== Основні завдання ==
== Основний бізнес-процес ==


=== 1. Структура довідників ===
Типовий процес роботи інтернет-магазину виглядає так:


==== Довідник «Категорії товарів» ====
# адміністратор створює категорії товарів;
Довідник категорій товарів повинен містити:
# додає товари, фото, ціни, описи та SEO-поля;
# система показує товари на сайті;
# покупець відкриває каталог або сторінку товару;
# додає товар у кошик;
# змінює кількість товарів у кошику;
# переходить до оформлення замовлення;
# вводить контактні дані та адресу доставки;
# обирає спосіб оплати;
# система створює замовлення;
# покупець отримує email-підтвердження;
# співробітники отримують повідомлення про нове замовлення;
# після успішної оплати статус змінюється автоматично;
# товар списується із залишків згідно з правилами обліку;
# менеджер обробляє, відправляє та завершує замовлення.
 
== Основні об’єкти модуля ==
 
{| class="wikitable" style="width:100%;"
! Об’єкт
! Призначення
|-
| Категорії товарів
| Ієрархія каталогу інтернет-магазину
|-
| Товари
| Основні одиниці продажу
|-
| Фото товарів
| Прев’ю та додаткові зображення товару
|-
| Залишки товарів
| Дані про доступну кількість товару на складах
|-
| Склади
| Місця зберігання товарів
|-
| Кошик
| Тимчасовий список товарів, які покупець хоче придбати
|-
| Рядки кошика
| Конкретні товари, кількість і суми в кошику
|-
| Замовлення
| Основний документ онлайн-продажу
|-
| Рядки замовлення
| Товари, кількість, ціни й суми в замовленні
|-
| Покупці
| Дані клієнтів, які оформили замовлення
|-
| Способи оплати
| Оплата при отриманні, онлайн-оплата та інші варіанти
|-
| Платежі
| Дані про оплату замовлення
|-
| Статуси замовлень
| Поточний стан обробки замовлення
|-
| Email-сповіщення
| Повідомлення покупцям і співробітникам
|-
| Імпорт товарів
| Масове завантаження товарів із CSV або Excel
|-
| SEO-налаштування
| URL, Title, Description для категорій і товарів
|}


* назву категорії;
== Довідник «Категорії товарів» ==
* батьківську категорію для побудови ієрархії;
 
* сортування;
Довідник категорій товарів потрібен для побудови каталогу інтернет-магазину.
* SEO-поля:
 
** URL;
Категорії повинні підтримувати ієрархію. Наприклад:
** Title;
 
** Description.
* Електроніка;
* Електроніка → Ноутбуки;
* Електроніка → Смартфони;
* Одяг → Чоловічий одяг;
* Одяг → Жіночий одяг.
 
== Поля категорії товарів ==
 
{| 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>
 
== Фронтенд магазину для покупців ==


==== Довідник «Товари» ====
Фронтенд магазину — це публічна частина, яку бачить покупець.
Довідник товарів повинен містити:


* назву товару;
Вона повинна бути простою, зрозумілою та швидкою: каталог, фільтри, пошук, сторінка товару, кошик і оформлення замовлення.
* опис товару у форматі HTML через редактор;
* код товару або артикул;
* ціну;
* акційну ціну, опціонально;
* залишок на складі;
* статус товару:
** активний;
** прихований;
* прев’ю-зображення як медіафайл;
* додаткові фото.


=== 2. Фронтенд магазину для покупців ===
== Каталог товарів ==


==== Каталог товарів ====
Каталог товарів повинен підтримувати:
Каталог товарів повинен підтримувати:


Рядок 54: Рядок 251:
* фільтрацію за наявністю;
* фільтрацію за наявністю;
* фільтрацію за акційними пропозиціями;
* фільтрацію за акційними пропозиціями;
* пошук товарів по назві або коду.
* пошук товарів по назві;
* пошук товарів по коду або артикулу;
* сортування за ціною;
* сортування за назвою;
* сортування за популярністю або датою додавання, якщо така логіка реалізована.


==== Сторінка товару ====
== Сторінка товару ==
Сторінка товару повинна містити:
 
Сторінка товару повинна містити всю інформацію, необхідну для прийняття рішення про покупку.
 
На сторінці товару потрібно показати:


* фото з можливістю збільшення;
* фото з можливістю збільшення;
* додаткові фото;
* назву товару;
* назву товару;
* артикул або код;
* опис;
* опис;
* ціну;
* ціну;
* кнопку '''«Додати у кошик»'''.
* акційну ціну, якщо вона є;
* наявність;
* кнопку '''«Додати у кошик»''';
* пов’язані або рекомендовані товари, опціонально.
 
== Акційні товари ==
 
Потрібно передбачити окрему категорію або фільтр '''«Акції»''' для товарів з акційною ціною.
 
Акційний товар має показувати основну ціну й акційну ціну. Покупець повинен чітко бачити, що товар продається зі знижкою.
 
== Кошик ==


==== Кошик ====
Кошик повинен підтримувати:
Кошик повинен підтримувати:


* перелік товарів у кошику;
* перелік товарів у кошику;
* кількість кожного товару;
* ціну товару;
* суму по кожному рядку;
* загальну суму замовлення;
* можливість змінити кількість товару;
* можливість змінити кількість товару;
* можливість видалити товар із кошика;
* автоматичний перерахунок загальної суми;
* автоматичний перерахунок загальної суми;
* кнопку '''«Оформити замовлення»'''.
* кнопку '''«Оформити замовлення»'''.


=== 3. Оформлення замовлення ===
<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%;"
* телефон;
! Спосіб оплати
* email;
! Опис
* адресу доставки;
|-
* коментар до замовлення;
| Оплата при отриманні
* вибір способу оплати:
| Покупець оплачує товар під час отримання
** оплата при отриманні;
|-
** оплата онлайн.
| Оплата онлайн
| Покупець оплачує замовлення через платіжну систему
|}
 
== Інтеграція з платіжною системою ==


=== 4. Інтеграція з платіжною системою ===
Потрібно реалізувати підключення до однієї з популярних платіжних платформ:
Потрібно реалізувати підключення до однієї з популярних платіжних платформ:


Рядок 91: Рядок 351:
* LiqPay;
* LiqPay;
* Stripe;
* Stripe;
* або іншої платіжної системи.
* інша платіжна система.


Після успішної оплати статус замовлення повинен змінюватися автоматично.
Після успішної оплати система повинна автоматично змінювати статус замовлення.
 
Платіж має бути пов’язаний із замовленням, сумою, способом оплати, датою, статусом і відповіддю платіжної системи.
 
== Статуси платежу ==
 
{| class="wikitable" style="width:100%;"
! Статус
! Значення
|-
| Очікує оплати
| Замовлення створене, але оплата ще не проведена
|-
| Оплачено
| Платіж успішно підтверджено платіжною системою
|-
| Помилка оплати
| Платіж не пройшов
|-
| Повернено
| Оплату повернуто покупцю
|}
 
== Журнал замовлень в адміністративній частині ==
 
Журнал замовлень повинен бути доступний в адміністративній частині K2 ERP.
 
Менеджер має бачити всі замовлення, їхні статуси, покупців, суми, спосіб оплати та поточний етап обробки.
 
== Колонки журналу замовлень ==
 
{| class="wikitable" style="width:100%;"
! Колонка
! Опис
|-
| Номер замовлення
| Унікальний номер замовлення
|-
| Дата замовлення
| Дата й час оформлення
|-
| Покупець
| Ім’я покупця або клієнта
|-
| Телефон
| Контактний номер покупця
|-
| Email
| Email покупця
|-
| Сума
| Загальна сума замовлення
|-
| Статус
| Нове, в обробці, відправлено, завершено, скасовано
|-
| Тип оплати
| Оплата при отриманні або онлайн
|-
| Статус платежу
| Очікує оплати, оплачено, помилка, повернено
|}


=== 5. Журнал замовлень в адмінці ===
== Статуси замовлення ==
Журнал замовлень повинен бути доступний в адміністративній частині.


==== Колонки журналу ====
{| 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-полями.
 
== Керування категоріями ==
 
Категоріями потрібно керувати без перезавантаження сторінки.


=== 6. Додаткові функції ===
Потрібно реалізувати:
Потрібно реалізувати:


* відправку email-підтвердження клієнту після оформлення замовлення;
* створення категорій;
* відправку email співробітникам про нове замовлення;
* редагування категорій;
* відображення залишків у реальному часі;
* зміну батьківської категорії;
* автоматичне зменшення залишку товару після покупки;
* сортування;
* окрему категорію '''«Акції»''' для акційних товарів.
* приховування категорій;
* керування SEO-полями категорії.


=== 7. Бекенд-функціонал для адміністраторів ===
== Імпорт товарів CSV або Excel ==
Адміністративний інтерфейс повинен підтримувати:


* додавання товарів через AJAX-інтерфейс;
Потрібно реалізувати завантаження великої кількості товарів через CSV або Excel.
* редагування товарів через AJAX-інтерфейс;
 
* видалення товарів через AJAX-інтерфейс;
Імпорт має підтримувати:
* завантаження великої кількості товарів через імпорт 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, AJAX через Fetch або Axios
| HTML5, JavaScript
|-
|-
|UI-компоненти
| AJAX
|DataTables, Select2, WYSIWYG-редактор для опису товару
| Fetch або Axios
|-
|-
|Платіжні шлюзи
| UI-компоненти
|WayForPay, LiqPay або Stripe
| DataTables, Select2, WYSIWYG-редактор для опису товару
|-
|-
|Медіа
| Платіжні шлюзи
|Завантаження зображень через FilePond або аналог
| WayForPay, LiqPay або Stripe
|}
 
== Критерії оцінки ==
{| class="wikitable"
!Критерій
!Бали
|-
|Реалізація довідника товарів і категорій
|20
|-
|Робота кошика і оформлення замовлення
|20
|-
|Інтеграція з платіжною системою
|20
|-
|Журнал замовлень і управління статусами
|20
|-
|Інтерактивність через AJAX
|10
|-
|-
|Збереження структури і логіки бізнес-процесів
| Медіа
|10
| Завантаження зображень через FilePond або аналог
|-
|-
!Разом
| Імпорт
!100
| CSV або Excel
|}
|}


== Примітка ==
== Рекомендовані сутності бази даних ==
Інтернет-магазин є обов’язковим модулем для багатьох бізнесів у 2025 році незалежно від розміру компанії.
 
Такий модуль допомагає компаніям вийти в онлайн-продажі без залучення сторонніх платформ.


== Очікуваний результат ==
Для реалізації задачі доцільно передбачити такі сутності:
У результаті виконання атестаційного завдання має бути створений модуль інтернет-магазину K2 ERP, який підтримує каталог товарів і категорій, сторінки товарів, кошик, оформлення замовлення, онлайн-оплату, журнал замовлень, управління статусами, email-сповіщення, облік залишків, акційні товари, імпорт CSV/Excel та AJAX-адміністрування.
 
== Рекомендовані сутності бази даних ==


* категорії товарів;
* категорії товарів;
Рядок 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 має бачити замовлення в адміністративній частині, контролювати статус, оплату, залишки, відправлення та історію змін.

Основний бізнес-процес

Типовий процес роботи інтернет-магазину виглядає так:

  1. адміністратор створює категорії товарів;
  2. додає товари, фото, ціни, описи та SEO-поля;
  3. система показує товари на сайті;
  4. покупець відкриває каталог або сторінку товару;
  5. додає товар у кошик;
  6. змінює кількість товарів у кошику;
  7. переходить до оформлення замовлення;
  8. вводить контактні дані та адресу доставки;
  9. обирає спосіб оплати;
  10. система створює замовлення;
  11. покупець отримує email-підтвердження;
  12. співробітники отримують повідомлення про нове замовлення;
  13. після успішної оплати статус змінюється автоматично;
  14. товар списується із залишків згідно з правилами обліку;
  15. менеджер обробляє, відправляє та завершує замовлення.

Основні об’єкти модуля

Об’єкт Призначення
Категорії товарів Ієрархія каталогу інтернет-магазину
Товари Основні одиниці продажу
Фото товарів Прев’ю та додаткові зображення товару
Залишки товарів Дані про доступну кількість товару на складах
Склади Місця зберігання товарів
Кошик Тимчасовий список товарів, які покупець хоче придбати
Рядки кошика Конкретні товари, кількість і суми в кошику
Замовлення Основний документ онлайн-продажу
Рядки замовлення Товари, кількість, ціни й суми в замовленні
Покупці Дані клієнтів, які оформили замовлення
Способи оплати Оплата при отриманні, онлайн-оплата та інші варіанти
Платежі Дані про оплату замовлення
Статуси замовлень Поточний стан обробки замовлення
Email-сповіщення Повідомлення покупцям і співробітникам
Імпорт товарів Масове завантаження товарів із CSV або Excel
SEO-налаштування URL, Title, Description для категорій і товарів

Довідник «Категорії товарів»

Довідник категорій товарів потрібен для побудови каталогу інтернет-магазину.

Категорії повинні підтримувати ієрархію. Наприклад:

  • Електроніка;
  • Електроніка → Ноутбуки;
  • Електроніка → Смартфони;
  • Одяг → Чоловічий одяг;
  • Одяг → Жіночий одяг.

Поля категорії товарів

Поле Опис
Назва категорії Назва, яку бачить покупець
Батьківська категорія Для побудови ієрархії каталогу
Сортування Порядок показу категорій
URL Частина адреси категорії
Title SEO-заголовок категорії
Description SEO-опис категорії
Статус Активна або прихована

Довідник «Товари»

Довідник товарів містить усі товари, які можуть продаватися через інтернет-магазин.

Товар повинен мати не лише назву й ціну, а й опис, артикул, фото, статус, залишок, SEO-поля та зв’язок із категоріями.

Поля товару

Поле Опис
Назва товару Основна назва товару
Опис товару HTML-опис через WYSIWYG-редактор
Код товару або артикул Внутрішній код, SKU або артикул
Категорія Категорія каталогу
Ціна Основна ціна продажу
Акційна ціна Опціональна знижена ціна
Залишок на складі Доступна кількість товару
Статус товару Активний або прихований
Прев’ю-зображення Основне фото товару
Додаткові фото Галерея зображень товару
SEO title SEO-заголовок сторінки товару
SEO description SEO-опис сторінки товару
URL Адреса сторінки товару

Статуси товару

Статус Значення
Активний Товар доступний у каталозі
Прихований Товар не показується покупцям, але зберігається в системі
Немає в наявності Товар можна показувати, але не можна купити
Архівний Товар більше не продається

Критично. Прихований або архівний товар не повинен бути доступний для покупки. Товар без залишку не повинен продаватися, якщо в системі не дозволено продаж “під замовлення”.

Фронтенд магазину для покупців

Фронтенд магазину — це публічна частина, яку бачить покупець.

Вона повинна бути простою, зрозумілою та швидкою: каталог, фільтри, пошук, сторінка товару, кошик і оформлення замовлення.

Каталог товарів

Каталог товарів повинен підтримувати:

  • виведення списку товарів за категоріями;
  • фільтрацію за ціною;
  • фільтрацію за наявністю;
  • фільтрацію за акційними пропозиціями;
  • пошук товарів по назві;
  • пошук товарів по коду або артикулу;
  • сортування за ціною;
  • сортування за назвою;
  • сортування за популярністю або датою додавання, якщо така логіка реалізована.

Сторінка товару

Сторінка товару повинна містити всю інформацію, необхідну для прийняття рішення про покупку.

На сторінці товару потрібно показати:

  • фото з можливістю збільшення;
  • додаткові фото;
  • назву товару;
  • артикул або код;
  • опис;
  • ціну;
  • акційну ціну, якщо вона є;
  • наявність;
  • кнопку «Додати у кошик»;
  • пов’язані або рекомендовані товари, опціонально.

Акційні товари

Потрібно передбачити окрему категорію або фільтр «Акції» для товарів з акційною ціною.

Акційний товар має показувати основну ціну й акційну ціну. Покупець повинен чітко бачити, що товар продається зі знижкою.

Кошик

Кошик повинен підтримувати:

  • перелік товарів у кошику;
  • кількість кожного товару;
  • ціну товару;
  • суму по кожному рядку;
  • загальну суму замовлення;
  • можливість змінити кількість товару;
  • можливість видалити товар із кошика;
  • автоматичний перерахунок загальної суми;
  • кнопку «Оформити замовлення».

Важливо. Кількість у кошику не повинна перевищувати доступний залишок, якщо продаж понад залишок не дозволений правилами магазину.

Оформлення замовлення

Форма оформлення замовлення повинна містити контактні дані покупця, адресу доставки, коментар і спосіб оплати.

Поля форми замовлення

Поле Опис
Ім’я та прізвище покупця Хто оформлює замовлення
Телефон Основний контактний номер
Email Email для підтвердження замовлення
Адреса доставки Куди потрібно доставити товар
Коментар до замовлення Додаткова інформація від покупця
Спосіб оплати Оплата при отриманні або онлайн

Після оформлення система повинна створити замовлення в адміністративній частині та надіслати підтвердження покупцю.

Способи оплати

Потрібно передбачити щонайменше два способи оплати:

Спосіб оплати Опис
Оплата при отриманні Покупець оплачує товар під час отримання
Оплата онлайн Покупець оплачує замовлення через платіжну систему

Інтеграція з платіжною системою

Потрібно реалізувати підключення до однієї з популярних платіжних платформ:

  • WayForPay;
  • LiqPay;
  • Stripe;
  • інша платіжна система.

Після успішної оплати система повинна автоматично змінювати статус замовлення.

Платіж має бути пов’язаний із замовленням, сумою, способом оплати, датою, статусом і відповіддю платіжної системи.

Статуси платежу

Статус Значення
Очікує оплати Замовлення створене, але оплата ще не проведена
Оплачено Платіж успішно підтверджено платіжною системою
Помилка оплати Платіж не пройшов
Повернено Оплату повернуто покупцю

Журнал замовлень в адміністративній частині

Журнал замовлень повинен бути доступний в адміністративній частині K2 ERP.

Менеджер має бачити всі замовлення, їхні статуси, покупців, суми, спосіб оплати та поточний етап обробки.

Колонки журналу замовлень

Колонка Опис
Номер замовлення Унікальний номер замовлення
Дата замовлення Дата й час оформлення
Покупець Ім’я покупця або клієнта
Телефон Контактний номер покупця
Email 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-налаштування.

Практичне завдання

У межах атестації потрібно продемонструвати робочий сценарій.

Мінімальний сценарій:

  1. створити категорію товарів;
  2. створити товар із ціною, описом, фото й залишком;
  3. створити акційний товар;
  4. перевірити відображення товару в каталозі;
  5. відкрити сторінку товару;
  6. додати товар у кошик;
  7. змінити кількість у кошику;
  8. перевірити автоматичний перерахунок суми;
  9. оформити замовлення;
  10. обрати спосіб оплати;
  11. перевірити створення замовлення в адмінці;
  12. виконати або змоделювати онлайн-оплату;
  13. перевірити автоматичну зміну статусу платежу;
  14. перевірити зміну статусу замовлення;
  15. перевірити зменшення залишку товару;
  16. отримати email-підтвердження покупцю;
  17. отримати email-сповіщення співробітнику;
  18. імпортувати товари з CSV або Excel;
  19. змінити товар через AJAX-адмінку;
  20. показати журнал замовлень із фільтрами.

Критерії оцінювання

Критерій Бали Що перевіряється
Реалізація довідника товарів і категорій 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? Товари, категорії, кошик, замовлення, зміна статусів і завантаження фото
Що є критичною вимогою? Повний цикл онлайн-продажу з оплатою, статусами й залишками

Див. також