Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/9404| Title: | Автоматизована інформаційна система планування закупівлі та збуту медичних препаратів |
| Authors: | ГРЕСЬКО, Світлана КОВТУН, Євгеній |
| Keywords: | ПРЕДМЕТНА ОБЛАСТЬ;АВТОМАТИЗОВАНА ІНФОРМАЦІЙНА СИСТЕМА (АІС);ІНФОЛОГІЧНА МОДЕЛЬ;ДАТАЛОГІЧНА МОДЕЛЬ;БАЗА ДАНИХ;FIREBIRD;IBEXPERT;DELPHI EMBARCADERO RAD STUDIO |
| Issue Date: | 2022 |
| Abstract: | Кваліфікаційна робота бакалавра присвячена розробці автоматизованої інформаційної системи планування закупівлі та збуту медичних препаратів. Пояснювальна записка містить 80 сторінок, 44 рисунки, 28 таблиць, кількість додатків – 2, використано 20 джерел. Об’єктом дослідження є процес планування закупівлі та збуту медичних препаратів. Мета роботи – проектування та розробка автоматизованої інформаційної системи планування закупівлі та збуту медичних препаратів. Результати роботи – розроблена система, яка дозволяє автоматизувати наступні процеси: внесення даних про медичні препарати; створення замовлень на поставку медичної продукції; продаж медичних препаратів; аналіз залишків продукції на час знаходження кожної поставленої партії на складі; формування замовлення на поставку продукції згідно залишків на складі. Розроблена автоматизована інформаційна система забезпечує своєчасну закупку медикаментів і відстеження зайвих залишків медикаментів на складі. Ефективність розробки полягає у зменшенні часу на формування документації, отриманні оперативної інформації щодо залишків продукції на складі, а, отже, – у підвищенні якості обслуговування клієнтів, а, також, у посиленні можливості контролю за закупівлею та збутом медичної продукції з боку керівництва. Кваліфікаційна робота бакалавра складається з 5 розділів. В першому розділі виконано опис предметної області та надана характеристика підприємства. В другому розділі надана характеристика комплексу задач та обґрунтовано необхідність автоматизації. У третьому розділі розроблена база даних для автоматизованої інформаційної системи планування закупівлі та збуту медичних препаратів. В четвертому розділі реалізована програмна частина спроектованої системи. В п’ятому розділі розроблено документацію до супроводу спроектованої автоматизованої інформаційної системи планування закупівлі та збуту медичних препаратів. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/9404 |
| Appears in Collections: | 123 Комп’ютерна інженерія (Комп'ютерні системи та мережі) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| 1_ТИТУЛКА_Ковтун-merged.pdf Restricted Access | 4.59 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КАФЕДРА ІНФОРМАЦІЙНОЇ БЕЗПЕКИ ТА КОМП’ЮТЕРНОЇ ІНЖЕНЕРІЇ
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи бакалавра
на тему:«Автоматизована інформаційна система
планування закупівлі та збуту медичних
препаратів»
ЧДТУ.221705.002 ПЗ
Виконав: студент 5 курсу, групи ЗКМ-175
спеціальності 123 – «Комп’ютерна інженерія»
за освітньою програмою – «Комп’ютерні системи та
мережі»
Євгеній КОВТУН
Керівник
Світлана ГРЕСЬКО
Рецензент
завідувач кафедри КІ та ФД КНУТД
к.ф.-м.н., доцент, професор університету
Михайло ЯРМОЛЕНКО
«ЗАХИСТ ДОЗВОЛЯЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор ______ Володимир РУДНИЦЬКИЙ
Черкаси 2022 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет: інформаційних технологій і систем
Кафедра: інформаційної безпеки та комп’ютерної інженерії
Освітньо-кваліфікаційний рівень: Бакалавр
Спеціальність 123 – Комп’ютерна інженерія
Освітня програма Комп’ютерні системи та мережі
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор ________ Володимир РУДНИЦЬКИЙ
«11» лютого 2022 року
ЗАВДАННЯ
на кваліфікаційну роботу бакалавра студенту
Ковтуну Євгенію Вікторовичу
(прізвище, ім‘я, по батькові)
1. Тема роботи: Автоматизована інформаційна система планування закупівлі та
збуту медичних препаратів
Керівник роботи: старший викладач Гресько Світлана Олексіївна
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «07» лютого 2022 р. № 45/04
2. Строк подання студентом роботи:
3. Вихідні дані до роботи:
Документи: дані про медичну продукцію, заявка на продаж медичної продукції,
заявка на поповнення складських запасів.
Програмне забезпечення: СУБД - FireBird; середовище розробки - Delphi Embarcadero RAD Studio
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
1 Опис предметної області та характеристика підприємства
З2аХгаарльанкітвеірдиосмтоситкаі пкормопTлeеlкegсуraзmад-баочттиа, оогблґярдунатнаувлаонгінвятнаеопбохсітднаонсотвкіаавзтаводмаантняизації
3РоРзорзорбокбакачабта-збиодтаунидхля проведення тестування QA-спеціалістів
4 Реалізація програмної частини
5 Розробка документації до супроводу автоматизованої інформаційної системи
планування закупівлі та збуту медичних препаратів
Висновки
Список використаних джерел
Додатки
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
1. Специфікація
2. Текст програми
6. Консультанти розділів роботи:
Розділ Прізвище, ініціали Підпис, дата
консультанта завдання видав завдання прийняв
7. Дата видачі завдання: 10 лютого 2022 року
КАЛЕНДАРНИЙ ПЛАН
Термін
№ з/п Назва етапів роботи виконання Примітка
етапів роботи
1 Отримання завдання 10.02 – 12.02 виконано
2 Збір матеріалу 13.02 – 20.02 виконано
3 Обробка матеріалу 21.02 – 01.03 виконано
4 Розробка функціональної схеми інформаційної виконано
системи 02.03 – 09.03
5 Розробка інтерфейсу програми інформаційної 10.03 – 02.04 виконано
системи
6 Створення бази даних інформаційної системи 03.04 – 27.04 виконано
7 Оформлення пояснювальної записки 28.04 – 16.05 виконано
8 Оформлення графічного матеріалу 17.05 – 22.05 виконано
9 Подання кваліфікаційної роботи на відгук та виконано
рецензування 23.05 – 31.05
10 Захист кваліфікаційної роботи 14.06.22
Студент ___________________________ Євгеній КОВТУН
(підпис)
Керівник роботи ___________________________ Світлана ГРЕСЬКО
(підпис)
АНОТАЦІЯ
Кваліфікаційна робота бакалавра присвячена розробці автоматизованої
інформаційної системи планування закупівлі та збуту медичних препаратів.
Пояснювальна записка містить 80 сторінок, 44 рисунки, 28 таблиць,
кількість додатків – 2, використано 20 джерел.
Об’єктом дослідження є процес планування закупівлі та збуту
медичних препаратів.
Мета роботи – проектування та розробка автоматизованої
інформаційної системи планування закупівлі та збуту медичних препаратів.
Результати роботи – розроблена система, яка дозволяє
автоматизувати наступні процеси:
внесення даних про медичні препарати;
створення замовлень на поставку медичної продукції;
продаж медичних препаратів;
аналіз залишків продукції на час знаходження кожної поставленої
партії на складі;
формування замовлення на поставку продукції згідно залишків на
складі.
Розроблена автоматизована інформаційна система забезпечує
своєчасну закупку медикаментів і відстеження зайвих залишків медикаментів
на складі.
Ефективність розробки полягає у зменшенні часу на формування
документації, отриманні оперативної інформації щодо залишків продукції на
складі, а, отже, – у підвищенні якості обслуговування клієнтів, а, також, у
посиленні можливості контролю за закупівлею та збутом медичної продукції
з боку керівництва.
Кваліфікаційна робота бакалавра складається з 5 розділів.
В першому розділі виконано опис предметної області та надана
характеристика підприємства.
В другому розділі надана характеристика комплексу задач та
обґрунтовано необхідність автоматизації.
У третьому розділі розроблена база даних для автоматизованої
інформаційної системи планування закупівлі та збуту медичних препаратів.
В четвертому розділі реалізована програмна частина спроектованої
системи.
В п’ятому розділі розроблено документацію до супроводу
спроектованої автоматизованої інформаційної системи планування закупівлі
та збуту медичних препаратів.
Ключові слова: ПРЕДМЕТНА ОБЛАСТЬ, АВТОМАТИЗОВАНА
ІНФОРМАЦІЙНА СИСТЕМА (АІС), ІНФОЛОГІЧНА МОДЕЛЬ,
ДАТАЛОГІЧНА МОДЕЛЬ, БАЗА ДАНИХ, FIREBIRD, IBEXPERT, DELPHI
EMBARCADERO RAD STUDIO
ANNOTATION
The bachelor's thesis is devoted to the development of an automated
information system for planning the purchase and sale of medicines.
The explanatory note contains 80 pages, 44 figures, 28 tables, the number of
appendices – 2, 20 sources were used.
The object of research is the process of planning the purchase and sale of
medicines.
The purpose of the work is to design and develop an automated information
system for planning the purchase and sale of medicines.
Results of work – the developed system which allows to automate the
following processes:
entering data on medicines;
creation of orders for the supply of medical products;
sale of medicines;
analysis of product balances at the time of each delivered batch in the
warehouse;
forming an order for the supply of products according to the balances in the
warehouse.
Developed automated information system provides timely purchase of
medicines and tracking of excess balances of medicines in the warehouse.
The effectiveness of the development is to reduce the time for
documentation, obtaining operational information on product balances in the
warehouse, and, consequently, to improve the quality of customer service, as well
as strengthening the ability to control the purchase and sale of medical products by
management.
The bachelor's thesis consists of 5 sections.
The first section describes the subject area and provides a description of the
enterprise.
The second section describes the set of tasks and justifies the need for
automation.
In the third section, a database for an automated information system for
planning the purchase and sale of medicines has been developed.
In the fourth section the software part of the designed system is
implemented.
In the fifth section, the documentation for the support of the designed
automated information system for planning the purchase and sale of medicines is
developed.
Keywords: SUBJECT AREA, AUTOMATED INFORMATION SYSTEM
(AIS), INFOLOGICAL MODEL, DATALOG MODEL, DATABASE,
FIREBIRD, IBEXPERT, DELPHI EMBARCADERO RAD STUDIO
ЗМІСТ
ВСТУП………………………………………………………………………..... 4
1 ОПИС ПРЕДМЕТНОЇ ОБЛАСТІ ТА ХАРАКТЕРИСТИКА
ПІДПРИЄМСТВА…………………………………………………………….. 6
1.1 Характеристика підприємства та його діяльності………………... 6
1.2 Організаційна структура підприємства…………………………… 6
1.3 Технічна та програмна архітектура підприємства……………….. 6
2 ХАРАКТЕРИСТИКА КОМПЛЕКСУ ЗАДАЧ ТА ОБҐРУНТУВАННЯ
НЕОБХІДНОСТІ АВТОМАТИЗАЦІЇ……………………………………….. 8
2.1 Вибір комплексу задач і характеристика існуючих бізнес-
процесів…………………………………………………………………. 8
2.2 Опис задачі, яка проектується……………………………………... 10
2.3 Постановка задачі…………………………………………………... 12
2.4 Обґрунтування проектних рішень по програмному та
технічному забезпеченню……………………………………………… 13
3 РОЗРОБКА БАЗИ ДАНИХ…………………………………………………. 15
3.1 Інформаційна модель та її опис…………………………………… 15
3.2 Характеристика вхідної та вихідної інформації………………….. 16
3.3 Проектування бази даних………………………………………….. 21
3.3.1 Розробка інфологічної моделі бази даних……………….. 21
3.3.2 Розробка даталогічної моделі бази даних………………... 29
4 РЕАЛІЗАЦІЯ ПРОГРАМНОЇ ЧАСТИНИ………………………………… 39
4.1 Загальні положення (дерево функцій)…………………………….. 39
4.2 Структурна схема пакету…………………………………………... 40
4.3 Форми розробленої автоматизованої інформаційної системи та
їх взаємодія……………………………………………………………... 42
ЧДТУ.221705.002 ПЗ
Змн. Арк. № докум. Підпис Дат
РозрКобив Ковтун Є.В. а Автоматизована Літ. Лист Листів
Керівник Гресько С.О інформаційна система 2 80
Рецеанзент Ярмоленко планування закупівлі та
Н.Контроль ГМр.еВс.ько С.О. збуту медичних препаратів Кафедра ІБ та КІ
Затвфердив Рудницький В.М. Пояснювальна записка гр. ЗКМ-175
е
д
р
а
К
К
-
0
6
5 РОЗРОБКА ДОКУМЕНТАЦІЇ ДО СУПРОВОДУ
АВТОМАТИЗОВАНОЇ ІНФОРМАЦІЙНОЇ СИСТЕМИ ПЛАНУВАННЯ
ЗАКУПІВЛІ ТА ЗБУТУ МЕДИЧНИХ ПРЕПАРАТІВ……………………... 51
5.1 Інструкція системного адміністратора……………………………. 51
5.2 Інструкція користувача…………………………………………….. 51
ВИСНОВКИ…………………………………………………………………… 55
ДОДАТКИ:
А – 482.ЧДТУ.21705 Автоматизована інформаційна система
планування закупівлі та збуту медичних препаратів
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ…………………………………….. 78
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 3
а
ВСТУП
Сучасний рівень розвитку інформаційних технологій дозволяє істотно
оптимізувати роботу підприємств багатьох галузей, в тому числі і в сфері
продажів медикаментів (аптечний бізнес). Однак, далеко не завжди і не в усіх
галузях повною мірою використовуються нові технології. [1]
Інформаційні та комунікаційні технології, інформаційні системи
стають основним фактором впливу на економічний розвиток тих
підприємств, які мають потужні ресурси до автоматизації процесів на всіх
рівнях.
Використання інформаційних технологій здатне позитивно вплинути
на підвищення конкурентоспроможності підприємства, забезпечити
ефективність довгострокових цілей. [1]
Дана кваліфікаційна робота бакалавра спрямована на розробку
програмного продукту, який дозволяє автоматизувати процеси планування
закупівлі та збуту медичних препаратів. Тим самим, розроблена
автоматизована інформаційна система допоможе своєчасно планувати запаси
медичної продукції, відслідковувати залишки на складі медичної продукції;
знизити ймовірність недостовірної інформації про наявність медичної
продукції; а, отже, – підвищити якість обслуговування клієнтів та підвищити
прибутки підприємства; посилити можливість контролю з боку керівництва.
Отже, метою кваліфікаційної роботи бакалавра є проектування та
розробка автоматизованої інформаційної системи планування закупівлі та збуту
медичних препаратів. Автоматизована інформаційна система розробляється для
товариства з обмеженою відповідальністю (ТОВ) «Дуамед» – це
підприємство в сфері аптечного бізнесу, яке динамічно та успішно
розвивається і використовує передові технології та якісні товари.
Для досягнення поставленої мети потрібно вирішити наступні
завдання:
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 4
а
проведення аналізу предметної області;
формування вимог до розроблюваної інформаційної системи (ІС);
визначення вхідної та вихідної інформацій в ІС;
розробка інфологічної і даталогічної моделей бази даних;
розробка інтерфейсу користувача;
розробка інструкцій для системного адміністратора та користувача.
Для досягнення поставленої мети був розроблений програмний
продукт, який складається з бази даних, реалізованої на системі управління
базами даних (СУБД) FireBird та інструментального засобу Delphi
Embarcadero RAD Studio, що забезпечує зручний графічний інтерфейс і
надійний зв'язок з СУБД.
Практична значимість роботи. Розроблена автоматизована
інформаційна система дозволить автоматизувати такі процеси:
внесення даних про медичні препарати;
створення замовлень на поставку медичної продукції;
продаж медичних продуктів;
аналіз залишків продукції на час знаходження кожної поставленої
партії на складі;
формування замовлення на поставку продукції згідно залишків на
складі.
Отже, розроблювана система забезпечить своєчасну закупку
медикаментів і відстеження зайвих залишків медикаментів на складі, але
головне призначення автоматизованої інформаційної системи планування
закупівлі та збуту медичних препаратів – це виключення помилкових операцій в
процесі закупівлі та збуту медичних препаратів.
Таким чином, розроблена система на практиці спрощує процес
планування закупівлі та збуту медичних препаратів.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 5
а
1 ОПИС ПРЕДМЕТНОЇ ОБЛАСТІ ТА ХАРАКТЕРИСТИКА
ПІДПРИЄМСТВА
1.1 Характеристика підприємства та його діяльності
ТОВ «Дуамед» – це підприємство в сфері аптечного бізнесу, яке
динамічно та успішно розвивається і використовує передові технології і
якісні товари. Компанія заснована в 2018 році. За цей період компанія
зарекомендувала себе як надійного, відповідального партнера для своїх
контрагентів.
Прайс-лист компанії скаладають понад 10000 найменувань
медикаментів. ТОВ «Дуамед» працює з великими дистриб’ютерськими
компаніями України та надійними виробниками лікарських засобів [2-4].
1.2 Організаційна структура підприємства
Структура ТОВ «Дуамед» складається з чотирьох основних відділів:
рецептурно-виробничий (відділ для виготовлення лікувальної
продукції по рецептам);
складський відділ (в якому зберігаються запаси лікувальної продукції
та матеріалів для виготовлення ліків);
відділ готових медичних препаратів;
відділ продажу медичних препаратів без рецептів, предметів гігієни та
догляду за хворими.
Організаційна структура ТОВ «Дуамед» представлена на рисунку 1.1.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 6
а
Рисунок 1.1 – Організаційна структура підприємства ТОВ «Дуамед»
1.3 Технічна та програмна архітектура підприємства
Апаратні засоби, що використовуються на підприємстві ТОВ
«Дуамед»:
персональні комп'ютери різної конфігурації;
БФП (багатофункціональні пристрої);
підключення до Інтернет;
1 сервер;
комутатор.
Швидкодія локальної мережі: передача даних здійснюється зі
швидкістю 100Мб/с.
Топологія локальної мережі. Локальна мережа складається з
комп'ютерів, з'єднаних через switch. На всіх робочих станціях встановлена
операційна система Windows 7 з актуальних набором оновлень безпеки. На
сервері встановлена операційна система Windows Server 2012.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 7
а
Структура локальної мережі представлена на рисунку 1.2.
Рисунок 1.2 – Структура локальної мережі
Програмні засоби, які використовуються: на кожному персональному
комп'ютері встановлено пакет Microsoft Office 2007, який дозволяє кожному
користувачеві працювати з різними типами документів (текстами,
електронними таблицями і таке інше). Крім того, бухгалтери використовують
спеціалізоване програмне забезпечення для формування і передачі звітності у
різні фонди.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 8
а
2 ХАРАКТЕРИСТИКА КОМПЛЕКСУ ЗАДАЧ ТА ОБҐРУНТУВАННЯ
НЕОБХІДНОСТІ АВТОМАТИЗАЦІЇ
2.1 Вибір комплексу задач і характеристика існуючих бізнес-
процесів
У діяльності розглянутого підприємства ТОВ «Дуамед» можна
виділити декілька рівнів бізнес-процесів:
основні бізнес-процеси;
забезпечуючі бізнес-процеси;
бізнес-процеси управління.
Основні бізнес-процеси:
планування закупівель медичних препаратів;
виробництво медикаментів згідно рецептів;
продаж медичної продукції.
Забезпечуючі бізнес-процеси – це допоміжні процеси, які забезпечують
стабільну діяльність, але не приносять прибуток. До забезпечуючих бізнес-
процесів можна віднести:
адміністративно-господарське забезпечення;
юридичне забезпечення;
IT-забезпечення та зв'язок;
внутрішній контроль;
бухгалтерський облік та звітність та інші.
Бізнес-процеси управління – допоміжні процеси, за допомогою яких
здійснюється управління діяльністю підприємства та основними об'єктами:
стратегічне управління;
управління маркетингом;
управління ризиками;
управління персоналом;
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 9
а
управління бізнес-процесами та розвитком;
регіональне управління та інші.
Серед усього розмаїття процесів, що відбуваються в ТОВ «Дуамед»,
вибираємо для автоматизації процес планування закупівлі та збуту медичної
продукції як найбільш відповідальний і, в той же час, неавтоматизований.
Процес планування і процес збуту відносяться до основних бізнес-процесів
на даному підприємстві. Процес планування є досить трудомістким і
рутинним, пов'язаним з обробкою великої кількості документів. Помилки при
плануванні можуть призвести до незадоволення попиту споживачів або до
накопичення великих залишків медичної продукції на складі і, як наслідок,
до втрати клієнтів, зниження репутації підприємства, зниження рівня
прибутку. Від раціональної організації потоків інформації, пов'язаної з
плануванням закупівель і збуту медикаментів, залежать оперативність і
ефективність управління підприємством [5-7].
2.2 Опис задачі, яка проектується
Автоматизована інформаційна система призначена для автоматизації
процесів закупівлі та продажу медичної продукції.
В розроблюваній інформаційній системі будуть розв’язані наступні
задачі:
внесення даних про медичні препарати;
створення замовлень на поставку медичної продукції;
продаж медичних продуктів;
аналіз залишків продукції на час знаходження кожної поставленої
партії на складі;
формування замовлення на поставку продукції згідно залишків на
складі.
Економічна сутність задачі «Внесення даних про медичну
продукцію» зводиться до внесення в автоматизовану інформаційну систему
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 10
а
даних про медичну продукцію, що відпускається підприємством. Вказуються
наступні дані:
назва продукції;
фармакологічна група;
пакування продукції;
ціна закупки;
ціна продажу.
Економічна сутність задачі «Створення замовлень на поставку
медичної продукції» зводиться до внесення даних про продукцію, яку
підприємство збирається придбати для подальшого продажу. Вказуються
наступні дані:
інформація про замовлення;
дата створення;
назва постачальника;
перелік продукції з інформацією про:
назву продукції,
пакування,
кількість у замовленні.
При роботі із замовленням відслідковується стан рахунку та термін
поставки продукції.
Економічна сутність задачі «Продаж медичних продуктів»
зводиться до внесення даних про продаж медичної продукції. Вказуються
наступні дані:
дата продажу;
назва продажу;
покупець;
перелік продукції з інформацією про:
назву продукції,
пакування,
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 11
а
кількість у замовленні.
Економічна сутність задачі «Аналіз залишків продукції на та час
знаходження поставленої партії на складі» зводиться до формування звіту
про час перебування тої чи іншої, не проданої партії товару на складі.
Економічна сутність задачі «Формування замовлення на поставку
продукції згідно залишків на складі» зводиться до автоматичного
формування замовлення на поповнення складських залишків продукції.
Система аналізує залишки на складі і формує замовлення таким чином, що
результатні залишки продукції будуть не менші чим вказано користувачем.
2.3 Постановка задачі
Метою проектування і розробки автоматизованої інформаційної системи
планування закупівлі та збуту медичних препаратів з точки зору отримання
непрямого ефекту є підвищення прибутку підприємства та залучення більшої
кількості клієнтів за рахунок:
зниження ймовірності надання недостовірної інформації при
плануванні закупівель і збуту медикаментів;
своєчасного планування запасів медикаментів;
підвищення якості обслуговування клієнтів;
більш швидкого і якісного прийняття рішення;
посилення контролю з боку керівництва.
З точки зору отримання прямого ефекту метою проектування і
розробки автоматизованої інформаційної системи планування закупівлі та збуту
медичних препаратів є:
зниження вартісних витрат на обробку інформації;
зниження трудових витрат на обробку інформації;
підвищення достовірності розрахунків;
збільшення точності розрахунків;
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 12
а
зниження витрат часу на виконання рутинних операцій з оформлення
документів;
вивільнення персоналу;
підвищення оперативності отримання результатної інформації.
На поточний момент процес мало автоматизований, облік закупівлі та
збуту медикаментів ведеться за допомогою пакета MS Office [8].
Самими витратними за часовими і трудовими ресурсами є підготовка
звітів і пошук інформації по конкретному документу. Це викликано великою
кількістю вхідних і вихідних документів по медикаментам, що, в підсумку,
значно ускладнює пошук інформації в них.
Отже, завдання бакалаврської роботи – автоматизувати процес
планування та збуту медичної продукції, тобто автоматизувати ті задачі, які
описані в пункті 2.2 даної роботи.
2.4 Обґрунтування проектних рішень по програмному та
технічному забезпеченню
В якості сервера баз даних було обрано СУБД FireBird. FireBird є
абсолютно безкоштовною системою, яка може бути вільно розповсюджена.
Свій початок FireBird веде від СУБД InterBase. Незважаючи на
безкоштовність, Firebird використовується в різних промислових системах
(складські та господарські, фінансовий і державний сектори) на рівні з
платними системами, ні в чому їм не уступаючи і дозволяючи будувати як
проекти промислового масштабу, так і невеликі комплекси [9].
В якості інструментального засобу обрано середовище розробки Delphi,
яка входить до складу Embarcadero RAD Studio і забезпечує зручний
графічний інтерфейс і надійний зв'язок з СУБД.
У процесі експлуатації автоматизованої інформаційної системи
технічне забезпечення може бути модернізовано для досягнення більш
високих показників швидкодії. Але на даний момент технічне забезпечення
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 13
а
цілком відповідає вимогам інформаційної системи і не потребує змін або
докупівлі додаткового обладнання.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 14
а
3 РОЗРОБКА БАЗИ ДАНИХ
3.1 Інформаційна модель та її опис
В пункті 2.2 даної роботи був наданий перелік і опис задач, які
проектуються, а саме:
внесення даних про медичні препарати;
створення замовлень на поставку медичної продукції;
продаж медичних продуктів;
аналіз залишків продукції на час знаходження кожної поставленої
партії на складі;
формування замовлення на поставку продукції згідно залишків на
складі.
Схематично взаємозв'язок задач представлено у вигляді інформаційної
моделі (рисунок 3.1).
Рисунок 3.1 – Інформаційна модель
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 15
а
3.2 Характеристика вхідної та вихідної інформації
Вхідна інформація. До вхідної інформації системи входять наступні
документи:
1) дані про медичну продукцію,
2) заявка на продаж медичної продукції,
3) заявка на поповнення складських запасів.
Опишемо поля вхідних документів.
1) Дані про медичну продукцію. Документ служить джерелом для
внесення в інформаційну систему даних про нову медичну продукцію чи
зміну параметрів існуючої. Приклад вхідного документу показано на
рисунку 3.2.
Рисунок 3.2 – Приклад даних про медичну продукцію
2) Заявка на продаж медичної продукції. Це документ, на основі
якого відбувається відпуск медичної продукції. Оголошується усно, при
продажі продукції в роздріб, може бути поданий у вигляді рецепту від лікаря
чи заявкою від медичних закладів у випадку оптових продаж. На рисунку 3.3
наведено приклад заявки від медичного закладу.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 16
а
Рисунок 3.3 – Приклад заявки від медичного закладу
3) Заявка на поповнення складських запасів. Цей документ є
обґрунтуванням для створення замовлення на поставку медичної продукції
від поставщиків. Як правило формується завідуючим складу чи менеджером
по закупівлі після аналіз залишків товару на складі [10].
Вихідна інформація. До складу вихідної інформації входять наступні
документи:
1) картка препарату;
2) прайс-лист медичної продукції, що продається аптекою;
3) картка замовлення;
4) відомість заказів;
5) рахунок на продаж медичної продукції;
6) відомість продажу;
7) відомість залишків на складі.
Опишемо докладніше кожен із вихідних документів.
1) Картка препарату. Відображає всю доступну інформацію про
медичну продукцію. Використовується фармацевтом під час продажу товару
чи як пам'ятка покупцеві про продукцію. Приклад документу показано на
рисунку 3.4.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 17
а
Рисунок 3.4 – Приклад картки медичної продукції
2) Прайс-лист медичної продукції. Служить джерелом інформації про
перелік медичної продукції в аптеці. Використовується фармацевтами та
клієнтами аптеки. Приклад прайсу показано на рисунку 3.5.
Рисунок 3.5 – Приклад прайсу аптеки
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 18
а
3) Картка замовлення. Даний документ відсилається постачальнику
медичної продукції і є обґрунтуванням для поставки ним продукції на склад
аптеки. Приклад картки показано на рисунку 3.6.
Рисунок 3.6 – Приклад картки замовлення медичної продукції
4) Відомість замовлень. Відображає перелік замовлень медичної
продукції згідно параметрів заданих користувачем. Приклад відомості
показано на рисунку 3.7.
Рисунок. 3.7 – Приклад відомості замовлень
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 19
а
5) Рахунок на продаж медичної продукції. Документ друкується та
видається покупцеві для подальшої оплати. Приклад рахунку показано на
рисунку 3.8.
Рисунок 3.8 – Приклад рахунку на продаж товару
6) Відомість продажу. Відображає інформацію про продажі медичної
продукції згідно параметрів відбору заданих користувачем. Приклад
відомості показано на рисунку 3.9.
Рисунок 3.9 – Приклад відомості продаж
7) Відомість залишків на складі. Показує детальну інформацію про
залишки кожної партії,що поступила на склад аптеки та час її перебування на
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 20
а
складі. Відомість дозволяє виявити залежані партії товару, що погано
продаються. Використовується начальником складу та іншими особами, які
відповідають за наповнення складу продукцією. Приклад відомості показано
на рисунку 3.10.
Рисунок 3.10 – Приклад відомості залишків медичної продукції на складі
3.3 Проектування бази даних
3.3.1 Розробка інфологічної моделі бази даних
Розробимо модель сутностей системи та зв'язків між ними для
зберігання й обробки вхідної інформації, формування вихідних даних [11].
У інфологічній моделі ми визначимо 12 сутностей:
1) фармакологічні групи;
2) види пакування медичної продукції;
3) медична продукція;
4) постачальники медичної продукції;
5) покупці медичної продукції;
6) корзина вибору медичної продукції;
7) замовлення;
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 21
а
8) продукція у замовлення;
9) продажі;
10) продукція у продажах;
11) партії продажу товару;
12) розрахунок замовлень для поповнення складських запасів.
Опишемо кожну сутність, її призначення, інформаційні поля і зв'язок
між ними.
1) Сутність «Фармакологічні групи» – зберігає в собі дані про
групи медичної продукції. Містить наступні інформаційні поля (таблиця 3.1):
Таблиця 3.1 – Інформаційні поля сутності «Фармакологічні групи»
Поле Тип даних Розмір Обмеження
Код групи Число Ціле Унікальне, обов'язкове
Назва групи Текст 100 символів Унікальне, обов'язкове
2) Сутність «Види пакування медичної продукції» – зберігає в собі
дані про те як упаковано продукцію. Містить наступні інформаційні поля
(таблиця 3.2):
Таблиця 3.2 – Інформаційні поля сутності «Види пакування медичної
продукції»
Поле Тип даних Розмір Обмеження
Код пакування Число Ціле Унікальне, обов'язкове
Назва пакування Текст 10 символів Унікальне, обов'язкове
Опис Текст 100 символів
3) Сутність «Медична продукція» – зберігає в собі дані про медичну
продукцію. Містить наступні інформаційні поля (таблиця 3.3):
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 22
а
Таблиця 3.3 – Інформаційні поля сутності «Медична продукція»
Поле Тип даних Розмір Обмеження
Код продукції Число Ціле Унікальне,
обов'язкове
Код групи Число Ціле Обов'язкове
Код пакування Число Ціле Обов'язкове
Назва Текст 100 символів Унікальне,
обов'язкове
Ціна Грошовий Обов'язкове
Зображення Бінарний
продукції
Опис продукції Текст 100 символів
Сутність «Медична продукція» має зв'язок з іншими сутностями, а саме:
поле «Код групи» обмежено значеннями поля «Код групи» сутності
«Фармакологічні групи»;
поле «Код пакування» обмежено значеннями поля «Код пакування»
сутності «Види пакування медичної продукції».
4) Сутність «Постачальники медичної продукції» – зберігає в собі
дані про постачальників медичної продукції. Містить наступні інформаційні
поля (таблиця 3.4):
Таблиця 3.4 – Інформаційні поля сутності «Постачальники медичної
продукції»
Поле Тип Розмір Обмеження
даних
Код постачальника Число Ціле Унікальне, обов'язкове
Назва Текст 100 символів Унікальне, обов'язкове
Банківські реквізити Текст 100 символів
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 23
а
Телефони Текст 20 символів
Адреса Текст 255 символів
5) Сутність «Покупці медичної продукції» – зберігає в собі дані про
постачальників медичної продукції. Містить наступні інформаційні поля
(таблиця 3.5):
Таблиця 3.5 – Інформаційні поля сутності «Покупці медичної
продукції»
Поле Тип даних Розмір Обмеження
Код покупця Число Ціле Унікальне, обов'язкове
Назва Текст 100 символів Унікальне, обов'язкове
Банківські реквізити Текст 100 символів
Телефони Текст 20 символів
Адреса Текст 255 символів
6) Сутність «Корзина вибору медичної продукції» – зберігає в собі
дані про постачальників медичної продукції. Містить наступні інформаційні
поля (таблиця 3.6):
Таблиця 3.6 – Інформаційні поля сутності «Корзина вибору медичної
продукції»
Поле Тип даних Розмір Обмеження
Код запису Число Ціле Унікальне,
обов'язкове
Код продукції Число Ціле Обов'язкове
Кількість продукції Число Ціле Обов'язкове
Ціна Грошовий Обов'язкове
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 24
а
Сутність «Корзина вибору медичної продукції» має зв'язок з іншими
сутностями, а саме, поле «Код продукції» обмежено значеннями поля «Код
продукції» сутності «Медична продукція».
7) Сутність «Замовлення» – зберігає в собі дані про замовлення
медичної продукції. Містить наступні інформаційні поля (таблиця 3.7):
Таблиця 3.7 – Інформаційні поля сутності «Замовлення»
Поле Тип даних Розмір Обмеження
Код замовлення Число Ціле Унікальне,
обов'язкове
Код постачальника Число Ціле Обов'язкове
Дата формування Дата Обов'язкове
Дата поставки на склад Дата
Назва замовлення Текст 100 символів Обов'язкове
Загальна ціна Грошовий Обов'язкове
Стан обробки Число Ціле Обов'язкове
Сутність «Замовлення» має зв'язок з іншими сутностями, а саме, поле
«Код постачальника» обмежено значеннями поля «Код постачальника»
сутності «Постачальники».
8) Сутність «Продукція у замовленні» – зберігає в собі дані про те яку
медичну продукції замовлену у тому чи іншому замовлені. Містить наступні
інформаційні поля (таблиця 3.8):
Таблиця 3.8 – Інформаційні поля сутності «Продукція у замовленні»
Поле Тип даних Розмір Обмеження
Код запису Число Ціле Унікальне, обов'язкове
Код замовлення Число Ціле Обов'язкове
Код продукції Число Ціле Обов'язкове
Кількість продукції Число Ціле Обов'язкове
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 25
а
Ціна Грошовий Обов'язкове
Залишок на складі Число Ціле
Дата надходження на склад Дата
Сутність «Продукція у замовленні» має зв'язок з іншими сутностями, а саме:
поле «Код замовлення» обмежено значеннями поля «Код
замовлення» сутності «Замовлення»;
поле «Код продукції» обмежено значеннями поля «Код продукції»
сутності «Медична продукція».
9) Сутність «Продажі» – зберігає в собі дані про продаж медичної
продукції. Містить наступні інформаційні поля (таблиця 3.9):
Таблиця 3.9 – Інформаційні поля сутності «Продажі»
Поле Тип даних Розмір Обмеження
Код продажу Число Ціле Унікальне, обов'язкове
Код покупця Число Ціле Обов'язкове
Дата продажу Дата Обов'язкове
Назва продажу Текст 100 символів Обов'язкове
Загальна ціна Грошовий Обов'язкове
Сутність «Продажі» має зв'язок з іншими сутностями, а саме, поле
«Код покупця» обмежено значеннями поля «Код покупця» сутності
«Покупці».
10) Сутність «Продукція у продажах» – зберігає в собі дані про те яку
медичну продукції продано при тій чи іншій продажі. Містить наступні
інформаційні поля (таблиця 3.10):
Таблиця 3.10 – Інформаційні поля сутності «Продукція у продажах»
Поле Тип даних Розмір Обмеження
Код запису Число Ціле Унікальне, обов'язкове
Код продажу Число Ціле Обов'язкове
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 26
а
Код продукції Число Ціле Обов'язкове
Кількість продукції Число Ціле Обов'язкове
Ціна Грошовий Обов'язкове
Сутність «Продукція у продажах» має зв'язок з іншими сутностями, а
саме:
поле «Код продажу» обмежено значеннями поля «Код продажу»
сутності «Продажі»;
поле «Код продукції» обмежено значеннями поля «Код продукції»
сутності «Медична продукція».
11) Сутність «Партії продажу товару» – зберігає в собі дані про те, з
яких вхідних партій продукції формувався продаж. Містить наступні
інформаційні поля (таблиця 3.11):
Таблиця 3.11 – Інформаційні поля сутності «Партії продажу товару»
Поле Тип даних Розмір Обмеження
Код запису Число Ціле Унікальне, обов'язкове
Дата партії Дата Обов'язкове
Код продукції у продажу Число Ціле Обов'язкове
Код продукції у замовлені Число Ціле Обов'язкове
Кількість продукції Число Ціле Обов'язкове
Ціна продажу Грошовий Обов'язкове
Ціна покупки Грошовий Обов'язкове
Сутність «Партії продажу товару» має зв'язок з іншими сутностями, а
саме:
поле «Код продукції у продажу» обмежено значеннями поля «Код
запису» сутності «Продукція у продажах»;
поле «Код продукції у замовлені» обмежено значеннями поля «Код
запису» сутності «Продукція у замовленні».
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 27
а
12) Сутність «Розрахунок замовлень для поповнення складських
запасів» – зберігає в собі дані про розрахований прогноз поповнення
складських запасів. Містить наступні інформаційні поля (таблиця 3.12):
Таблиця 3.12 – Інформаційні поля сутності «Розрахунок замовлень для
поповнення складських запасів»
Поле Тип даних Розмір Обмеження
Код запису Число Ціле Унікальне, обов'язкове
Код продукції Число Ціле Обов'язкове
Кількість продукції Число Ціле Обов'язкове
Сутність «Партії продажу товару» має зв'язок з іншими сутностями, а
саме, поле «Код продукції» обмежено значеннями поля «Код медичної
продукції» сутності «Медична продукція».
Відобразимо спроектовані нами сутності і зв'язки між ними на
інфологічній схемі (рисунок 3.11).
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 28
а
Рисунок 3.11 – Інфологічна схема
3.3.2 Розробка даталогічної моделі бази даних
Для зберігання інформації про сутності був обраний спосіб зберігання в
базі даних у вигляді таблиць і зв'язків один до багатьом. Початок розробки
бази даних почнемо з побудови ER-діаграми (рисунок 3.12).
ER-діаграма спроектована за допомогою інструменту
PowerDesigner [9].
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 29
а
Рисунок 3.12 – ER-діаграма
Відповідність між сутностями и таблицями в базі даних показана в
таблиці 3.13.
Таблиця 3.13 – Відповідність між сутностями и таблицями бази даних
Назва сутності Фізична таблиця
Фармакологічні групи GOOD_GROUP
Види пакування медичної продукції MEASURE
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 30
а
Медична продукція GOODS
Постачальники медичної продукції SUPPLIER
Покупці медичної продукції CUSTOMER
Корзина вибору медичної продукції BASKET
Замовлення ORDER
Продукція у замовленні ORDER_ITEM
Продажі SALES
Продукція у продажах SALES_ITEM
Партії продажу товару PARTS
Розрахунок замовлень для поповнення складських запасів TO_ORDER
Створимо фізично таблиці в базі даних та надамо приклад їх
заповнення.
1) Таблиця «GOOD_GROUP». Структура таблиці (таблиця 3.14):
Таблиця 3.14 – Структура таблиці «GOOD_GROUP»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
GROUP_NAME VARCHAR 100 Not null
Приклад заповнення таблиці показано на рисунку 3.13.
Рисунок 3.13 – Приклад заповнення таблиці «GOOD_GROUP»
2) Таблиця «MEASURE». Структура таблиці (таблиця 3.15):
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 31
а
Таблиця 3.15 – Структура таблиці «MEASURE»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
MEASURE_NAME VARCHAR 10 Not null
DESCRIPTION VARCHAR 100
Приклад заповнення таблиці показано на рисунку 3.14.
Рисунок 3.14 – Приклад заповнення таблиці «MEASURE»
3) Таблиця «GOODS». Структура таблиці (таблиця 3.16):
Таблиця 3.16 – Структура таблиці «GOODS»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
ID_GROUP INTEGER FK1
Продовження таблиці 3.16
ID_MEASURE INTEGER FK2
GOOD_NAME VARCHAR 100 Not null
PRICE NUMERIC (15,4) Not null
GOOD_PHOTO BLOB
DESCRIPTION VARCHAR 255
Приклад заповнення таблиці показано на рисунку 3.15.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 32
а
Рисунок 3.15 – Приклад заповнення таблиці «GOODS»
4) Таблиця «SUPPLIER». Структура таблиці (таблиця 3.17):
Таблиця 3.17 – Структура таблиці «SUPPLIER»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
SUPP_NAME VARCHAR 100 Not null
BANK_DETAIL VARCHAR 100
PHONE VARCHAR 20
ADDRESS VARCHAR 255
Приклад заповнення таблиці показано на рисунку 3.16.
Рисунок 3.16 – Приклад заповнення таблиці «SUPPLIER»
5) Таблиця «CUSTOMER». Структура таблиці (таблиця 3.18):
Таблиця 3.18 – Структура таблиці «CUSTOMER»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
CUST_NAME VARCHAR 100 Not null
BANK_DETAIL VARCHAR 100
PHONE VARCHAR 20
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 33
а
ADDRESS VARCHAR 255
Приклад заповнення таблиці показано на рисунку 3.17.
Рисунок 3.17 – Приклад заповнення таблиці «CUSTOMER»
6) Таблиця «BASKET». Структура таблиці (таблиця 3.19):
Таблиця 3.19 – Структура таблиці «BASKET»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
ID_GOOD INTEGER FK1
GOOD_COUNT INTEGER Not null
PRICE NUMERIC (15,4) Not null
ADDRESS VARCHAR 255
Приклад заповнення таблиці показано на рисунку 3.18.
Рисунок 3.18 – Приклад заповнення таблиці «BASKET»
7) Таблиця «SALES». Структура таблиці (таблиця 3.20):
Таблиця 3.20 – Структура таблиці «SALES»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 34
а
ID_CUSTOMER INTEGER FK1
SALE_DATE DATE Not null
SALE_INFO VARCHAR 100 Not null
PRICE NUMERIC (15,4) Not null
Приклад заповнення таблиці показано на рисунку 3.19.
Рисунок 3.19 – Приклад заповнення таблиці «SALES»
8) Таблиця «SALES_ITEM». Структура таблиці (таблиця 3.21):
Таблиця 3.21 – Структура таблиці «SALES»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
ID_SALE INTEGER FK1
ID_GOOD INTEGER FK2
GOOD_COUNT INTEGER Not null
GOOD_PRICE NUMERIC (15,4) Not null
Приклад заповнення таблиці показано на рисунку 3.20.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 35
а
Рисунок 3.20 – Приклад заповнення таблиці «SALES»
9) Таблиця «ORDERS». Структура таблиці (таблиця 3.22):
Таблиця 3.22 – Структура таблиці «ORDERS»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
ID_SUPPLIER INTEGER FK1
ORDER_DATE DATE Not null
END_DATE DATE
ORDER_NAME VARCHAR 100 Not null
PRICE NUMERIC (15,4) Not null
STATUS SMALINT Not null
Приклад заповнення таблиці показано на рисунку 3.21.
Рисунок 3.21 – Приклад заповнення таблиці «ORDERS»
10) Таблиця «ORDER_ITEM». Структура таблиці (таблиця 3.23):
Таблиця 3.23 – Структура таблиці «ORDER_ITEM»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
ID_ORDER INTEGER FK1
ID_GOOD INTEGER FK2
GOOD_COUNT INTEGER Not null
GOOD_PRICE NUMERIC (15,4) Not null
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 36
а
GOOD_REST INTEGER
PART_DATE DATE
Приклад заповнення таблиці показано на рисунку 3.22.
Рисунок 3.22 – Приклад заповнення таблиці «ORDER_ITEM»
11) Таблиця «PARTS». Структура таблиці (таблиця 3.24):
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 37
а
Таблиця 3.24 – Структура таблиці «PARTS»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
PART_DATE DATE Not null
ID_SITEM INTEGER FK1
ID_OITEM INTEGER FK2
PART_COUNT INTEGER Not null
PRICE_BUY NUMERIC (15,4) Not null
PRICE_SELL NUMERIC (15,4) Not null
Приклад заповнення таблиці показано на рисунку 3.23.
Рисунок 3.23 – Приклад заповнення таблиці «PARTS»
12) Таблиця «TO_ORDER». Структура таблиці (таблиця 3.25):
Таблиця 3.25 – Структура таблиці «TO_ORDER»
Поле Тип даних Розмір Обмеження
ID INTEGER PK
ID_GOOD INTEGER FK1
GOOD_COUNT INTEGER Not null
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 38
а
Приклад заповнення таблиці показано на рисунку 3.24.
Рисунок 3.24 – Приклад заповнення таблиці «TO_ORDER»
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 39
а
4 РЕАЛІЗАЦІЯ ПРОГРАМНОЇ ЧАСТИНИ
4.1 Загальні положення (дерево функцій)
Функції, що виконуються автоматизованою інформаційною системою,
можна розбити на дві категорії:
основні функції;
допоміжні функції.
До основних функцій відносяться:
внесення даних про медичну продукцію;
внесення даних про замовлення;
внесення даних про продажі медичної продукції;
аналіз залишків продукції на складі аптеки.
До допоміжних функцій відносяться:
формування та друк вихідної інформації;
робота з довідниками.
Схематично дерево функцій автоматизованої інформаційної системи
показано на рисунку 4.1.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 40
а
Рисунок 4.1 – Дерево функцій автоматизованої інформаційної системи
планування закупівлі та збуту медичних препаратів
4.2 Структурна схема пакету
Програмне забезпечення автоматизованої інформаційної системи
планування закупівлі та збуту медичних препаратів складається з файлу проекту
та шістьох програмних модулів (таблиця 4.1).
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 41
а
Таблиця 4.1 – Зв’язок програмних модулів і таблиць БД
Призначення Програмний Файл опису Таблиці, до яких
модуль компонентів звертається
екранної програмний модуль
форми
Файл проекту PharmSilo.dpr
інформаційної системи
Робота з базою даних, uData.pas uData.dfm GOOD_GROUP
звіти для вихідних MEASURE
GOODS
форм, іконки для SUPPLIER
кнопок CUSTOMER
BASKET
ORDER
ORDER_ITEM
SALES
SALES_ITEM
PARTS
TO_ORDER
Головна форма uMain.pas uMain.dfm До всіх таблиць
Форма редагування uEddGood.pas uEddGood.dfm GOOD_GROUP
даних про медичну MEASURE
GOODS
продукцію
Форма редагування uEdOrder.pas uEdOrder.dfm ORDER
даних про замовлення SUPPLIER
Форма редагування uEdSale.pas uEdSale.dfm SALES
даних про продажі CUSTOMER
Форма редагування uBasket.pas uBasket.dfm BASKET
даних про продукцію в GOODS
кошику
Крім програмних модулів до складу пакету входить файл бази
даних PharmSilo.FDB.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 42
а
4.3 Форми розробленої автоматизованої інформаційної системи та
їх взаємодія
Основне навантаження системи припадає на головну форму. На ній
редагується більшість даних, з неї запускається формування вихідної
інформації.
Концептуально головна форма складається з п'яти сторінок:
кошик вибору медикаментів;
робота з замовленнями медикаментів;
перелік продаж медикаментів;
аналіз продаж та залишків на складі;
робота з довідниками.
Кожна сторінка розбита на три області:
перегляду та редагування даних;
керуючих елементів;
перемикання сторінок.
Вигляд сторінки «Кошик вибору медикаментів» та позначення
областей показано на рисунку 4.2.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 43
а
Рисунок 4.2 – Сторінка «Кошик вибору медикаментів» та робочі області
Структура інших сторінок аналогічна. Опишемо призначення кожної
сторінки.
1) Сторінка «Кошик вибору медикаментів». Основне призначення
даної сторінки – це формування набору медичної продукції у кошику (група
елементів управління «Робота за кошиком») для подальшого формування
закупівлі чи продажу медичної продукції (група елементів управління
«Формування»). Для зміни кількості та вартості продажу медикаментів у
кошику служить форма «Редагування позиції у кошику» (рисунок 4.3).
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 44
а
Рисунок 4.3 – Форма «Редагування позиції у кошику»
Також дана сторінка має набір елементів для редагування списку
медичної продукції (група елементів управління «Робота з переліком
медикаментів»). Для редагування даних про медикамент використовується
форма «Редагування даних про медичну продукцію» (рисунок 4.4).
Рисунок 4.4 – Форма «Редагування даних про медичну продукцію»
Крім редагування даних, сторінка викликає процедури формування
вихідної інформації «Друк картки препарату» та «Прайс-лист» (група
елементів управління «Друковані форми»).
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 45
а
2) Сторінка «Робота з замовленнями медикаментів». Призначення
сторінки перегляду та редагування даних про замовлення показано на
рисунку 4.5.
Рисунок 4.5 – Сторінка «Робота з замовленнями медикаментів»
Елементи управління сторінки дозволяють редагувати замовлення
(група елементів управління «Керування замовленнями»). Для редагування
даних про замовлення створена форма «Редагування параметрів замовлення»
(рисунок 4.6).
Рисунок 4.6 – Форма «Редагування параметрів замовлення»
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 46
а
Група елементів управління «Обробка замовлення» дозволяють
змінити його статус на «Відправлено постачальнику» та «Доставлено на
склад». Група елементів управління «Друк документів» формують вихідну
інформацію «Картка замовлення» та «Відомість заказів».
3) Сторінка «Перелік продаж медикаментів». На даній сторінці
переглядається та редагується інформація про продаж медичної продукції
(рисунок 4.7).
Рисунок 4.7 – Сторінка «Перелік продаж медикаментів»
Для редагування даних про продаж (група елементів управління
«Керування продажами») служить форма «Редагування продажу»
(рисунок 4.8).
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 47
а
Рисунок 4.8 – Форма «Редагування продажу»
Група елементів управління «Друк документів» формують вихідну
інформацію «Друк рахунку» та «Друк відомості продаж».
4) Сторінка «Аналіз продаж та залишків на складі». Призначення
сторінки – оцінити залишки продукції на складі та створити замовлення на їх
поповнення в разі необхідності (рисунок 4.9).
Рисунок 4.9 – Сторінка «Аналіз продаж та залишків на складі»
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 48
а
Користувач системи може переглянути дані про залишки та
роздрукувати вихідну форму «Відомість залишків на складі». Група
елементів управління «Робота з дозамовленнями» дозволяє розрахувати
кількість медичної продукції, яку потрібно замовити для поповнення
складських залишків. Розраховані дані можна передати в кошик вибору
медикаментів для зміни даних та подальшого формування замовлення.
5) Сторінка «Робота з довідниками». Дана сторінка розбита на 4
закладки згідно із кількістю довідників (рисунок 4.10).
Рисунок 4.10 – Сторінка «Робота з довідниками»
Користувач системи може змінювати довідники, редагуючи чи
добавляючи записи. Активний довідник можна роздрукувати.
4.4 Організація пошуку та фільтрації інформації
Для пошуку та фільтрації інформації призначено інструмент «Фільтр
поля». Дані табличних форм можуть бути відфільтровані по будь-якому
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 49
а
полю згідно побажань користувача. Інструмент нагадує автофільтр
табличного процесора MS Excel. Покажемо на прикладі роботу інструменту.
Припустимо, що нам потрібно відібрати знеболюючі медикаменти
вартістю від 10 до 80 гривень. До фільтрування перелік виглядав наступним
чином (рисунок 4.11):
Рисунок 4.11 – Перелік медикаментів до фільтрування
Клацнемо мишкою на правій частині поля «Група медикаментів» та
поставимо галочку на фармакологічній групі «Знеболюючі» (рисунок 4.12).
Рисунок 4.12 – Вибір групи «Знеболюючі»
В переліку медикаментів залишилися лише знеболюючі (рисунок 4.13).
Рисунок 4.13 – Відібрано знеболюючі медикаменти
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 50
а
Далі встановимо фільтр на ціну медикаменту. Для на фільтрі поля
«Ціна» виберемо пункт «Вибір». В діалоговому вікні «Користувацький
фільтр» встановимо умови відбору ціни (рисунок 4.14).
Рисунок 4.14 – Встановлення користувацького фільтру
Натискання кнопки «Ок» призведе до додавання нової умови фільтрації
медикаментів. Результат відбору медикаментів згідно умов фільтрації
показано на рисунку 4.15.
Рисунок 4.15 – Медикаменти, відібрані згідно вказаних умов
Як можна замітити, умови фільтрації відповідають завданню.
Установка фільтрів в системі проста і не потребує додаткової кваліфікації
користувача. Накладений фільтр відображається в нижній частині таблиці
(рисунок 4.16).
Рисунок 4.16 – Опис накладеного фільтру
Там же знаходяться кнопки для відключення та видалення фільтру.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 51
а
5 РОЗРОБКА ДОКУМЕНТАЦІЇ ДО СУПРОВОДУ
АВТОМАТИЗОВАНОЇ ІНФОРМАЦІЙНОЇ СИСТЕМИ ПЛАНУВАННЯ
ЗАКУПІВЛІ ТА ЗБУТУ МЕДИЧНИХ ПРЕПАРАТІВ
5.1 Інструкція системного адміністратора
Пакет програмного забезпечення для інформаційної системи
складається з трьох файлів:
виконуючий файл PharmSilo.exe,
файл українізації повідомлень в табличних формах PharmSilo.ini,
файл бази даних FireBird PharmSilo.FDB.
Для роботи системи потрібно встановлення безкоштовного серверу баз
даних Firebird. Для адміністрування бази даних можна використати утиліту
IBExpert. Всі файли системи потрібно розмістити в одній і тій самій
директорії. На директорію потрібно дати право на читання, запис та
видалення.
5.2 Інструкція користувача
Дана інформаційна система призначена для закупівлі та продажу
медичної продукції. Для того, щоб створити замовлення на поставку чи
продаж продукції, потрібно спочатку накопити їх у кошику вибору
медикаментів. Для цього потрібно перейти на сторінку
, вибрати необхідний медикамент зі списку та
натиснути кнопку . Вибраний медикамент з’явиться у кошику
в одиничній кількості по обліковій ціні. Для того, щоб змінити кількість чи
ціну – потрібно натиснути на кнопку та змінити їх у вікні
редагування даних. Також можна видалити медикамент із кошика чи взагалі
його очистити кнопками та відповідно.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 52
а
Якщо медикаменту немає у списку, то його можна створити чи відредагувати
за допомогою набору елементів.
Після накопичення потрібної кількості товарів у кошику можна
приступати до замовлення чи продажу продукції. Ви можете виконати
та .
Замовлення продукції починається з натискання на кнопку
. Система створить нове замовлення зі статусом
«Редагується», викличе діалогове вікно для редагування параметрів
замовлення та переключиться на сторінку . В
подальшому можна самостійно викликати це вікно натисканням кнопки
. Замовлення зі статусом «Редагується» можна видаляти
кнопкою . Після редагування всіх деталей замовлення
потрібно відправити його постачальнику, натиснувши на кнопку
. Статус замовлення зміниться на «Відправлено
постачальнику», видалення такого замовлення неможливе. Після приходу
товарів від постачальника слід відмітити цей факт натисканням кнопки
. Система запитає дату доставки та встановить
статус замовлення в «Доставлено на склад». Відтепер товари у замовленні
впливають на формування залишків на складі та можуть приймати участь у
продажі. Також на цій сторінці можна надрукувати документи
та .
Продаж товару також починається з накопичення медикаментів у
кошику та натисканням кнопки . Система перевірить
наявність залишків медикаменту на складі, створить новий продаж та
перейде на сторінку . Після цього буде запропоновано
змінити дані про продаж.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 53
а
Послідовності закупівель та продажів формують дані про залишки
медикаментів на складі. Для аналізу цих даних та формування замовлень на
поповнення складських запасів служить сторінка .
На цій сторінці можна переглянути та роздрукувати
залишків медикаментів (рисунок 5.1).
Рисунок 5.1 – Приклад відомості залишків медикаментів на складі
Вам буде показано, коли медикамент поступив на склад, в якій
кількості і скільки ще є на складі. Також буде пораховано кількість днів
перебування препарату на складі. Аналізуючи ці дані, можна виявити партії
медикаментів, які залежались на складі.
Група елементів керування сторінки (рисунок 5.2):
Рисунок 5.2 – Група елементів керування сторінки
Ця група служить для формування таблиці замовлень медикаментів для
отримання залишків, рівними значенню, вказаному у полі вводу
. Алгоритм розрахунку проаналізує
залишки і сформує таблицю замовлень. Наприклад: припустимо, що ми
маємо наступні залишки медикаментів (таблиця 5.1):
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 54
а
Таблиця 5.1 – Залишки медикаментів на складі
Медикамент Залишок на складі
Медикамент 1 25
Медикамент 2 0
Медикамент 3 80
Медикамент 4 45
Ми хочемо сформувати замовлення таким чином, щоб залишок
кожного медикаменту був не менший, ніж 60 шт. В результаті буде
сформовано таблицю із наступними значеннями (таблиця 5.2):
Таблиця 5.2 – Сформовані замовлення медикаментів
Медикамент Скільки замовити?
Медикамент 1 35
Медикамент 2 60
Медикамент 4 15
Натисканням кнопки відбудеться перенесення
даних у кошик, після чого можна сформувати замовлення на поставку.
На сторінці можна відредагувати чи роздрукувати
. Для керування записами служить інструмент
«Навігатор» в нижній частині довідника.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 55
а
ВИСНОВКИ
Метою кваліфікаційної роботи бакалавра є проектування та розробка
автоматизованої інформаційної системи планування закупівлі та збуту
медичних препаратів.
Для досягнення поставленої мети в роботі були вирішені наступні
завдання:
проведено аналіз предметної області;
сформульовано вимоги до розроблюваної АІС;
визначені вхідна та вихідна інформації в АІС;
розроблені інфологічна та даталогічна моделі бази даних;
розроблений інтерфейс користувача;
розроблені інструкції для системного адміністратора та користувача.
В результаті була реалізована автоматизована інформаційна система
планування закупівлі та збуту медичних препаратів з наступними основними
функціями:
внесення даних про медичну продукцію;
внесення даних про замовлення;
внесення даних про продажі медичної продукції;
аналіз залишків продукції на складі аптеки.
Також в автоматизованій інформаційній системі реалізовані наступні
допоміжні функції:
формування та друк вихідної інформації;
робота з довідниками.
Головна форма розробленої автоматизованої інформаційної системи
складається з п'яти сторінок:
кошик вибору медикаментів,
робота з замовленнями медикаментів,
перелік продаж медикаментів,
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 56
а
аналіз продаж та залишків на складі,
робота з довідниками.
Кожна сторінка розбита на три області:
перегляд та редагування даних;
керуючі елементи;
перемикання сторінок.
Розроблена система передбачає друк наступних 7 вихідних документів:
1) картка препарату;
2) прайс-лист медичної продукції, що продається аптекою;
3) картка замовлення;
4) відомість заказів;
5) рахунок на продаж медичної продукції;
6) відомість продажу;
7) відомість залишків на складі.
Таким чином, розроблена автоматизована інформаційна система
забезпечує автоматизацію процесів планування закупівлі та збуту медичних
препаратів і відповідає вимогам, сформульованим в технічному завданні на
роботу.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 57
а
ДОДАТОК А
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор Володимир РУДНИЦЬКИЙ
__________________
«___» ____________ 2022 року
Автоматизована інформаційна система планування закупівлі
та збуту медичних препаратів
Специфікація
482.ЧДТУ.21705-01
Листів 2
Розробник _______________ Євгеній КОВТУН
Керівник _______________ Світлана ГРЕСЬКО
Черкаси 2022
2
482.ЧДТУ.21705-01
Позначення Найменування Примітка
Документація
482.ЧДТУ.21705-01 12 01 Текст програми
ДОДАТОК Б
Автоматизована інформаційна система планування закупівлі
та збуту медичних препаратів
Текст програми
482.ЧДТУ.21705-01 12 01
Листів 19
Розробник: Євгеній КОВТУН
Черкаси 2022
2
482.ЧДТУ.21705-01 12 01
Файл проекту PharmSilo.dpr
program PharmSilo;
uses
Vcl.Forms,
uMain in'uMain.pas'{fmMain},
uData in'uData.pas'{D: TDataModule},
uEddGood in'uEddGood.pas'{fmEddGood},
uEdOrder in'uEdOrder.pas'{fmEdOrder},
uEdSale in'uEdSale.pas'{fmEdSale},
uBasket in'uBasket.pas'{fmBasket};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar:=True;
Application.Title:='Система продажу медичної продукції';
Application.CreateForm(TD, D);
Application.CreateForm(TfmMain, fmMain);
Application.CreateForm(TfmEddGood, fmEddGood);
Application.CreateForm(TfmEdOrder, fmEdOrder);
Application.CreateForm(TfmEdSale, fmEdSale);
Application.CreateForm(TfmBasket, fmBasket);
Application.Run;
end.
Файл головної форми uMain.pas
unit uMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DBXFirebird, Data.SqlExpr,
Data.Win.ADODB, Vcl.Grids, Vcl.DBGrids, Data.DB, IBDatabase, IBCustomDataSet,
IBTable, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
dxRibbonSkins, cxPCdxBarPopupMenu, cxStyles, cxCustomData, cxFilter, cxData,
cxDataStorage, cxEdit, cxDBData, cxGridLevel, cxClasses, cxGridCustomView,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
Vcl.StdCtrls, Vcl.ExtCtrls, dxBar, dxStatusBar, dxRibbonStatusBar, cxPC,
dxRibbon,uData, cxContainer, cxImage, cxDBEdit, dxSkinsCore,
dxSkinOffice2007Black, dxSkinsdxBarPainter, dxSkinscxPCPainter, dxSkinsForm,
cxTextEdit, cxMemo, cxCurrencyEdit, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg,
dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
dxPSEdgePatterns, dxPSPDFExportCore, dxPSPDFExport, cxDrawTextUtils,
dxPSPrVwStd, dxPSPrVwAdv, dxPSPrVwRibbon, dxPScxPageControlProducer,
dxPScxGridLnk, dxPScxGridLayoutViewLnk, dxPScxEditorProducers,
dxPScxExtEditorProducers, dxPSCore, dxPScxCommon, dxBarExtItems;
type
TfmMain =class(TForm)
RibbonTab1: TdxRibbonTab;
RB: TdxRibbon;
Barr_Manager: TdxBarManager;
Pages: TcxPageControl;
cxTabSheet1: TcxTabSheet;
cxTabSheet2: TcxTabSheet;
dxRibbonStatusBar1: TdxRibbonStatusBar;
cxTabSheet3: TcxTabSheet;
cxTabSheet4: TcxTabSheet;
Barr_ManagerBar1: TdxBar;
RibbonTab2: TdxRibbonTab;
RibbonTab3: TdxRibbonTab;
3
482.ЧДТУ.21705-01 12 01
RibbonTab4: TdxRibbonTab;
RibbonTab5: TdxRibbonTab;
cxTabSheet5: TcxTabSheet;
cxPageControl1: TcxPageControl;
Panel2: TPanel;
Label2: TLabel;
Splitter1: TSplitter;
Panel1: TPanel;
Label1: TLabel;
cxPageControl3: TcxPageControl;
Pages1: TcxPageControl;
cxTabSheet6: TcxTabSheet;
cxTabSheet7: TcxTabSheet;
cxDBImage1: TcxDBImage;
cxDBMemo1: TcxDBMemo;
cxGoodDBTableView1: TcxGridDBTableView;
cxGoodLevel1: TcxGridLevel;
cxGood: TcxGrid;
cxGoodDBTableView1ID: TcxGridDBColumn;
cxGoodDBTableView1GOOD_NAME: TcxGridDBColumn;
cxGoodDBTableView1PRICE: TcxGridDBColumn;
cxGoodDBTableView1GROUP_SELECT: TcxGridDBColumn;
cxGoodDBTableView1Column1: TcxGridDBColumn;
btAddToBasket: TdxBarButton;
dxBarButton2: TdxBarButton;
btClear_Basket: TdxBarButton;
Barr_ManagerBar2: TdxBar;
btCreateOrder: TdxBarButton;
dxBarButton5: TdxBarButton;
Barr_ManagerBar3: TdxBar;
dxBarSubItem1: TdxBarSubItem;
btEddGood: TdxBarButton;
dxBarButton7: TdxBarButton;
dxBarButton8: TdxBarButton;
Splitter2: TSplitter;
Panel4: TPanel;
Label4: TLabel;
cxPageControl2: TcxPageControl;
cxOrder: TcxGrid;
cxGridDBTableView3: TcxGridDBTableView;
cxGridLevel3: TcxGridLevel;
cxGridDBTableView3ORDER_DATE: TcxGridDBColumn;
cxGridDBTableView3ORDER_NAME: TcxGridDBColumn;
cxGridDBTableView3PRICE: TcxGridDBColumn;
cxGridDBTableView3SUPPLIER_SELECT: TcxGridDBColumn;
cxGridDBTableView3Column1: TcxGridDBColumn;
cxGridDBTableView3Column2: TcxGridDBColumn;
cxGridDBTableView2GOOD_COUNT: TcxGridDBColumn;
cxGridDBTableView2GOOD_PRICE: TcxGridDBColumn;
cxGridDBTableView2GOOD_REST: TcxGridDBColumn;
cxGridDBTableView2Column1: TcxGridDBColumn;
cxGridDBTableView2Column2: TcxGridDBColumn;
cxGridDBTableView2Column3: TcxGridDBColumn;
Barr_ManagerBar5: TdxBar;
btDel_Order: TdxBarButton;
btSend_To_Supplier: TdxBarButton;
btOn_Sklad: TdxBarButton;
cxGridDBTableView3Column3: TcxGridDBColumn;
Barr_ManagerBar6: TdxBar;
4
482.ЧДТУ.21705-01 12 01
btEd_Order: TdxBarButton;
cxGridDBTableView1Column1: TcxGridDBColumn;
Barr_ManagerBar7: TdxBar;
dxBarButton3: TdxBarButton;
dxBarButton4: TdxBarButton;
dxPrinter: TdxComponentPrinter;
dxOrder: TdxGridReportLink;
Panel5: TPanel;
Label5: TLabel;
cxGrid3: TcxGrid;
cxGridDBTableView4: TcxGridDBTableView;
cxGridLevel4: TcxGridLevel;
Splitter3: TSplitter;
Panel6: TPanel;
Label6: TLabel;
cxPageControl4: TcxPageControl;
cxSale: TcxGrid;
cxGridDBTableView5: TcxGridDBTableView;
cxGridLevel5: TcxGridLevel;
cxGridDBTableView5SALE_DATE: TcxGridDBColumn;
cxGridDBTableView5SALE_INFO: TcxGridDBColumn;
cxGridDBTableView5CUSTOMER_SELECT: TcxGridDBColumn;
cxGridDBTableView5PRICE: TcxGridDBColumn;
cxGridDBTableView4GOOD_NAME: TcxGridDBColumn;
cxGridDBTableView4GOOD_COUNT: TcxGridDBColumn;
cxGridDBTableView4MEASURE_NAME: TcxGridDBColumn;
cxGridDBTableView4GOOD_PRICE: TcxGridDBColumn;
cxGridDBTableView4POS_PRICE: TcxGridDBColumn;
Barr_ManagerBar8: TdxBar;
btEdSale: TdxBarButton;
Barr_ManagerBar9: TdxBar;
dxBarButton6: TdxBarButton;
dxBarButton11: TdxBarButton;
dxSale: TdxGridReportLink;
btSetBasket: TdxBarButton;
Barr_ManagerBar10: TdxBar;
Pages2: TcxPageControl;
cxTabSheet8: TcxTabSheet;
cxTabSheet9: TcxTabSheet;
cxRest: TcxGrid;
cxGridDBTableView6: TcxGridDBTableView;
cxGridLevel6: TcxGridLevel;
Label8: TLabel;
cxGridDBTableView6PART_DATE: TcxGridDBColumn;
cxGridDBTableView6GOOD_REST: TcxGridDBColumn;
cxGridDBTableView6GOOD_COUNT: TcxGridDBColumn;
cxGridDBTableView6GOOD_NAME: TcxGridDBColumn;
cxGridDBTableView6MEASURE_NAME: TcxGridDBColumn;
cxGridDBTableView6GROUP_NAME: TcxGridDBColumn;
cxGridDBTableView6DAYS: TcxGridDBColumn;
dxBarButton12: TdxBarButton;
dxRest: TdxGridReportLink;
cxGrid4: TcxGrid;
cxGridDBTableView7: TcxGridDBTableView;
cxGridLevel7: TcxGridLevel;
Label7: TLabel;
cxGridDBTableView7GOOD_COUNT: TcxGridDBColumn;
cxGridDBTableView7GROUP_NAME: TcxGridDBColumn;
cxGridDBTableView7GOOD_NAME: TcxGridDBColumn;
5
482.ЧДТУ.21705-01 12 01
cxGridDBTableView7MEASURE_NAME: TcxGridDBColumn;
Barr_ManagerBar11: TdxBar;
edMinimum: TdxBarSpinEdit;
dxBarButton1: TdxBarButton;
dxBarButton13: TdxBarButton;
Pages3: TcxPageControl;
procedure btEddGoodClick(Sender:TObject);
procedure btAddToBasketClick(Sender:TObject);
procedure dxBarButton9Click(Sender:TObject);
procedure dxBarButton10Click(Sender:TObject);
procedure dxBarButton2Click(Sender:TObject);
procedure btCreateOrderClick(Sender:TObject);
procedure btClear_BasketClick(Sender:TObject);
procedure FormCreate(Sender:TObject);
procedure btDel_OrderClick(Sender:TObject);
procedure btEd_OrderClick(Sender:TObject);
procedure btSend_To_SupplierClick(Sender:TObject);
procedure btOn_SkladClick(Sender:TObject);
procedure PagesChange(Sender:TObject);
procedure RBTabChanged(Sender: TdxCustomRibbon);
procedure dxBarButton3Click(Sender:TObject);
procedure dxBarButton4Click(Sender:TObject);
procedure dxBarButton5Click(Sender:TObject);
procedure btEdSaleClick(Sender:TObject);
procedure dxBarButton6Click(Sender:TObject);
procedure dxBarButton11Click(Sender:TObject);
procedure btSetBasketClick(Sender:TObject);
procedure dxBarButton12Click(Sender:TObject);
procedure cxGridDBTableView4DblClick(Sender:TObject);
procedure cxGridDBTableView5DblClick(Sender:TObject);
procedure dxBarButton1Click(Sender:TObject);
procedure dxBarButton13Click(Sender:TObject);
procedure dxBarButton14Click(Sender:TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmMain: TfmMain;
implementation
{$R *.dfm}
uses uEddGood, uEdOrder, uEdSale, uBasket;
procedure TfmMain.btDel_OrderClick(Sender:TObject);
begin
with d do
begin
if(ORDER.RecordCount=0)or(ORDERSTATUS.Value<>0)thenexit;
ifnot Confirm('Дійсно видалити замовлення '+ORDERORDER_NAME.Value+'?')thenexit;
ORDER.Delete;
end;
end;
procedure TfmMain.btEddGoodClick(Sender:TObject);
begin
with d do
begin
//TComponent(Sender).Tag = 0, це кнопка додати,
//TComponent(Sender).Tag = 1, це кнопка редагувати
6
482.ЧДТУ.21705-01 12 01
//перевірка чи є хоч 1-н запис
if(GOOD.RecordCount=0)and(TComponent(Sender).Tag=1)thenexit;
if TComponent(Sender).Tag=0then
begin
//новий медикамент
GOOD.Append;
GOODGOOD_NAME.Value:='Новий медикамент';
GOODID_GROUP.Value:=GGROUPID.Value;
GOODID_MEASURE.Value:=MEASUREID.Value;
GOODPRICE.Value:=1;
endelse GOOD.Edit;
//форма для редагування
if fmEddGood.ShowModal<> mrOk then
begin
//відміна
GOOD.Cancel;
exit;
end;
GOOD.Post;
DBRefresh(Good);
end;
end;
procedure TfmMain.btEdSaleClick(Sender:TObject);
begin
with d do
begin
if SALE.RecordCount=0thenexit;
SALE.Edit;
if fmEdSale.ShowModal<> mrOk then SALE.Cancelelse SALE.post;
end;
end;
procedure TfmMain.btEd_OrderClick(Sender:TObject);
//редагування замовлення
begin
with d do
begin
if ORDERSTATUS.Value<>0then
begin
ShowMessage('Редагування замовлень можливо лише з статусом "Редагується"');
exit;
end;
ORDER.Edit;
//визов форми для редагування
if fmEdOrder.ShowModal<> mrOk then
ORDER.Cancelelse ORDER.Post
end;
end;
procedure TfmMain.dxBarButton10Click(Sender:TObject);
begin
//друк прайсу
d.fPrice.ShowReport(True);
end;
procedure TfmMain.dxBarButton11Click(Sender:TObject);
begin
dxSale.ReportTitleText:='Відомість продажу медичних препаратів станом на '+DateToStr(Date);
7
482.ЧДТУ.21705-01 12 01
dxSale.Preview(True);
end;
procedure TfmMain.dxBarButton12Click(Sender:TObject);
begin
with d do
begin
rest_view.Close;
rest_view.Open;
fRest.ShowReport(True);
end;
end;
procedure TfmMain.dxBarButton13Click(Sender:TObject);
//формує кошик товарів для замовлення медикаментів
//згідно таблиці to_order
var
i:Integer;
begin
with d do
begin
btClear_BasketClick(nil);
to_order.First;
DBRefresh(BASKET);
for I :=0to to_order.RecordCount-1do
begin
BASKET.Append;
BASKETID_GOOD.Value:=to_orderID_GOOD.Value;
BASKETPRICE.Value:=to_orderPRICE.Value;
BASKETGOOD_COUNT.Value:=to_orderGOOD_COUNT.Value;
BASKET.Post;
to_order.Next;
end;
Transact.CommitRetaining;
DBRefresh(BASKET_view);
end;
Pages.ActivePageIndex:=0;
end;
procedure TfmMain.dxBarButton14Click(Sender:TObject);
//друк довідників
begin
case pages3.ActivePageIndexof
0:begin
dxReference.Component:=cxGroup;
dxReference.ReportTitleText:='Перелік фармакологічних групп';
dxReference.Preview(True);
end;
1:begin
dxReference.Component:=cxMeasure;
dxReference.ReportTitleText:='Перелік пакувань медичних препаратів';
dxReference.Preview(True);
end;
2:begin
dxReference.Component:=cxCustomer;
dxReference.ReportTitleText:='Перелік покупців медичних препаратів';
dxReference.Preview(True);
end;
3:begin
8
482.ЧДТУ.21705-01 12 01
dxReference.Component:=cxSupplier;
dxReference.ReportTitleText:='Перелік поставщиків медичних препаратів';
dxReference.Preview(True);
end;
end;
end;
procedure TfmMain.dxBarButton1Click(Sender:TObject);
//заповнює таблицю to_order записами про медикаменти
//залишок яких на складі менше чим поле вводу "Мінімальна кількість препарату на складі:"
var
i,torder:integer;
begin
with d do
begin
GOOD.DisableControls;
GOOD.First;
//очистка попередніх даних
q.SQL.Text:='delete from to_order';
q.ExecSQL;;
for I :=0to GOOD.RecordCount-1do
begin
//розрахунок кількості
torder:=Trunc(edMinimum.Value-GOODGood_rest.Value);
if torder >0then
begin
q.sql.text:='insert into to_order (id_good,good_count) values ('+GOODID.AsString+','+IntToStr(torder)+')';
q.ExecSQL;
end;
good.Next;
end;
Transact.CommitRetaining;
DBRefresh(to_order);
Pages2.ActivePageIndex:=1;
end;
end;
procedure TfmMain.btOn_SkladClick(Sender:TObject);
//внессення замовлення на склад
//після виконання цієї процедури партії медикаментів у замовленні починають
//відображатись у залишеках медикаментів на складі та приймати участь
//у формуванні партій продажу товару
var
dt:TDate;
begin
with d do
begin
//перевікка статусу та наявності хоч 1-го замовлення
if(ORDER.RecordCount=0)or(ORDERSTATUS.Value<>1)thenexit;
//підтверження дії користувача
ifnot Confirm('Дійсно відмітити надходження медикаментів по замовленню '+ORDERORDER_NAME.Value+' на
склад?')thenexit;
try
//запит дати
dt:=StrToDate(InputBox('Ввод дати надходження заказу на склад','Дата надхдження:',DateToStr(Date)));
except
//дату введено не правильно
ShowMessage('Не правильно введено дату надходження медикаментів на склад.');
exit;
9
482.ЧДТУ.21705-01 12 01
end;
//зміна статусу
ORDER.Edit;
ORDERSTATUS.Value:=2;
ORDEREND_DATE.Value:=dt;
ORDER.Post;
Transact.CommitRetaining;
//установка дати внесення партії медикаментів на склад
//та установка залишків товару на складі рівними
//кількості придбаних медикаментів
//update order_item set good_rest=good_count, part_date =:pdate where id_order = :order
O_Sklad.Params[0].AsDate:=dt;
O_Sklad.Params[1].AsInteger:=ORDERID.Value;
O_Sklad.ExecSQL;
OITEM.close;
OITEM.Open;
//перечитка деяких таблиць
Good_rest.Close;
Good_rest.Open;
DBRefresh(GOOD);
rest_view.Close;
rest_view.Open;
end;
end;
procedure TfmMain.btSend_To_SupplierClick(Sender:TObject);
//зміна статусу замовлення
begin
with d do
begin
if(ORDER.RecordCount=0)or(ORDERSTATUS.Value<>0)thenexit;
ifnot Confirm('Дійсно бажаєте відправити замовлення '+ORDERORDER_NAME.Value+' постачальнику?')thenexit;
ORDER.Edit;
ORDERSTATUS.Value:=1;
ORDER.Post;
end;
end;
procedure TfmMain.btSetBasketClick(Sender:TObject);
begin
//зміна кількості та ціни позиції у кошику
with d do
begin
if BASKET_view.RecordCount=0thenexit;
fmBasket.edCount.Value:=BASKET_viewGOOD_COUNT.Value;
fmBasket.edPrice.Value:=BASKET_viewPRICE.Value;
if fmBasket.ShowModal= mrOk then
begin
S_basket.Params[0].AsInteger:=fmBasket.edCount.Value;
S_basket.Params[1].AsCurrency:=fmBasket.edPrice.Value;
S_basket.Params[2].AsInteger:=BASKET_viewID.Value;
S_basket.ExecSQL;
Transact.CommitRetaining;
DBRefresh(BASKET_view);
end;
end;
end;
procedure TfmMain.cxGridDBTableView4DblClick(Sender:TObject);
10
482.ЧДТУ.21705-01 12 01
begin
btSetBasketClick(nil);
end;
procedure TfmMain.cxGridDBTableView5DblClick(Sender:TObject);
begin
btAddToBasketClick(nil);
end;
procedure TfmMain.btAddToBasketClick(Sender:TObject);
begin
//процедура додавання вибраного товару у кошик
with d do
begin
if GOOD.RecordCount=0thenexit;
if BASKET_view.Locate('ID_GOOD',GOODID.Value,[])then
begin
ShowMessage('Препарат '+BASKET_viewGOOD_NAME.Value+' вже в кошику');
endelse
begin
BASKET.Append;
BASKETID_GOOD.Value:=GOODID.Value;
BASKETPRICE.Value:=GOODPRICE.Value;
BASKETGOOD_COUNT.Value:=1;
BASKET.Post;
Transact.CommitRetaining;
DBRefresh(BASKET_view);
end;
end;
end;
procedure TfmMain.dxBarButton2Click(Sender:TObject);
begin
//видалення товарної позиції з кошика
with d do
begin
if BASKET.RecordCount=0thenexit;
BASKET.Delete;
end;
end;
procedure TfmMain.dxBarButton3Click(Sender:TObject);
begin
d.fOrder_Card.ShowReport(True);
end;
procedure TfmMain.dxBarButton4Click(Sender:TObject);
begin
dxOrder.ReportTitleText:='Друк відомості замовлень станом на '+DateToStr(date);
dxOrder.Preview(True);
end;
procedure SetPartCount(ID,Gcount:Integer);
//зміна залишку вхіднох партіх товару
begin
with d do
begin
q.SQL.Text:='update order_item set good_count = '+IntToStr(Gcount)+' where ID='+IntToStr(ID);
q.ExecSQL;
end;
11
482.ЧДТУ.21705-01 12 01
end;
procedure TfmMain.dxBarButton5Click(Sender:TObject);
var
id,i, gcount:Integer;
sprice:real;
procedure WritePart(pcount:Integer);
begin
with d do
begin
PARTS.Append;
PARTSID_SITEM.Value:=SITEMID.Value;
PARTSPRICE_SELL.Value:=SITEMGOOD_PRICE.Value;
PARTSID_OITEM.Value:=GOOD_PARTSID.Value;
PARTSPRICE_BUY.Value:=GOOD_PARTSGOOD_PRICE.Value;
PARTSPART_DATE.Value:=Date;
PARTSPART_COUNT.Value:=pcount;
PARTS.Post;
end;
end;
begin
with d do
begin
Transact.CommitRetaining;
//перевірка чи для всіх товарів наявні залишки на складі
q.SQL.Text:='select *from basket where basket.good_count > (select good_rest from good_rests where good_rests.id_good =
basket.id_good)';
q.Open;
if q.RecordCount>0then
begin
ShowMessage('Деякі товари відсутні на складі чи кількість менше чим в замовленні, перевірте перелік товарів у кошику');
exit;
end;
//формуємо замовлення таблиця sales
//отримуємо значення значення поля ID
q.SQL.text:='select gen_id(gen_sales_id,1) as ID FROM RDB$DATABASE';
q.Open;
id:=q.FieldByName('ID').AsInteger;
//створюємо продаж
SALE.Append;
SALEID.Value:=ID;
SALEID_CUSTOMER.Value:=CUSTOMERID.Value;
SALESALE_DATE.Value:=Date;
SALESALE_INFO.Value:='Продаж № '+IntToStr(id);
sale.post;
//записуємо товарні позиції продажу та формуємо партії для них по поступлення
//починаючи з самого давнішого поступленні
BASKET_view.DisableControls;
BASKET_view.First;
sprice:=0;
for I :=0to BASKET_view.RecordCount-1do
begin
//добавляєм позицію в таблицю sales_item
sI_add.Params[0].AsInteger:=ID;
sI_add.Params[1].AsInteger:=BASKET_viewID_GOOD.Value;
sI_add.Params[2].AsInteger:=BASKET_viewGOOD_COUNT.Value;
sI_add.Params[3].AsCurrency:=BASKET_viewPRICE.AsCurrency;
sI_add.ExecSQL;
sprice:=sprice+BASKET_viewID_GOOD.Value*BASKET_viewPRICE.AsCurrency;
12
482.ЧДТУ.21705-01 12 01
BASKET_view.Next;
end;
//записуємо загальну суму
SALE.edit;
SALEPRICE.Value:=sprice;
SALE.Post;
BASKET_view.EnableControls;
Transact.CommitRetaining;
SITEM.Close;
SITEM.Open;
SITEM.First;
//створення партій продаж у таблиці PARTS на основі залишків товару
//у полі good_rest таблиці order_item
//good_parts це таблиця order_item з умовою good_rest >0
GOOD_PARTS.First;
for I :=0to SITEM.RecordCount-1do
begin
//кількість товару, що має розподілитися по партіях
gcount:=SITEMGOOD_COUNT.Value;
repeat
//перевірка коду медикамента
if GOOD_PARTSID_GOOD.Value<> SITEMID_GOOD.Valuethen
begin
GOOD_PARTS.Next;
Continue;
end;
if gcount <= GOOD_PARTSGOOD_REST.Valuethen
begin
//кількість розподіляємих медикаментів менша чи рівна
//кількості поставлениих медикаментів у партії
GOOD_PARTS.Edit;
//зменшуєм залишок на складі
GOOD_PARTSGOOD_REST.Value:=GOOD_PARTSGOOD_REST.Value-gcount;
GOOD_PARTS.Post;
//записуємо таблицю parts
WritePart(gcount);
gcount:=0;
endelse
begin
//кількість розподіляємих медикаментів більша
//кількості поставлениих медикаментів у партії
gcount:=gcount-GOOD_PARTSGOOD_REST.Value;
//записуємо таблицю parts
WritePart(GOOD_PARTSGOOD_REST.Value);
GOOD_PARTS.Edit;
//залишок партії стає рівним 0
GOOD_PARTSGOOD_REST.Value:=0;
GOOD_PARTS.Post;
end;
//слідуюча партія товару
GOOD_PARTS.Next;
Transact.CommitRetaining;
//перевіряємо чи всі медикаменти розподілено по партіям
until gcount =0;
SITEM.next;
end;
//чистим кошик
btClear_BasketClick(nil);
Transact.CommitRetaining;
13
482.ЧДТУ.21705-01 12 01
//перечитуємо деякі таблиці
Good_rest.Close;
Good_rest.Open;
DBRefresh(SITEM);
DBRefresh(GOOD);
Pages.ActivePageIndex:=2;
rest_view.Close;
rest_view.Open;
//тиснем кнопку редагування інформації про продаж
btEdSaleClick(nil);
end;
end;
procedure TfmMain.dxBarButton6Click(Sender:TObject);
begin
d.frSale.ShowReport(True);
end;
procedure TfmMain.btClear_BasketClick(Sender:TObject);
//Повна очистка кошика
begin
with d do
begin
q.SQL.text:='delete from basket';
q.ExecSQL;
Transact.CommitRetaining;
DBRefresh(basket);
DBRefresh(basket_view);
end;
end;
procedure CalcOrder(ID:Integer);
var
sm:Real;
i:integer;
begin
with d do
begin
sm:=0;
OITEM.First;
for I :=0to OITEM.RecordCount-1do
begin
sm:=sm+OITEMPOS_PRICE.Value;
OITEM.Next;
end;
ORDER.Edit;
ORDERPRICE.Value:=sm;
ORDER.Post;
ORDER.FetchAll;
end;
end;
procedure TfmMain.btCreateOrderClick(Sender:TObject);
//формування замовлення
var
id,i:integer;
begin
with d do
begin
if BASKET_VIEW.RecordCount=0then
14
482.ЧДТУ.21705-01 12 01
begin
ShowMessage('Кошик пустий. Нічого формувати.');
exit;
end;
//генеруемj значення для поля ID таблиці Orders
q.SQL.text:='select gen_id(gen_orders_id,1) as ID FROM RDB$DATABASE';
q.Open;
id:=q.FieldByName('ID').AsInteger;
//створюємо нове замовлення
ORDER.Append;
ORDERID.Value:=id;
ORDERID_SUPPLIER.Value:=SUPPLIERID.Value;
ORDERORDER_DATE.Value:=Date;
ORDERORDER_NAME.Value:='ЗАМОВЛЕННЯ-'+IntToStr(id);
ORDERSTATUS.Value:=0;
ORDERPRICE.Value:=0;
ORDER.Post;
BASKET_VIEW.DisableControls;
BASKET_VIEW.First;
//добавляемо значення в order_item
for i :=0to BASKET_view.RecordCount-1do
begin
OI_add.Params[0].AsInteger:=ID;
OI_add.Params[1].AsInteger:=BASKET_VIEWID_GOOD.Value;
OI_add.Params[2].AsInteger:=BASKET_VIEWGOOD_COUNT.Value;
OI_add.Params[3].AsCurrency:=BASKET_VIEWPRICE.AsCurrency;
OI_add.ExecSQL;
BASKET_view.Next;
end;
//чистим кошик
btClear_BasketClick(nil);
DBRefresh(BASKET_VIEW);
BASKET_VIEW.EnableControls;
ORDER.Close;
ORDER.Active:=True;
ORDER.Locate('ID',ID,[]);
OITEM.Close;
OITEM.Active:=True;
//розраховуємо загальну суму рахунку
CalcOrder(ID);
DBRefresh(Order);
//переходимо на сторінку роботи з замовленнями і тиснемо кнопку змінити заявку
Pages.ActivePageIndex:=1;
Transact.CommitRetaining;
btEd_OrderClick(nil);
end;
end;
procedure TfmMain.dxBarButton9Click(Sender:TObject);
begin
//друк картки препарату
d.fGood_Card.ShowReport(True);
end;
procedure TfmMain.FormCreate(Sender:TObject);
//створення головної форми
begin
ifnot Opentables then
begin
15
482.ЧДТУ.21705-01 12 01
//була помилка відкриття бази даних чи таблиці
//завершуємо роботу
Application.Terminate;
exit;
end;
//на 1-шу сторінку
Pages.ActivePageIndex:=0;
Pages1.ActivePageIndex:=0;
Pages2.ActivePageIndex:=0;
Pages3.ActivePageIndex:=0;
end;
procedure TfmMain.PagesChange(Sender:TObject);
begin
//синхроніхація закладок та сторінок
RB.ActiveTab:=RB.Tabs[Pages.ActivePageIndex];
end;
procedure TfmMain.RBTabChanged(Sender: TdxCustomRibbon);
begin
//синхроніхація закладок та сторінок
Pages.ActivePageIndex:=Sender.ActiveTab.VisibleIndex;
end;
end.
Файл модуля доступу до бази даних uData.pas
unit uData;
interface
uses
System.SysUtils, System.Classes, Data.DB, IBCustomDataSet, IBTable, IBDatabase,
Vcl.ImgList, Vcl.Controls, cxGraphics, frxClass, frxDBSet, IBQuery,Vcl.Dialogs,
cxLocalization, IBStoredProc;
type
TD =class(TDataModule)
Conector: TIBDatabase;
Transact: TIBTransaction;
CUSTOMER: TIBTable;
CUSTOMER_DATA: TDataSource;
SUPPLIER: TIBTable;
SUPPLIER_DATA: TDataSource;
GGROUP: TIBTable;
GGROUP_DATA: TDataSource;
GOOD: TIBTable;
GOOD_DATA: TDataSource;
ORDER: TIBTable;
ORDER_DATA: TDataSource;
OITEM_DATA: TDataSource;
SALE: TIBTable;
SALES_DATA: TDataSource;
SITEM: TIBTable;
SITEM_DATA: TDataSource;
CUSTOMERID: TIntegerField;
CUSTOMERCUST_NAME: TIBStringField;
CUSTOMERBANK_DETAIL: TIBStringField;
CUSTOMERPHONE: TIBStringField;
CUSTOMERADDRESS: TIBStringField;
SUPPLIERID: TIntegerField;
SUPPLIERSUPP_NAME: TIBStringField;
SUPPLIERBANK_DETAIL: TIBStringField;
16
482.ЧДТУ.21705-01 12 01
SUPPLIERPHONE: TIBStringField;
SUPPLIERADDRESS: TIBStringField;
GGROUPID: TIntegerField;
SITEMID: TIntegerField;
SITEMID_SALE: TIntegerField;
SITEMID_GOOD: TIntegerField;
SITEMGOOD_NAME: TIBStringField;
SITEMGOOD_COUNT: TIntegerField;
SITEMMEASURE_NAME: TIBStringField;
SITEMGOOD_PRICE: TFloatField;
SITEMPOS_PRICE: TFloatField;
PARTS: TIBTable;
PARTS_DATA: TDataSource;
PARTSID: TIntegerField;
PARTSID_SITEM: TIntegerField;
PARTSID_OITEM: TIntegerField;
PARTSPRICE_BUY: TIBBCDField;
PARTSPRICE_SELL: TIBBCDField;
PARTSPART_DATE: TDateField;
PARTSPART_COUNT: TIntegerField;
BASKET_view: TIBTable;
si_add: TIBQuery;
GOOD_PARTS: TIBTable;
GOOD_PARTSID: TIntegerField;
GOOD_PARTSID_ORDER: TIntegerField;
GOOD_PARTSID_GOOD: TIntegerField;
GOOD_PARTSGOOD_COUNT: TIntegerField;
GOOD_PARTSGOOD_PRICE: TFloatField;
GOOD_PARTSGOOD_REST: TIntegerField;
GOOD_PARTSPART_DATE: TDateField;
GOOD_PARTS_data: TDataSource;
fDBSale: TfrxDBDataset;
fDBSitem: TfrxDBDataset;
frSale: TfrxReport;
BASKET_viewID: TIntegerField;
BASKET_viewID_GOOD: TIntegerField;
BASKET_viewGOOD_COUNT: TIntegerField;
BASKET_viewPRICE: TIBBCDField;
BASKET_viewPOS_PRICE: TIBBCDField;
BASKET_viewGOOD_NAME: TIBStringField;
BASKET_viewMEASURE_NAME: TIBStringField;
BASKET_viewGOOD_REST: TLargeintField;
S_basket: TIBQuery;
BASKET: TIBTable;
BASKETID: TIntegerField;
BASKETID_GOOD: TIntegerField;
BASKETGOOD_COUNT: TIntegerField;
BASKETPRICE: TIBBCDField;
REST_VIEW_DATA: TDataSource;
rest_view: TIBQuery;
fRest: TfrxReport;
fDbRest_view: TfrxDBDataset;
IBTable1: TIBTable;
IntegerField1: TIntegerField;
IntegerField2: TIntegerField;
IntegerField3: TIntegerField;
IBBCDField1: TIBBCDField;
IBBCDField2: TIBBCDField;
DateField1: TDateField;
17
482.ЧДТУ.21705-01 12 01
IntegerField4: TIntegerField;
to_order_data: TDataSource;
to_order: TIBDataSet;
to_orderID: TIntegerField;
to_orderID_GOOD: TIntegerField;
to_orderGOOD_COUNT: TIntegerField;
to_orderGROUP_NAME: TIBStringField;
to_orderGOOD_NAME: TIBStringField;
to_orderMEASURE_NAME: TIBStringField;
to_orderPRICE: TIBBCDField;
procedure ORDERCalcFields(DataSet: TDataSet);
procedure OITEMCalcFields(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
D: TD;
procedure DBRefresh(DBSet:TDataSet);
function Confirm(Va:String):Boolean;
function Opentables:boolean;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
function Confirm(Va:String):Boolean;
begin
if MessageDlg(va, mtConfirmation,[mbYes, mbNo],0)= mrYes then result :=true
else result :=False
end;
function Opentables:boolean;
begin
with d do
begin
try
Conector.DatabaseName:='PharmSilo.FDB';
Conector.Connected:=True;
Transact.Active:=True;
CUSTOMER.Open;
SUPPLIER.Open;
GGROUP.Open;
GOOD.Open;
MEASURE.Open;
ORDER.Open;
SALE.Open;
OITEM.Open;
SITEM.Open;
BASKET_view.Open;
BASKET.Open;
TO_ORDER.Open;
PARTS.Open;
GOOD_PARTS.Open;
rest_view.Open;
except
ShowMessage('Ошибка подключения и открытия таблиц в базе данных');
result:=False;
exit;
end;
18
482.ЧДТУ.21705-01 12 01
try
Localize.FileName:='PharmSilo.ini';
Localize.Active:=True;
Localize.Locale:=1058;
except
ShowMessage('Не вдалось знайти файл українізації PharmSilo.ini. Будуть використовуватись англійські назви');
end;
end;
result:=True;
end;
procedure DBRefresh(DBSet:TDataSet);
var
id:String;
begin
try
id:=DBSet.fieldByname('ID').AsString;
DBSet.Close;
DBSet.Open;
if DBSet.RecordCount<>0then
DBSet.Locate('ID',ID,[]);
except
end;
end;
procedure TD.ORDERCalcFields(DataSet: TDataSet);
begin
case ORDERSTATUS.Valueof
0:ORDERSTATUS_INFO.Value:='Редагується';
1:ORDERSTATUS_INFO.Value:='Відправлено постачальнику';
2:ORDERSTATUS_INFO.Value:='Доставлено на склад';
end;
if ORDEREND_DATE.IsNullthen ORDERDAYS_COUNT.Value:=0else
ORDERDAYS_COUNT.Value:=Trunc(ORDEREND_DATE.Value-ORDERORDER_DATE.Value);
end;
end.
Файл проекту форми редагування позиції у кошику uBasket.pas
unit uBasket;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,uData, cxGraphics, cxControls,
cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit, dxSkinsCore,
dxSkinOffice2007Black, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit,
cxDBLookupEdit, cxDBLookupComboBox, Vcl.StdCtrls, Vcl.Menus, cxButtons,
cxCurrencyEdit, cxDBEdit, cxLabel, cxDBLabel, cxSpinEdit;
type
TfmBasket =class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
cxButton1: TcxButton;
cxButton2: TcxButton;
cxDBLabel1: TcxDBLabel;
edCount: TcxSpinEdit;
19
482.ЧДТУ.21705-01 12 01
edPrice: TcxCurrencyEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmBasket: TfmBasket;
implementation
{$R *.dfm}
end.
Файл редагування медикаменту uEddGood.pas
unit uEddGood;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,uData, cxGraphics, cxControls,
cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit, dxSkinsCore,
dxSkinOffice2007Black, cxTextEdit, cxDBEdit, Vcl.StdCtrls, dxSkinscxPCPainter,
cxPCdxBarPopupMenu, Vcl.Menus, cxButtons, cxImage, cxMemo, cxPC,
cxCurrencyEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit,
cxDBLookupComboBox;
type
TfmEddGood =class(TForm)
Label1: TLabel;
cxDBTextEdit1: TcxDBTextEdit;
Label2: TLabel;
cxDBLookupComboBox1: TcxDBLookupComboBox;
Label3: TLabel;
cxDBCurrencyEdit1: TcxDBCurrencyEdit;
Pages1: TcxPageControl;
cxTabSheet6: TcxTabSheet;
cxDBMemo1: TcxDBMemo;
cxTabSheet7: TcxTabSheet;
cxDBImage1: TcxDBImage;
cxButton1: TcxButton;
cxButton2: TcxButton;
Label4: TLabel;
cxDBLookupComboBox2: TcxDBLookupComboBox;
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmEddGood: TfmEddGood;
implementation
{$R *.dfm}
end.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Баєва О. В. Менеджмент у галузі охорони здоров’я [Електронний
ресурс]. – Режим доступу: – https://ukrtextbook.com/menedzhment-u-
galuzi-oxoroni-zdorov-ya-bayeva-o-v/ - Назва з екрана.
2. Белей О.І. Розробка архітектури АІС ефективного управління
торговельним підприємством / О.І. Белей, О.М. Ананьєв // Збірник
наукових статей ХНЕУ ―Управління розвитком‖. Економічні науки. –
Харків, 2008. – № 18. – С. 54-58
3. Громовик Б.П. Логістичні моделі управління товарними запасами
фармацевтичних підприємств //Фармац. журн. – 2003. - №2. – С.8–16
4. Громовик Б.П. Проектування рішень щодо управління асортиментом
лікарських засобів за допомогою АВС- і XYZ-аналізу/ Б.П. Громовик,
Г.Д. Гасюк, О.Р. Левицька//Фармац. журн. – 2005. – №1. – С.10 – 15
5. Громовик Б.П. Фармацевтичний маркетинг: Навч. посібник; Зб. вправ /
Б.П.Громовик, Г.Д.Гасюк, Л.А.Мороз, Н.І.Чухрай – Львів: Наутілус,
2000. – 320 с.
6. Громовик Б.П. Функціональне моделювання логістичних потоків
оптового фармацевтичного підприємства //Фармац. журн. – 2003. - №5. –
С.7–17
7. Денисенко М.Л. Інноваційні методи менеджменту в галузі фармацевтики
/ М.Л.Денисенко, К.О.Чигирик // ПРОБЛЕМИ НАУКИ. 2008. № 4. -
С.8-11
8. Джоджуа Р. А. Формування клієнтоорієнтованого підходу на ринку
фармацевтичної продукції / Р. А. Джоджуа // Вісник ДонНУЕТ. Серія:
Економічні науки : наук. журн. 2011. № 4 ( 52). - С. 122-128
9. Інформаційні управляючі системи та технології: колект. монографія /
Бердян. ун-т менеджменту і бізнесу. - Донецьк: Донбас, 2014. - 216 с
10.Крикавський Є.В. Маркетингові дослідження тенденцій ринку
фармацевтичних препаратів / Є.В. Крикавський, Н.С. Косар, Н.С.
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 78
а
Питуляк // Наукові праці Донецького національного технічного
університету: Серія: Економічна. № 5/2014. 2014. - С. 175-184
11.Марченко Д.М. Автоматизовані інформаційні системи управління -
ресурс підвищення ефективності внутрішнього контролю підприємств /
Д.М. Марченко, Г.М. Яровенко//АКТУАЛЬНІ ПРОБЛЕМИ
ЕКОНОМІКИ. 2006. № 10. - С.150-158
12.Матвійчук-Соскіна Н. О. Аналіз сучасних підходів до створення
маркетингових інформаційних систем / Н. О. Матвійчук-Соскіна //
Актуальні проблеми економіки : наук. екон. журн. 2009. № 8 (98). -
С.266-272
13.Мнушко З.М. Дослідження по удосконаленню управління виробничо-
комерційною діяльністю фармацевтичних організацій /З.М. Мнушко,
Л.П. Дорохова, І.В. Пестун, О.М. Євтушенко, С.А. Куценко, О.Ю.
Рогуля, Н.В. Сотнікова // Фармац. журн. – 2005. – № 4. – С. 33–37
14.Оксанич А.П. Інформаційні системи і технології маркетингу / А.П.
Оксанич, В.Р. Петренко, О.П. Костенко. – К.: «Видавничий дім
«Професіонал», 2008. – 320с.
15.Оліфіров О.В. Інформаційне забезпечення управління торговельним
підприємством на основі агентного підходу: монографія / О.В. Оліфіров,
Ю.І. Ільєнко. – Донецьк: ДонНУЕТ. 2011. – 202 с.
16.Пономаренко В.С. Теорія та практика моделювання бізнеспроцесів:
монографія / [В.С. Пономаренко, С.В. Мінухін, С.В. Знахур та ін.]. – Х.:
Вид. ХНЕУ, 2013. – 244 с.
17.Соломка Ю.І. Агентне моделювання бізнес-процесів на торговельному
підприємстві/ Ю.І.Соломка//Економiка: проблеми теорiї та практики: зб.
наук. пр.– Дніпропетровськ: ДНУ, 2009. – Вип. 257, т. 3. – С. 734-743
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 79
а
18.Спіцина Н.М. Аналіз апаратного забезпечення системи інформаційного
сервісу підприємств / Н.М. Спіцина // Передові наукові розробки –
2006 : матеріали міжнар. наук.-практ. конф. - Дніпропетровськ, 2006. - Т.
3 : Економічні науки. – С. 50-54
19.Шабельник Т.В. Анализ сучасних інформаційних систем маркетинго-
орієнтованого управління / Т.В. Шабельник // Экономическая
кибернетика: міжнародний науковий журнал.– Донецк: ДонНУ, 2012.
№13(73-75). - С. 86 – 91
20.Шабельник Т.В. Інформаційні системи в менеджменті: навч. посіб. / Т.
В. Шабельник, Н. М. Спіцина. – Донецьк: ДонНУЕТ, 2011. - 228 с
Лист
ЧДТУ.221705.002 ПЗ т
Зм. Лист № докум. Підпис Дат 80
а