Атестаційні завдання K2 ERP/Обмінка: відмінності між версіями

Створена сторінка: = Модуль обліку валютних операцій: Обмінка = == Реальний бізнес-контекст == Компанія або фізособа веде діяльність із обміну валют: готівковий або безготівковий курс. Потрібно: * фіксувати курси купівлі / продажу валют; * вести облік касових операцій; * ко...
 
Немає опису редагування
 
(Не показано одну проміжну версію цього користувача)
Рядок 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>


== Реальний бізнес-контекст ==
== Реальний бізнес-контекст ==


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


Потрібно:
У роботі потрібно щоденно контролювати:


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


== Основні завдання ==
Якщо такі операції вести вручну, легко помилитися в залишках, курсах, сумі гривні або прибутку. Тому модуль повинен автоматизувати розрахунок і контроль.


=== 1. Структура довідників ===
== Основний бізнес-процес ==


==== Довідник «Валюти» ====
Типовий процес роботи обмінки виглядає так:


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


* назва валюти:
== Основні об’єкти модуля ==
** USD;
** EUR;
** GBP;
** PLN;
* короткий код:
** USD;
** EUR;
* символ:
** $;
** €;
** £.


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


Поля довідника:
== Довідник «Валюти» ==


* назва каси;
Довідник валют містить перелік валют, з якими працює система.
* локація;
* відповідальний касир.


=== 2. Журнал «Курси валют» ===
== Поля валюти ==


==== Колонки журналу ====
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Назва валюти
| Наприклад: долар США, євро, фунт стерлінгів, польський злотий
|-
| Короткий код
| USD, EUR, GBP, PLN
|-
| Символ
| $, €, £, zł
|-
| Кількість знаків після коми
| Наприклад, 2
|-
| Активність
| Чи використовується валюта в поточних операціях
|}


* дата;
== Приклади валют ==
* валюта;
* курс купівлі;
* курс продажу.


==== Функціонал ====
{| class="wikitable" style="width:100%;"
! Валюта
! Код
! Символ
|-
| Долар США
| USD
| $
|-
| Євро
| EUR
| €
|-
| Фунт стерлінгів
| GBP
| £
|-
| Польський злотий
| PLN
| zł
|}


* збереження історії зміни курсів;
== Довідник «Каси» ==
* автоматичне підставлення актуального курсу при операції обміну.


=== 3. Журнал «Операції обміну» ===
Довідник кас містить місця, де зберігаються гривня та іноземна валюта.


==== Колонки журналу ====
Каса може бути фізичною касою обмінного пункту, касою офісу, касою конкретного касира або умовним внутрішнім рахунком.


* номер операції;
== Поля каси ==
* дата;
* тип операції:
** купівля;
** продаж;
* валюта;
* сума у валюті;
* курс;
* сума в національній валюті, UAH;
* каса;
* касир.


==== Функціонал ====
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Назва каси
| Наприклад: Каса №1, Центральна каса, Каса офісу
|-
| Локація
| Адреса або місце розташування каси
|-
| Відповідальний касир
| Працівник, який відповідає за касу
|-
| Статус
| Активна, закрита, тимчасово недоступна
|-
| Коментар
| Додаткова інформація
|}


* реєстрація операцій через AJAX-форму;
== Касові залишки ==
* миттєвий розрахунок суми в UAH при введенні суми у валюті.


=== 4. Операції ===
По кожній касі потрібно вести залишки в кожній валюті.


==== Купівля валюти ====
Наприклад:


* клієнт здає валюту;
{| 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>


* клієнт купує валюту;
== Журнал «Курси валют» ==
* каса отримує гривню.


=== 5. Касові залишки ===
Журнал курсів валют зберігає історію зміни курсів купівлі та продажу.


Функціонал:
== Колонки журналу курсів ==


* облік залишків у кожній валюті по кожній касі;
{| class="wikitable" style="width:100%;"
* при кожній операції автоматичне оновлення залишку:
! Колонка
** зменшення або збільшення валюти;
! Опис
** зменшення або збільшення гривні.
|-
| Дата і час
| Коли встановлено курс
|-
| Валюта
| Валюта, для якої встановлено курс
|-
| Курс купівлі
| За яким курсом обмінка купує валюту у клієнта
|-
| Курс продажу
| За яким курсом обмінка продає валюту клієнту
|-
| Каса
| Якщо курс відрізняється по касах
|-
| Автор
| Хто встановив або змінив курс
|}


==== Приклад ====
== Логіка курсів ==


* купівля 1000 USD → збільшити залишок USD, зменшити залишок UAH;
Система повинна:
* продаж 500 EUR → зменшити залишок EUR, збільшити залишок UAH.


=== 6. Прибутковість ===
* зберігати історію курсів;
* дозволяти бачити, який курс діяв на момент операції;
* автоматично підставляти актуальний курс;
* не змінювати курс у вже проведених операціях після редагування довідника курсів;
* дозволяти встановлювати різні курси для різних валют;
* опціонально дозволяти різні курси по різних касах.


Функціонал:
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
'''Практичний сенс.''' Якщо курс змінився о 14:00, операції до 14:00 мають залишатися зі старим курсом. Інакше звіти й прибуток будуть некоректними.
</div>


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


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


==== Формування ====
== Колонки журналу операцій ==


* прибутковий касовий ордер — при купівлі валюти;
{| 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;
* підсумки за період.
 
== Звіт «Залишки в касах» ==
 
Звіт показує поточні залишки валют по касах.
 
У звіті потрібно відображати:
 
* касу;
* валюту;
* початковий залишок;
* прихід;
* видаток;
* кінцевий залишок;
* еквівалент у базовій валюті, якщо потрібно.
 
== Звіт «Прибуток від обмінних операцій» ==
 
Звіт показує прибуток від обмінних операцій за період.
 
У звіті потрібно відображати:
 
* валюту;
* суму купленої валюти;
* середній курс купівлі;
* суму проданої валюти;
* середній курс продажу;
* курсову маржу;
* прибуток;
* підсумок за день, тиждень або місяць.
 
== Звіт касира за день ==
 
Бажано передбачити звіт касира за зміну або день.
 
У звіті потрібно показати:
 
* касира;
* касу;
* дату;
* початкові залишки;
* усі операції купівлі;
* усі операції продажу;
* кінцеві залишки;
* прибуток;
* підпис касира.
* підпис касира.


=== 8. Звіти ===
== AJAX-інтерактив ==
 
Інтерфейс модуля має бути швидким і зручним для касира.
 
Через AJAX мають працювати:
 
* створення операції обміну;
* вибір валюти;
* підстановка актуального курсу;
* миттєвий розрахунок суми в UAH;
* перевірка залишків;
* проведення операції;
* оновлення залишків каси;
* формування ордера;
* фільтрація журналів;
* оновлення звітів.
 
== Логування змін ==
 
Модуль повинен логувати важливі дії.
 
Журнал змін має фіксувати:
 
* хто створив курс;
* хто змінив курс;
* хто створив операцію обміну;
* хто провів операцію;
* хто скасував операцію;
* хто змінив касу або суму;
* хто сформував касовий ордер;
* дату й час дії;
* старе та нове значення, якщо це можливо.


==== Звіт «Оборот по валютам» ====
== Скасування операції ==


* кількість операцій купівлі і продажу по кожній валюті;
Потрібно передбачити скасування помилкової операції.
* підсумок в 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, AJAX, Axios або Fetch API
| HTML5, JavaScript
|-
| AJAX
| Axios або Fetch API
|-
|-
| UI-компоненти
| UI-компоненти
Рядок 165: Рядок 692:
|-
|-
| Друк
| Друк
| Генерація PDF для касових ордерів і звітів
| PDF для касових ордерів, квитанцій і звітів
|-
| Експорт
| Excel або PDF для звітів
|}
|}


== Критерії оцінки ==
== Рекомендовані сутності бази даних ==
 
Для реалізації задачі доцільно передбачити такі сутності:
 
* валюти;
* каси;
* касири;
* курси валют;
* операції обміну;
* касові залишки;
* рухи каси;
* касові ордери;
* квитанції;
* методи розрахунку прибутку;
* звіти;
* права доступу;
* журнал змін;
* скасування операцій.
 
== Практичне завдання ==
 
У межах атестації потрібно продемонструвати робочий сценарій.


{| class="wikitable"
Мінімальний сценарій:
 
# створити валюти USD, EUR, GBP, PLN;
# створити касу;
# вказати початкові залишки UAH, USD та EUR;
# створити курси купівлі та продажу;
# оформити операцію купівлі валюти;
# перевірити автоматичний розрахунок суми в UAH;
# перевірити зміну залишків валюти та гривні;
# сформувати касовий ордер по операції;
# оформити операцію продажу валюти;
# перевірити контроль достатності залишку валюти;
# перевірити зміну залишків після продажу;
# сформувати квитанцію або касовий ордер;
# сформувати звіт обороту по валютах;
# сформувати звіт залишків у касах;
# сформувати звіт прибутку від обмінних операцій;
# показати журнал змін;
# виконати скасування помилкової операції;
# перевірити зворотний рух по касі.
 
== Критерії оцінювання ==
 
{| 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 Cloud ERP — завантажений документ. :contentReference[oaicite:0]{index=0}
[[Категорія:K2 ERP]]
[[Категорія:Атестаційні завдання K2]]
[[Категорія:Обмінка]]
[[Категорія:Валютні операції]]
[[Категорія:Каса]]
[[Категорія:Фінансовий облік]]
[[Категорія:Корпоративна Wiki]]