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