Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал:
https://er.chdtu.edu.ua/handle/ChSTU/9114Повний запис метаданих
| Поле DC | Значення | Мова |
|---|---|---|
| dc.contributor.advisor | Заспа, Григорій Олександрович | - |
| dc.contributor.author | Нестеренко, Владислав В'ячеславович | - |
| dc.date.accessioned | 2026-03-25T20:38:29Z | - |
| dc.date.available | 2026-03-25T20:38:29Z | - |
| dc.date.issued | 2024-06-17 | - |
| dc.identifier.uri | https://er.chdtu.edu.ua/handle/ChSTU/9114 | - |
| dc.description.abstract | АНОТАЦІЯ Прізвище та ініціали студента: Нестеренко В.В. Назва КРБ: Програмне забезпечення системи бухгалтерського обліку організації. Спеціальність: 121 «Інженерія програмного забезпечення» Установа, де відбудеться захист: Черкаський державний технологічний університет Місто, рік: Черкаси, 2024. Робота присвячена аналізу, проектуванню та розробці програмного забезпечення для системи бухгалтерського обліку організації. В роботі розглядаються основні вимоги до сучасних програм бухгалтерського обліку, аналізуються існуючі рішення та їх недоліки. На основі проведеного аналізу, була розроблена власна модель програмного забезпечення, що відповідає сучасним стандартам ведення обліку та оптимізації робочих процесів в організації. Викладено методику впровадження та налаштування системи, оцінено її ефективність на прикладі конкретної організації. Результати дослідження показують, що розроблене програмне забезпечення сприяє підвищенню ефективності бухгалтерського обліку та може бути адаптоване до різних типів організацій. | uk_UA |
| dc.description.abstract | ANNOTATION Name and initials of the student: Nesterenko V.V. Name of the course: Software of the organization's accounting system. Specialty: 121 "Software Engineering" Institution where the defense will take place: Cherkasy State Technological University City, year of graduation: Cherkasy, 2024. This thesis is dedicated to the analysis, design, and development of software for the accounting system of an organization. It examines the primary requirements for modern accounting software, analyzes existing solutions and their shortcomings. Based on the analysis, a proprietary software model was developed that meets current standards for accounting and optimization of organizational work processes. The methodology for implementing and configuring the system is presented, and its efficiency is evaluated using a specific organization as an example. The research results indicate that the developed software enhances the efficiency of accounting and can be adapted to various types of organizations. | uk_UA |
| dc.language.iso | uk | uk_UA |
| dc.subject | програмне забезпечення | uk_UA |
| dc.subject | бухгалтерський облік | uk_UA |
| dc.subject | система обліку | uk_UA |
| dc.subject | оптимізація | uk_UA |
| dc.subject | впровадження | uk_UA |
| dc.subject | software | uk_UA |
| dc.subject | accounting | uk_UA |
| dc.subject | accounting system | uk_UA |
| dc.subject | optimization | uk_UA |
| dc.subject | implementation | uk_UA |
| dc.title | Розробка програмного забезпечення системи бухгалтерського обліку організації | uk_UA |
| dc.type | Bachelor Thesis | uk_UA |
| Розташовується у зібраннях: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) | |
Файли цього матеріалу:
| Файл | Опис | Розмір | Формат | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Нестеренко Владислав В'ячеславович.pdf Restricted Access | 5.52 MB | Adobe PDF | Переглянути/Відкрити Запит копії |
Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
бакалавра
на тему «Програмне забезпечення системи бухгалтерського
обліку організації»
Виконав: студент 4 курсу, групи ЗПЗ-2004
спеціальності
121 «Інженерія програмного забезпечення»
(шифр і назва напряму підготовки)
Студент: Нестеренко В.В.
(прізвище та ініціали)
Керівник: Заспа Г.О.
(прізвище та ініціали)
Рецензент: ____________
(прізвище та ініціали)
Черкаси 2024
Черкаський державний технологічний університет
повне найменування вищого навчального закладу
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
Освітній рівень бакалавр
Спеціальність 121 «Інженерія програмного забезпечення»
Освітня програма Інженерія програмного забезпечення
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗАС, професор
____________________ С. Голуб
«___» ______________ 2024 року
З А В Д А Н Н Я
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Нестеренко Владислав Вячеславович
(прізвище, ім’я, по батькові)
1. Тему проекту (роботи) Розробка програмного забезпечення системи бухгалтерського обліку
організації
Керівник проекту (роботи) Заспа Григорій Олександрович д.т.н., професор
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технологічного університету від « 10 » жовтня
2022 року №333/01
2. Строк подання студентом проекту (роботи)
3. Вхідні дані до проекту (роботи) стандарти програмного забезпечення; процеси управління;
вимоги до проекту; календарне планування проекту; управління ризиками проекту; управління
ресурсами
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити) Вступ;
Теоретичний аналіз ринкових мотивів бізнесу для замовлення розширення функціональних
можливостей програмного забезпечення для бухгалтерського обліку; Розробка концепція проекту;
Управління проектом розробки; Оцінювання ефективності; Висновки; Список використаних
джерел; Додатки.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту;
Організаційна структура; Структура робіт проекту; Матриця відповідності; Мережевий
графік; Діаграма Ганта; Діаграма Ісікави; Когнітивна мапа проектних ризиків; Опис матеріалів для
захисту у вигляді презентації
6. Консультанти розділів роботи
Підпис, дата
Розді Прізвище, ініціали та
Завдання Завдання
л посади консультанта
видав прийняв
1
2
3
7. Дата видачі завдання 02 грудня 2024 р.
КАЛЕНДАРНИЙ ПЛАН
Строк
виконання
Назва етапів випускної роботи етапів Примітки
п/п
кваліфікаційної
роботи
Постановка задачі виконано
Підготовка завдання виконано
Погодження завдання виконано
Затвердження завдання виконано
Основна стадія
Підбір матеріалів виконано
Аналіз шляхів вирішення поставленої виконано
задачі
Розрахунок основних параметрів роботи виконано
Вибір кінцевого варіанту проектного виконано
рішення
Оформлення первісної редакції роботи виконано
Заключна стадія
Узгодження прийнятих проектних рішень виконано
з керівником
Оформлення пояснювальної записки виконано
роботи в кінцевій редакції
Попередній захист роботи виконано
Затвердження роботи
Рецензування роботи
Захист роботи
Студент _____________________ Нестеренко В.В.
(підпис) (прізвище та ініціали)
Керівник роботи ___________________ Заспа Г.О.
(підпис) (прізвище та ініціали)
АНОТАЦІЯ
Прізвище та ініціали студента: Нестеренко В.В.
Назва КРБ: Програмне забезпечення системи бухгалтерського обліку організації.
Спеціальність: 121 «Інженерія програмного забезпечення»
Установа, де відбудеться захист: Черкаський державний технологічний
університет
Місто, рік: Черкаси, 2024.
Робота присвячена аналізу, проектуванню та розробці програмного забезпечення
для системи бухгалтерського обліку організації. В роботі розглядаються основні
вимоги до сучасних програм бухгалтерського обліку, аналізуються існуючі рішення та
їх недоліки. На основі проведеного аналізу, була розроблена власна модель
програмного забезпечення, що відповідає сучасним стандартам ведення обліку та
оптимізації робочих процесів в організації. Викладено методику впровадження та
налаштування системи, оцінено її ефективність на прикладі конкретної організації.
Результати дослідження показують, що розроблене програмне забезпечення сприяє
підвищенню ефективності бухгалтерського обліку та може бути адаптоване до різних
типів організацій.
Ключові слова: програмне забезпечення, бухгалтерський облік, система обліку,
оптимізація, впровадження.
ANNOTATION
Name and initials of the student: Nesterenko V.V.
Name of the course: Software of the organization's accounting system.
Specialty: 121 "Software Engineering"
Institution where the defense will take place: Cherkasy State Technological University
City, year of graduation: Cherkasy, 2024.
This thesis is dedicated to the analysis, design, and development of software for the
accounting system of an organization. It examines the primary requirements for modern
accounting software, analyzes existing solutions and their shortcomings. Based on the
analysis, a proprietary software model was developed that meets current standards for
accounting and optimization of organizational work processes. The methodology for
implementing and configuring the system is presented, and its efficiency is evaluated using a
specific organization as an example. The research results indicate that the developed software
enhances the efficiency of accounting and can be adapted to various types of organizations.
Keywords: software, accounting, accounting system, optimization, implementation.
ВСТУП .............................................................................................................................................................. 9
Актуальність теми ............................................................................................................................................ 9
Мета і завдання розробки ................................................................................................................................ 9
Об'єкт розробки............................................................................................................................................... 10
Методи проектування та конструювання ..................................................................................................... 10
Опис отриманих результатів ......................................................................................................................... 11
Особистий внесок автора ............................................................................................................................... 12
Розділ 1. Існуючі методи та засоби розв’язання поставлених завдань ............................................... 13
1.1 Актуальність теми .................................................................................................................................... 13
1.2 Аналіз наукової та технічної інформації ................................................................................................ 13
1.4 Конкретизація завдань ............................................................................................................................. 17
1.5 Переваги та недоліки різних типів бухгалтерського програмного забезпечення............................... 18
1.5.1.1 Хмарне ПЗ для бухгалтерського обліку (QuickBooks) .................................................................... 21
1.5.1.2 Комерційне ПЗ для бухгалтерського обліку ( 1С:Бухгалтерія) ...................................................... 22
1.5.1.3 ПЗ для бухгалтерського обліку на підприємстві (SAP S/4HANA Finance) ................................... 24
Висновки до розділу .................................................................................................................... 25
2 Впровадження результатів досліджень у практику проектування програмного забезпечення
інформаційних систем .............................................................................................................................................. 27
2.1 Моделювання предметної області ........................................................................................................... 27
2.1.1 Предметна область моделювання. Модель предметної області. Словник предметної області ..... 27
2.1.2 Елементи моделювання предметної області ....................................................................................... 28
2.1.3 Робоча область моделювання ............................................................................................................... 30
2.2 Формування та аналіз вимог .................................................................................................................... 31
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні вимоги. Вимоги
замовника і розробника. Функціональні та нефункціональні вимоги .................................................................... 31
2.2.2 Формування вимог за допомогою діаграми прецедентів .................................................. 35
Рисунок 2.2 - діаграма прецедентів вимог до системи .............................................................. 37
2.3 Проектування логічної структури програмного комплексу ................................................................. 37
2.3.1 Діаграми класів ...................................................................................................................................... 38
2.3.2 Діаграми пакетів .................................................................................................................................... 39
2.4 Архітектурне проектування ..................................................................................................................... 40
2.4.1 Діаграма компонентів ............................................................................................................................ 41
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма розгортання ............................. 42
2.5 Моделювання поведінки системи ........................................................................................................... 44
2.5.1 Діаграма діяльності ............................................................................................................................... 45
2.5.2 Діаграма послідовності ......................................................................................................................... 47
2.5.3 Діаграма комунікації ............................................................................................................................. 50
2.5.4 Діаграма скінченного автомату ............................................................................................................ 54
Висновки до розділу .................................................................................................................... 56
3 Розробка та тестування програмного забезпечення ......................................................... 58
3.1 Розробка програмного комплексу ......................................................................................... 58
3.1.1 Обґрунтування вибору засобів реалізації .......................................................................... 58
3.1.2 Опис структурної (функціональної) схеми ......................................................................... 60
3.1.3 Опис логічної схеми системи .............................................................................................. 60
3.1.4 Розробка бази даних ........................................................................................................... 60
3.1.5 Розробка інтерфейсу користувача ..................................................................................... 62
3.1.6 Опис розробки програмних компонентів ............................................................................ 73
3.2 Тестування системи ............................................................................................................... 78
3.2.1 Модульне тестування ......................................................................................................... 78
3.2.2 Інтеграційне тестування ..................................................................................................... 79
3.2.3 Системне тестування .......................................................................................................... 80
3.2.4 Приймальне тестування ..................................................................................................... 81
Висновки до розділу .................................................................................................................... 82
3.3 Приклади впровадженого програмного комплексу............................................................... 83
ВИСНОВКИ .................................................................................................................................. 83
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ......................................................................................... 83
ДОДАТКИ ..................................................................................................................................... 83
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ
Frontend – інтерфейсна частина проекту;
Backend – серверна частина проекту;
SQL – структурована мова запитів;
HTML – мова гіпертекстової розмітки;
БД – база даних;
ПЗ – програмне забезпечення.
ВСТУП
Актуальність теми
Актуальність визначається потребою у розробці програмного забезпечення
інформаційної системи для бухгалтерського обліку, яке відповідає сучасним вимогам
ефективності, безпеки та інтеграції з іншими системами управління організації [1].
Зростання обсягів даних і потреба в їх оперативному аналізі вимагають від такого
програмного забезпечення не тільки високої функціональності, але й гнучкості та
масштабованості. Вибір напрямку розвитку програмного забезпечення, яке зможе
відповідати цим вимогам, є ключовим для забезпечення конкурентоспроможності
організацій на ринку.
Мета і завдання розробки
Метою роботи є розробка програмного забезпечення для системи
бухгалтерського обліку, що відповідає сучасним вимогам ефективності, безпеки та
користувацького комфорту.
Завдання:
Інформаційний пошук методів, засобів та методик побудови програмного
забезпечення інформаційних систем виконання поставлених завдань.
Проектування програмного забезпечення інформаційної системи для
бухгалтерського обліку.
Конструювання програмного забезпечення інформаційної системи.
Тестування програмного забезпечення інформаційної системи.
Впровадження та супроводження програмного забезпечення інформаційної
системи.
Об'єкт розробки
Об'єктом розробки є процеси бухгалтерського обліку в організаціях, що
потребують автоматизації та оптимізації за допомогою сучасного програмного
забезпечення.
Предметом розробки є процес побудови програмного забезпечення
інформаційної системи для бухгалтерського обліку, що відповідає сучасним вимогам
ефективності, безпеки та інтеграції з іншими системами управління.
Методи проектування та конструювання. При розробці програмного
забезпечення використовувалися методи системного аналізу, об'єктно-орієнтованого
проектування, а також методики Agile-розробки для забезпечення гнучкості та
ефективності процесу створення продукту.
Для досягнення визначеної мети у розробці програмного забезпечення для
бухгалтерського обліку організації були використані наступні методи: порівняльний
аналіз — під час дослідження існуючих програмних продуктів на ринку для
ідентифікації їхніх переваг та недоліків; системний аналіз та синтез — для
проектування архітектури програмного забезпечення, що оптимально відображає всі
процеси бухгалтерського обліку та забезпечує гнучкість в налаштуванні під конкретні
потреби організації; об'єктно-орієнтоване проектування — для створення модульної
структури програмного забезпечення, що дозволяє легко розширювати його
функціонал та інтегрувати з іншими інформаційними системами організації;
тестування — для перевірки стабільності роботи програмного забезпечення,
відповідності його функціоналу заявленим вимогам та виявлення можливих помилок
перед впровадженням у експлуатацію.
Експериментальна розробка та прототипування — важливі складові процесу, що
дозволяють на ранніх стадіях розробки визначити оптимальні підходи до реалізації
ключових функцій програмного забезпечення та оцінити їх ефективність на практиці.
Це також сприяє адаптації розробки до змінюваних вимог замовника та ринку в цілому.
Таким чином, комплексне використання зазначених методів і підходів дозволяє
створити надійне, гнучке та ефективне програмне забезпечення для бухгалтерського
обліку, яке зможе забезпечити потреби сучасної організації в управлінні фінансами та
відповідати високим стандартам якості.
Опис отриманих результатів. Був проведений аналіз ринку існуючого
бухгалтерського програмного забезпечення, який включає порівняння функціональних
можливостей та простоти використання завдяки метрикам. В результаті роботи було
розроблено програмне забезпечення, що дозволяє значно спростити та автоматизувати
процеси бухгалтерського обліку, забезпечити надійний захист фінансової інформації
та оптимізувати витрати часу співробітників на ведення обліку.
Практичне значення отриманих результатів. Розроблене програмне
забезпечення може бути запровадженим в організаціях різних масштабів та
спеціалізацій для підвищення ефективності бухгалтерського обліку, зниження витрат
на обробку даних та забезпечення високого рівня безпеки інформації.
Особистий внесок автора. Автором був здійснений аналіз сучасного ринку
програмного забезпечення систем бухгалтерського обліку організації і популярних
систем і рішень, повний цикл розробки програмного продукту, який включає:
аналіз вимог
проектування архітектури
програмування і розширення функціональних можливостей існуючих систем
обліку з відкритим вихідним кодом
тестування
підготовку документації
Також автор взяв участь у плануванні процесу впровадження системи в
експлуатацію.
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
1.1. Актуальність теми
Актуальність теми розробки програмного забезпечення для бухгалтерського
обліку у сучасному світі важко переоцінити. З поширенням комп'ютеризації та
автоматизації практично у всіх сферах діяльності, бухгалтерський облік став важливою
складовою управління будь-якою організацією, незалежно від її розміру та
спрямованості. Організації з усіх галузей і різних країн шукають ефективні та надійні
рішення для автоматизації своїх фінансових процесів, зберігання даних та генерації
звітності, щоб забезпечити точність, достовірність та оперативність управлінських
рішень.
На фоні постійно зростаючих вимог до облікової звітності, контролю за
фінансами та фіскальної звітності, виникає потреба в сучасних технологічних
рішеннях, які забезпечать не лише ефективність та надійність, але й зручність та
простоту у використанні. Тому дослідження в галузі розробки бухгалтерського
програмного забезпечення стає актуальним завданням, що має прямий вплив на
конкурентоспроможність та успішність сучасних підприємств.
1.2. Аналіз наукової та технічної інформації
Аналіз наукової та технічної інформації щодо розробки програмного
забезпечення для бухгалтерського обліку засвідчує наявність різноманітних підходів
та стратегій у цій області. Відзначається значний прогрес у розробці та впровадженні
хмарних бухгалтерських систем, які надають доступ до функціоналу через веб-браузер,
що забезпечує гнучкість та зручність у роботі з даними, а також спрощує процес
обслуговування та оновлення ПЗ.
Ключові поняття, які вирізняються у науковій літературі, включають
"автоматизація бухгалтерського обліку", "інтеграція фінансових систем", "аналітика та
звітність у реальному часі", "захист даних та конфіденційність". При цьому, методи та
технології, які набули широкого застосування, охоплюють використання хмарних
сервісів, штучний інтелект у фінансовому аналізі, блокчейн-технології для
забезпечення безпеки та надійності даних.
За останні кілька років спостерігається збільшення зацікавленості у використанні
аналітичних інструментів та штучного інтелекту для автоматизації процесів прийняття
рішень у бухгалтерському обліку. Тенденція до переходу від традиційних локальних
систем до хмарних рішень відображає потребу в гнучких, масштабованих та витратно-
ефективних рішеннях у цій галузі.
Зокрема, значний внесок у розвиток галузі внесли такі дослідження, як робота
“Accounting Software In Modern Business” [3], де розглядаються фактори, які впливають
на цілі різних програмних систем в залежності від цільової аудиторії (табл. 1.1)
Попри існуючі досягнення, аналіз показав, що деякі важливі аспекти
залишаються недостатньо дослідженими. Серед них – розробка універсальних
критеріїв для оцінки ефективності бухгалтерського програмного забезпечення, а також
стратегії інтеграції новітніх технологічних рішень у традиційні облікові системи без
зниження рівня безпеки даних.
Враховуючи проведений аналіз, можна зробити висновок про необхідність
подальших досліджень у даній галузі. Зокрема, потребують розробки нові підходи та
інструменти, які дозволять оптимізувати розробку подібних систем в майбутньому.
Вимоги до Бухгалтерського ПЗ:
Надійність. ПЗ повинно бути стабільним та надійним, щоб уникнути втрати даних
або помилкового обліку.
Безпека. Важливо, щоб програмне забезпечення забезпечувало захист
конфіденційності, цілісності та доступності фінансової інформації.
Функціональність. ПЗ повинно мати широкий спектр функцій, які
відповідають потребам облікових операцій та відповідають стандартам
бухгалтерського обліку.
Гнучкість. Система повинна бути гнучкою та здатною до налаштувань, щоб
вона могла адаптуватися до змін в потребах бізнесу.
Інтеграція. Важливо, щоб ПЗ було здатне інтегруватися з іншими системами та
додатками, такими як банківські програми або системи управління запасами.
Легкість використання. Інтерфейс користувача повинен бути інтуїтивно
зрозумілим та легким у використанні, щоб спростити роботу бухгалтерів та інших
користувачів [4].
Підтримка та оновлення. Виробник ПЗ повинен надавати ефективну підтримку
та регулярні оновлення для забезпечення роботи програми у відповідності до останніх
вимог та стандартів.
Звітність. ПЗ повинно мати можливість генерувати різноманітні звіти та
аналітичні дані для прийняття стратегічних рішень та відстеження фінансового стану
підприємства.
Масштабованість. Важливо, щоб програмне забезпечення було здатне
масштабуватися разом із зростанням бізнесу та збільшенням обсягу облікових
операцій.
Вартість. Повинно бути обґрунтованою вартість придбання та утримання ПЗ у
порівнянні з його функціональністю та користувальницькими можливостями.
Перелічені універсальні вимоги до програмного забезпечення для
бухгалтерського обліку є критичними факторами, які визначають якість та придатність
обраного рішення для потреб підприємства. Отже, враховуючи складність фінансових
операцій та великий обсяг облікових даних, важливо, щоб програмне забезпечення
було здатним задовольнити потреби підприємства на всіх рівнях.
Перш за все, надійність програми є основним критерієм, оскільки будь-яка
несправність може призвести до серйозних фінансових втрат або порушення правил
звітності. Також, програмне забезпечення має забезпечувати високий рівень безпеки,
щоб уникнути несанкціонованого доступу до фінансових даних та зберегти
конфіденційність інформації. При цьому, програма повинна мати широкий спектр
функціональності, який відповідає потребам управлінського та фінансового обліку,
забезпечуючи якісну обробку та аналіз фінансових операцій.
Окрім того, гнучкість та легкість використання є важливими аспектами,
особливо в умовах швидкозмінного бізнес-середовища. Інтеграція з іншими
системами, такими як банківські системи або системи управління запасами, та
підтримка з боку виробника дозволяють підприємствам максимально ефективно
використовувати програмне забезпечення та швидко реагувати на зміни у
внутрішньому та зовнішньому середовищі.
1.3. Переваги та недоліки різних типів бухгалтерського програмного
забезпечення
Для прикладу будуть використані наступні програмні продукти:
Хмарне ПЗ для бухгалтерського обліку. QuickBooks Online. Це хмарне
програмне забезпечення, яке надає широкий спектр можливостей для ведення
бухгалтерського обліку, включаючи облік фінансів, виставлення рахунків, оплату
рахунків та звітність. QuickBooks Online [5] дозволяє працювати з даними з будь-якого
пристрою, що має доступ до Інтернету, і надає можливість спільного доступу до
облікових записів з різних місць.
Комерційне ПЗ для обліку. Sage Intacct. Sage Intacct - комерційний програмний
засіб для бухгалтерського обліку [6] в Україні та країнах СНД. Він надає широкі
можливості для обліку фінансів, роботи з податками, звітності та аналізу діяльності
підприємства.
ПЗ для бухгалтерського обліку на підприємстві. SAP S/4HANA Finance.
Це програмне забезпечення для бухгалтерського обліку та фінансового
управління на підприємствах середнього і великого розміру. Воно надає розширені
можливості для автоматизації обліку, оптимізації фінансових процесів і аналізу
фінансової звітності. SAP S/4HANA Finance [7] також підтримує інтеграцію з іншими
функціональними областями підприємства, такими як управління закупівлями,
виробництвом та управлінням ресурсами людських факторів.
Дані продукти були проаналізовані за допомогою таблиць факторів (табл. 1.1,
1.2, 1.3)
Хмарне ПЗ для бухгалтерського обліку (QuickBooks)
QuickBooks Online має кілька переваг, які варто відзначити:
Відсутність витрат на обслуговування. Однією з ключових переваг
QuickBooks Online є відсутність необхідності встановлення та обслуговування
локального програмного забезпечення. Всі оновлення та технічна підтримка
забезпечуються в хмарній версії програми, що робить процес використання більш
зручним та економічно вигідним для користувачів.
Висока надійність. QuickBooks Online відомий своєю стабільністю та
надійністю. Дане програмне забезпечення має високий рівень захисту даних та надійно
працює без великої кількості збоїв або відмов.
Простий у використанні інтерфейс. Інтерфейс QuickBooks Online є досить
інтуїтивно зрозумілим та легким у використанні. Він оснащений усіма необхідними
функціями для бухгалтерського обліку, при цьому інтерфейс легко зрозуміти навіть
користувачам з мінімальним досвідом використання бухгалтерського програмного
забезпечення.
Наявність гнучких планів оплати по підписці. QuickBooks Online пропонує
різні плани оплати за підпискою, що дозволяє користувачам вибирати оптимальний
план з урахуванням їхніх потреб та фінансових можливостей. Також доступний
безкоштовний план. Це робить програму більш доступною для різних категорій
користувачів і дозволяє зменшити витрати на облік та фінанси для підприємств різного
розміру.
Незважаючи на переваги, QuickBooks Online також має кілька недоліків, які
варто врахувати:
Необхідність постійної наявності інтернет-з'єднання. QuickBooks Online
потребує стабільного інтернет-з'єднання для доступу до системи. Це може стати
проблемою для користувачів у випадку обмеженого або нестабільного доступу до
Інтернету.
Відсутність абсолютної впевненості в безпеці даних. Хоча QuickBooks Online
забезпечує певний рівень захисту даних, користувачі можуть відчувати недостатню
впевненість в безпеці своїх конфіденційних даних у хмарному середовищі.
Система контролюється іншою компанією. QuickBooks Online є продуктом
компанії Intuit, що означає, що користувачі покладаються на здатність цієї компанії
забезпечити надійний функціонування та підтримку програми.
Можливі ліміти на кількість об'єктів у базі даних. Деякі плани QuickBooks
Online можуть мати обмеження на кількість об'єктів, які можуть бути створені або
збережені в базі даних. Це може стати обмеженням для підприємств з великим обсягом
операцій.
Складність інтеграції з програмними продуктами, що не були передбачені
розробниками хмарного ПЗ. Хоча QuickBooks Online має певні можливості для
інтеграції з іншими програмними продуктами, інтеграція з програмами, які не були
передбачені розробниками хмарного ПЗ, може бути складною або неможливою без
додаткового програмного забезпечення або налаштувань.
Таблиця 1.1
Переваги та недоліки хмарного бухгалтерського програмного забезпечення
Переваги Недоліки
Відсутність витрат на Необхідність постійної наявності
обслуговування інтернет-з'єднання
Висока надійність Відсутність абсолютної впевненості в
безпеці даних, можливість
Простий у використаннні інтерфейс Система контролюється іншою
компанією
Продовження Таблиці 1.1
Наявність гнучких планів оплати по Можливі ліміти на кількість обʼєктів у
підписці БД
Можливість швидкого відновлення Складність інтеграцій з програмними
даних та їхньої перевірки продуктами
Можливість колаборації між різними
працівниками
Комерційне ПЗ для бухгалтерського обліку
Проаналізуємо переваги програмного забезпечення Комерційного ПЗ для
бухгалтерського обліку, зокрема Sage Intacct.
Найбільше різноманіття функціональних можливостей. Sage Intacct відома
своїм широким спектром функціональних можливостей, що включає облік фінансів,
звітність, оподаткування, управління заробітною платою та інші бухгалтерські
процеси. Це дозволяє користувачам вибирати та налаштовувати програму відповідно
до своїх потреб та специфіки діяльності підприємства.
Доступність для власників середнього бізнесу. Sage Intacct є доступним
рішенням для власників середнього бізнесу, оскільки вона пропонує різні версії
програми з різним функціоналом та ціновими пакетами. Це дозволяє підприємствам
різних розмірів знайти оптимальний варіант для своєї діяльності.
Економія оплачуваного часу бухгалтера. Завдяки автоматизованим процесам
та широкому спектру функцій, Sage Intacct дозволяє значно зменшити час, який
витрачає бухгалтер на виконання рутинних завдань, таких як ведення обліку,
підготовка звітності тощо. Це дозволяє оптимізувати робочі процеси та зосередитися
на стратегічних завданнях підприємства.
Високий рівень безпеки. Sage Intacct відома своїми заходами безпеки, що
забезпечують захист конфіденційності та цілісності фінансових даних. Це включає
захист від несанкціонованого доступу до даних, регулярні резервні копії та інші заходи
забезпечення безпеки.
Наявність спеціалістів із досвідом із даним ПЗ. Завдяки популярності та
поширеності Sage Intacct, на ринку праці є багато кваліфікованих фахівців, які мають
досвід роботи з цією системою. Це спрощує підтримку та обслуговування програмного
забезпечення для підприємств, оскільки можна легко знайти спеціалістів для
вирішення будь-яких питань чи проблем.
Недоліки Sage Intacct включають:
неінтуїтивний інтерфейс, що може ускладнювати роботу користувачів.
клієнт відповідає за керування пам'яттю та безпекою даних, що може
вимагати додаткових зусиль та ресурсів.
потреба у кваліфікованому персоналі для виконання більшості завдань, що
може вимагати додаткового навчання або найму спеціалістів.
помилки при введенні даних можуть бути складно виявлені через особливості
програмного забезпечення.
генерація звітів може займати більше часу порівняно з іншими програмами.
ускладнена колаборація, особливо при різних рівнях доступу, що може
утруднювати спільну роботу з даними та звітами.
Таблиця 1.2
Переваги та недоліки комерційного бухгалтерського програмного
забезпечення
Переваги Недоліки
Велике різноманіття Часто недостатньо інтуїтивний
функціональних можливостей інтерфейс
Доступність для власників Задачі по керуванню памʼяттю і
середнього бізнесу забезпеченню безпеки даних лягають на
клієнта
Економія оплачуваного часу Потреба у кваліфікованому
бухгалтера персоналі для виконання більшості задач
Високий рівень безпеки Помилки при введенні даних
складно виявити
Наявність спеціалістів із Генерація звітів займає відносно
досвідом із даним ПЗ більше часу
Ускладнена колаборація, особливо
при різних рівнях доступу
Програмне забезпечення для бухгалтерського обліку на підприємстві (SAP
S/4HANA Finance)
Переваги SAP S/4HANA Finance включають:
надійний канал оновлення і підтримки, що забезпечує вирішення питань щодо
використання та надійність системи;
простота розширення функціоналу за потреби, що дозволяє відповідати
зростаючим вимогам підприємства;
зрозумілий спосіб отримання та реакції на зворотній зв'язок від клієнтів, що
сприяє покращенню взаємодії з користувачами;
можливість об'єднати суміжні процеси на рівні системи;
надійна інтеграція з існуючими системами на підприємстві, що спрощує
процес впровадження і забезпечує синхронізацію даних.
Недоліки SAP S/4HANA Finance включають:
потребу більших вкладень, які можуть бути значними для деяких
підприємств;
необхідність вкладення часу для ідентифікації та автоматизації процесів, що
може вимагати додаткових зусиль і ресурсів;
системі потрібен час для тестування перед впровадженням, щоб гарантувати
стабільну та ефективну роботу;
потребує співпраці з розробниками програмного забезпечення для вирішення
можливих проблем та підтримки системи;
існує ризик можливих проблем при різкій зміні основної команди
розробників, що може вплинути на процес розвитку та підтримки системи.
Таблиця 1.3
Переваги та недоліки бухгалтерського програмного забезпечення на
підприємстві
Переваги Недоліки
Система має надійний канал Високі витрати на впровадження
оновлення і вирішення питань щодо
використання
Значно простіше за потреби Потребує вкладень часу для виявлення
розширити функціонал процесів, які потрібно автоматизувати
Зрозумілий спосіб отримання і Системи потребують певного часу для
реакції на зворотній звʼязок від тестування
клієнта
Суміжні процеси можуть бути Потребує співпраці з розробниками ПЗ
обʼєднані на рівні системи
Продовження таблиці 1.3
Надійна інтеграція з іншими Можливі проблеми при різкій зміні
системами основної команди розробників
Потреба у висококваліфікованому
персоналі
1.4. Постановка задачі
Перш за все, серед основних завдань визначено аналіз сучасних вимог до
програмного забезпечення для бухгалтерського обліку, зокрема, визначення потреб
користувачів і вимог до функціональності програми. Далі відводиться увага на аналіз
існуючих рішень на ринку, а також виявлення їхніх недоліків та обмежень, що може
стати основою для подальшого удосконалення програмного забезпечення.
Другий аспект конкретизації завдань полягає в описі методів, які будуть
використані для вирішення виявлених проблем. Зокрема, планується використання
аналітичних методів для оцінки потреб користувачів і аналізу існуючих програмних
рішень. Також передбачається застосування методів проектування програмного
забезпечення для розробки оптимальних рішень, які відповідають вимогам
бухгалтерського обліку та враховують виявлені недоліки і обмеження існуючих
систем.
Крім того, одним із ключових завдань є визначення критеріїв успіху для
подальшої оцінки ефективності розробленого програмного забезпечення. Це допоможе
не лише встановити стандарти для оцінки продукту, але й визначити, наскільки вдало
вдалося вирішити виявлені проблеми та задовольнити потреби користувачів у сфері
бухгалтерського обліку.
Висновки до розділу
У розділі надали всебічний огляд актуальності автоматизації бухгалтерських
процесів, що є критично важливим у сучасній цифровій економіці. Аналіз наукової та
технічної інформації виявив ключові тенденції у сфері бухгалтерського обліку, такі як
використання штучного інтелекту, машинного навчання та хмарних технологій, що
суттєво підвищують ефективність управління фінансовими операціями.
Порівняльний аналіз різних типів бухгалтерського програмного забезпечення
виявив їх переваги та недоліки.
Загалом, вибір оптимального програмного забезпечення для бухгалтерського
обліку залежить від конкретних потреб та можливостей підприємства. Використання
сучасних технологій і підходів дозволяє підвищити ефективність і надійність
бухгалтерського обліку, зменшити ймовірність помилок і оптимізувати витрати часу
на обробку фінансових даних, що є важливим кроком до успішної автоматизації
бухгалтерських процесів.
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ІНФОРМАЦІЙНИХ СИСТЕМ
У цьому розділі описана розроблена методика, за якою в результаті була
проведена розробка програмного продукту.
2.1. Моделювання предметної області
Оскільки був використаний ітеративний процес розробки програмного
забезпечення, схожий на методологію екстремального програмування – eXtreme, XP-
процес [8], то кожній ітерації відповідатиме своя модель предметної області, що
відображає сценарії прецедентів, які реалізуються на цьому етапі. Таким чином,
модель предметної області еволюціонує у процесі розробки системи.
2.1.1. Предметна область моделювання. Модель предметної області. Словник
предметної області
Предметна область моделювання
Наведена модель предметної області бухгалтерської справи і бухгалтерських
додатків забезпечує чітке розуміння основних компонентів системи та їх
взаємозв’язків, що дозволяє ефективно планувати, розробляти та впроваджувати
програмні рішення, які відповідають потребам користувачів та вимогам ринку.
Актори
Бухгалтер. Основний користувач системи, який вводить, перевіряє та змінює
фінансові дані.
Менеджер. Користувач, який аналізує фінансові звіти та приймає стратегічні
рішення.
Клієнт. Особа або організація, що отримує послуги від підприємства і може
мати фінансові взаємовідносини з ним.
Об’єкти
Фінансовий звіт. Документ, що містить інформацію про фінансові результати
діяльності підприємства за певний період.
Рахунок. Документ, що відображає фінансові взаємовідносини між
підприємством і його клієнтами або постачальниками.
Зарплатний лист (Payroll). Документ, що містить розрахунок заробітної плати
працівників.
Транзакція. Запис у бухгалтерському обліку, що відображає фінансову
операцію.
Взаємодії
Введення даних. Процес введення бухгалтером інформації про фінансові
операції.
Перевірка даних. Процес перевірки коректності введених даних бухгалтером
або іншим користувачем системи.
Зміна даних. Процес редагування раніше введених даних для виправлення
помилок або оновлення інформації.
Модель предметної області. Нижче наведена модель об’єктно-орієнтованого
аналізу (Таблиця 2.1), яка відображає візуальне подання концептуальних класів в
термінах предметної області.
Словник предметної області
користувач: модуль, який відповідає за аутентифікацію користувачів у
системі. користувачі можуть входити та виходити з системи, використовуючи
цей модуль;
ERPmine: основний пакет, що включає кілька підсистем, кожна з яких
виконує певні функції для управління бізнес-процесами;
облік часу та витрат: модуль для запису та обліку часу, витраченого на
завдання або проекти, а також для реєстрації витрат, пов'язаних з цими
завданнями чи проектами;
управління персоналом (HR): модуль для відстеження відвідуваності
співробітників та обробки заробітної плати;
CRM (управління взаєминами з клієнтами): модуль для управління
інформацією про клієнтів та відстеження взаємодій з ними;
виставлення рахунків: модуль для створення рахунків-фактур та обробки
платежів;
закупівлі: модуль для створення замовлень на закупівлю та управління
відносинами з постачальниками;
інвентаризація: модуль для контролю та оновлення інформації про запаси;
бухгалтерія: модуль для створення фінансових звітів та запису фінансових
транзакцій;
2.1.2. Елементи моделювання предметної області
Вимоги до системи наведені, як високорівневий опис завдання, низькорівневі
вимоги, описи прецедентів.
Для моделювання предметної області та при проектуванні системи в цілому
будевикористовуватися мова UML. Для діаграм наводяться три типи візуальних
позначень: графічні символи, зв’язки (єднальні елементи), текст (Таблиця 2.1).
Для генерації UML-діаграм на основі мови PlantUML був використаний онлайн-
інструмент PlantUML Web Server [9].
Таблиця 2.1
Графічні символи використані при моделюванні
Графічний Назва елемента
символ
Актор
Пакет
Клас
Обʼєкт
Елемент
Асоціація
Агрегація
Композиція
Залежність
Вспадкування
При проектуванні ПЗ кваліфікаційної роботи необхідно використовувати
основні діаграми мови UML для моделювання предметної області, формування та
аналізу вимог до системи, логічної і фізичної структури та поведінки системи (рисунок
2.3).
У ході виявлення об’єктів з предметної області були встановлені зв’язки, які
існують між ними.
2.1.3. Робоча область моделювання
Цей опис робочої області надає загальне уявлення про різні модулі системи та їх
функціональні можливості, допомагаючи зрозуміти, як система інтегрується для
підтримки бізнес-процесів в організації (рисунок 2.1).
Рисунок 2.1 – Діаграма пакетів для бухгалтерського обліку організації
Робоча область моделювання визначається як специфічна сфера в рамках
проекту системи бухгалтерського обліку, де будуть зосереджені наші основні зусилля.
Ця область включає в себе процеси формування звітності та аудиту. Важливість цих
процесів зумовлена їх центральним місцем в системі обліку та великою кількістю
взаємозалежностей з іншими модулями системи.
Мета моделювання в даному контексті полягає в оптимізації цих ключових
процесів для підвищення загальної ефективності системи. Це досягається за
допомогою автоматизації стандартних завдань і впровадження нових функцій для
підвищення точності облікових записів.
У моделюванні був використаний інструмент UML (Unified Modeling Language)
[9] для структуризації і візуалізації процесів. UML допомагає чітко відобразити
взаємодії між різними аспектами процесів і значно спрощує взаєморозуміння між
розробниками та зацікавленими сторонами.
Точність необхідна для забезпечення відповідності моделі реальним бізнес-
процесам, деталізація дозволяє уникнути пропусків у важливих функціях, а
масштабування забезпечує здатність системи адаптуватися до змін в організації.
Зацікавлені сторони, такі як керівництво компанії і аудитори, активно
залучаються у процес моделювання. Їх вхідні дані та зворотний зв'язок вкрай важливі
для точного відображення бізнес-потреб в моделі. Це співпраця забезпечує реалізацію
моделі, яка відповідає усім вимогам і очікуванням [10].
Оцінка моделі та її валідація проводиться шляхом тестування з використанням
реальних даних для перевірки точності і повноти моделювання. Цей процес дозволяє
виявити та виправити будь-які недоліки перед повномасштабним впровадженням в
систему.
2.2. Формування та аналіз вимог
У даному розділі був виконаний аналіз вимог до продукту. Були визначені
первинні та детальні вимоги. Були визначені, також, вимоги замовника і
розробника, функціональні та нефункціональні вимоги.
2.2.1. Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні вимоги
Формування вимог до програмного забезпечення.
Формування вимог до програмного забезпечення є одним із ключових етапів у
процесі розробки інформаційних систем, що визначає успіх проекту. На цьому етапі
визначаються первинні і детальні вимоги, які включають побажання та потреби
замовника, а також технічні та функціональні очікування розробника. Вимоги
поділяються на функціональні, що описують конкретні функції та сервіси системи, і
нефункціональні, які визначають характеристики системи, такі як продуктивність,
надійність, масштабованість та безпека. Збір та аналіз вимог дозволяють створити
програмне забезпечення, яке максимально відповідає потребам користувачів та бізнес-
цілям організації, забезпечуючи тим самим успішне впровадження та ефективне
використання системи в реальній експлуатації.
Первинні вимоги. ПЗ повинно представляти собою інструмент для управління
бізнес-процесами, забезпечуючи автоматизацію та інтеграцію різних аспектів
діяльності компанії. Вимоги включають точний облік часу та витрат, управління
персоналом, CRM-підсистему, виставлення рахунків, бухгалтерський облік, генерацію
звітів.
Детальні вимоги. Детальні вимоги представлені вимогами замовника, вимогами
розробника, функціональними та нефункціональними вимогами.
ВИМОГИ ЗАМОВНИКА
система повинна дозволяти співробітникам точно реєструвати витрачений час
на завдання та проекти;
система повинна підтримувати реєстрацію витрат, пов'язаних з виконанням
завдань та проектів, включаючи різні категорії витрат;
система повинна забезпечувати можливість відстеження присутності
та відсутності співробітників;
система повинна автоматично розраховувати зарплати на основі
зареєстрованого часу та відвідуваності, враховуючи податки та інші
утримання;
система повинна зберігати детальну інформацію про клієнтів, включаючи
контактні дані та історію взаємодій;
система повинна бути здатна до масштабування для підтримки зростання
бізнесу та збільшення кількості користувачів.
ВИМОГИ РОЗРОБНИКА
система повинна дозволяти відстежувати всі взаємодії з клієнтами, такі як
дзвінки, зустрічі, електронні листи та інше;
система повинна автоматично створювати рахунки-фактури на основі даних
про виконані роботи та витрати;
система повинна підтримувати реєстрацію та обробку отриманих платежів від
клієнтів;
система повинна надавати можливість генерувати фінансові звіти, такі як
звіти про доходи та витрати, балансові звіти та звіти про грошові потоки;
система повинна забезпечувати запис усіх фінансових транзакцій для
забезпечення точного обліку;
система повинна надавати інструменти для аналізу даних, включаючи
створення різноманітних звітів за періодами, проектами, клієнтами та іншим
параметрам;
система повинна підтримувати експорт звітів у різні формати, такі як PDF,
Excel тощо;
система повинна підтримувати інтеграцію з зовнішніми системами, такими як
платіжні шлюзи, системи обліку часу та інші;
Швидкість відповіді. Система повинна забезпечувати швидкий час відповіді на
запити користувачів.
Обробка великої кількості даних. Система повинна бути здатною обробляти
велику кількість записів без втрати продуктивності.
Контроль доступу. Система повинна мати механізми для контролю доступу
користувачів до різних функцій та даних.
Захист даних. Система повинна забезпечувати захист конфіденційних даних від
несанкціонованого доступу.
Горизонтальне масштабування. Система повинна підтримувати можливість
додавання нових серверів для обробки зростаючого навантаження.
Нефункціональні вимоги
Модульна архітектура. Система повинна мати модульну архітектуру, що
дозволяє додавати нові функції без значних змін існуючого коду.
Надійність. Система повинна мати механізми для відновлення після збоїв з
мінімальною втратою даних.
Безперервна робота. Система повинна забезпечувати безперервну роботу без
частих збоїв або простоїв.
Інтуїтивний інтерфейс. Система повинна мати інтуїтивно зрозумілий
інтерфейс, що забезпечує легкість використання.
Документація. Система повинна мати детальну документацію для користувачів
та адміністраторів.
2.2.2. Формування вимог за допомогою діаграми прецедентів
Сформовані вимоги наводяться нижче.
Записати час та витрати. Користувач записує час, витрачений на виконання
завдань або проектів, та реєструє пов'язані з ними витрати.
Відстежувати відвідуваність. Користувач відстежує присутність
співробітників, контролюючи їхню відвідуваність.
Обробляти зарплату. Користувач здійснює нарахування та виплату заробітної
плати співробітникам.
Управляти клієнтами. Користувач керує інформацією про клієнтів, включаючи
контактні дані та історію співпраці.
Відстежувати взаємодії. Користувач відстежує всі взаємодії з клієнтами для
покращення відносин та обслуговування.
Створити рахунок. Користувач створює рахунки-фактури для клієнтів за надані
товари або послуги.
Обробити платіж. Користувач обробляє отримані платежі від клієнтів.
Створити замовлення. Користувач створює замовлення на закупівлю товарів
або послуг.
Управляти постачальниками. Користувач керує інформацією про
постачальників та взаємодією з ними.
Відстежувати запаси. Користувач відстежує рівень запасів товарів на складі.
Оновлювати інвентар. Користувач оновлює інформацію про наявний інвентар
та його стан.
Створити фінансові звіти. Користувач створює різні фінансові звіти для аналізу
та звітності.
Записувати транзакції. Користувач записує фінансові транзакції, забезпечуючи
точність бухгалтерського обліку.
Рисунок 2.2 - Діаграма прецедентів для бухгалтерського обліку організації
2.3. Проектування логічної структури програмного комплексу
При створенні логічної структури нашої розробки ми використали діаграму
класів [11] для візуального представлення основних функціональних модулів програми
(рисунок 2.3).
2.3.1. Діаграми класів
Клас Користувач
username: ім'я користувача;
password: пароль користувача;
login: метод для входу в систему;
logout: метод для виходу з системи.
Клас ОблікЧасуТаВитрат
час: дата і час виконання роботи;
витрати: витрати, пов'язані з роботою;
записатиЧас: метод для запису часу;
записатиВитрати: метод для запису витрат.
Клас Управління Персоналом
співробітники: список співробітників;
відстежуватиВідвідуваність: метод для відстеження відвідуваності
співробітників;
оброблятиЗарплату: Метод для обробки зарплат.
Клас CRM
клієнти: список клієнтів;
управлятиКлієнтом: Метод для управління клієнтами;
відстежуватиВзаємодії: Метод для відстеження взаємодій з клієнтами.
Клас ВиставленняРахунків
рахунки: список рахунків;
створитиРахунок: метод для створення рахунків;
обробитиПлатіж: метод для обробки платежів.
Клас Закупівлі
замовлення: список замовлень;
постачальники: список постачальників;
створитиЗамовлення: метод для створення замовлень;
управлятиПостачальниками: метод для управління постачальниками.
Клас Інвентаризація
запаси: список запасів;
відстежуватиЗапаси: метод для відстеження запасів;
оновлюватиІнвентар: метод для оновлення інформації про інвентар.
Клас Бухгалтерія
транзакції: список транзакцій;
фінансовіЗвіти: список фінансових звітів;
створитиФінансовіЗвіти: метод для створення фінансових звітів;
записуватиТранзакції: метод для запису фінансових транзакцій.
Рисунок 2.3 - Діаграма класів для бухгалтерського обліку організації
2.3.2. Діаграми пакетів
На рисунку 2.4 наведена діаграми пакетів [12], яка на високому рівні показує
структуру проекта, який обговорили з клієнтом.
Рисунок 2.4 - Діаграма пакетів для бухгалтерського обліку організації
2.4. Архітектурне проектування
Для логічного представлення і аналізу структури системи і відношень між її
елементами була використана діаграма компонентів [13] (Рисунок 2.5). Дана логічна
архітектура описує систему в термінах її принципової організації у вигляді пакетів,
програмних класів і підсистем на найвищому рівні. Етап архітектурного проектування
програми відображений шляхом опису переліку підсистем та їх зв’язків в процесі
об’єктно-орієнтованої декомпозиції системи.
2.4.1. Діаграма компонентів
Через діаграму компонентів показано визначення, внутрішню структуру і
залежності набору компонентів - елементів моделі, що представляють одну з
модульних автономних частин системи з інкапсульованим вмістом.
Внутрішні частини компонентів приховані і недоступні ззовні, окрім тих, які
надаються за допомогою його інтерфейсів. Компоненти пов’язані між собою за
допомогою визначених відношень таким чином, щоб їх можна було розглядати
незалежно від їхнього оточення.
PlantUML код діаграми:
package "ERPMine System" {
[Сервер AWS ECS] as server
[База даних RDS Postgres] as database
[Фреймворк Ruby On Rails] as framework
component "Плагін WorkTime" as worktime
component "Плагін ERPMine" as erpmine
server --> framework
framework --> database
framework --> worktime
framework --> erpmine
}
Рисунок 2.5 - Високорівнева діаграма компонентів програми для
бухгалтерського обліку організації
2.4.2. Розгортання програмної системи на апаратних засобах. Діаграма
розгортання
Розгортання програмної системи на апаратних засобах.
Апаратні засоби, на яких проводилося розгортання програмної системи
включають: веб-сервер, сервер додатків, сервер бази даних та сервер файлів,
забезпечуючи надійну та масштабовану інфраструктуру для виконання всіх бізнес-
процесів. Для розгортання програми вирішено використовувати сервери Amazon Web
Services [15] через їхню надійність та доступність.
Діаграма розгортання. Діаграма розгортання [14] демонструє фізичну
архітектуру системи, показуючи, як різні компоненти взаємодіють між собою
для забезпечення функціонування системи (рисунок 2.6).
@startuml
node "Користувач" {
[Веб-браузер]
}
node "Сервер ERPMine" {
[Веб-сервер (Nginx)]
[Сервер додатків (Ruby on Rails)]
[ERPMine (Програмний додаток)]
}
node "База даних" {
[Сервер бази даних (PostgreSQL)]
}
node "Сервер сховища" {
[Сервер файлів (S3)]
}
"Веб-браузер" --> "Веб-сервер (Nginx)" : HTTP(S) запити
"Веб-сервер (Nginx)" --> "Сервер додатків (Ruby on Rails)" : Запити до
додатку
"Сервер додатків (Ruby on Rails)" --> "Сервер бази даних (PostgreSQL)" :
SQL запити
"Сервер додатків (Ruby on Rails)" --> "Сервер файлів (S3)" :
Збереження/Отримання файлів
@enduml
Рисунок 2.6 - Діаграма розгортання системи на апаратних засобах
2.5. Моделювання поведінки системи
Ми використали діаграми діяльності, діаграми взаємодії та діаграми кінцевого
автомата для детального опису роботи системи. Таким чином, ми створили модель
поведінки, яка показує поведінку системи через множину об'єктів, що обмінюються
повідомленнями.
Взаємодія декількох програмних об'єктів між собою була описана за допомогою
діаграм діяльності, послідовності, комунікації та скінченного автомату.
2.5.1. Діаграма діяльності
Процес "Управління працівниками та фінансовими операціями" включає
додавання працівників до системи, перевірку їх даних через звіт по відвідуваності,
генерацію зарплатного листа та створення інвойсу. Цей сценарій забезпечує повний
цикл управління персоналом та фінансовими операціями, що допомагає підтримувати
точність і ефективність бізнес-процесів у системі.
Рисунок 2.7 - Діаграма діяльності сценарію управління працівниками та
фінансовими операціями
2.5.2. Діаграма послідовності
Подана діаграма послідовності [16] описує процес управління працівниками та
фінансовими операціями в системі (рисунок 2.8). Вона показує взаємодію між
користувачем та різними компонентами системи, такими як веб-браузер, контролери
та моделі. Нижче наведено детальний опис кожного кроку процесу.
Введення даних працівників:
– Користувач вводить дані працівників через веб-браузер.
– Веб-браузер надсилає запит до "КонтролераПрацівників" для створення
нового запису.
– "КонтролерПрацівників" викликає метод збереження у моделі "Працівник".
– Після збереження даних модель "Працівник" надсилає підтвердження назад
до "КонтролераПрацівників"
Перевірка даних через звіт по відвідуваності:
– Користувач ініціює перевірку даних працівників через веб-браузер,
запитуючи звіт по відвідуваності.
– Веб-браузер надсилає запит до "КонтролераЗвітів" для генерації звіту по
відвідуваності.
– "КонтролерЗвітів" запитує дані у моделі "ЗвітПоВідвідуваності".
– Модель "ЗвітПоВідвідуваності" повертає дані до "КонтролераЗвітів".
– "КонтролерЗвітів" відправляє згенерований звіт до веб-браузера для
відображення користувачу.
Генерація зарплатного листа:
– Користувач ініціює процес генерації зарплатного листа через веб-браузер.
– Веб-браузер надсилає запит до "КонтролераЗарплат" для генерації
зарплатного листа.
– "КонтролерЗарплат" викликає метод розрахунку у моделі "Зарплата".
– Модель "Зарплата" повертає розраховані дані до "КонтролераЗарплат".
– "КонтролерЗарплат" відправляє згенерований зарплатний лист до веб-
браузера для відображення користувачу.
Створення інвойсу:
користувач ініціює створення інвойсу через веб-браузер;
веб-браузер надсилає запит до "контролераінвойсів" для створення нового
інвойсу;
"контролерінвойсів" викликає метод збереження у моделі "інвойс";
після збереження даних модель "інвойс" надсилає підтвердження назад до
"контролераінвойсів";
"контролерінвойсів" відправляє згенерований інвойс до веб-браузера для
відображення користувачу.
Ця діаграма послідовності наочно демонструє, як користувач взаємодіє з різними
компонентами системи для виконання основних бізнес-процесів. Зокрема, вона
ілюструє наступне:
Послідовність дій. Діаграма показує чітку послідовність дій, які виконуються
користувачем та обробляються системою для введення, перевірки, генерації
та збереження даних.
Взаємодія компонентів. Діаграма підкреслює взаємодію між веб-браузером,
контролерами та моделями, що відповідають за різні аспекти управління
працівниками та фінансовими операціями.
Підтвердження дій. Кожен крок процесу завершується підтвердженням
успішного виконання дії, що забезпечує точність та надійність операцій у
системі.
Структурованість системи. Діаграма демонструє структурованість системи,
де кожен компонент має чітко визначені функції та відповідальності.
Ця діаграма допомагає зрозуміти, як різні частини системи працюють разом
для забезпечення ефективного управління даними працівників та
фінансовими транзакціями.
@startuml
actor "Користувач"
"Користувач" -> "Веб-браузер" : Введення даних працівників
"Веб-браузер" -> "КонтролерПрацівників" : створити
"КонтролерПрацівників" -> "Працівник" : зберегти
"Працівник" --> "КонтролерПрацівників" : підтвердження
"Користувач" -> "Веб-браузер" : Перевірка даних через звіт по
відвідуваності
"Веб-браузер" -> "КонтролерЗвітів" : згенеруватиЗвітПоВідвідуваності
"КонтролерЗвітів" -> "ЗвітПоВідвідуваності" : отриматиДані
"ЗвітПоВідвідуваності" --> "КонтролерЗвітів" : дані
"КонтролерЗвітів" --> "Веб-браузер" : показатиЗвіт
"Користувач" -> "Веб-браузер" : Генерація зарплатного листа
"Веб-браузер" -> "КонтролерЗарплат" : згенеруватиЗарплатнийЛист
"КонтролерЗарплат" -> "Зарплата" : розрахувати
"Зарплата" --> "КонтролерЗарплат" : розрахованіДані
"КонтролерЗарплат" --> "Веб-браузер" : показатиЗарплатнийЛист
"Користувач" -> "Веб-браузер" : Створення інвойсу
"Веб-браузер" -> "КонтролерІнвойсів" : створити
"КонтролерІнвойсів" -> "Інвойс" : зберегти
"Інвойс" --> "КонтролерІнвойсів" : підтвердження
"КонтролерІнвойсів" --> "Веб-браузер" : показатиІнвойс
@enduml
Рисунок 2.8 - діаграма послідовності сценаріїв основних бухгалтерських операцій
2.5.3. Діаграма комунікації
Ця діаграма комунікації [17] для програми на основі системи ERPMine
демонструє взаємодію між різними компонентами системи для виконання основних
бізнес-завдань (рисунок 2.9). Вона відображає взаємодію користувача з системою
через веб-браузер і подальшу обробку запитів на сервері, включаючи взаємодію з
контролерами і базою даних.
Елементи діаграми
Користувач (User): взаємодіє із системою через веб-браузер для виконання
основних дій, таких як введення даних, генерація звітів, зарплатних листів та інвойсів.
Веб-браузер [18] (WebBrowser): посередник між користувачем і сервером, що
відправляє запити до сервера і отримує відповіді для відображення користувачеві.
Сервер (Server): Обробляє всі запити, отримані від веб-браузера, передає їх
відповідним контролерам, обробляє відповіді від контролерів і повертає результати до
веб-браузера.
Контролери:
контролер працівників (EmployeesController): обробляє запити щодо
управління працівниками, зберігаючи дані працівників у базі даних і
надсилаючи підтвердження до сервера.
контролер зарплат (PayrollsController): обробляє запити щодо розрахунку та
генерації зарплатних листів, отримуючи необхідні дані з бази даних і
відправляючи результати до сервера.
контролер інвойсів (InvoicesController): обробляє запити щодо створення
інвойсів, зберігаючи інвойси у базі даних і відправляючи підтвердження до
сервера.
контролер бази даних (Database): Зберігає та повертає дані, які
використовуються системою для виконання запитів, таких як дані
працівників, звіти, зарплатні дані та інвойси.
Взаємодії
Введення даних працівників:
користувач через веб-браузер відправляє запит на сервер для введення даних
працівників;
сервер передає запит до контролера працівників;
контролер працівників зберігає дані працівника у базі даних і відправляє
підтвердження назад на сервер;
генерація звіту:
користувач через веб-браузер відправляє запит на сервер для генерації звіту;
сервер передає запит до контролера зарплат;
контролер зарплат отримує дані звіту з бази даних і відправляє результати на
сервер;
сервер повертає згенерований звіт до веб-браузера для відображення
користувачеві.
Генерація зарплатного листа:
користувач через веб-браузер відправляє запит на сервер для генерації
зарплатного листа;
сервер передає запит до контролера зарплат;
контролер зарплат розраховує зарплату на основі даних з бази даних і
відправляє результати на сервер;
сервер повертає згенерований зарплатний лист до веб-браузера для
відображення користувачеві;
Cтворення інвойсу:
користувач через веб-браузер відправляє запит на сервер для створення
інвойсу;
сервер передає запит до контролера інвойсів;
контролер інвойсів зберігає інвойс у базі даних і відправляє підтвердження на
сервер;
сервер повертає згенерований інвойс до веб-браузера для відображення
користувачеві.
Ця діаграма комунікації наочно демонструє взаємодію між різними
компонентами системи. Вона показує, як сервер отримує запити від веб-браузера,
передає їх відповідним контролерам, обробляє відповіді від контролерів і повертає
результати до веб-браузера. Діаграма допомагає зрозуміти архітектуру системи та
взаємодію між її компонентами для виконання основних бізнес-завдань.
Представлення опису діаграми мовою PlantUML:
@startuml
skinparam linestyle ortho
actor "Користувач" as User
rectangle "Веб-браузер" as WebBrowser
rectangle "Сервер" as Server
rectangle "КонтролерПрацівників" as EmployeesController
rectangle "КонтролерЗарплат" as PayrollsController
rectangle "КонтролерІнвойсів" as InvoicesController
rectangle "База даних" as Database
User -right-> WebBrowser
Server -right-> EmployeesController : create()
EmployeesController -right-> Database : зберегти дані працівника
Database -up-> EmployeesController : підтвердження
WebBrowser -right-> Server : Обробка запиту
Server -down-> PayrollsController : generateReport()
PayrollsController -right-> Database : отримати дані звіту
Server -left-> WebBrowser : показати звіт
Server -down-> PayrollsController : generatePayroll()
PayrollsController -right-> Database : розрахувати зарплату
Database -up-> PayrollsController : розраховані дані
Server -down-> InvoicesController : createInvoice()
InvoicesController -down-> Database : зберегти інвойс
Database -up-> InvoicesController : підтвердження
@enduml
Рисунок 2.9 - Діаграма комунікації елементів системи для бухгалтерського
обліку організації
2.5.4. Діаграма скінченного автомату
Діаграми скінченних автоматів [19] є важливим інструментом для моделювання
поведінки системи на основі станів об'єктів та переходів між ними. Вони дозволяють
зрозуміти, як об'єкти в системі змінюють свої стани у відповідь на різні події та дії.
На рисунку 2.9 наведено опис діаграми скінченного автомату для станів об'єкту
класу Запис Часу (Time Entry).
Початковий стан (Start State): Початкова точка, яка вказує на створення нового
запису часу.
Стани (States):
– НовийЗапис (New Entry): Запис часу створено бухгалтером і очікує на
подальші дії.
– Перевірка (Review): Запис часу надіслано на перевірку бухгалтером для
валідації.
– Змінено (Modified): Запис часу відредаговано бухгалтером після запиту на
зміну.
– Підтверджено (Approved): Запис часу затверджено після успішної перевірки.
– Переходи (Transitions): введення бухгалтером (entered by accountant): Запис
часу вводиться бухгалтером і переходить до стану "НовийЗапис".
– Надіслано на перевірку (sent for review): Запис часу переходить зі стану
"НовийЗапис" до стану "Перевірка".
– Перевірка бухгалтером (reviewed by accountant): Запис часу знаходиться у стані
перевірки.
– Запит на зміну (change requested): Якщо під час перевірки виявлено помилки
або невідповідності, запис часу переходить до стану "Змінено".
– Зміна значень бухгалтером (modified by accountant): Бухгалтер вносить зміни
до запису часу і знову надсилає його на перевірку.
– Повторно надіслано на перевірку (resent for review): Запис часу після змін знову
переходить до стану "Перевірка".
– Затверджено (approved): Якщо запис часу успішно проходить перевірку, він
переходить до стану "Підтверджено".
Кінцевий стан (End State): Кінцева точка, яка вказує на завершення процесу
обробки запису часу після його затвердження.
Отже, можна зробити висновок, що ця діаграма кінцевого автомата відображає
життєвий цикл запису часу в системі, починаючи від його створення бухгалтером до
затвердження після перевірки. Діаграма ілюструє різні стани, через які проходить
запис часу, а також можливі дії та переходи між цими станами. Це корисно для
розробників, тестувальників та аналітиків для моделювання процесів обробки записів
часу в системі.
Рисунок 2.9 - Діаграма станів об'єкту класу Запис Часу (Time Entry)
Висновки до розділу
У цьому розділі було розглянуто ключові аспекти впровадження результатів
досліджень у практику проектування програмного забезпечення інформаційних
систем. На основі аналізу та узагальнення досліджень були запропоновані методи та
підходи, що сприяють підвищенню ефективності та якості розробки інформаційних
систем.
Важливим результатом є впровадження гнучкої методології розробки, які
дозволяють швидко адаптуватися до змін вимог і забезпечують тісну взаємодію з
користувачами. Також було акцентовано увагу на важливості використання сучасних
хмарних технологій і сервісів, що дозволяють забезпечити масштабованість і
надійність інформаційних систем. Висвітлено значення інтеграції інструментів
контролю версій, таких як Git [20], для управління кодом та координації командної
роботи.
Загалом, впровадження наукових досліджень у практику проектування
інформаційних систем сприяло створенню більш ефективних, надійних та гнучких
рішень, що відповідають сучасним вимогам і тенденціям у галузі розробки
програмного забезпечення.
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
Процес розробки програмного забезпечення побудований з використанням
технологій гнучкого програмування, хмарних технологій, технологій розробки web-
сервісів.
3.1. Розробка програмного комплексу
При розробці програмного комплексу використовували наступні сервіси та
інструменти:
Docker [21] для контейнеризації
Git для контролю версій
Postgres [22] для роботи з базою даних
Redmine [23] для базового функціоналу користувачів
ERPMine [24] для базового бухгалтерського функціоналу
Ruby on Rails [25] для спрощення роботи серверного коду
3.1.1. Обґрунтування вибору засобів реалізації
Docker для контейнеризації. Docker дозволяє створювати ізольовані
середовища для розробки, тестування та продакшн-версій програмного забезпечення,
що забезпечує стабільність і передбачуваність роботи. Контейнери Docker можуть
бути легко перенесені між різними середовищами, що спрощує процес розгортання та
підтримки додатку. Використання Docker скорочує час на розгортання та
конфігурацію середовищ, що значно прискорює процес розробки.
Git для контролю версій. Git забезпечує зручний і потужний механізм для
відстеження змін у коді, що дозволяє керувати різними версіями програмного
забезпечення. Git спрощує співпрацю між розробниками, дозволяючи працювати над
різними частинами проекту одночасно без конфліктів. Git дозволяє легко створювати
резервні копії коду та відновлювати попередні версії у випадку помилок.
Postgres для роботи з базою даних. Postgres (PostgreSQL) є потужною та
надійною СКБД, яка забезпечує високу продуктивність при роботі з великими
обсягами даних. Postgres підтримує горизонтальне масштабування, що дозволяє
збільшувати продуктивність системи при зростанні навантаження. Postgres надає
розширені механізми безпеки та контролю доступу до даних, що є критично важливим
для бізнес-додатків.
Redmine для базового функціоналу. Redmine забезпечує всі необхідні
інструменти для управління проектами, включаючи відстеження завдань, управління
часом та ресурсами. Redmine дозволяє легко налаштовувати інтерфейси та функціонал
під конкретні потреби проекту. Redmine підтримує інтеграцію з іншими системами та
інструментами, що спрощує його використання у складі комплексних рішень.
ERPMine для базового бухгалтерського функціоналу. ERPMine надає всі
необхідні інструменти для управління бухгалтерією, включаючи облік доходів та
витрат, ведення фінансових звітів та аналіз фінансових показників. Використання
ERPMine у поєднанні з Redmine забезпечує комплексне рішення для управління
проектами та фінансами.
Ruby on Rails для спрощення роботи серверного коду. Ruby on Rails є
високопродуктивним фреймворком, який забезпечує швидку розробку та розгортання
веб-додатків завдяки своїй простоті та зручності. Rails має велику кількість готових
бібліотек та модулів, що дозволяє швидко реалізувати необхідний функціонал без
розробки з нуля.
Ruby on Rails має велику та активну спільноту розробників, що забезпечує
постійну підтримку та розвиток фреймворка.
Вибір вищезгаданих технологій для розробки був здійснений з метою оптимізації
процесу розробки, підвищення продуктивності та забезпечення надійності системи.
Використання Docker, Git, Postgres, Redmine, ERPMine та Ruby on Rails дозволяє
створити масштабоване, надійне та продуктивне рішення, яке відповідає сучасним
вимогам бізнесу.
3.1.2. Опис структурної (функціональної) схеми
Структурна схема відображає основні компоненти програмної системи, їх
функції та взаємозв'язки між ними. Вона дозволяє зрозуміти, як різні частини системи
взаємодіють для забезпечення її функціонування та досягнення цілей.
Структурна схема відображає основні компоненти системи бухгалтерського
обліку, їх функціональні частини та взаємозв'язки між ними. Ця діаграма допомагає
зрозуміти, як різні частини системи взаємодіють для забезпечення її ефективного
функціонування та досягнення цілей.
Діаграма наочно відображає основні функціональні компоненти системи та їх
взаємозв'язки. Вона показує, як різні підсистеми взаємодіють для забезпечення
ефективного управління обліком часу, витрат, персоналом, взаєминами з клієнтами,
виставленням рахунків, бухгалтерським обліком та генерацією звітів. Це допомагає
зрозуміти, як кожна підсистема сприяє досягненню загальних цілей системи і як вони
взаємодіють для забезпечення цілісного функціонування ERPMine (рисунок 3.1).
Рисунок 3.1 – Діаграма структурної схеми системи
Рисунок 3.2 – Діаграма функціональної схеми системи
3.1.3. Опис логічної схеми системи
Логічна схема системи ERPMine забезпечує цілісність і узгодженість даних між
різними модулями, що дозволяє ефективно управляти всіма аспектами бізнес-процесів
у організації. Кожен модуль системи інтегрований з іншими, що забезпечує
безперебійну передачу даних і узгодженість інформації. Наприклад, дані, введені
користувачами в модулі обліку часу та витрат, автоматично оновлюються в модулях
управління персоналом і бухгалтерії, що дозволяє забезпечити точність обліку і
уникнути дублювання даних. Модуль CRM інтегрується з модулями виставлення
рахунків і управління персоналом, забезпечуючи повний контроль над взаємодіями з
клієнтами і відповідними фінансовими операціями.
Крім того, інтеграція модулів закупівель та інвентаризації дозволяє оптимізувати
управління запасами і постачаннями, забезпечуючи своєчасне оновлення інформації
про наявні ресурси. Модуль бухгалтерії збирає дані з усіх інших модулів для створення
комплексних фінансових звітів, що відображають повний фінансовий стан організації.
Це дозволяє керівникам організації приймати обґрунтовані рішення на основі
актуальних та точних даних.
Завдяки своїй гнучкій і масштабованій архітектурі, створена система може бути
легко адаптований до потреб різних організацій незалежно від їхнього розміру і галузі
діяльності. Інтеграція з зовнішніми системами, такими як платіжні шлюзи і системи
обліку часу, додатково розширює функціональні можливості системи, дозволяючи
ефективно управляти всіма аспектами діяльності підприємства в єдиному
програмному середовищі.
Рисунок 3.3 – Діаграма логічної схеми системи для бухгалтерського обліку
організації
3.1.4. Розробка бази даних
База даних має кілька основних таблиць, кожна з яких відповідає певному
аспекту управління проектами та фінансами. Нижче наведено опис структур таблиць
TimeEntry, TimeEntryLeave, WkUserLeave, WkInvoice, WkPayroll, WkReport, що є
елементами ActiveRecord.
Таблиця TimeEntry. TimeEntry використовується для зберігання інформації про
витрачений час на виконання завдань.
id: унікальний ідентифікатор запису (PRIMARY KEY)
user_id: ідентифікатор користувача (FOREIGN KEY)
project_id: ідентифікатор проекту (FOREIGN KEY)
issue_id: ідентифікатор задачі (може бути NULL) (FOREIGN KEY)
hours: кількість відпрацьованих годин
activity_id: ідентифікатор виду діяльності (FOREIGN KEY)
comments: коментарі щодо виконаної роботи
spent_on: дата, коли була виконана робота
created_on: дата створення запису
updated_on: дата останнього оновлення запису
Таблиця TimeEntryLeave. TimeEntryLeave зберігає інформацію про залишкові
записи часу.
id: унікальний ідентифікатор запису (PRIMARY KEY)
time_entry_id: ідентифікатор запису часу (FOREIGN KEY)
leave_type: тип відпустки (відгулу, лікарняний тощо)
start_date: дата початку
end_date: дата завершення
created_on: дата створення запису
updated_on: дата останнього оновлення запису
Таблиця WkUserLeave. WkUserLeave використовується для зберігання
інформації про відпустки користувачів.
Таблиця WkInvoice. WkInvoice зберігає інформацію про рахунки-фактури.
id: унікальний ідентифікатор запису (PRIMARY KEY)
user_id: ідентифікатор користувача (FOREIGN KEY)
leave_type: тип відпустки (відпустка, лікарняний тощо)
start_date: дата початку відпустки
end_date: дата завершення відпустки
status: статус відпустки (заплановано, затверджено, відхилено)
created_on: дата створення запису
updated_on: дата останнього оновлення запису
Таблиця WkPayroll. WkPayroll використовується для зберігання інформації про
заробітну плату.
id: унікальний ідентифікатор запису (PRIMARY KEY);
user_id: ідентифікатор користувача (FOREIGN KEY);
pay_period: період виплати (місяць, тиждень);
gross_amount: валова сума виплати;
taxes: податки, утримані з виплати;
net_amount: чиста сума виплати;
status: статус виплати (заплановано, виплачено);
created_on: дата створення запису;
updated_on: дата останнього оновлення запису.
Таблиця WkReport. WkReport зберігає інформацію про звіти:
id: унікальний ідентифікатор запису (PRIMARY KEY);
user_id: ідентифікатор користувача (FOREIGN KEY);
report_type: тип звіту (фінансовий, часовий тощо);
report_period: період, за який складається звіт;
created_on: дата створення запису;
updated_on: дата останнього оновлення запису.
Ці таблиці та їх взаємозв'язки забезпечують зберігання та обробку інформації,
необхідної для управління часом, відпустками, рахунками-фактурами, заробітною
платою та звітами в системі.
3.1.5. Розробка інтерфейсу користувача
При проектуванні, були передбачені вимоги користувачів, які могли виникнути
на перших етапах використання інформаційної системи. Основні екрани інтерфейсу:
Time & Expense. Сторінка "Time & Expense" призначена для управління часом
та витратами, пов'язаними з проектами. Вона дозволяє користувачам реєструвати
відпрацьовані години та витрати. Основні компоненти включають форму для введення
часу, де користувачі можуть обирати проект, задачу, дату, кількість годин та додавати
коментарі. Також є форма для введення витрат з полями для вибору проекту, типу
витрат, дати, суми та коментаря. Звіти на цій сторінці дозволяють генерувати дані про
витрачений час та витрати за обраний період. Сценарії використання включають
введення даних про витрачений час, реєстрацію витрат та генерацію звітів для аналізу.
Рисунок 3.5 - Інтерфейс сторінки управління часом та витратами
Рисунок 3.4 - Інтерфейс сторінки створення нового логу даних
HR (Human Resources). Сторінка "HR" призначена для управління персоналом,
відстеження відвідуваності та обробки зарплат. Основні компоненти включають
таблицю з даними про відвідуваність співробітників, інтерфейс для нарахування
зарплат та можливість перегляду деталей виплат, а також інструмент для управління
заявками на відпустку та лікарняні. Сценарії використання цієї сторінки охоплюють
відстеження присутності співробітників, обробку та виплату зарплат, а також
управління відпустками та лікарняними.
Рисунок 3.6 – Інтерфейс сторінки для управління персоналом
Рисунок 3.7 - Інтерфейс сторінки створення нового запису відгулу
Payroll. Сторінка "Payroll" призначена для управління процесом виплати
заробітної плати співробітникам. Вона дозволяє адміністраторам та менеджерам
зручно обробляти та управляти виплатами, утриманнями та іншими аспектами,
пов'язаними з зарплатою.
Основні компоненти:
Список нарахувань (Payroll List) містить таблицю з основною інформацією про
всі нарахування заробітної плати за вибраний період. Вона включає такі поля, як ім'я
співробітника, період виплати, валова сума, утримання та чиста сума. Інструменти
фільтрації та пошуку дозволяють відфільтрувати записи за різними критеріями, такими
як період виплати, статус виплати, відділ тощо.
Форма для додавання нового нарахування (Add Payroll) включає поля для
введення або вибору імені співробітника, ідентифікаційного номера та посади. Вона
також містить поля для введення валової суми, утримань (податки, страхові внески
тощо) та чистої суми виплати, а також поля для вибору або введення початкової та
кінцевої дати періоду виплати.
Деталі виплати (Payroll Details) включають інформацію про співробітника,
зокрема особисті дані та історію попередніх виплат. Вони також містять детальний
перегляд інформації про конкретне нарахування, включаючи валову суму, утримання
та чисту суму. Є можливість завантаження та перегляду квитанцій про виплату.
Параметри обробки виплат (Payroll Processing Settings) дозволяють
налаштувати відсоткові ставки податків, страхових внесків та інших утримань, що
застосовуються до виплат. Налаштування також включають періодичність виплат
(щомісячно, щотижнево тощо).
Звіти по зарплаті (Payroll Reports) забезпечують генерацію звітів про
нарахування заробітної плати за обрані періоди. Вони включають деталі по
співробітниках, податках та інших утриманнях. Є можливість експорту звітів у різні
формати, такі як PDF, Excel тощо.
Сценарії використання. Адміністратори використовують цю сторінку для
нарахування заробітної плати співробітникам, обліку утримань та генерації квитанцій.
Перегляд та коригування виплат: Менеджери можуть переглядати історію виплат,
вносити необхідні коригування та переглядати деталі кожного нарахування. Керівники
та фінансові аналітики використовують звіти для аналізу витрат на заробітну плату,
податкового навантаження та інших фінансових показників.
Сторінка "Payroll" забезпечує можливість управління виплатами заробітної
плати, включаючи введення даних, обробку, налаштування утримань та генерацію
звітів. Це дозволяє ефективно управляти всіма аспектами, пов'язаними з виплатами
заробітної плати, забезпечуючи прозорість та точність процесу (рисунок 3.7)
Рисунок 3.8 - Інтерфейс сторінки управління виплатами заробітної плати
CRM (Customer Relationship Management). Сторінка "CRM" використовується
для управління взаєминами з клієнтами, відстеження взаємодій та зберігання
інформації про клієнтів. Основні компоненти включають список клієнтів з основною
інформацією, розширену інформацію про кожного клієнта, включаючи історію
взаємодій, а також форму для додавання нових записів про взаємодії з клієнтами.
Сценарії використання включають управління базою даних клієнтів, відстеження
історії взаємодій та додавання нових контактів.
Рисунок 3.9 - Інтерфейс сторінки управління взаєминами з клієнтами
Billing. Сторінка "Billing" призначена для управління рахунками-фактурами та
обробки платежів. Вона включає список рахунків з їх статусами, інтерфейс для
обробки отриманих платежів, а також інструменти для генерації фінансових звітів.
Сценарії використання цієї сторінки охоплюють створення та управління рахунками-
фактурами, обробку платежів від клієнтів та генерацію фінансових звітів.
Рисунок 3.10 - Інтерфейс сторінки управління рахунками-фактурами
Рисунок 3.11 - Інтерфейс сторінки редактування інвойсу
Reports. Сторінка "Reports" призначена для генерації різних типів звітів на
основі даних, що зберігаються в системі. Основні компоненти включають інтерфейс
для вибору типу звіту, налаштування параметрів звіту, таких як період та фільтри, а
також кнопку для генерації та перегляду звіту. Сценарії використання включають
генерацію звітів для аналізу різних аспектів діяльності компанії, налаштування
параметрів звітів для отримання конкретних даних та перегляд і експорт створених
звітів.
Рисунок 3.12 – Інтерфейс сторінки “Звіти”
Основні доступні звіти:
Attendance report. Звіт про відвідування є важливим інструментом для
управління персоналом, який дозволяє відстежувати присутність та відсутність
співробітників на робочому місці. Він надає докладну інформацію про кожного
працівника, включаючи дати, часи входу та виходу, а також причини відсутності, якщо
такі є. Цей звіт допомагає керівникам ефективно планувати робочі зміни,
контролювати робочий час і забезпечувати дотримання трудового законодавства.
Рисунок 3.13 - Приклад звіту про відвідування
Headcount report. Звіт про чисельність персоналу є важливим інструментом для
управління людськими ресурсами в організації. Цей звіт надає керівникам детальну
інформацію про кількість співробітників у різних підрозділах, зміни в чисельності
персоналу за певний період, а також аналізує тенденції в прийомі та звільненні
працівників. Такий звіт допомагає приймати обґрунтовані рішення щодо планування
робочої сили, визначення потреб у нових кадрах та оптимізації структури організації.
Звіт також дозволяє виявляти та аналізувати проблемні області, такі як
підрозділи з високим рівнем текучості кадрів, що може вказувати на необхідність
поліпшення умов праці або процесів управління.
Окрім цього, звіт про чисельність персоналу може слугувати основою для
розробки стратегій розвитку та навчання персоналу, що в довгостроковій перспективі
підвищує ефективність роботи організації.
Рисунок 3.14 – Приклад звіту про чисельність персоналу
Payroll Bank report. Банківський звіт по заробітній платі
Рисунок 3.15 - Приклад звіту “Банківський звіт по заробітній платі”
Settings. Сторінка "Settings" використовується для налаштування системи та
управління параметрами роботи додатку. Основні компоненти включають загальні
налаштування системи, управління обліковими записами користувачів та їх правами
доступу, а також конфігурацію та налаштування різних модулів системи. Сценарії
використання цієї сторінки охоплюють налаштування основних параметрів роботи
системи, управління обліковими записами та правами доступу користувачів, а також
конфігурацію модулів для оптимальної роботи системи.
Рисунок 3.16 – Інтерфейс сторінки управління параметрами роботи додатку
3.1.6. Опис розробки програмних компонентів
Призначення модуля звітів. Модуль звітів у ERPMine призначений для
генерації та управління різними видами звітів, які забезпечують огляд та аналіз даних,
пов'язаних з проектами, витратами, обліком часу, фінансами та персоналом. Основна
функція цього модуля — надавати користувачам інструменти для створення детальних
звітів, що допомагають у прийнятті рішень та стратегічному плануванні. Звіти можуть
бути налаштовані відповідно до потреб користувача, що дозволяє отримувати
конкретну інформацію про певні аспекти діяльності компанії.
Зв’язки з іншими компонентами. Модуль звітів інтегрований з іншими
компонентами ERPMine, такими як облік часу та витрат, управління персоналом,
фінансовий облік та управління взаєминами з клієнтами (CRM). Це забезпечує доступ
до різноманітних даних з усіх підсистем, що дозволяє створювати комплексні звіти.
Наприклад, звіти по заробітній платі можуть включати дані з модулів обліку часу та
HR, а фінансові звіти можуть об'єднувати інформацію з обліку витрат та доходів.
Особливості реалізації алгоритму. Реалізація алгоритму модуля звітів
базується на використанні технологій веб-розробки, таких як Ruby on Rails.
Використання ActiveRecord для вибірки даних з відповідних таблиць бази даних.
Обробка вибраних даних за допомогою різних методів та фільтрів, що забезпечує
підготовку необхідної інформації для звіту. Генерація звітів у різних форматах (HTML,
PDF, СSV) за допомогою бібліотек, таких як rbpdf [26] для PDF або Axlsx [27] для
Excel.
Нижче наводиться приклад коду, який генерує звіт Headcount report:
module ReportHeadcountDated
include WkreportHelper
# Генерація даних для експорту звіту
def getExportData(user_id, group_id, projectId, fromDate, toDate)
current_year, current_month = Date.today.year, Date.today.month
months = (1..current_month).to_a
data = {
headers: generate_headers(months),
data: generate_data_rows(months)
}
projects = fetch_projects
total_row = { label: "TOTAL" }
manager_role_id = Role.find_by(name: "Manager").id
projects.each do |project|
row = { "label" => project&.name }
months.each do |index|
end_of_month= Date.parse("#{current_year}-#{index}-01").end_of_month
erpmine_users = fetch_erpmine_users(project, manager_role_id)
active_count = calculate_active_count(erpmine_users, end_of_month)
row["active_#{index}"] = format_count(active_count)
update_row_values(total_row, index, active_count)
end
data[:data] << row
end
data[:data] << total_row
data
end
# Експорт даних у PDF
def pdf_export(data)
pdf = ITCPDF.new(current_language, 'L')
pdf.add_page
table_width, row_height = calculate_table_dimensions(pdf)
set_pdf_header(pdf, data, table_width)
set_pdf_body(pdf, data, table_width, row_height)
pdf.Output
end
private
# Генерація заголовків таблиці
def generate_headers(months)
headers = { col1: 'Client' }
months.each do |index|
month_name = I18n.t("date.month_names")[index].upcase
headers["month_#{index}_1"] = "END OF #{month_name}"
end
headers
end
# Генерація рядків даних
def generate_data_rows(months)
data_row = { col1: '' }
months.each do |index|
data_row["active_#{index}"] = "ACTIVE"
end
[data_row]
end
# Форматування кількості
def format_count(count)
count.zero? ? "" : count.to_s
end
# Оновлення значень рядка для активних користувачів
def update_row_values(row, index, active_count)
key = "active_#{index}"
row[key] ||= 0
row[key] += active_count
end
# Розрахунок розмірів таблиці
def calculate_table_dimensions(pdf)
page_width = pdf.get_page_width
margins = pdf.get_original_margins
table_width = page_width - margins['left'] - margins['right']
[table_width, 8]
end
end
3.2. Тестування системи
Тестування системи є критичним етапом у процесі розробки програмного
забезпечення, який забезпечує підтвердження коректності виконання своїх завдань
інформаційною системою. Процес тестування включає кілька основних видів:
модульне, інтеграційне, системне та приймальне тестування. Модульне тестування
перевіряє роботу окремих компонентів системи, виявляючи помилки на ранніх етапах
розробки. Інтеграційне тестування зосереджується на взаємодії між модулями,
забезпечуючи їхню сумісність та коректну передачу даних. Системне тестування
перевіряє всю систему в цілому, підтверджуючи її відповідність вимогам користувачів
і бізнесу, а приймальне тестування забезпечує остаточне підтвердження готовності
системи до впровадження в реальну експлуатацію за участю кінцевих користувачів.
3.2.1. Модульне тестування
Як частину етапу розробки, було проведене часткове модульне тестування
основних елементів системи для покращення якості коду.
Таблиця 3.1
Результати модульного тестування
Компонент Результат
init.rb Успішний запуск
WkUserLeave.rb Успішне завантаження залежностей
WkAccount.rb Успішне завантаження залежностей
WkExpense.rb Успішне завантаження залежностей
WkExpenseItem.rb Успішне завантаження залежностей
WkInvoice.rb Успішне завантаження залежностей
WkUser.rb Успішне завантаження залежностей
WkGlTransaction.rb Успішне завантаження залежностей
WkLedger.rb Успішне завантаження залежностей
3.2.2. Інтеграційне тестування
ERPMine, будучи інтегрованою системою для управління бізнес-процесами в
сервісній індустрії, включає кілька модулів, які взаємодіють між собою для
забезпечення безперебійної роботи всієї системи.
Основні модулі системи включають наступні:
облік часу та витрат (Time and Expense);
управління персоналом (Human Resource Management);
управління взаєминами з клієнтами (Customer Relationship Management);
виставлення рахунків (Billing);
бухгалтерія (Accounting);
звіти (Reports).
Таблиця 3.3
Результати інтеграційного тестування
Інтегровані компоненти Результат
Init + Application Успішне завантаження залежностей
Config + environment + Gemfile Успішне завантаження залежностей
DatabaseModule + ActiveRecord Успішне завантаження залежностей
AccountController + Успішне завантаження залежностей
AccountView + AccountModel
3.2.3. Системне тестування
Системне тестування включало наступні етапи:
Функціональне тестування: було перевірено, чи всі функції системи працюють
відповідно до вимог. Це включало тестування створення, редагування та видалення
записів у всіх модулях, правильність розрахунків, генерацію звітів та інші операції.
Тестування користувацького інтерфейсу: було перевірено, чи інтерфейс
системи зручний для користувачів, чи всі елементи правильно відображаються та
працюють. Було перевірено відповідність дизайну до специфікацій та відсутність
графічних дефектів.
Тестування безпеки: було перевірено, чи система правильно обробляє права
доступу, чи захищені дані користувачів, чи відсутні уразливості до поширених атак,
таких як SQL-ін'єкції [28] або XSS [29].
Таблиця 3.4
Результати системного тестування
Функціональність/Сцена Результат
рій
InvoiceCreation Виконання успішне
ReportCreation Виконання успішне
PayrollCreation Успішний запуск
AccountCreation Виконання успішне
3.2.4. Приймальне тестування
Приймальне тестування нашої системи було успішно проведено для перевірки
готовності системи до впровадження в експлуатацію. Метою цього етапу було
підтвердити, що система відповідає всім вимогам користувачів та бізнесу, і готова до
реального використання.
Таблиця 3.4
Результати приймальне тестування
Ендпоінт Очікуємий результат
DELETE /user 200
GET /invoice/new 200
GET /genres 200
GET /user 200
POST 201
/invoice/new
На цьому етапі ми використовували як ручне тестування, так і тестування за
участю кінцевих користувачів, відоме як User Acceptance Testing [30] (UAT). Ручне
тестування дозволило нам перевірити специфічні вимоги користувачів, які могли бути
складними для автоматизації. Залучення кінцевих користувачів до процесу тестування
допомогло забезпечити, що система дійсно відповідає їх очікуванням та потребам.
Було розроблено детальні сценарії тестування на основі вимог користувачів. Ці
сценарії включали типові та нетипові робочі процеси, які користувачі виконують у
реальних умовах експлуатації системи. Тестування проводилося за участю кінцевих
користувачів, які виконували завдання згідно з розробленими сценаріями. Результати
їхньої роботи були детально проаналізовані.
Під час тестування кінцеві користувачі (професійні бухгалтери і HR-менеджери)
перевірили функціональність системи, зручність користувацького інтерфейсу, а також
відповідність системи бізнес-процесам організації.
Реалізація та впровадження результатів. Після того, як були зібрані дані та
зворотний зв'язок від користувачів, що допомогло виявити області для покращення.
Створений продукт підтвердив свою доцільність у робочих процесах бухгалтерів та
HR-менеджерів
3.3. Приклади впровадженого програмного комплексу
Заведення інформації в Time Entry: потрібно відкрити веб-браузер і перейти на
URL-адресу вашої інсталяції ERPMine. Далі, потрібно ввести свої облікові дані (ім'я
користувача та пароль) у відповідні поля та натисніть кнопку "Увійти".
Рисунок 3.17 - Авторизація в системі
Перехід до модуля Time Entry:
Після успішної авторизації, на головній сторінці оберіть пункт меню "Time
Entry" або "Облік часу".
Рисунок 3.18 - Додавання нового запису часу
У модулі Time Entry натисніть кнопку "Додати новий запис" або "Add New
Entry". У формі додавання введіть наступну інформацію:
дата: оберіть дату, за яку вводиться запис;
проект: виберіть проект, до якого відноситься цей запис часу;
завдання: виберіть конкретне завдання, яке ви виконували;
час: введіть кількість витраченого часу (у годинах або інших одиницях);
опис: додайте короткий опис виконаних робіт.
Збереження запису часу. Після введення всієї необхідної інформації натисніть
кнопку "Зберегти" або "Create". Ваш запис буде збережено в системі.
Висновки до розділу
Система успішно пройшла всі тести і відповідає всім встановленим вимогам. Це
дозволяє вважати систему готовою до впровадження в реальну експлуатацію.
Приймальне тестування забезпечило остаточне підтвердження якості та готовності
системи до використання, що є важливим кроком перед її запуском.
Модульне тестування. Модульне тестування нашої системи показало високу
надійність та коректність роботи кожного окремого модуля. Результати тестування
підтвердили, що основні важливі методи виконують свої завдання відповідно до
специфікацій, що дозволило нам виявити та виправити локалізовані помилки на ранніх
етапах розробки.
Інтеграційне тестування. Інтеграційне тестування системи продемонструвало
успішну взаємодію між різними модулями системи. Тести підтвердили, що дані
коректно передаються між компонентами, забезпечуючи цілісність і узгодженість
системи. Виявлені незначні помилки були оперативно виправлені, що забезпечило
стабільну роботу системи в інтегрованому середовищі.
Системне тестування. Системне тестування нашої системи показало, що вся
система функціонує відповідно до вимог користувачів та бізнесу. Тести підтвердили,
що система відповідає критеріям продуктивності, стабільності та функціональності.
Ми переконалися, що всі основні функції системи працюють належним чином, а
продуктивність відповідає очікуванням навіть під високими навантаженнями. Це
дозволило нам забезпечити високу якість та надійність програмного забезпечення.
Приймальне тестування. Приймальне тестування системи було успішно
завершено за участю кінцевих користувачів, що підтвердило готовність системи до
впровадження в реальну експлуатацію. Ручне тестування та User Acceptance Testing
(UAT) дозволили переконатися, що система відповідає всім вимогам користувачів і
бізнесу. Отримані відгуки та результати тестів показали, що система зручна у
використанні, функціональна і готова до запуску. Це забезпечило остаточне
підтвердження якості системи перед її впровадженням.
ВИСНОВКИ
Робота над автоматизацією бухгалтерських процесів виявила їхню актуальність
у сучасній цифровій економіці. Поглиблений аналіз наукової та технічної інформації
виявив ключові тенденції у сфері бухгалтерського обліку. Порівняльний аналіз різних
типів бухгалтерського програмного забезпечення допоміг визначити їхні переваги та
недоліки.
Вибір оптимального програмного забезпечення для бухгалтерського обліку
залежить від конкретних потреб та можливостей підприємства. Сучасні технології
підвищують ефективність і надійність бухгалтерського обліку, зменшують ймовірність
помилок і оптимізують витрати часу на обробку фінансових даних.
Було розглянуто ключові аспекти впровадження результатів досліджень у
практику проектування програмного забезпечення інформаційних систем.
Запропоновані методи та підходи сприяють підвищенню ефективності та якості
розробки інформаційних систем.
Результатом дослідження стало створення сучасної системи бухгалтерського
обліку, яка поєднує в собі глибоку інтеграцію з Redmine для зручного управління
проектами, точний облік часу та витрат, вбудований модуль CRM для управління
взаєминами з клієнтами, автоматизацію виставлення рахунків, інтеграцію з зовнішніми
системами, використання сучасних хмарних технологій, підтримку гнучкої
методології розробки та потужні інструменти для аналізу даних та генерації звітів. На
відміну від QuickBooks та інших існуючих бухгалтерських програм, ERPMine
забезпечує більш тісну інтеграцію з системами управління проектами, що робить його
ідеальним вибором для організацій, які прагнуть інтегрованого та сучасного підходу
до управління бухгалтерським обліком та фінансами.
Система успішно пройшла всі тести і відповідає встановленим вимогам, що
дозволяє вважати її готовою до впровадження в реальну експлуатацію. Приймальне
тестування підтвердило якість та готовність системи до використання, що є важливим
кроком перед її запуском. Модульне тестування показало високу надійність та
коректність роботи кожного окремого модуля, що дозволило виявити та виправити
помилки на ранніх етапах розробки. Інтеграційне тестування підтвердило успішну
взаємодію між модулями системи, забезпечуючи стабільну роботу в інтегрованому
середовищі.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1 “Best Accounting Software For Small Business Of 2024”,
https://www.forbes.com/advisor/business/software/best-accounting-software/
2 “В сучасний період багато компаній вирішують стратегічні завдання,
спираючись на аналіз даних. З обсягами накопичених даних, що зростають в
геометричній прогресії, важливість ефективного управління ними та обробки
стає просто критичною. З цієї причини виникає необхідність високоефективних
систем ETL (Extract, Transform, Load), які дають змогу збирати, трансформувати
та завантажувати дані.”, Владислав Мишоловський,
https://dev.ua/blogs/posts/yalantis-blog-1704811522
3 “Accounting Software In Modern Business” [Lesia Marushchak et al, 2021],
https://www.astesj.com/publications/ASTESJ_060195.pdf
4 Lean Software Development: An Agile Toolkit [Mary Poppendieck, Tom
Poppendieck, 2003] ст. 134
5 https://quickbooks.intuit.com/global/
6 “Sage Intacct” https://www.sage.com/en-us/sage-business-cloud/intacct/
7 https://help.sap.com/docs/SAP_S4HANA_FINANCE
8 Beck, K. (2000). Extreme Programming Explained: Embrace Change. Addison-
Wesley Professional.
9 онлайн-інструмент PlantUML Web Server - https://www.plantuml.com /plantuml
10 “Стейкхолдери проєкту: хто такі та чому важливо налагодити з ними
комунікацію”, Тетяна Шевченко, https://wizeclub.education/blog/stejkholderi-
proyektu-hto-taki-ta-chomu-vazhlivo-nalagoditi-z-nimi-komunikatsiyu/
11 Діаграма класів – https://duikt.edu.ua/ua/news-1-626-8002
12 Діаграма пакетів – https://blog.visual-paradigm.com/what-is-a-package-what-is-
a-package-diagram-in-uml/
13 “Повне розуміння діаграми компонентів UML за допомогою легкого методу”
– https://www.mindonmap.com/uk/blog/uml-component-diagram/
14 Діаграма розгортання - https://www.guru99.com/uk/deployment-diagram-uml-
example.html
15 “Amazon Web Services in Action, Third Edition” – Michael Wittig, Andreas Wittig,
2023
16 Діаграма послідовності - https://dou.ua/forums/topic/40575/
17 Діаграма комунікації - https://reporter.zp.ua/diagrama-komunikaciyi- wnq.html
18 “Head First HTML and CSS, 2nd Edition” – Elisabeth Robson, Eric Freeman, 2012,
O'Reilly Media, Inc.
19 Діаграми скінченних автоматів – https://www.guru99.com/uk/state-machine-
transition-diagram.html
20 Git – https://docs.github.com/en/get-started/using-git/about-git
21 Docker – https://docs.docker.com/desktop/
22 Postgres – https://www.postgresql.org/about/
23 Redmine – “Redmine Plugin Extension and Development” – Alex Bevilacqua,
2014, Packt Publishing
24 ERPMine – https://erpmine.org/projects/erpmine
25 Ruby on Rails – https://rubyonrails.org/doctrine
26 rbpdf – https://libraries.io/rubygems/rbpdf
27 Axlsx – https://github.com/randym/axlsx
28 SQL-інʼєкції – https://www.cloudflare.com/learning/security/threats/sql-
injection/
29 XSS – https://owasp.org/www-community/attacks/xss/
30 User Acceptance Testing – https://devops.com/what-is-user-acceptance-testing-
and-why-is-it-so-important/
ДОДАТОК А
ЗАТВЕРДЖЕНО:
Зав. кафедрою ПЗАС, професор
Голуб С.В.
„ ” 2024 р.
Програмне забезпечення системи бухгалтерського обліку організації
Специфікація
482. ЧДТУ 24 2001.001
Листів 2
Розробник Нестеренко В.В.
Керівник Заспа Г. О.
2024
ЧДТУ. 242001-001 ПЗ
482. ЧДТУ. 242001.001 2
Позначення Найменування Примітка
Документація
482.ЧДТУ. 24 2001 12 01 Текст програми
482.ЧДТУ. 24 2001 34 01 Інструкція користувачеві
482.ЧДТУ. 24 2001 90 01 Графічні матеріали
1
ЧДТУ. 242001-001 ПЗ
ДОДАТОК Б
Програмне забезпечення системи бухгалтерського обліку організації
Текст програми
482.ЧДТУ. 24 2001 12 01
Листів 13
Розробник ________________ Нестеренко В.В.
2
ЧДТУ. 242001-001 ПЗ
2024
module ReportAttendance
include WkreportHelper
require 'rbpdf'
def calcReportData(user_id, group_id, projId, from, to)
unless from.blank?
from = Date.civil(from.year,from.month, 1)
to = (from >> 1) - 1
end
attendance = {}
dateStr = getConvertDateStr('start_time')
sqlStr = ""
userSqlStr = getUserQueryStr(group_id,user_id, from)
leaveSql = "select u.id as user_id, gu.group_id, i.id as issue_id, l.balance, l.accrual, l.used,
l.accrual_on," +
" lm.balance + lm.accrual - lm.used as open_bal from users u" +
" left join groups_users gu on (gu.user_id = u.id and gu.group_id = #{group_id})" +
" cross join (select id from issues where id in (#{getReportLeaveIssueIds})) i" +
" left join (#{getLeaveQueryStr(from,to)}) l on l.user_id = u.id and l.issue_id = i.id" +
" left join (#{getLeaveQueryStr(from << 1,from - 1)}) lm on lm.user_id = u.id and i.id =
lm.issue_id"
if group_id.to_i > 0 && user_id.to_i < 1
leaveSql = leaveSql + " Where gu.group_id is not null"
elsif user_id.to_i > 0
leaveSql = leaveSql + " Where u.id = #{user_id}"
end
if validateERPPermission('A_TE_PRVLG') || User.current.admin?
leave_entry = TimeEntry.where("issue_id in (#{getLeaveIssueIds}) and spent_on between
'#{from}' and '#{to}'") # TODO: filter only by those that are added to invoice (connected to invoice item
in spent_fors)
if getType == 'spent_time'
3
ЧДТУ. 242001-001 ПЗ
sqlStr = "select user_id,spent_on,sum(hours) as hours from time_entries where issue_id not in
(#{getLeaveIssueIds}) and spent_on between '#{from}' and '#{to}' group by user_id,spent_on"
else
sqlStr = "select user_id,#{dateStr} as spent_on,sum(hours) as hours from wk_attendances where
#{dateStr} between '#{from}' and '#{to}' group by user_id,#{dateStr}"
end
else
leave_entry = TimeEntry.where("issue_id in (#{getLeaveIssueIds}) and spent_on between
'#{from}' and '#{to}' and user_id = #{User.current.id} " )
if getType == 'spent_time'
sqlStr = "select user_id,spent_on,sum(hours) as hours from time_entries where issue_id not in
(#{getLeaveIssueIds}) and spent_on between '#{from}' and '#{to}' and user_id = #{User.current.id}
group by user_id,spent_on"
else
sqlStr = "select user_id,#{dateStr} as spent_on,sum(hours) as hours from wk_attendances where
#{dateStr} between '#{from}' and '#{to}' and user_id = #{User.current.id} group by user_id,#{dateStr}"
end
end
@userlist = WkUserLeave.find_by_sql(userSqlStr + " order by u.created_on " )
leave_data = WkUserLeave.find_by_sql(leaveSql)
daily_entries = WkAttendance.find_by_sql(sqlStr)
@attendance_entries = Hash.new
if !leave_data.blank?
leave_data.each_with_index do |entry,index|
@attendance_entries[entry.user_id.to_s + '_' + entry.issue_id.to_s + '_balance'] = entry.open_bal
@attendance_entries[entry.user_id.to_s + '_' + entry.issue_id.to_s + '_used'] = entry.used
@attendance_entries[entry.user_id.to_s + '_' + entry.issue_id.to_s + '_accrual'] = entry.accrual
end
end
if !leave_entry.blank?
leave_entry.each_with_index do |entry,index|
@attendance_entries[entry.user_id.to_s + '_' + entry.spent_on.to_date.strftime("%d").to_i.to_s +
'_leave'] = entry.issue_id
end
end
4
ЧДТУ. 242001-001 ПЗ
if !daily_entries.blank?
daily_entries.each_with_index do |entry,index|
@attendance_entries[entry.user_id.to_s + '_' + entry.spent_on.to_date.strftime("%d").to_i.to_s
+ '_hours'] = entry.hours.is_a?(Float) ? entry.hours.round(2) : (entry.hours.blank? ? '*' : entry.hours)
end
end
wktime_helper = Object.new.extend(WktimeHelper)
headIssueId = []
issue_list = Issue.order('subject')
shortName = Hash.new
unless issue_list.blank?
issueslist = issue_list.collect {|issue| [issue.subject, issue.id] }
issuehash = Hash[issue_list.map { |u| [u.id, u.subject] }]
end
if !wktime_helper.getLeaveSettings.blank?
wktime_helper.getLeaveSettings.each_with_index do |element,index|
listboxArr = element.split('|')
if index < 3
headIssueId[index] = listboxArr[0]
end
shortName[listboxArr[0].to_i] = listboxArr[4].blank? ? issuehash[listboxArr[0].to_i].first(2) :
listboxArr[4]
end
headIssueId = headIssueId.sort_by(&:to_i)
end
user_data = getuserData(@userlist, @attendance_entries, headIssueId, shortName)
attendance = {userlist: @userlist, attendance_entries: @attendance_entries, shortName:
shortName, headIssueId: headIssueId, user_data: user_data, month: from.strftime("%B") , year:
from.strftime("%Y")}
end
def getuserData(userlist, attendance_entries, headIssueId, shortName)
user_data = {}
5
ЧДТУ. 242001-001 ПЗ
userlist.each_with_index do |entry,index|
key = entry.id.to_s
balance1 = attendance_entries[key + '_' + headIssueId[0].to_s + '_balance']
balance2 = attendance_entries[key + '_' + headIssueId[1].to_s + '_balance']
balance3 = attendance_entries[key + '_' + headIssueId[2].to_s + '_balance']
used1 = attendance_entries[key + '_' + headIssueId[0].to_s + '_used']
used2 = attendance_entries[key + '_' + headIssueId[1].to_s + '_used']
used3 = attendance_entries[key + '_' + headIssueId[2].to_s + '_used']
accrual1 = attendance_entries[key + '_' + headIssueId[0].to_s + '_accrual']
accrual2 = attendance_entries[key + '_' + headIssueId[1].to_s + '_accrual']
accrual3 = attendance_entries[key + '_' + headIssueId[2].to_s + '_accrual']
user_data[key] = {}
user_data[key]['employee_id'] = entry.employee_id
user_data[key]['key'] = key
user_data[key]['name'] = entry.firstname + " " + entry.lastname
user_data[key]['join_date'] = entry.join_date.blank? ? '' : format_date(entry.join_date.to_date)
user_data[key]['birth_date'] = entry.birth_date.blank? ? '' : format_date(entry.birth_date.to_date)
user_data[key]['designation'] = entry.designation
user_data[key]['balance1'] = balance1
user_data[key]['balance2'] = balance2
user_data[key]['balance3'] = balance3
user_data[key]['used1'] = used1
user_data[key]['used2'] = used2
user_data[key]['used3'] = used3
user_data[key]['accrual1'] = (accrual1.blank? && used1.blank? ? '' : (balance1.blank? ? 0 :
balance1) + (accrual1.blank? ? 0 : accrual1) - (used1.blank? ? 0 : used1))
user_data[key]['accrual2'] = (accrual2.blank? && used2.blank? ? '' : (balance2.blank? ? 0 :
balance2) + (accrual2.blank? ? 0 : accrual2) - (used2.blank? ? 0 : used2))
user_data[key]['accrual3'] = (accrual3.blank? && used3.blank? ? '' : (balance3.blank? ? 0 :
balance3) + (accrual3.blank? ? 0 : accrual3) - (used3.blank? ? 0 : used3))
totalhours = 0
user_data[key]['date'] = []
for i in 1..31
hour = attendance_entries[key + '_' + i.to_s + '_hours']
6
ЧДТУ. 242001-001 ПЗ
leave = attendance_entries[key + '_' + i.to_s + '_leave']
attn_entry = shortName[leave].blank? ? hour : (hour.blank? ? shortName[leave] : (hour.to_s) +
"/ " + shortName[leave])
totalhours = totalhours + (hour.blank? ? 0 : hour.to_f)
user_data[key]['date'] << attn_entry
end
user_data[key]['totalhours'] = totalhours.round(2)
end
user_data
end
def getType
return 'attendance'
end
def filterBySpentFor(time_entries)
WkSpentFor.where.not(invoice_item: nil).where(spent_id: time_entries.ids).map(&:spent)
end
def filterBySpentForIds(time_entry_ids)
WkSpentFor.where.not(invoice_item: nil).where(spent_id: time_entry_ids).map(&:spent_id)
end
def getExportData(user_id, group_id, projId, from, to)
@projId = projId
@billed_entries = []
rptData = calcReportData(user_id, group_id, projId, from, to)
data = []
current_month = from
num_of_days = current_month.end_of_month.day
leave_details = WkUserLeave.where(issue_id: getLeaveIssueIds.split(','), accrual_on:
current_month.end_of_month)
7
ЧДТУ. 242001-001 ПЗ
wk_user_leave_ids = leave_details.ids
tm_leaves = TimeEntryLeave.where(wk_user_leave_id: wk_user_leave_ids)
# TABLE HEADER
current_month_string = current_month.strftime("%b %Y")
wk_project = WkAccountProject.find_by(project_id: projId)
client_name = wk_project ? wk_project&.project&.name : ""
headers ={sl_no: l(:label_attn_sl_no), user: l(:field_user), balance1: 'Opening Balance', accrual1:
'Leave Days Accrued', used1: 'Leave Used', balance2: "Closing Balance"}
for i in 1..num_of_days
day_val = current_month_string + (client_name.blank? ? " (#{client_name})" : "")
headers.store('days_'+i.to_s, i == 1 ? day_val : '')
end
headers.store(:total_hrs_ot, l(:label_total_hours_ot))
headers.store(:total_hrs, l(:label_total_hours_during_mnth))
# TABLE HEADER SECOND ROW
detailHeaders ={sl_no: '', user: '', balance1: '', accrual1: '', used1: '', balance2: '',}
for i in 1..num_of_days
detailHeaders.store('days_'+i.to_s, i)
end
detailHeaders.store(:total_hrs_ot, '')
detailHeaders.store(:total_hrs, '')
data << detailHeaders
# TABLE CONTENT
current_users = []
rptData[:user_data].each do |key, entry|
name = entry['name'].split(' ', 2)
user = User.find_by(firstname: name.first, lastname: name.last)
current_users << user&.id
8
ЧДТУ. 242001-001 ПЗ
row_data = { sl_no: '', user: entry['name'] }
row_data = row_data.merge render_leave_columns(current_month, user)
for i in 1..num_of_days
day = Date.parse("#{current_month.year}-#{current_month.month}-#{i}")
hours = calculate_day_spent_hours(day, user)
row_data.store('days_' + i.to_s, hours)
end
ot_hours = calculate_month_overtime_total(current_month, user)
row_data.store(:total_hrs_ot, ot_hours)
total_hours = calculate_month_total(current_month, user)
row_data.store(:total_hrs, total_hours)
data << row_data
end
calculate_leaves(current_month, data, projId)
calculate_overtimes(current_month, data, projId, current_users)
return {data: data, headers: headers}
end
def pdf_export(data)
pdf = ITCPDF.new(current_language)
pdf.AddPage("L", "A1")
row_Height = 8
page_width = pdf.get_page_width
left_margin = pdf.get_original_margins['left']
right_margin = pdf.get_original_margins['right']
table_width = page_width - right_margin - left_margin
pdf.SetFontStyle('B', 10)
9
ЧДТУ. 242001-001 ПЗ
pdf.RDMMultiCell(table_width, row_Height, l(:label_wk_form_q), 0)
pdf.RDMMultiCell(table_width, row_Height, l(:label_wk_register_for_shops), 0)
pdf.RDMCell(pdf.get_string_width(l(:label_wk_name_address)) + 2, row_Height,
l(:label_wk_name_address) + ':', 0)
pdf.SetFontStyle('', 10)
pdf.RDMCell(pdf.get_string_width(Setting.app_title) + 2, row_Height, Setting.app_title, 0)
pdf.SetFontStyle('B', 10)
pdf.RDMCell(pdf.get_string_width(l(:label_month)) + 5, row_Height, l(:label_month) + ':', 0)
pdf.SetFontStyle('', 10)
pdf.RDMCell(20, row_Height, data[:from].strftime("%B").to_s, 0)
pdf.SetFontStyle('B', 10)
pdf.RDMCell(pdf.get_string_width(l(:label_year)) + 3, row_Height, l(:label_year) + ':', 0)
pdf.SetFontStyle('', 10)
pdf.RDMCell(25, row_Height, data[:from].strftime("%Y").to_s, 0)
logo =data[:logo]
if logo.present?
pdf.Image(logo.diskfile.to_s, page_width-50, 15, 30, 25)
end
pdf.ln(20)
pdf.SetFontStyle('B', 10)
pdf.set_fill_color(230, 230, 230)
data[:headers].each do|key, value|
pdf.RDMMultiCell(get_col_width(key), 25, value.to_s, 1, 'C', 0, 0)
end
pdf.ln(25)
pdf.set_fill_color(255, 255, 255)
data[:data].each do |entry|
entry.each do |key, value|
pdf.RDMCell(get_col_width(key), row_Height, value.to_s, 1, 0, 'C', 0)
end
pdf.SetFontStyle('', 9)
pdf.ln
10
ЧДТУ. 242001-001 ПЗ
end
pdf.Output
end
def get_col_width(key)
headers = {
user: 55, service_date: 30, age: 30, designation: 35, balance1: 30, used1: 30, accrual1: 30,
balance2: 30, total_hrs_ot: 20, total_hrs: 30, 'days_1' => 25,
leaves_title: 120, date: 30,
project_header: 55, user_header: 55, issue_header: 55, subject_header: 70, hours_header: 30
}
width = headers[key] || 10
end
private
def render_leave_columns(month, user)
accrualMultiplier = 1
entry_user_leave = WkUserLeave.find_by(user_id: user&.id, accrual_on: month.end_of_month,
issue_id: Issue.where(project_id: @projId).map(&:id))
accrual = entry_user_leave&.accrual&.to_f || 0
opening_balance = entry_user_leave&.balance&.to_f || 0
used1 = entry_user_leave&.used.to_f || 0
closing_balance = opening_balance - used1 + accrual
{
balance1: opening_balance / 8,
accrual1: accrual / 8,
used1: if used1 == 0 then 0 else -(used1 / 8) end,
balance2: closing_balance / 8
}
end
def get_overtime_activity
11
ЧДТУ. 242001-001 ПЗ
TimeEntryActivity.find_by(name: 'Overtime hours')
end
def calculate_day_spent_hours(day, user)
day_entries = TimeEntry.where(user_id: user&.id, spent_on: day)
day_entries = day_entries.where(project: Project.find_by(id: @projId)) if @projId.present?
day_entries = TimeEntry.where(id: WkSpentFor.where(spent_id:
day_entries.ids).pluck(:spent_id))
day_entries = filterBySpentFor(day_entries)
@billed_entries += day_entries.map(&:id) if day_entries.present?
hours = 0
hours = day_entries.sum(&:hours)&.round(2) if day_entries.present?
hours != 0.0 ? hours : ''
end
def calculate_month_overtime_total(month, user)
ot_hours = TimeEntry.where(id: @billed_entries, user_id: user&.id)
.where("spent_on >= ? AND spent_on <= ?", month.beginning_of_month,
month.end_of_month)
.where(activity: get_overtime_activity)
ot_hours = ot_hours.where(project: Project.find_by(id: @projId)) if @projId.present?
ot_hours.sum(&:hours).round(2)
end
def calculate_month_total(current_month, user)
total_hours = TimeEntry.where(id: @billed_entries, user_id: user&.id)
.where("spent_on >= ? AND spent_on <= ?", current_month.beginning_of_month,
current_month.end_of_month)
total_hours = total_hours.where(project: Project.find_by(id: @projId)) if @projId.present?
total_hours.sum(&:hours).round(2)
end
12
ЧДТУ. 242001-001 ПЗ
def calculate_leaves(current_month, data, projId)
leave_details = WkUserLeave.where(issue_id: getLeaveIssueIds.split(','), accrual_on:
current_month.end_of_month)
wk_user_leave_ids = leave_details.ids
tm_leaves = TimeEntryLeave.where(time_entry_id: @billed_entries, wk_user_leave_id:
wk_user_leave_ids)
table_count = 0
tm_leaves = tm_leaves.select do |entry|
tm = entry&.time_entry
tm&.issue&.project_id&.to_i == projId&.to_i
end
if tm_leaves.count > 0
data << { leaves_title: 'Leave' }
data << {
project_header: "Project", user_header: "User", issue_header: "Issue", subject_header:
"Comment", hours_header: "Hours", date: "Date"
}
tm_ids = []
tm_leaves.sort_by { |entry| entry&.time_entry&.spent_on }.each do |entry|
tm = entry&.time_entry
next if tm_ids.include?(tm&.id)
next if tm&.project_id != projId&.to_i
next if tm&.issue&.project_id != projId&.to_i
next if entry&.wk_user_leave&.issue&.project_id != projId&.to_i
tm_ids << tm&.id
wk_issue = TimeEntryLeave.find_by(time_entry: tm)&.wk_user_leave&.issue
table_count += 10
data << {
project_header: tm&.issue&.project&.name,
user_header: tm&.user&.name,
issue_header: wk_issue&.subject || '',
subject_header: tm&.comments || '',
13
ЧДТУ. 242001-001 ПЗ
hours_header: tm.hours.to_f.round(2),
date: tm&.spent_on
}
end
end
end
def calculate_overtimes(current_month, data, projId, current_users)
overtime_entries = TimeEntry.where(
id: @billed_entries,
user_id: current_users,
activity: get_overtime_activity,
project: Project.where(
id: projId
)).where("spent_on >= ? AND spent_on <= ?", current_month.beginning_of_month,
current_month.end_of_month)
if overtime_entries.present?
data << { leaves_title: 'Overtime entries' }
data << {
project_header: "Project", user_header: "User", issue_header: "Issue", subject_header:
"Comment", hours_header: "Hours", date: "Date"
}
overtime_entries.sort_by { |entry| entry&.spent_on }.each do |tm|
data << {
project_header: tm&.issue&.project&.name, user_header: tm&.user&.name,
issue_header: tm&.issue&.subject || '', subject_header: tm&.comments || '', hours_header:
tm.hours.to_f.round(2), date: tm&.spent_on
}
end
end
end
end
14
ЧДТУ. 242001-001 ПЗ
ДОДАТОК В
Програмне забезпечення системи бухгалтерського обліку організації
Інструкція користувачеві
482.ЧДТУ. 24 2001 34 01
Листів 7
Розробник ________________ Нестеренко В.В.
2024
15
ЧДТУ. 242001-001 ПЗ
Вхід в систему
Відкрийте браузер і перейдіть на веб-сайт вашої ERP-системи.
Введіть ваш логін та пароль.
Натисніть "Увійти".
Рисунок В 1 – Сторінка логіну
Управління проектами
Створення нового проекту:
Перейдіть до розділу "Проекти".
Натисніть "Додати новий проект".
Рисунок В 2 – Сторінка перегляду проектів
16
ЧДТУ. 242001-001 ПЗ
Введіть назву проекту, опис та інші необхідні деталі.
Натисніть "Зберегти".
Рисунок В 3 – Сторінка додавання проекту
Додавання завдань до проекту:
Оберіть проект зі списку.
Перейдіть до розділу "Завдання".
Натисніть "Додати завдання".
17
ЧДТУ. 242001-001 ПЗ
Рисунок В 4 – Сторінка завдань
Введіть назву завдання, опис, термін виконання та призначте
відповідальних осіб.
Натисніть "Зберегти".
18
ЧДТУ. 242001-001 ПЗ
Рисунок В 5 – Сторінка створення завдання
Управління людськими ресурсами
Додавання нового співробітника:
Перейдіть до розділу "Користувачі".
Натисніть "Додати нового співробітника".
Рисунок В 6 – Сторінка перегляду працівників
19
ЧДТУ. 242001-001 ПЗ
Введіть особисті дані співробітника, контактну інформацію та позицію.
Натисніть "Зберегти".
Рисунок В 7 – Сторінка створення нового працівника
Призначення співробітників на завдання:
Відкрийте головне меню системи та знайдіть розділ "Проекти". Клацніть на
нього, щоб побачити список усіх доступних проектів. Прокрутіть список або
скористайтеся пошуком, щоб знайти потрібний проект. Виберіть проект, на якому ви
хочете працювати, клацнувши на його назву.
Після вибору проекту, перейдіть до вкладки "Завдання". Перегляньте перелік
усіх завдань, які належать до цього проекту. Використовуйте фільтри чи пошук для
швидкого знаходження потрібного завдання. Клацніть на завдання, яке ви хочете
призначити співробітнику.
На сторінці завдання знайдіть кнопку "Призначити співробітника".
Переконайтеся, що ви на правильній сторінці, де відображаються всі деталі завдання.
Натисніть на цю кнопку, щоб відкрити вікно призначення співробітника. Очікуйте,
поки система завантажить список доступних співробітників.
Натисніть "Призначити співробітника".
Оберіть співробітника зі списку.
20
ЧДТУ. 242001-001 ПЗ
Натисніть "Зберегти".
Рисунок В 8 – Сторінка перегляду налаштувань
Налаштування системи:
Перейдіть до розділу "Налаштування".
Внесіть необхідні зміни у налаштування користувачів, доступів та інших
параметрів.
Натисніть "Зберегти".
Рисунок В 9 – Сторінка зміни налаштувань
21
ЧДТУ. 242001-001 ПЗ
83
22
ЧДТУ. 242001-001 ПЗ
ДОДАТОК Г
Програмне забезпечення системи бухгалтерського обліку організації.
Графічні матеріали
482.ЧДТУ. 24 2001 90 01
Листів 10
Розробник ________________ Нестеренко В.В.
2024
23
ЧДТУ. 242001-001 ПЗ
Рисунок Г 1 – Слайд 1
Рисунок Г 2 – Слайд 2
24
ЧДТУ. 242001-001 ПЗ
Рисунок Г 3 – Слайд 3
Рисунок Г 4 – Слайд 4
25
ЧДТУ. 242001-001 ПЗ
Рисунок Г 5 – Слайд 5
Рисунок Г 6 – Слайд 6
26
ЧДТУ. 242001-001 ПЗ
Рисунок Г 7 – Слайд 7
Рисунок Г 8 – Слайд 8
27
ЧДТУ. 242001-001 ПЗ
Рисунок Г 9 – Слайд 9
Рисунок Г 10 – Слайд 10
28
ЧДТУ. 242001-001 ПЗ
Рисунок Г 11 – Слайд 11
Рисунок Г 12 – Слайд 12
29
ЧДТУ. 242001-001 ПЗ
Рисунок Г 13 – Слайд 13
Рисунок Г 14 – Слайд 14
30
ЧДТУ. 242001-001 ПЗ
Рисунок Г 15 – Слайд 15
Рисунок Г 15 – Слайд 16
31