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

Атестаційні завдання K2 ERP/WMS

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні


Атестаційне завдання K2 ERP — WMS, оптова торгівля, FIFO та документообіг — це практична задача для перевірки навичок розробника або впроваджувача K2 ERP у побудові веб-рішення для складського обліку, закупівель, продажів, послуг, партійного обліку, списання собівартості за методом FIFO та формування звітів.

Завдання імітує роботу компанії, яка займається оптовою торгівлею: отримує товари від постачальників, продає їх клієнтам, надає додаткові послуги, формує документи, контролює залишки та аналізує прибуток.

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

Назва завдання

Оптова торгівля, WMS, FIFO та документообіг.

Мета завдання

Мета завдання — перевірити здатність спеціаліста спроєктувати та реалізувати веб-рішення для обліку оптової торгівлі в K2 ERP.

У результаті має бути створене рішення, яке дозволяє:

  • оформлювати надходження товарів;
  • оформлювати замовлення клієнтів;
  • створювати рахунки-фактури;
  • створювати видаткові накладні;
  • створювати податкові накладні;
  • обліковувати товари та послуги в одній табличній частині;
  • контролювати залишки перед продажем;
  • забороняти проведення документа при нестачі товару;
  • списувати собівартість за партіями методом FIFO;
  • формувати звіти по продажах, прибутку та залишках.

Головний принцип. WMS-завдання перевіряє не лише вміння зробити форми документів, а й розуміння руху товарів: що надійшло, що продано, з якої партії списано, яка собівартість і який залишок доступний на дату.

Бізнес-сценарій

Компанія займається оптовою торгівлею.

Надходження товарів від постачальників оформлюється документом «Прибуткова накладна». Продаж товарів клієнтам оформлюється документом «Видаткова накладна».

Окрім продажу товарів, компанія може надавати додаткові послуги, наприклад доставку. Товари й послуги мають зазначатися в одній табличній частині документа, але облікова логіка для них різна: товари впливають на складські залишки, а послуги не повинні списуватися зі складу як товар.

Перед продажем клієнту спочатку створюється документ «Замовлення». На основі замовлення формується «Рахунок-фактура», коли клієнт підтверджує замовлення і просить безготівковий рахунок. На основі рахунку-фактури створюється «Видаткова накладна». На основі видаткової накладної створюється «Податкова накладна».

Документообіг

Основний ланцюжок документів:

  1. Замовлення;
  2. Рахунок-фактура;
  3. Видаткова накладна;
  4. Податкова накладна.

Окремо оформлюється надходження товарів:

  1. Прибуткова накладна.

Логіка процесу. Прибуткова накладна збільшує залишки товарів. Видаткова накладна зменшує залишки товарів і списує собівартість за FIFO. Замовлення та рахунок-фактура готують продаж, але самі по собі не повинні списувати товар зі складу.

Основні документи

Документ Призначення Вплив на склад
Прибуткова накладна Фіксує надходження товарів і послуг Збільшує залишки товарів
Замовлення Фіксує намір клієнта купити товари або послуги Не списує товар
Рахунок-фактура Формує рахунок для оплати клієнтом Не списує товар
Видаткова накладна Оформлює продаж товарів і послуг Списує товари зі складу
Податкова накладна Формує податковий документ на основі реалізації Не змінює складські залишки напряму

Прибуткова накладна

Прибуткова накладна оформлює надходження товарів і послуг від постачальника.

Зазвичай вона має реєстр документів, у якому можна переглядати створені документи, шукати потрібну накладну, відкривати її та створювати нову.

Реєстр прибуткових накладних

Реєстр прибуткових накладних має дозволяти:

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

Форма прибуткової накладної

Форма прибуткової накладної має містити шапку документа й табличну частину.

У шапці документа доцільно передбачити:

  • номер;
  • дату;
  • постачальника;
  • склад;
  • статус;
  • коментар.

У табличній частині мають бути товари й послуги.

Послуги в прибутковій накладній

Послуги мають обліковуватися в тій самій табличній частині, що й товари.

При цьому потрібно розрізняти тип рядка:

  • товар;
  • послуга.

Товар збільшує складські залишки. Послуга не повинна створювати складський залишок, але може впливати на суму документа, витрати або собівартість залежно від логіки реалізації.

Друкована форма прибуткової накладної

Прибуткова накладна повинна мати друковану форму.

У друкованій формі потрібно показати постачальника, дату, номер документа, склад, табличну частину, кількість, ціни, суми та підсумки.

Видаткова накладна

Видаткова накладна оформлює продаж товарів і послуг клієнту.

Реєстр видаткових накладних

Реєстр видаткових накладних має дозволяти переглядати, шукати, відкривати та створювати документи реалізації.

У реєстрі бажано показувати номер, дату, клієнта, суму, статус і документ-підставу.

Форма видаткової накладної

Форма видаткової накладної має містити шапку документа та табличну частину.

У шапці документа потрібно передбачити:

  • номер;
  • дату;
  • клієнта;
  • склад;
  • документ-підставу;
  • статус;
  • коментар.

У табличній частині повинні бути товари й послуги.

Реалізація послуг

Послуги повинні додаватися у табличну частину видаткової накладної разом із товарами.

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

Друкована форма видаткової накладної

Видаткова накладна повинна мати друковану форму.

У друкованій формі потрібно показати клієнта, дату, номер, склад, товари, послуги, кількість, ціни, суми та підсумки.

Контроль залишків

При проведенні видаткової накладної система має перевіряти наявність товарів на складі.

Якщо товару не вистачає, система повинна:

  • показати попередження;
  • вказати кількість нестачі;
  • не дозволити провести документ.

Наприклад, якщо користувач продає 10 одиниць товару, а на складі є лише 7, система повинна показати нестачу 3 одиниці й заблокувати проведення.

Критично. Видаткова накладна не може бути проведена, якщо на складі недостатньо товару. Проведення “в мінус” у цьому завданні не допускається.

Вибір рядків у видатковій накладній

Вибір товарів у видатковій накладній має відбуватися з поточних залишків.

Користувач повинен бачити лише доступні товари або, принаймні, система повинна показувати фактичний залишок під час вибору товару.

Це зменшує ризик помилок і допомагає не створювати документи, які неможливо провести.

FIFO

FIFO — це метод списання, за яким першим списується товар, що першим надійшов на склад.

У межах цього завдання FIFO використовується для списання собівартості товару за партіями.

Якщо на склад спочатку надійшло 5 одиниць товару по 100 грн, а потім ще 5 одиниць по 120 грн, то при продажу 6 одиниць собівартість має списуватися так:

  • 5 одиниць × 100 грн;
  • 1 одиниця × 120 грн.

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

Важливо. Документи заднім числом у межах завдання не вводяться, але старі документи можуть неоперативно переводитися. Це потрібно враховувати при логіці проведення та FIFO.

Партійний облік

Партійний облік потрібен для того, щоб система знала, з якого надходження списується товар.

Кожна прибуткова накладна має створювати партії товарів. Кожна видаткова накладна при проведенні повинна списувати товари з доступних партій за правилом FIFO.

Мінімальні дані партії:

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

Рекомендовані сутності бази даних

Для реалізації задачі доцільно передбачити такі сутності:

  • товари;
  • послуги;
  • контрагенти;
  • склади;
  • документи;
  • рядки документів;
  • партії товарів;
  • рухи товарів;
  • рухи собівартості;
  • рахунки-фактури;
  • податкові накладні;
  • користувачі;
  • журнал змін документів.

Вимоги до структури бази даних

Потрібно побудувати структуру бази даних у графічному вигляді та продемонструвати її.

На основі графічної структури потрібно створити SQL для створення таблиць.

Допускаються такі бази даних:

  • MySQL;
  • PostgreSQL;
  • SQLite.

База даних повинна підтримувати документообіг, табличні частини документів, партійний облік, рухи товарів і рухи собівартості.

Вимоги до веб-рішення

Веб-рішення має бути побудоване на фреймворку з відкритим вихідним кодом.

При створенні сторінок документів усе має працювати без повного перезавантаження сторінок.

Потрібно використовувати AJAX або аналогічний підхід для:

  • створення документів;
  • редагування документів;
  • збереження рядків табличної частини;
  • проведення документів;
  • перевірки залишків;
  • відображення попереджень.

Виконану роботу потрібно продемонструвати у вигляді веб-сторінки, доступної з інтернет-URL.

Вимоги до програмної реалізації

Під час виконання завдання потрібно використовувати об’єктно-орієнтований підхід.

Код має бути структурованим, зрозумілим і придатним для підтримки.

Бажано розділити:

  • моделі;
  • контролери;
  • сервіси проведення документів;
  • сервіси розрахунку FIFO;
  • сервіси звітів;
  • шаблони друку;
  • frontend-логіку;
  • SQL або ORM-шар.

Очікувані звіти

Необхідно побудувати три основні звіти.

Звіт «Продаж товарів за період»

Звіт має показувати реалізацію товарів за вибраний період.

У звіті бажано передбачити:

  • період;
  • товар;
  • клієнта;
  • склад;
  • кількість продажу;
  • суму продажу;
  • документ реалізації.

Звіт «Прибутки за період»

Звіт має показувати прибуток за вибраний період з урахуванням собівартості, списаної за FIFO.

Мінімальна логіка:

Прибуток = Сума продажу - Собівартість списання

Звіт має показувати не лише виручку, а й собівартість та фінансовий результат.

Звіт «Залишки товару на дату»

Звіт має показувати залишки товарів на складі на зазначену дату.

У звіті потрібно відображати:

  • товар;
  • склад;
  • партію;
  • кількість залишку;
  • собівартість;
  • суму залишку.

Ілюстрації з документа

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

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

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

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

Цілі тесту

Атестаційне завдання має перевірити:

  • вміння будувати структуру бази даних;
  • знання SQL та вміння працювати з базою даних;
  • стиль написання програмного коду;
  • використання веб-технологій для прикладних задач;
  • використання об’єктно-орієнтованого програмування;
  • використання AJAX у практичних завданнях;
  • інтерпретацію бізнес-задачі у веб-додаток;
  • налаштування веб-сервера для демонстрації проєкту;
  • швидкість вирішення задачі.

Очікуваний результат

У результаті виконання атестаційного завдання має бути створене веб-рішення для оптової торгівлі.

Рішення має підтримувати прибуткові накладні, замовлення, рахунки-фактури, видаткові накладні, податкові накладні, послуги в табличній частині, контроль залишків, списання собівартості за FIFO, друковані форми та звіти.

Робота має бути продемонстрована через веб-сторінку, доступну з інтернет-URL. Час виконання потрібно зафіксувати та повідомити при здачі.

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

Напрям Бали Що перевіряється
Структура бази даних 15 Повнота моделі даних, наявність документів, рядків, партій, рухів, складів, контрагентів і зв’язків
SQL 10 Коректність SQL-скриптів для MySQL, PostgreSQL або SQLite
Документообіг 15 Ланцюжок замовлення, рахунку-фактури, видаткової та податкової накладної
Прибуткові та видаткові накладні 15 Реєстри, форми, табличні частини, товари й послуги, друковані форми
AJAX та web-інтерфейс 10 Створення, редагування, збереження й проведення документів без перезавантаження сторінки
FIFO 15 Коректне списання собівартості за партіями
Контроль залишків 10 Попередження про нестачу та заборона проведення документа
Звіти 10 Продажі, прибутки, залишки на дату
ООП і якість коду 10 Структура коду, читабельність, підтримуваність, поділ логіки
Демонстрація 5 Доступний веб-URL і зафіксований час виконання
Разом 115 Максимальна оцінка

Шкала оцінювання

Бали Рівень Опис
100–115 Відмінно Рішення повністю працює, FIFO реалізовано коректно, звіти відповідають рухам, код структурований
85–99 Добре Основна логіка працює, є незначні недоліки без критичного впливу на результат
70–84 Зараховано Базовий документообіг працює, але є помилки або неповна реалізація окремих частин
0–69 Не зараховано Відсутня критична логіка: FIFO, контроль залишків, проведення документів або звіти

Критичні помилки

Критичними помилками вважаються ситуації, коли:

  • видаткова накладна проводиться при нестачі товару;
  • FIFO не працює або списує собівартість неправильно;
  • прибуткова накладна не створює партії;
  • видаткова накладна не списує товар зі складу;
  • послуги помилково списуються зі складу як товар;
  • звіт залишків не відповідає проведеним документам;
  • звіт прибутку не враховує собівартість;
  • немає зв’язку між замовленням, рахунком-фактурою, видатковою та податковою накладною;
  • документи неможливо створювати або редагувати без перезавантаження сторінки, якщо це було вимогою реалізації.

Умова складання. Завдання не може бути зараховане, якщо система не контролює залишки або не списує собівартість товарів за FIFO.

Коротко

Питання Відповідь
Що потрібно створити? Веб-рішення для оптової торгівлі та WMS-обліку
Який основний документообіг? Замовлення → рахунок-фактура → видаткова накладна → податкова накладна
Як оформлюється надходження? Прибутковою накладною
Як оформлюється продаж? Видатковою накладною
Чи можуть бути послуги в документі? Так, товари й послуги мають бути в одній табличній частині
Що має робити система при нестачі товару? Показати кількість нестачі й заборонити проведення документа
Як списується собівартість? За партіями методом FIFO
Які звіти потрібні? Продажі за період, прибутки за період, залишки товару на дату

Див. також