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

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

Матеріал з K2 ERP Wiki
Перенос з Гугл док
 
Немає опису редагування
 
Рядок 1: Рядок 1:
'''Атестаційне завдання K2 ERP — Рахунки орендарям ТРЦ''' — практична задача для розробника K2 ERP, що передбачає створення модуля обліку виставлення рахунків орендарям за орендовані площі та комунальні послуги в торговельно-розважальному центрі.
{{DISPLAYTITLE:Атестаційні завдання K2 ERP/Оренда}}


== Назва ==
'''Атестаційне завдання K2 ERP — Оренда''' — це практична задача для перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля обліку оренди, комунальних послуг, нарахувань, рахунків, актів, оплат і заборгованості.
'''Модуль обліку виставлення рахунків орендарям за орендовані площі та комунальні послуги в ТРЦ'''.


== Опис ситуації ==
Завдання моделює роботу торговельно-розважального центру, бізнес-центру, складу, готелю або іншого об’єкта нерухомості, де є багато орендарів, приміщень, договорів, послуг і щомісячних нарахувань.
Власник ТРЦ має десятки орендарів: магазини, кафе, сервісні компанії. Кожного місяця потрібно автоматизовано виконувати нарахування та виставлення рахунків.


Щомісячно необхідно:
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
'''Коротко.''' Потрібно реалізувати модуль, який щомісяця нараховує орендну плату та комунальні послуги, формує рахунки й акти для орендарів, контролює оплати, борги та дозволяє масово завантажувати показники лічильників з Excel.
</div>


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


Система повинна:
== Назва завдання ==


* автоматично розраховувати суми;
'''Модуль обліку виставлення рахунків орендарям за орендовані площі та комунальні послуги в ТРЦ'''.
* дозволяти вручну коригувати дані;
* виставляти рахунки;
* формувати акти виконаних робіт;
* друкувати документи та надсилати їх орендарям;
* вести аналітику по оплатах і заборгованості.


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


=== 1. Структура довідників ===
Мета завдання — створити в K2 ERP модуль для автоматизації щомісячної роботи з орендарями.


==== Довідник «Орендарі» ====
Система повинна допомагати власнику ТРЦ або бізнес-центру не рахувати все вручну в Excel, а вести облік у єдиному середовищі: договори, площі, тарифи, лічильники, показники, нарахування, рахунки, акти, оплати та борги.
Довідник орендарів повинен містити:


* назву компанії;
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
* договір оренди:
'''Головний принцип.''' Оренда — це не просто рахунок на оплату. Це ланцюжок: договір → площа → послуга → тариф або показник лічильника → нарахування → рахунок → акт → оплата → баланс орендаря.
** номер договору;
</div>
** дату початку;
** дату закінчення;
* контактних осіб;
* email для виставлення рахунків.


==== Довідник «Орендовані площі» ====
== Опис ситуації ==
Довідник орендованих площ повинен містити:


* прив’язку до орендаря;
Власник ТРЦ має десятки орендарів: магазини, кафе, сервісні компанії, острівні торгові точки, склади або офіси.
* номер приміщення;
* метраж, м²;
* ставку оренди за м², грн/м²;
* додаткові примітки.


==== Довідник «Послуги» ====
Кожного місяця потрібно автоматично виконувати нарахування та виставляти рахунки за:
Довідник послуг повинен містити типи послуг:


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


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


* за показниками лічильника;
Система повинна автоматично розраховувати суми, дозволяти ручне коригування, формувати рахунки, акти виконаних робіт, друковані форми, email-розсилку орендарям і звіти по оплатах та заборгованості.
* за нормативом на 1 м²;
* фіксована сума.


=== 2. Журнал документів «Рахунки на оплату» ===
== Основний бізнес-процес ==
Журнал документів має відображати всі рахунки, виставлені орендарям.


==== Колонки журналу ====
Щомісячний процес роботи з орендарями виглядає так:
У журналі повинні бути такі колонки:


* номер рахунку;
# співробітники ТРЦ знімають показники лічильників;
* орендар;
# показники вводяться вручну або завантажуються з Excel;
* період нарахування: місяць і рік;
# система розраховує витрати за період;
* загальна сума;
# формуються нарахування по кожному орендарю;
* статус рахунку:
# на основі нарахувань створюються рахунки на оплату;
** чернетка;
# для орендарів формуються акти виконаних робіт;
** виставлений;
# рахунки та акти друкуються або надсилаються email;
** оплачений;
# після отримання оплат змінюються статуси рахунків;
** прострочений;
# у звітах видно виставлені суми, оплати та борги.
* дата виставлення;
* дата оплати.


==== Функціональність журналу ====
== Основні об’єкти модуля ==
Журнал має підтримувати:


* створення рахунку;
{| class="wikitable" style="width:100%;"
* редагування рахунку;
! Об’єкт
* проведення рахунку;
! Призначення
* друк рахунку;
|-
* фільтрацію по орендарю;
| Орендарі
* фільтрацію по статусу;
| Компанії або ФОП, які орендують площі
* фільтрацію по періоду.
|-
| Договори оренди
| Умови оренди, строки, ставки, реквізити
|-
| Орендовані площі
| Приміщення, площа, номер, ставка за м²
|-
| Послуги
| Оренда, електроенергія, вода, опалення, кондиціонування, прибирання
|-
| Тарифи
| Ціни за одиницю послуги або норматив
|-
| Лічильники
| Прилади обліку електроенергії, води та інших ресурсів
|-
| Показники лічильників
| Значення на початок і кінець періоду
|-
| Нарахування
| Розраховані суми за період
|-
| Рахунки на оплату
| Документи для виставлення орендарям
|-
| Акти виконаних робіт
| Документи підтвердження наданих послуг
|-
| Оплати
| Фіксація надходження коштів
|-
| Баланс орендарів
| Нарахування, оплати й заборгованість
|}


=== 3. Форма створення рахунку ===
== Довідник «Орендарі» ==


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


* орендаря з пошуком у довіднику через AJAX;
Мінімальний склад даних:
* період нарахування;
* дату виставлення.


==== Таблична частина ====
{| class="wikitable" style="width:100%;"
Таблична частина повинна містити орендовані площі та послуги.
! Поле
{| class="wikitable"
! Опис
!
|-
!Назва послуги
| Назва компанії
!Одиниця виміру
| Офіційна назва орендаря
!Кількість
|-
!Ціна за одиницю
| Код або ЄДРПОУ
!Сума
| Ідентифікатор компанії
|-
|-
|1
| Договір оренди
|Оренда приміщення
| Номер, дата початку та дата закінчення договору
|м²
|120
|300
|36 000
|-
|-
|2
| Контактні особи
|Електроенергія
| Відповідальні особи з боку орендаря
|кВт·год
|450
|5
|2 250
|-
|-
|3
| Email для рахунків
|Водопостачання
| Адреса для надсилання рахунків і актів
|м³
|30
|20
|600
|-
|-
|4
| Телефон
|Опалення
| Контактний номер
|м²
|120
|30
|3 600
|-
|-
! colspan="5" |Підсумкова сума
| Статус
!42 450 грн
| Активний, неактивний, боржник, договір завершено
|}
|}


=== 4. Розрахунки в системі ===
Орендар повинен використовуватися в рахунках, актах, нарахуваннях, оплатах і звітах.
 
==== Оренда ====
Сума оренди розраховується за формулою:<pre>
Сума оренди = Метраж × Ставка за м²
</pre>
 
==== Електроенергія ====
Якщо є лічильник:<pre>
Сума = Спожиті кВт·год × Тариф
</pre>Якщо лічильника немає:<pre>
Сума = Норма споживання × Метраж × Тариф
</pre>


==== Водопостачання ====
== Довідник «Орендовані площі» ==
Водопостачання розраховується за лічильником або за нормативом.


==== Опалення і кондиціонування ====
Довідник орендованих площ описує приміщення, які передані орендарям.
Опалення та кондиціонування зазвичай розраховуються пропорційно площі.


=== 5. Інтерфейс користувача ===
Мінімальний склад даних:
Інтерфейс користувача повинен підтримувати:


* додавання рядків послуг у таблиці через AJAX без перезавантаження сторінки;
{| class="wikitable" style="width:100%;"
* редагування кількості або тарифу прямо в таблиці через inline edit;
! Поле
* автоматичний перерахунок підсумкової суми при зміні кількості або тарифу;
! Опис
* кнопку '''«Зберегти чернетку»''';
* кнопку '''«Виставити рахунок»'''.
 
=== 6. Друк рахунку ===
Шаблон рахунку повинен містити:
 
* назву орендаря;
* реквізити ТРЦ;
* таблицю послуг;
* підсумкову суму;
* підпис відповідальної особи ТРЦ.
 
Формат друку:
 
* PDF;
* або HTML-друк для подальшої відправки.
 
=== 7. Звітність ===
 
==== Звіт «Реєстр виставлених рахунків» ====
Звіт має містити:
 
* список рахунків із підсумками за періодами;
* суми виставлені;
* суми сплачені;
* борги.
 
==== Звіт «Баланс орендарів» ====
Звіт має містити:
 
* орендарів із сумою нарахувань;
* оплати за вибраний період;
* виділення боржників червоним кольором.
 
=== 8. Додаткові вимоги ===
 
* статуси рахунків повинні змінюватися автоматично при фіксації оплати;
* потрібно логувати всі зміни по рахунках і оплатах;
* потрібно реалізувати нотифікації орендарям через email API про виставлення рахунку;
* потрібно передбачити можливість масового завантаження показників лічильників з Excel-файлу.
 
== Технічні вимоги ==
{| class="wikitable"
!Параметр
!Опис
|-
|-
|Бекенд
| Орендар
|PHP 8 або Python 3
| Компанія, яка орендує приміщення
|-
|-
|Фреймворк
| Номер приміщення
|K2 Core або Symfony Slim K2
| Номер кімнати, павільйону, магазину або площі
|-
|-
|БД
| Метраж
|PostgreSQL або MySQL
| Площа в м²
|-
|-
|Фронтенд
| Ставка оренди за м²
|HTML5, JavaScript, AJAX через Fetch або Axios
| Вартість оренди одного квадратного метра
|-
|-
|UI-компоненти
| Договір
|DataTables, Select2 для довідників
| Договір, на підставі якого орендується площа
|-
|-
|Друк
| Примітки
|Stimulsoft Reports або внутрішній PDF-генератор
| Додаткова інформація
|}
|}


== Критерії оцінки ==
Орендар може мати одну або кілька площ. Нарахування оренди повинно формуватися по кожній площі або консолідовано по орендарю.
{| class="wikitable"
 
!Критерій
== Довідник «Послуги» ==
!Бали
 
|-
Довідник послуг містить перелік послуг, за які можуть нараховуватися суми орендарям.
|Коректність розрахунків
 
|20
Типові послуги:
|-
 
|Зручність введення даних, UX
* оренда приміщення;
|20
* електроенергія;
|-
* вода;
|Реалізація AJAX-інтерактиву
* опалення;
|20
* кондиціонування;
* прибирання;
* охорона;
* інші послуги.
 
Для кожної послуги потрібно передбачити тип розрахунку.
 
{| class="wikitable" style="width:100%;"
! Тип розрахунку
! Опис
|-
|-
|Якість структури БД і коду
| За показниками лічильника
|20
| Сума залежить від різниці показників за період
|-
|-
|Формування друкованих форм
| За нормативом на 1 м²
|10
| Сума залежить від площі приміщення
|-
|-
|Формування звітів
| Фіксована сума
|10
| Сума не залежить від площі або лічильника
|-
|-
!Разом
| Ручне нарахування
!100
| Сума вводиться користувачем вручну
|}
|}


== Примітка ==
== Лічильники та показники ==
Це прикладна задача, яку реально використовують власники ТРЦ, бізнес-центри, склади, готелі та інші об’єкти нерухомості.


Реалізація такого рішення в K2 ERP автоматизує щомісячну рутину та допомагає уникнути людських помилок.
Співробітники ТРЦ зазвичай знімають показники лічильників один раз на місяць.


== Додаткові зауваження ==
Усі зняті показники потрібно зберігати в системі. Кожен запис має містити дату й час зняття, приміщення, лічильник, тип ресурсу, одиницю виміру та значення на початок і кінець періоду.
Співробітники ТРЦ знімають показники лічильників, як правило, один раз на місяць. Усі зняті показники потрібно зберігати в системі.


Співробітник вносить інформацію в табличному форматі на певну дату та час зняття показників.
== Таблиця показників лічильників ==


=== Таблиця показників лічильників ===
{| class="wikitable" style="width:100%;"
{| class="wikitable"
! №
!№
! Кімната / приміщення
!Кімната / Приміщення
! № лічильника
!№ лічильника (ID)
! Тип лічильника
!Тип лічильника
! Одиниці
!Одиниці
! Значення на початок періоду
!Значення на початок періоду
! Значення на кінець періоду
!Значення на кінець періоду
! Різниця
!Різниця (витрата)
! Примітки
!Примітки
|-
|-
|1
| 1
|
|
|
|
Рядок 291: Рядок 228:
|
|
|-
|-
|2
| 2
|
|
|
|
Рядок 301: Рядок 238:
|
|
|-
|-
|3
| 3
|
|
|
|
Рядок 311: Рядок 248:
|
|
|-
|-
|49
| ...
|
|
|
|
Рядок 321: Рядок 258:
|
|
|-
|-
|50
! Разом
|
|
|
|
|
|
|
|
|-
!Разом
!
!
!
!
Рядок 338: Рядок 265:
!
!
!
!
!0,00
! 0,00
!
!
|}
|}
Нарахування робляться по події натисканням кнопки та формуються на певну дату. Усі нарахування потрібно зберігати в системі.


Приклад Excel-файлу нарахувань за 1 місяць:
Різниця між значенням на кінець і початок періоду використовується для розрахунку споживання.
 
<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;">
'''Важливо.''' Показники лічильників не повинні зникати після формування рахунку. Вони мають зберігатися як історія розрахунків за конкретний період.
</div>
 
== Масове завантаження показників з Excel ==
 
Потрібно передбачити можливість масового завантаження показників лічильників з Excel-файлу.
 
Завантаження має дозволяти:
 
* імпортувати показники за місяць;
* перевіряти коректність структури файлу;
* знаходити приміщення та лічильники;
* показувати помилки імпорту;
* не дублювати вже завантажені дані;
* створювати нарахування на основі імпортованих показників.
 
Приклад Excel-файлу нарахувань за один місяць може використовуватися як орієнтир для структури імпорту.
 
== Нарахування ==
 
Нарахування створюються на певну дату за обраний період.
 
Нарахування можуть формуватися:
 
* по всіх орендарях одразу;
* по конкретному орендарю;
* по конкретній послузі;
* по конкретному приміщенню;
* по певному завантаженню показників.
 
Нарахування мають зберігатися в системі. Це потрібно для того, щоб рахунки можна було відтворити, перевірити й порівняти з оплатами.
 
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
'''Правильна логіка.''' Рахунок не повинен рахуватися “на льоту” щоразу заново без сліду. Спочатку система формує нарахування, зберігає їх, а вже з нарахувань створює рахунки.
</div>
 
== Розрахунки в системі ==
 
== Оренда ==
 
Сума оренди розраховується за формулою:
 
<pre>
Сума оренди = Метраж × Ставка за м²
</pre>
 
Наприклад, якщо площа становить 120 м², а ставка — 300 грн/м², то сума оренди становить:
 
<pre>
120 × 300 = 36 000 грн
</pre>
 
== Електроенергія ==
 
Якщо є лічильник:
 
<pre>
Сума = Спожиті кВт·год × Тариф
</pre>
 
Якщо лічильника немає:
 
<pre>
Сума = Норма споживання × Метраж × Тариф
</pre>
 
== Водопостачання ==
 
Водопостачання може розраховуватися за лічильником або за нормативом.
 
За лічильником:
 
<pre>
Сума = Спожиті м³ × Тариф
</pre>
 
За нормативом:


* https://drive.google.com/file/d/1poPAq1mFiPM_8wVZ3WU3ipPeTkSSISmq/view?usp=drive_link
<pre>
Сума = Норма на 1 м² × Метраж × Тариф
</pre>


З таблиці нарахувань повинні виставлятись рахунки:
== Опалення і кондиціонування ==


* по певному нарахуванню;
Опалення та кондиціонування зазвичай розраховуються пропорційно площі.
* по певному контрагенту;
* або по всіх нарахуваннях одразу.


== Очікуваний результат ==
<pre>
У результаті виконання атестаційного завдання має бути створений модуль K2 ERP для обліку оренди та комунальних послуг у ТРЦ, який підтримує довідники орендарів, площ і послуг, журнал рахунків, форму рахунку з AJAX-інтерактивом, розрахунки за лічильниками і нормативами, друк документів, звітність, контроль оплат, боргів і масове завантаження показників з Excel.
Сума = Метраж × Тариф за м²
</pre>
 
== Журнал документів «Рахунки на оплату» ==
 
Журнал рахунків має відображати всі рахунки, виставлені орендарям.
 
Мінімальні колонки журналу:
 
{| class="wikitable" style="width:100%;"
! Колонка
! Опис
|-
| Номер рахунку
| Унікальний номер документа
|-
| Орендар
| Компанія, якій виставлено рахунок
|-
| Період нарахування
| Місяць і рік
|-
| Загальна сума
| Сума рахунку
|-
| Статус
| Чернетка, виставлений, оплачений, прострочений
|-
| Дата виставлення
| Коли рахунок виставлено
|-
| Дата оплати
| Коли рахунок оплачено
|}
 
Журнал має підтримувати створення, редагування, проведення, друк рахунку, а також фільтрацію за орендарем, статусом і періодом.
 
== Статуси рахунку ==
 
{| class="wikitable" style="width:100%;"
! Статус
! Значення
|-
| Чернетка
| Рахунок підготовлено, але ще не виставлено орендарю
|-
| Виставлений
| Рахунок сформовано й передано орендарю
|-
| Оплачений
| Оплата зафіксована повністю
|-
| Частково оплачений
| Оплачено лише частину суми
|-
| Прострочений
| Термін оплати минув, борг залишається
|-
| Скасований
| Рахунок анульовано або замінено іншим
|}
 
Статуси повинні змінюватися автоматично при фіксації оплати.
 
== Форма створення рахунку ==
 
Форма рахунку складається із заголовка та табличної частини.
 
== Заголовок рахунку ==
 
У заголовку рахунку потрібно передбачити:
 
{| class="wikitable" style="width:100%;"
! Поле
! Опис
|-
| Орендар
| Вибір з довідника через AJAX-пошук
|-
| Період нарахування
| Місяць і рік
|-
| Дата виставлення
| Дата формування рахунку
|-
| Договір
| Договір оренди, за яким виставляється рахунок
|-
| Статус
| Чернетка, виставлений, оплачений, прострочений
|-
| Коментар
| Додаткова інформація
|}
 
== Таблична частина рахунку ==
 
Таблична частина повинна містити орендовані площі та послуги.
 
{| class="wikitable" style="width:100%;"
! №
! Назва послуги
! Одиниця виміру
! Кількість
! Ціна за одиницю
! Сума
|-
| 1
| Оренда приміщення
| м²
| 120
| 300
| 36 000
|-
| 2
| Електроенергія
| кВт·год
| 450
| 5
| 2 250
|-
| 3
| Водопостачання
| м³
| 30
| 20
| 600
|-
| 4
| Опалення
| м²
| 120
| 30
| 3 600
|-
! colspan="5" | Підсумкова сума
! 42 450 грн
|}
 
Користувач має мати можливість коригувати кількість, тариф або суму, якщо це дозволено правилами компанії.
 
== Інтерфейс користувача ==
 
Інтерфейс має бути зручним для щомісячної масової роботи.
 
Потрібно реалізувати:
 
* додавання рядків послуг через AJAX без перезавантаження сторінки;
* редагування кількості або тарифу прямо в таблиці через inline edit;
* автоматичний перерахунок підсумкової суми;
* кнопку '''«Зберегти чернетку»''';
* кнопку '''«Виставити рахунок»''';
* кнопку '''«Сформувати акт»''';
* кнопку '''«Надіслати email»''';
* виділення боржників або прострочених рахунків.
 
== Друк рахунку ==
 
Шаблон рахунку повинен містити:
 
* назву орендаря;
* реквізити ТРЦ;
* номер і дату рахунку;
* період нарахування;
* таблицю послуг;
* підсумкову суму;
* підпис відповідальної особи ТРЦ.
 
Формат друку:
 
* PDF;
* або HTML-друк для подальшої відправки.
 
== Акти виконаних робіт ==
 
Система повинна формувати акт виконаних робіт на основі рахунку або нарахувань.
 
Акт має містити:
 
* орендаря;
* період;
* перелік послуг;
* кількість;
* ціну;
* суму;
* підсумок;
* реквізити сторін;
* місце для підписів.
 
== Email-нотифікації орендарям ==
 
Потрібно реалізувати надсилання email-повідомлень орендарям про виставлення рахунку.
 
Email має містити:
 
* тему повідомлення;
* назву орендаря;
* період нарахування;
* суму до оплати;
* вкладення рахунку або посилання на документ;
* за потреби — акт виконаних робіт.
 
У системі потрібно зберігати історію відправлення повідомлень.
 
== Оплати та заборгованість ==
 
Після фіксації оплати система повинна автоматично оновлювати статус рахунку.
 
Якщо рахунок оплачено повністю — статус змінюється на '''«Оплачений»'''.
 
Якщо оплачено частково — статус змінюється на '''«Частково оплачений»'''.
 
Якщо термін оплати минув, а оплати немає або вона неповна, рахунок має ставати '''«Простроченим»'''.
 
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Критично.''' Модуль оренди має показувати не лише виставлені рахунки, а й реальний стан взаєморозрахунків: хто оплатив, хто оплатив частково, хто має борг і за який період.
</div>
 
== Звітність ==
 
== Звіт «Реєстр виставлених рахунків» ==
 
Звіт має показувати рахунки за вибраний період.
 
У звіті потрібно відображати:
 
* список рахунків;
* період нарахування;
* орендаря;
* суму рахунку;
* суму оплати;
* борг;
* статус;
* підсумки за період.
 
== Звіт «Баланс орендарів» ==
 
Звіт має показувати фінансовий стан по кожному орендарю.
 
У звіті потрібно відображати:
 
* орендаря;
* суму нарахувань;
* суму оплат;
* поточний борг;
* прострочений борг;
* період;
* статус.
 
Боржників потрібно виділяти червоним кольором або іншим помітним способом.
 
== Звіт по показниках лічильників ==
 
Бажано передбачити окремий звіт по показниках лічильників.
 
Звіт має показувати:
 
* приміщення;
* лічильник;
* тип ресурсу;
* показник на початок;
* показник на кінець;
* різницю;
* тариф;
* суму;
* період.
 
== Логування змін ==
 
Потрібно логувати всі важливі зміни по рахунках, оплатах і нарахуваннях.
 
Журнал змін має фіксувати:
 
* хто створив документ;
* хто змінив документ;
* хто виставив рахунок;
* хто зафіксував оплату;
* хто змінив тариф або кількість;
* дату й час зміни;
* старе та нове значення, якщо це можливо.
 
== Технічні вимоги ==
 
{| class="wikitable" style="width:100%;"
! Параметр
! Опис
|-
| Бекенд
| PHP 8 або Python 3
|-
| Фреймворк
| K2 Core або Symfony Slim K2
|-
| База даних
| PostgreSQL або MySQL
|-
| Фронтенд
| HTML5, JavaScript
|-
| AJAX
| Fetch або Axios
|-
| UI-компоненти
| DataTables, Select2 для довідників
|-
| Друк
| Stimulsoft Reports або внутрішній PDF-генератор
|-
| Імпорт
| Excel-файл з показниками або нарахуваннями
|-
| Нотифікації
| Email API
|}


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


* орендарі;
* орендарі;
Рядок 373: Рядок 693:
* email-нотифікації;
* email-нотифікації;
* журнал змін.
* журнал змін.
== Практичне завдання ==
У межах атестації потрібно продемонструвати робочий сценарій.
Мінімальний сценарій:
# створити орендаря;
# створити договір оренди;
# створити орендовану площу;
# створити послуги й тарифи;
# створити або прив’язати лічильник;
# внести показники лічильника;
# сформувати нарахування за місяць;
# перевірити розрахунок оренди за м²;
# перевірити розрахунок комунальних послуг;
# створити рахунок на оплату з нарахування;
# відредагувати рядок рахунку через inline edit;
# зберегти чернетку;
# виставити рахунок;
# сформувати друковану форму рахунку;
# сформувати акт виконаних робіт;
# надіслати email-нотифікацію;
# зафіксувати оплату;
# перевірити зміну статусу рахунку;
# сформувати реєстр рахунків;
# сформувати баланс орендарів;
# показати боржників.
== Критерії оцінювання ==
{| class="wikitable" style="width:100%;"
! Критерій
! Бали
! Що перевіряється
|-
| Коректність розрахунків
| 20
| Оренда за м², комунальні послуги, лічильники, нормативи, підсумки
|-
| Зручність введення даних і UX
| 20
| Робота з рахунком, inline edit, зрозуміла таблиця, швидке введення показників
|-
| AJAX-інтерактив
| 20
| Додавання рядків, редагування, збереження, перерахунок без перезавантаження
|-
| Структура БД і якість коду
| 20
| Орендарі, договори, площі, послуги, тарифи, лічильники, рахунки, оплати, журнал змін
|-
| Друковані форми
| 10
| Рахунок і акт виконаних робіт у придатному для друку вигляді
|-
| Звіти
| 10
| Реєстр рахунків, баланс орендарів, борги, підсумки
|-
! Разом
! 100
! Максимальна оцінка
|}
== Шкала оцінювання ==
{| class="wikitable" style="width:100%;"
! Бали
! Рівень
! Опис
|-
| 90–100
| Відмінно
| Модуль працює повністю: нарахування, рахунки, акти, оплати, борги, Excel-імпорт і звіти реалізовані коректно
|-
| 75–89
| Добре
| Основна логіка працює, є незначні недоліки, які не руйнують бізнес-процес
|-
| 60–74
| Зараховано
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання
|-
| 0–59
| Не зараховано
| Відсутня критична логіка: розрахунки, рахунки, оплати, борги або звіти
|}
== Критичні помилки ==
Критичними помилками вважаються ситуації, коли:
* оренда за м² розраховується неправильно;
* показники лічильників не зберігаються;
* неможливо сформувати нарахування за період;
* рахунок не пов’язаний із нарахуванням;
* оплата не змінює статус рахунку;
* неможливо побачити борг орендаря;
* рахунок або акт не друкується;
* звіт балансу орендарів не відповідає рахункам і оплатам;
* боржники не виділяються або не визначаються;
* Excel-імпорт дублює або спотворює показники.
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Умова складання.''' Завдання не може бути зараховане, якщо система не формує коректні нарахування за місяць і не показує заборгованість орендарів після виставлення рахунків та оплат.
</div>
== Очікуваний результат ==
У результаті виконання атестаційного завдання має бути створений модуль K2 ERP для обліку оренди та комунальних послуг у ТРЦ.
Модуль має підтримувати довідники орендарів, договорів, площ і послуг, журнал рахунків, форму рахунку з AJAX-інтерактивом, розрахунки за лічильниками і нормативами, друк документів, акти виконаних робіт, контроль оплат, боргів, звітність і масове завантаження показників з Excel.
== Примітка ==
Це прикладна задача, яку реально використовують власники ТРЦ, бізнес-центри, склади, готелі та інші об’єкти нерухомості.
Реалізація такого рішення в K2 ERP автоматизує щомісячну рутину та допомагає уникнути людських помилок у рахунках, актах, тарифах, показниках і боргах.
== Коротко ==
{| class="wikitable" style="width:100%;"
! Питання
! Відповідь
|-
| Що потрібно створити?
| Модуль обліку оренди та комунальних послуг
|-
| Для кого модуль?
| Для ТРЦ, бізнес-центрів, складів, готелів та інших об’єктів нерухомості
|-
| Що є основою розрахунків?
| Договори, площі, тарифи, лічильники, нормативи й нарахування
|-
| Які документи потрібні?
| Рахунок на оплату та акт виконаних робіт
|-
| Які звіти потрібні?
| Реєстр рахунків, баланс орендарів, звіт по показниках лічильників
|-
| Що має підтримувати система?
| AJAX, inline edit, друк, email, Excel-імпорт, логування, статуси оплат
|-
| Що є критичною вимогою?
| Коректні нарахування за місяць і контроль заборгованості орендарів
|}


== Див. також ==
== Див. також ==


* [[K2 Cloud ERP|K2 ERP]]
* [[K2 Cloud ERP|K2 ERP]]
* [[K2 ERP]]
* [[Атестаційні завдання K2 ERP]]
* [[Атестаційні завдання K2 ERP]]
* [[Оренда]]
* [[Оренда]]
* [[Комунальні послуги]]
* [[Комунальні послуги]]
* [[ТРЦ]]
* [[ТРЦ]]
* [[Бізнес-центр]]
* [[Рахунок на оплату]]
* [[Рахунок на оплату]]
* [[Акт виконаних робіт]]
* [[Акт виконаних робіт]]
* [[Баланс орендарів]]
* [[Баланс орендарів]]
* [[Показники лічильників]]
* [[Excel-імпорт]]
[[Категорія:K2 ERP]]
[[Категорія:Атестаційні завдання K2]]
[[Категорія:Оренда]]
[[Категорія:Комунальні послуги]]
[[Категорія:ТРЦ]]
[[Категорія:Рахунки на оплату]]
[[Категорія:Акти виконаних робіт]]
[[Категорія:Корпоративна Wiki]]

Поточна версія на 18:15, 1 травня 2026


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

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

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

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

Модуль обліку виставлення рахунків орендарям за орендовані площі та комунальні послуги в ТРЦ.

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

Мета завдання — створити в K2 ERP модуль для автоматизації щомісячної роботи з орендарями.

Система повинна допомагати власнику ТРЦ або бізнес-центру не рахувати все вручну в Excel, а вести облік у єдиному середовищі: договори, площі, тарифи, лічильники, показники, нарахування, рахунки, акти, оплати та борги.

Головний принцип. Оренда — це не просто рахунок на оплату. Це ланцюжок: договір → площа → послуга → тариф або показник лічильника → нарахування → рахунок → акт → оплата → баланс орендаря.

Опис ситуації

Власник ТРЦ має десятки орендарів: магазини, кафе, сервісні компанії, острівні торгові точки, склади або офіси.

Кожного місяця потрібно автоматично виконувати нарахування та виставляти рахунки за:

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

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

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

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

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

  1. співробітники ТРЦ знімають показники лічильників;
  2. показники вводяться вручну або завантажуються з Excel;
  3. система розраховує витрати за період;
  4. формуються нарахування по кожному орендарю;
  5. на основі нарахувань створюються рахунки на оплату;
  6. для орендарів формуються акти виконаних робіт;
  7. рахунки та акти друкуються або надсилаються email;
  8. після отримання оплат змінюються статуси рахунків;
  9. у звітах видно виставлені суми, оплати та борги.

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

Об’єкт Призначення
Орендарі Компанії або ФОП, які орендують площі
Договори оренди Умови оренди, строки, ставки, реквізити
Орендовані площі Приміщення, площа, номер, ставка за м²
Послуги Оренда, електроенергія, вода, опалення, кондиціонування, прибирання
Тарифи Ціни за одиницю послуги або норматив
Лічильники Прилади обліку електроенергії, води та інших ресурсів
Показники лічильників Значення на початок і кінець періоду
Нарахування Розраховані суми за період
Рахунки на оплату Документи для виставлення орендарям
Акти виконаних робіт Документи підтвердження наданих послуг
Оплати Фіксація надходження коштів
Баланс орендарів Нарахування, оплати й заборгованість

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

Довідник орендарів зберігає інформацію про компанії, які орендують площі.

Мінімальний склад даних:

Поле Опис
Назва компанії Офіційна назва орендаря
Код або ЄДРПОУ Ідентифікатор компанії
Договір оренди Номер, дата початку та дата закінчення договору
Контактні особи Відповідальні особи з боку орендаря
Email для рахунків Адреса для надсилання рахунків і актів
Телефон Контактний номер
Статус Активний, неактивний, боржник, договір завершено

Орендар повинен використовуватися в рахунках, актах, нарахуваннях, оплатах і звітах.

Довідник «Орендовані площі»

Довідник орендованих площ описує приміщення, які передані орендарям.

Мінімальний склад даних:

Поле Опис
Орендар Компанія, яка орендує приміщення
Номер приміщення Номер кімнати, павільйону, магазину або площі
Метраж Площа в м²
Ставка оренди за м² Вартість оренди одного квадратного метра
Договір Договір, на підставі якого орендується площа
Примітки Додаткова інформація

Орендар може мати одну або кілька площ. Нарахування оренди повинно формуватися по кожній площі або консолідовано по орендарю.

Довідник «Послуги»

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

Типові послуги:

  • оренда приміщення;
  • електроенергія;
  • вода;
  • опалення;
  • кондиціонування;
  • прибирання;
  • охорона;
  • інші послуги.

Для кожної послуги потрібно передбачити тип розрахунку.

Тип розрахунку Опис
За показниками лічильника Сума залежить від різниці показників за період
За нормативом на 1 м² Сума залежить від площі приміщення
Фіксована сума Сума не залежить від площі або лічильника
Ручне нарахування Сума вводиться користувачем вручну

Лічильники та показники

Співробітники ТРЦ зазвичай знімають показники лічильників один раз на місяць.

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

Таблиця показників лічильників

Кімната / приміщення № лічильника Тип лічильника Одиниці Значення на початок періоду Значення на кінець періоду Різниця Примітки
1
2
3
...
Разом 0,00

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

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

Масове завантаження показників з Excel

Потрібно передбачити можливість масового завантаження показників лічильників з Excel-файлу.

Завантаження має дозволяти:

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

Приклад Excel-файлу нарахувань за один місяць може використовуватися як орієнтир для структури імпорту.

Нарахування

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

Нарахування можуть формуватися:

  • по всіх орендарях одразу;
  • по конкретному орендарю;
  • по конкретній послузі;
  • по конкретному приміщенню;
  • по певному завантаженню показників.

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

Правильна логіка. Рахунок не повинен рахуватися “на льоту” щоразу заново без сліду. Спочатку система формує нарахування, зберігає їх, а вже з нарахувань створює рахунки.

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

Оренда

Сума оренди розраховується за формулою:

Сума оренди = Метраж × Ставка за м²

Наприклад, якщо площа становить 120 м², а ставка — 300 грн/м², то сума оренди становить:

120 × 300 = 36 000 грн

Електроенергія

Якщо є лічильник:

Сума = Спожиті кВт·год × Тариф

Якщо лічильника немає:

Сума = Норма споживання × Метраж × Тариф

Водопостачання

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

За лічильником:

Сума = Спожиті м³ × Тариф

За нормативом:

Сума = Норма на 1 м² × Метраж × Тариф

Опалення і кондиціонування

Опалення та кондиціонування зазвичай розраховуються пропорційно площі.

Сума = Метраж × Тариф за м²

Журнал документів «Рахунки на оплату»

Журнал рахунків має відображати всі рахунки, виставлені орендарям.

Мінімальні колонки журналу:

Колонка Опис
Номер рахунку Унікальний номер документа
Орендар Компанія, якій виставлено рахунок
Період нарахування Місяць і рік
Загальна сума Сума рахунку
Статус Чернетка, виставлений, оплачений, прострочений
Дата виставлення Коли рахунок виставлено
Дата оплати Коли рахунок оплачено

Журнал має підтримувати створення, редагування, проведення, друк рахунку, а також фільтрацію за орендарем, статусом і періодом.

Статуси рахунку

Статус Значення
Чернетка Рахунок підготовлено, але ще не виставлено орендарю
Виставлений Рахунок сформовано й передано орендарю
Оплачений Оплата зафіксована повністю
Частково оплачений Оплачено лише частину суми
Прострочений Термін оплати минув, борг залишається
Скасований Рахунок анульовано або замінено іншим

Статуси повинні змінюватися автоматично при фіксації оплати.

Форма створення рахунку

Форма рахунку складається із заголовка та табличної частини.

Заголовок рахунку

У заголовку рахунку потрібно передбачити:

Поле Опис
Орендар Вибір з довідника через AJAX-пошук
Період нарахування Місяць і рік
Дата виставлення Дата формування рахунку
Договір Договір оренди, за яким виставляється рахунок
Статус Чернетка, виставлений, оплачений, прострочений
Коментар Додаткова інформація

Таблична частина рахунку

Таблична частина повинна містити орендовані площі та послуги.

Назва послуги Одиниця виміру Кількість Ціна за одиницю Сума
1 Оренда приміщення м² 120 300 36 000
2 Електроенергія кВт·год 450 5 2 250
3 Водопостачання м³ 30 20 600
4 Опалення м² 120 30 3 600
Підсумкова сума 42 450 грн

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

Інтерфейс користувача

Інтерфейс має бути зручним для щомісячної масової роботи.

Потрібно реалізувати:

  • додавання рядків послуг через AJAX без перезавантаження сторінки;
  • редагування кількості або тарифу прямо в таблиці через inline edit;
  • автоматичний перерахунок підсумкової суми;
  • кнопку «Зберегти чернетку»;
  • кнопку «Виставити рахунок»;
  • кнопку «Сформувати акт»;
  • кнопку «Надіслати email»;
  • виділення боржників або прострочених рахунків.

Друк рахунку

Шаблон рахунку повинен містити:

  • назву орендаря;
  • реквізити ТРЦ;
  • номер і дату рахунку;
  • період нарахування;
  • таблицю послуг;
  • підсумкову суму;
  • підпис відповідальної особи ТРЦ.

Формат друку:

  • PDF;
  • або HTML-друк для подальшої відправки.

Акти виконаних робіт

Система повинна формувати акт виконаних робіт на основі рахунку або нарахувань.

Акт має містити:

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

Email-нотифікації орендарям

Потрібно реалізувати надсилання email-повідомлень орендарям про виставлення рахунку.

Email має містити:

  • тему повідомлення;
  • назву орендаря;
  • період нарахування;
  • суму до оплати;
  • вкладення рахунку або посилання на документ;
  • за потреби — акт виконаних робіт.

У системі потрібно зберігати історію відправлення повідомлень.

Оплати та заборгованість

Після фіксації оплати система повинна автоматично оновлювати статус рахунку.

Якщо рахунок оплачено повністю — статус змінюється на «Оплачений».

Якщо оплачено частково — статус змінюється на «Частково оплачений».

Якщо термін оплати минув, а оплати немає або вона неповна, рахунок має ставати «Простроченим».

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

Звітність

Звіт «Реєстр виставлених рахунків»

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

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

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

Звіт «Баланс орендарів»

Звіт має показувати фінансовий стан по кожному орендарю.

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

  • орендаря;
  • суму нарахувань;
  • суму оплат;
  • поточний борг;
  • прострочений борг;
  • період;
  • статус.

Боржників потрібно виділяти червоним кольором або іншим помітним способом.

Звіт по показниках лічильників

Бажано передбачити окремий звіт по показниках лічильників.

Звіт має показувати:

  • приміщення;
  • лічильник;
  • тип ресурсу;
  • показник на початок;
  • показник на кінець;
  • різницю;
  • тариф;
  • суму;
  • період.

Логування змін

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

Журнал змін має фіксувати:

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

Технічні вимоги

Параметр Опис
Бекенд PHP 8 або Python 3
Фреймворк K2 Core або Symfony Slim K2
База даних PostgreSQL або MySQL
Фронтенд HTML5, JavaScript
AJAX Fetch або Axios
UI-компоненти DataTables, Select2 для довідників
Друк Stimulsoft Reports або внутрішній PDF-генератор
Імпорт Excel-файл з показниками або нарахуваннями
Нотифікації Email API

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

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

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

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

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

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

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

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

Критерій Бали Що перевіряється
Коректність розрахунків 20 Оренда за м², комунальні послуги, лічильники, нормативи, підсумки
Зручність введення даних і UX 20 Робота з рахунком, inline edit, зрозуміла таблиця, швидке введення показників
AJAX-інтерактив 20 Додавання рядків, редагування, збереження, перерахунок без перезавантаження
Структура БД і якість коду 20 Орендарі, договори, площі, послуги, тарифи, лічильники, рахунки, оплати, журнал змін
Друковані форми 10 Рахунок і акт виконаних робіт у придатному для друку вигляді
Звіти 10 Реєстр рахунків, баланс орендарів, борги, підсумки
Разом 100 Максимальна оцінка

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

Бали Рівень Опис
90–100 Відмінно Модуль працює повністю: нарахування, рахунки, акти, оплати, борги, Excel-імпорт і звіти реалізовані коректно
75–89 Добре Основна логіка працює, є незначні недоліки, які не руйнують бізнес-процес
60–74 Зараховано Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання
0–59 Не зараховано Відсутня критична логіка: розрахунки, рахунки, оплати, борги або звіти

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

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

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

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

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

У результаті виконання атестаційного завдання має бути створений модуль K2 ERP для обліку оренди та комунальних послуг у ТРЦ.

Модуль має підтримувати довідники орендарів, договорів, площ і послуг, журнал рахунків, форму рахунку з AJAX-інтерактивом, розрахунки за лічильниками і нормативами, друк документів, акти виконаних робіт, контроль оплат, боргів, звітність і масове завантаження показників з Excel.

Примітка

Це прикладна задача, яку реально використовують власники ТРЦ, бізнес-центри, склади, готелі та інші об’єкти нерухомості.

Реалізація такого рішення в K2 ERP автоматизує щомісячну рутину та допомагає уникнути людських помилок у рахунках, актах, тарифах, показниках і боргах.

Коротко

Питання Відповідь
Що потрібно створити? Модуль обліку оренди та комунальних послуг
Для кого модуль? Для ТРЦ, бізнес-центрів, складів, готелів та інших об’єктів нерухомості
Що є основою розрахунків? Договори, площі, тарифи, лічильники, нормативи й нарахування
Які документи потрібні? Рахунок на оплату та акт виконаних робіт
Які звіти потрібні? Реєстр рахунків, баланс орендарів, звіт по показниках лічильників
Що має підтримувати система? AJAX, inline edit, друк, email, Excel-імпорт, логування, статуси оплат
Що є критичною вимогою? Коректні нарахування за місяць і контроль заборгованості орендарів

Див. також