Атестаційні завдання K2 ERP/Обмінка: відмінності між версіями
R (обговорення | внесок) Прибрав джерело |
R (обговорення | внесок) Немає опису редагування |
||
| Рядок 1: | Рядок 1: | ||
= Модуль обліку валютних операцій: Обмінка = | {{DISPLAYTITLE:Атестаційні завдання K2 ERP/Обмінка}} | ||
'''Атестаційне завдання K2 ERP — Обмінка''' — це практична задача для перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля обліку валютних операцій, курсів валют, касових залишків, операцій купівлі та продажу валюти, касових ордерів, прибутку від курсової різниці та звітності. | |||
Модуль має забезпечувати повний цикл роботи обмінного пункту або компанії, яка виконує валютні операції: встановлення курсів, реєстрація обміну, контроль залишків у касах, формування касових документів і аналіз прибутковості. | |||
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;"> | |||
'''Коротко.''' Потрібно реалізувати модуль “Обмінка”, який дозволяє вести валюти, каси, курси купівлі та продажу, реєструвати валютні операції, автоматично оновлювати залишки, формувати касові ордери й бачити прибуток від обмінних операцій. | |||
</div> | |||
__TOC__ | |||
== Назва завдання == | |||
'''Модуль обліку валютних операцій: Обмінка'''. | |||
== Мета завдання == | |||
Мета завдання — створити в K2 ERP модуль для обліку операцій купівлі та продажу валют. | |||
Система повинна дозволяти: | |||
* вести довідник валют; | |||
* вести довідник кас; | |||
* фіксувати курси купівлі та продажу валют; | |||
* зберігати історію зміни курсів; | |||
* автоматично підставляти актуальний курс в операцію; | |||
* реєструвати купівлю валюти; | |||
* реєструвати продаж валюти; | |||
* миттєво розраховувати суму в гривні; | |||
* вести залишки по кожній валюті в кожній касі; | |||
* контролювати достатність залишків перед проведенням операції; | |||
* формувати прибуткові та видаткові касові ордери; | |||
* розраховувати прибуток від курсової різниці; | |||
* формувати звіти по оборотах, залишках і прибутковості; | |||
* експортувати або друкувати касові документи та звіти. | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
'''Головний принцип.''' Валютна операція не повинна бути просто записом у журналі. Вона має змінювати залишки двох валют: однієї валюти стає більше, іншої — менше. Саме це робить модуль обліковим, а не довідковим. | |||
</div> | |||
== Реальний бізнес-контекст == | == Реальний бізнес-контекст == | ||
Компанія або | Компанія, обмінний пункт, турагентство, фінансова компанія або підприємець працює з готівковими чи безготівковими валютними операціями. | ||
У роботі потрібно щоденно контролювати: | |||
* актуальні курси купівлі та продажу; | |||
* залишки гривні та іноземної валюти в касах; | |||
* операції купівлі валюти у клієнтів; | |||
* операції продажу валюти клієнтам; | |||
* прибуток від різниці курсів; | |||
* касові документи; | |||
* обороти за день, тиждень або місяць. | |||
Якщо такі операції вести вручну, легко помилитися в залишках, курсах, сумі гривні або прибутку. Тому модуль повинен автоматизувати розрахунок і контроль. | |||
== Основний бізнес-процес == | |||
Типовий процес роботи обмінки виглядає так: | |||
# адміністратор або касир встановлює курси валют; | |||
# у касі є залишки гривні та іноземної валюти; | |||
# клієнт приходить для купівлі або продажу валюти; | |||
# касир обирає тип операції; | |||
# система підставляє актуальний курс; | |||
# касир вводить суму у валюті; | |||
# система розраховує суму в гривні; | |||
# система перевіряє залишки в касі; | |||
# операція проводиться; | |||
# залишки валют автоматично оновлюються; | |||
# формується касовий ордер; | |||
# операція потрапляє у звіти по оборотах і прибутку. | |||
== Основні об’єкти модуля == | |||
{| class="wikitable" style="width:100%;" | |||
! Об’єкт | |||
! Призначення | |||
|- | |||
| Валюти | |||
| Довідник валют, з якими працює обмінка | |||
|- | |||
| Каси | |||
| Місця зберігання готівки та валютних залишків | |||
|- | |||
| Курси валют | |||
| Курси купівлі та продажу з історією змін | |||
|- | |||
| Операції обміну | |||
| Купівля або продаж валюти | |||
|- | |||
| Касові залишки | |||
| Поточні залишки кожної валюти в кожній касі | |||
|- | |||
| Касові ордери | |||
| Документи, що підтверджують рух коштів | |||
|- | |||
| Касири | |||
| Користувачі, які виконують операції | |||
|- | |||
| Звіти | |||
| Обороти, залишки, прибуток, журнал операцій | |||
|- | |||
| Журнал змін | |||
| Історія зміни курсів, операцій і залишків | |||
|} | |||
== Довідник «Валюти» == | |||
Довідник валют містить перелік валют, з якими працює система. | |||
== Поля валюти == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Назва валюти | |||
| Наприклад: долар США, євро, фунт стерлінгів, польський злотий | |||
|- | |||
| Короткий код | |||
| USD, EUR, GBP, PLN | |||
|- | |||
| Символ | |||
| $, €, £, zł | |||
|- | |||
| Кількість знаків після коми | |||
| Наприклад, 2 | |||
|- | |||
| Активність | |||
| Чи використовується валюта в поточних операціях | |||
|} | |||
== Приклади валют == | |||
{| class="wikitable" style="width:100%;" | |||
! Валюта | |||
! Код | |||
! Символ | |||
|- | |||
| Долар США | |||
| USD | |||
| $ | |||
|- | |||
| Євро | |||
| EUR | |||
| € | |||
|- | |||
| Фунт стерлінгів | |||
| GBP | |||
| £ | |||
|- | |||
| Польський злотий | |||
| PLN | |||
| zł | |||
|} | |||
== Довідник «Каси» == | |||
Довідник кас містить місця, де зберігаються гривня та іноземна валюта. | |||
Каса може бути фізичною касою обмінного пункту, касою офісу, касою конкретного касира або умовним внутрішнім рахунком. | |||
== Поля каси == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Назва каси | |||
| Наприклад: Каса №1, Центральна каса, Каса офісу | |||
|- | |||
| Локація | |||
| Адреса або місце розташування каси | |||
|- | |||
| Відповідальний касир | |||
| Працівник, який відповідає за касу | |||
|- | |||
| Статус | |||
| Активна, закрита, тимчасово недоступна | |||
|- | |||
| Коментар | |||
| Додаткова інформація | |||
|} | |||
== Касові залишки == | |||
По кожній касі потрібно вести залишки в кожній валюті. | |||
Наприклад: | |||
{| class="wikitable" style="width:100%;" | |||
! Каса | |||
! Валюта | |||
! Залишок | |||
|- | |||
| Каса №1 | |||
| UAH | |||
| 250 000 | |||
|- | |||
| Каса №1 | |||
| USD | |||
| 8 000 | |||
|- | |||
| Каса №1 | |||
| EUR | |||
| 5 000 | |||
|} | |||
<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;"> | |||
'''Важливо.''' Касовий залишок має формуватися на основі операцій, а не редагуватися вручну після кожного обміну. Ручне коригування може бути лише окремою службовою операцією з логуванням. | |||
</div> | |||
== Журнал «Курси валют» == | |||
Журнал курсів валют зберігає історію зміни курсів купівлі та продажу. | |||
== Колонки журналу курсів == | |||
{| class="wikitable" style="width:100%;" | |||
! Колонка | |||
! Опис | |||
|- | |||
| Дата і час | |||
| Коли встановлено курс | |||
|- | |||
| Валюта | |||
| Валюта, для якої встановлено курс | |||
|- | |||
| Курс купівлі | |||
| За яким курсом обмінка купує валюту у клієнта | |||
|- | |||
| Курс продажу | |||
| За яким курсом обмінка продає валюту клієнту | |||
|- | |||
| Каса | |||
| Якщо курс відрізняється по касах | |||
|- | |||
| Автор | |||
| Хто встановив або змінив курс | |||
|} | |||
== Логіка курсів == | |||
Система повинна: | |||
* зберігати історію курсів; | |||
* дозволяти бачити, який курс діяв на момент операції; | |||
* автоматично підставляти актуальний курс; | |||
* не змінювати курс у вже проведених операціях після редагування довідника курсів; | |||
* дозволяти встановлювати різні курси для різних валют; | |||
* опціонально дозволяти різні курси по різних касах. | |||
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;"> | |||
'''Практичний сенс.''' Якщо курс змінився о 14:00, операції до 14:00 мають залишатися зі старим курсом. Інакше звіти й прибуток будуть некоректними. | |||
</div> | |||
== Журнал «Операції обміну» == | |||
Журнал операцій обміну показує всі операції купівлі та продажу валюти. | |||
== Колонки журналу операцій == | |||
{| class="wikitable" style="width:100%;" | |||
! Колонка | |||
! Опис | |||
|- | |||
| Номер операції | |||
| Унікальний номер операції | |||
|- | |||
| Дата і час | |||
| Коли виконано операцію | |||
|- | |||
| Тип операції | |||
| Купівля або продаж валюти | |||
|- | |||
| Валюта | |||
| Валюта операції | |||
|- | |||
| Сума у валюті | |||
| Скільки валюти куплено або продано | |||
|- | |||
| Курс | |||
| Курс, за яким виконано операцію | |||
|- | |||
| Сума в UAH | |||
| Розрахована сума у гривні | |||
|- | |||
| Каса | |||
| Каса, через яку пройшла операція | |||
|- | |||
| Касир | |||
| Хто провів операцію | |||
|- | |||
| Статус | |||
| Чернетка, проведено, скасовано | |||
|} | |||
== Форма операції обміну == | |||
Форма операції повинна бути максимально простою для касира. | |||
== | == Поля форми == | ||
== | {| class="wikitable" style="width:100%;" | ||
! Поле | |||
! Опис | |||
|- | |||
| Тип операції | |||
| Купівля або продаж | |||
|- | |||
| Валюта | |||
| USD, EUR, GBP, PLN або інша | |||
|- | |||
| Сума у валюті | |||
| Сума, яку здає або купує клієнт | |||
|- | |||
| Курс | |||
| Підставляється автоматично, але може редагуватися за наявності прав | |||
|- | |||
| Сума в UAH | |||
| Розраховується автоматично | |||
|- | |||
| Каса | |||
| Каса, через яку проходить операція | |||
|- | |||
| Касир | |||
| Поточний користувач або обраний касир | |||
|- | |||
| Коментар | |||
| Додаткова інформація | |||
|} | |||
== Формула розрахунку суми в гривні == | |||
<pre> | |||
Сума UAH = Сума у валюті × Курс | |||
</pre> | |||
Сума має перераховуватися миттєво при зміні валюти, курсу або кількості валюти. | |||
== Купівля валюти == | |||
Купівля валюти означає, що клієнт здає іноземну валюту, а каса виплачує йому гривню. | |||
При купівлі валюти система повинна: | |||
* збільшити залишок іноземної валюти в касі; | |||
* зменшити залишок гривні в касі; | |||
* використати курс купівлі; | |||
* сформувати касовий документ; | |||
* зафіксувати операцію в журналі. | |||
== Приклад купівлі валюти == | |||
Клієнт здає 1000 USD за курсом 39,50. | |||
<pre> | |||
Сума UAH = 1000 × 39,50 = 39 500 грн | |||
</pre> | |||
Результат по касі: | |||
* USD збільшується на 1000; | |||
* UAH зменшується на 39 500. | |||
== Продаж валюти == | |||
Продаж валюти означає, що клієнт купує іноземну валюту, а каса отримує гривню. | |||
При продажу валюти система повинна: | |||
* зменшити залишок іноземної валюти в касі; | |||
* збільшити залишок гривні в касі; | |||
* використати курс продажу; | |||
* перевірити, чи достатньо валюти в касі; | |||
* сформувати касовий документ; | |||
* зафіксувати операцію в журналі. | |||
== | == Приклад продажу валюти == | ||
Клієнт купує 500 EUR за курсом 42,20. | |||
== | <pre> | ||
Сума UAH = 500 × 42,20 = 21 100 грн | |||
</pre> | |||
Результат по касі: | |||
* EUR зменшується на 500; | |||
* UAH збільшується на 21 100. | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Критично.''' Система не повинна дозволяти продаж валюти, якщо в касі недостатньо залишку цієї валюти. Продаж “у мінус” для обмінки є критичною помилкою. | |||
</div> | |||
== Оновлення касових залишків == | |||
Кожна проведена операція повинна автоматично змінювати залишки в касі. | |||
== Логіка руху залишків == | |||
== | {| class="wikitable" style="width:100%;" | ||
! Тип операції | |||
! Валюта | |||
! UAH | |||
|- | |||
| Купівля валюти | |||
| Збільшується | |||
| Зменшується | |||
|- | |||
| Продаж валюти | |||
| Зменшується | |||
| Збільшується | |||
|} | |||
== Контроль залишків == | |||
Перед проведенням операції система повинна перевіряти: | |||
* чи достатньо гривні для купівлі валюти; | |||
* чи достатньо іноземної валюти для продажу; | |||
* чи активна каса; | |||
* чи встановлено актуальний курс; | |||
* чи не заблокований касир; | |||
* чи не скасована операція. | |||
== | == Прибутковість обмінних операцій == | ||
Модуль має розраховувати прибуток від курсової різниці. | |||
Найпростіший підхід — аналізувати різницю між курсом купівлі та курсом продажу. | |||
* номер ордера; | == Формула маржі == | ||
* | |||
* | <pre> | ||
* | Маржа = Курс продажу - Курс купівлі | ||
* | </pre> | ||
* курс; | |||
== Прибуток по валюті == | |||
Спрощена формула: | |||
<pre> | |||
Прибуток = Продана сума валюти × (Курс продажу - Середній курс закупівлі) | |||
</pre> | |||
Для точнішого розрахунку потрібно використовувати партійний або середньозважений облік валюти. | |||
== Підходи до розрахунку собівартості валюти == | |||
{| class="wikitable" style="width:100%;" | |||
! Метод | |||
! Опис | |||
|- | |||
| Середньозважений курс | |||
| Собівартість валюти рахується як середній курс купленого залишку | |||
|- | |||
| FIFO | |||
| Першою продається валюта, яка була куплена раніше | |||
|- | |||
| Спрощена маржа | |||
| Прибуток оцінюється через різницю поточних курсів купівлі та продажу | |||
|} | |||
Для атестаційного завдання достатньо реалізувати один із методів, але метод має бути описаний і послідовно застосований у звітах. | |||
== Касові ордери == | |||
Модуль повинен формувати касові ордери для підтвердження руху коштів. | |||
== Прибутковий касовий ордер == | |||
Прибутковий касовий ордер формується, коли каса отримує кошти. | |||
У контексті обмінки це може бути: | |||
* отримання іноземної валюти при купівлі валюти у клієнта; | |||
* отримання гривні при продажу валюти клієнту. | |||
== Видатковий касовий ордер == | |||
Видатковий касовий ордер формується, коли каса видає кошти. | |||
У контексті обмінки це може бути: | |||
* видача гривні при купівлі валюти у клієнта; | |||
* видача іноземної валюти при продажу валюти клієнту. | |||
== Поля касового ордера == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Номер ордера | |||
| Унікальний номер документа | |||
|- | |||
| Тип ордера | |||
| Прибутковий або видатковий | |||
|- | |||
| Дата | |||
| Дата створення ордера | |||
|- | |||
| Каса | |||
| Каса, по якій сформовано документ | |||
|- | |||
| Валюта | |||
| Валюта руху | |||
|- | |||
| Сума | |||
| Сума руху | |||
|- | |||
| Курс | |||
| Курс операції, якщо застосовується | |||
|- | |||
| Операція обміну | |||
| Посилання на операцію, яка створила ордер | |||
|- | |||
| Касир | |||
| Відповідальний працівник | |||
|- | |||
| Підпис касира | |||
| Поле для друку або електронного підтвердження | |||
|} | |||
== Друковані форми == | |||
Потрібно передбачити друк або PDF-формування: | |||
* прибуткового касового ордера; | |||
* видаткового касового ордера; | |||
* квитанції обмінної операції; | |||
* звіту касира за день; | |||
* звіту по залишках. | |||
== Звітність == | |||
== Звіт «Оборот по валютах» == | |||
Звіт показує обсяги купівлі та продажу по кожній валюті за вибраний період. | |||
У звіті потрібно відображати: | |||
* валюту; | |||
* кількість операцій купівлі; | |||
* суму купівлі у валюті; | |||
* суму купівлі в UAH; | |||
* кількість операцій продажу; | |||
* суму продажу у валюті; | |||
* суму продажу в UAH; | |||
* підсумки за період. | |||
== Звіт «Залишки в касах» == | |||
Звіт показує поточні залишки валют по касах. | |||
У звіті потрібно відображати: | |||
* касу; | |||
* валюту; | |||
* початковий залишок; | |||
* прихід; | |||
* видаток; | |||
* кінцевий залишок; | |||
* еквівалент у базовій валюті, якщо потрібно. | |||
== Звіт «Прибуток від обмінних операцій» == | |||
Звіт показує прибуток від обмінних операцій за період. | |||
У звіті потрібно відображати: | |||
* валюту; | |||
* суму купленої валюти; | |||
* середній курс купівлі; | |||
* суму проданої валюти; | |||
* середній курс продажу; | |||
* курсову маржу; | |||
* прибуток; | |||
* підсумок за день, тиждень або місяць. | |||
== Звіт касира за день == | |||
Бажано передбачити звіт касира за зміну або день. | |||
У звіті потрібно показати: | |||
* касира; | |||
* касу; | |||
* дату; | |||
* початкові залишки; | |||
* усі операції купівлі; | |||
* усі операції продажу; | |||
* кінцеві залишки; | |||
* прибуток; | |||
* підпис касира. | * підпис касира. | ||
=== | == AJAX-інтерактив == | ||
Інтерфейс модуля має бути швидким і зручним для касира. | |||
Через AJAX мають працювати: | |||
* створення операції обміну; | |||
* вибір валюти; | |||
* підстановка актуального курсу; | |||
* миттєвий розрахунок суми в UAH; | |||
* перевірка залишків; | |||
* проведення операції; | |||
* оновлення залишків каси; | |||
* формування ордера; | |||
* фільтрація журналів; | |||
* оновлення звітів. | |||
== Логування змін == | |||
Модуль повинен логувати важливі дії. | |||
Журнал змін має фіксувати: | |||
* хто створив курс; | |||
* хто змінив курс; | |||
* хто створив операцію обміну; | |||
* хто провів операцію; | |||
* хто скасував операцію; | |||
* хто змінив касу або суму; | |||
* хто сформував касовий ордер; | |||
* дату й час дії; | |||
* старе та нове значення, якщо це можливо. | |||
== Скасування операції == | |||
Потрібно передбачити скасування помилкової операції. | |||
Скасування має: | |||
* | * бути доступним лише користувачу з відповідними правами; | ||
* | * створювати зворотний рух по касових залишках; | ||
* не видаляти операцію фізично з бази; | |||
* фіксувати причину скасування; | |||
* записувати дію в журнал змін. | |||
= | <div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;"> | ||
'''Практичний принцип.''' Помилкові валютні операції не варто просто видаляти. Правильніше скасувати їх окремою дією, щоб залишилася історія та було зрозуміло, чому змінився залишок каси. | |||
</div> | |||
== Права доступу == | |||
Модуль має підтримувати розмежування прав. | |||
Можливі ролі: | |||
{| class="wikitable" style="width:100%;" | |||
! Роль | |||
! Можливості | |||
|- | |||
| Касир | |||
| Створює та проводить операції, друкує ордери, бачить свою касу | |||
|- | |||
| Старший касир | |||
| Бачить кілька кас, може скасовувати операції в межах прав | |||
|- | |||
| Бухгалтер | |||
| Перевіряє операції, звіти, касові документи | |||
|- | |||
| Адміністратор | |||
| Налаштовує валюти, каси, права, курси та службові параметри | |||
|} | |||
== Технічні вимоги == | == Технічні вимоги == | ||
{| class="wikitable" | {| class="wikitable" style="width:100%;" | ||
! Параметр | ! Параметр | ||
! Опис | ! Опис | ||
| Рядок 155: | Рядок 679: | ||
| K2 Cloud ERP на Python або PHP | | K2 Cloud ERP на Python або PHP | ||
|- | |- | ||
| | | База даних | ||
| PostgreSQL або MySQL | | PostgreSQL або MySQL | ||
|- | |- | ||
| Фронтенд | | Фронтенд | ||
| HTML5, JavaScript | | HTML5, JavaScript | ||
|- | |||
| AJAX | |||
| Axios або Fetch API | |||
|- | |- | ||
| UI-компоненти | | UI-компоненти | ||
| Рядок 165: | Рядок 692: | ||
|- | |- | ||
| Друк | | Друк | ||
| | | PDF для касових ордерів, квитанцій і звітів | ||
|- | |||
| Експорт | |||
| Excel або PDF для звітів | |||
|} | |} | ||
== | == Рекомендовані сутності бази даних == | ||
Для реалізації задачі доцільно передбачити такі сутності: | |||
* валюти; | |||
* каси; | |||
* касири; | |||
* курси валют; | |||
* операції обміну; | |||
* касові залишки; | |||
* рухи каси; | |||
* касові ордери; | |||
* квитанції; | |||
* методи розрахунку прибутку; | |||
* звіти; | |||
* права доступу; | |||
* журнал змін; | |||
* скасування операцій. | |||
== Практичне завдання == | |||
У межах атестації потрібно продемонструвати робочий сценарій. | |||
Мінімальний сценарій: | |||
# створити валюти USD, EUR, GBP, PLN; | |||
# створити касу; | |||
# вказати початкові залишки UAH, USD та EUR; | |||
# створити курси купівлі та продажу; | |||
# оформити операцію купівлі валюти; | |||
# перевірити автоматичний розрахунок суми в UAH; | |||
# перевірити зміну залишків валюти та гривні; | |||
# сформувати касовий ордер по операції; | |||
# оформити операцію продажу валюти; | |||
# перевірити контроль достатності залишку валюти; | |||
# перевірити зміну залишків після продажу; | |||
# сформувати квитанцію або касовий ордер; | |||
# сформувати звіт обороту по валютах; | |||
# сформувати звіт залишків у касах; | |||
# сформувати звіт прибутку від обмінних операцій; | |||
# показати журнал змін; | |||
# виконати скасування помилкової операції; | |||
# перевірити зворотний рух по касі. | |||
{| class="wikitable" | == Критерії оцінювання == | ||
{| class="wikitable" style="width:100%;" | |||
! Критерій | ! Критерій | ||
! Бали | ! Бали | ||
! Що перевіряється | |||
|- | |- | ||
| Реалізація довідників валют і кас | | Реалізація довідників валют і кас | ||
| 10 | | 10 | ||
| Валюти, каси, касири, початкові залишки, активність | |||
|- | |- | ||
| Реєстрація операцій обміну | | Реєстрація операцій обміну | ||
| 20 | | 20 | ||
| Купівля, продаж, підстановка курсу, розрахунок суми в UAH | |||
|- | |- | ||
| Автоматичне оновлення залишків каси | | Автоматичне оновлення залишків каси | ||
| 20 | | 20 | ||
| Зміна залишків по валюті та UAH, контроль нестачі | |||
|- | |- | ||
| Формування касових ордерів | | Формування касових ордерів | ||
| 20 | | 20 | ||
| Прибуткові й видаткові ордери, квитанції, друк PDF | |||
|- | |- | ||
| Формування звітів | | Формування звітів | ||
| 20 | | 20 | ||
| Обороти по валютах, залишки в касах, прибуток від обмінних операцій | |||
|- | |- | ||
| Інтерактивність через AJAX | | Інтерактивність через AJAX | ||
| 10 | | 10 | ||
| Операції, курси, перерахунки, залишки й звіти без перезавантаження | |||
|- | |||
! Разом | |||
! 100 | |||
! Максимальна оцінка | |||
|} | |} | ||
== Шкала оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Бали | |||
! Рівень | |||
! Опис | |||
|- | |||
| 90–100 | |||
| Відмінно | |||
| Модуль повністю працює: курси, купівля, продаж, залишки, ордери, прибуток, звіти й AJAX реалізовані коректно | |||
|- | |||
| 75–89 | |||
| Добре | |||
| Основна логіка працює, є незначні недоліки, які не руйнують облік валютних операцій | |||
|- | |||
| 60–74 | |||
| Зараховано | |||
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання | |||
|- | |||
| 0–59 | |||
| Не зараховано | |||
| Відсутня критична логіка: операції обміну, залишки, курси, ордери або звіти | |||
|} | |||
== Критичні помилки == | |||
Критичними помилками вважаються ситуації, коли: | |||
* неможливо створити валюту; | |||
* неможливо створити касу; | |||
* операція обміну не підставляє курс; | |||
* сума в UAH розраховується неправильно; | |||
* купівля валюти не збільшує залишок іноземної валюти; | |||
* купівля валюти не зменшує залишок UAH; | |||
* продаж валюти не зменшує залишок іноземної валюти; | |||
* продаж валюти не збільшує залишок UAH; | |||
* система дозволяє продати валюту, якої немає в касі; | |||
* система дозволяє купити валюту без достатнього залишку UAH; | |||
* операції не потрапляють у звіти; | |||
* касові ордери не формуються; | |||
* прибуток від обмінних операцій не розраховується або рахується хаотично; | |||
* зміна курсу впливає на вже проведені операції; | |||
* скасування операції просто видаляє її без історії; | |||
* зміни не логуються. | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Умова складання.''' Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл обмінки: курс → операція купівлі або продажу → розрахунок UAH → зміна залишків → касовий ордер → звіт. | |||
</div> | |||
== Очікуваний результат == | |||
У результаті виконання атестаційного завдання має бути створений модуль обліку валютних операцій у K2 ERP. | |||
Модуль має підтримувати довідники валют і кас, журнал курсів валют, журнал операцій обміну, купівлю та продаж валюти, автоматичне оновлення касових залишків, контроль нестачі, формування касових ордерів, розрахунок прибутку, звіти, друк, експорт, AJAX-інтерактив і логування змін. | |||
== Примітка == | == Примітка == | ||
Модуль обмінки валют | Модуль обмінки валют може бути корисним для обмінних пунктів, туристичних компаній, банківських підрозділів, фінансових компаній, мікрофінансових організацій, підприємців і компаній, які активно працюють із готівковою або безготівковою валютою. | ||
Правильна реалізація такого модуля забезпечує прозорий контроль валютних залишків, зменшує ризик касових помилок і дозволяє бачити реальний прибуток від обмінних операцій. | |||
== Коротко == | |||
{| class="wikitable" style="width:100%;" | |||
! Питання | |||
! Відповідь | |||
|- | |||
| Що потрібно створити? | |||
| Модуль обліку валютних операцій | |||
|- | |||
| Які довідники потрібні? | |||
| Валюти, каси, касири | |||
|- | |||
| Який головний журнал? | |||
| Операції обміну | |||
|- | |||
| Які типи операцій потрібні? | |||
| Купівля валюти та продаж валюти | |||
|- | |||
| Що має відбуватися із залишками? | |||
| Купівля збільшує валюту й зменшує UAH, продаж зменшує валюту й збільшує UAH | |||
|- | |||
| Які документи потрібні? | |||
| Прибуткові та видаткові касові ордери, квитанції | |||
|- | |||
| Які звіти потрібні? | |||
| Оборот по валютах, залишки в касах, прибуток від обмінних операцій | |||
|- | |||
| Що є критичною вимогою? | |||
| Коректна зміна касових залишків після кожної операції | |||
|} | |||
== Див. також == | |||
* [[K2 Cloud ERP|K2 ERP]] | |||
* [[K2 ERP]] | |||
* [[Атестаційні завдання K2 ERP]] | |||
* [[Обмінка]] | |||
* [[Валюти]] | |||
* [[Каса]] | |||
* [[Касові ордери]] | |||
* [[Фінансовий облік]] | |||
* [[Мультивалютність]] | |||
* [[Курси валют]] | |||
* [[Прибутковий касовий ордер]] | |||
* [[Видатковий касовий ордер]] | |||
[[Категорія:K2 ERP]] | |||
[[Категорія:Атестаційні завдання K2]] | |||
[[Категорія:Обмінка]] | |||
[[Категорія:Валютні операції]] | |||
[[Категорія:Каса]] | |||
[[Категорія:Фінансовий облік]] | |||
[[Категорія:Корпоративна Wiki]] | |||