Zvit
Аналізатор звітів.


Вступ

Проект "Звіт" - це інформаційна система, яка дозволяє організувати процес здавання, прийняття, зберігання та аналізу звітів. Будьяка ієрархічна структура звітуючих організацій може скористуватися системою "Звіт", для роботи із бланками у форматі Microsoft Excel. Система обробляє звіти, отримані електронною поштою, завантажені на сервер у вигляді файлу або заповнені користувачем у режимі on-line.

- {}-

Створіть бланк Вашого звіту у вигляді таблиці Microsoft Excel (або OpenOffice Calc). До всіх рядків, які повинен заповнити извітуючий користувач, впишіть у фігурних дужках - {}- назви, які складаються із цифр та латинських букв. Наприклад, до поля A35 впишіть {A35}. У розділі "Бланки ношої організаціі" натисніть кнопку "Додати" та завантажте Ваш новий бланк на сервер.

Призначення іконок
Відчиняє вікно для внесеннія нових значень до розділу "Словники"
Пошук інформації на сторінці
Додання нових значень
Здати відмічені звіти
Створення результуючого звіту
Друк сторінки

Сортування данних

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

Редагування даних

Для того щоб відредагувати будьяку інформацію у базі даних (наприклад статтю, новину, найменування у списку тощо), кликніть на необхідній назві у списку. У новому вікні внесіть зміни та збережіть їх.

Звіти

В цьому розділі знахоядться бланки усіх звітів, які повинна здавати Ваша організація.

Варіанти здавання звітів

Система передбачає три способи здавання звітів:

  1. 1. Ві можете завантажити блак звіту до свого комп'ютеру. Відчинити файл у програмі електронних таблиць (Excel). Заповнити, та вже із даними, знову відправити файл на сервер у розділі "Відправлені звіти".
  2. 2. Можна, також, зайти у розділ "Заповнити звіт" та заповнити Ваш звіт даними on-line. Так само Ви можете відредагувати дані відправленого звіту.
  3. 3. Можна відправити звіт електронною поштою. Заповніть даними бланк звіту. Збережіть файл, та відправте його на сервер. Для цього зайдіть у розділ "Відправлені звіти". Натисніть на іконку "Додати новий" та заповніть усі поля. Натисніть на кнопку "Обзор/Browse", оберіть файл звіту на Вашому комп'ютері та натисніть кнопку "Додати".

Ім'я файлу повинно мати наступний формат:
ім'я файлу бланка звіту_Ваш логін у системі.xls
Наприклад. ім'я бланку було ../archive/blanks/zvit_2004-10-28.xls. Ваш логін - director.
Файл звіту повинен називатися: zvit_2004-10-28_director.xls

У цьому розділі Ви можете завантажити бланки, які повинні заповнити та здати підлеглі організації
Для того, щоб додати новий бланк:

  1. кликніть на іконці
  2. у новому вікні внесіть назву звіту, завантажте бланк у форматі Excel та заповніть інші поля.
  3. у списку у нижній частині вікна відмітьте організації, які повинні здавати звіт.
  4. натисніть кнопку "Додати"

У цьому розділі Ви можете заповнити даними звіти, які Вам необхідно здати.
Введіть значення у порожні поля. Для того, щоб подивитися, як виглядає готовий звіт, натисніть на кнопку "Перевірити звіт". Якщо немає помилок і Ви вважаєте, що звіт можна відправляти, натисніть на кнопку "Здати звіт".

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

У цьому розділі знаходиться список підлеглих організацій, які затримують відправлення звіту або ж здали його невчасно. У колонці "Дата складання наступного звіту" вказана офіційна дата надсилання звіту, а у колонці "Дата внесення" - дата надходження звіту від підлеглоЇ організації (у тому віпадку, якщо звіт булв складений невчасно).


Анализ звітів

Анализ робиться за даними звітів, які надходять від підлеглих організацій. Для того, щоб отримати результати за складеними звітами, потрібно:

Наприклад, з усіх звітів "звіт 1" потрібно отримати результати у вигляді "звіт 1-результати".

Нехай бланк основного звіту буде задано excel файлом (мал.1), а результати ми отримаємо у вігляді мал.2

Звіт "звіт 1 " мал.1
Результуючий звіт "звіт 1 - результати" мал.2

У результуючому звіті у полі "B1" ({results_sum}) ми хочемо отримати суму усіх значень, які було вказано у складених звітах у полі "B1" ({field1}), а у полі "B2" ({results_count}) - число складених звітів.

Створимо глобальні змінні results_sum та results_count. Розглянувши структуру бази даних, можна написати SQL запит до основної бази даних.

results_sum select sum(f1.field_value) from form_values f1 where f1.field='field1'
results_count select count(f1.field_value) from form_values f1 where f1.field='field1'

Ці запити оберуть з бази даних суму(число) значень у полі "B1" ({field1}), які знаходяться в усіх бланках бланках "отчет 1", що надійшли від користувачив.

Тепер можна отримати результуючий звіт. Заходимо у розділ "Результати".
За допомогою фільтру , обираємо складені звіти, за якими порібно
отримати результати та формуємо результуючий звіт.

Глобальні змінні (ГЗ) можна задати у відповідному розділі. Імена ГЗ повинні бути унікальними. У системі існують встановлені глобальні змінні. Інші ГЗ приймають значення, які є результатов виповнення SQL запиту до бази даних. Наприклад,

Константи

select '112233'
поверне строку 112233

select DATE_FORMAT(CURRENT_DATE(),'%d/%m/%Y')
поверне строку із теперешньою датою у форматі '%d/%m/%Y'

Створення глобальних змінних
1. Кликніть на іконці
2. У відчиненому вікні введіть назву змінної й коментарі. 3. З випадаючого листа у нижній частині вікна почерзі обирайте й додавайте в поле для створення запиту змінні (з складених звітів), результатом обробки яких буде Ваша нова глобальна змінна. 4. Збережить результати.

В разділі "Формули" ви можете створювати нові змінні, значеннями яких є математичні дії між усіма внесеними в систему змінними (з бланків для підлеглих організацій, глобальними, а також створеними в разділі "Формули").
Приклад
Від підлеглих організацій отримано три звіти, заповнені значеннями на бланках "Small test"
У нас також є бланк результуючого звіту, в якому значенням глобальної змінної {results_sum} є сума всіх значень, указаних в складених звітах в рядку "B1" ({field1}), а змінна {results_count} вказує кількість сданих звітів
Створюємо в розділі "Формули" змінну "average_value" для обчислення среднього значення з отриманих даних.

  1. Кликніть на іконці "Додати".
  2. У відчиненому вікні введіть назву змінної й коментарі.
  3. З випадаючого листа у нижній частині вікна оберіть потрібні змінні, внесіть їх в поле "Математичний вираз" й додайте потрібні математичні оператори.
  4. В результі для нашого прикладу отримаємо наступну формулу
    "{results_sum}/{results_count}"
  5. Для того, шоб перевірити коректність формули, натисніть "Обчислити значення".
Нову змінну {average_value} можна використовувати в інших звітах.

Оскільки значення будьякої глобальної змінної є результатом SQL-запиту, то при використанні даних із одних звітів у інших, накладає певні обмеження на редагування "донорських" звітів. Звіт є доступним до редагування, доку його хдані не використовувались для отримання результуючого звіту. Якщо дані одного звіту увійшли у інший - "донорський" звіт блокується. Видалення звіту, в якому були використані дані з інших бланків, автоматично розблокує задіяні звіти.

Для того, щоб проаналізувати дані, отримані від звітуючих організацій, треба створити бланк для результатів. Бланк результатів нічим не відрізняється від звічайного бланку звітів. Єдине, що слід врахувати при його розробці - це використання глобальних змінних, описуються, як SQL запит до бази даних у відповідному розділі.

Збирання результатів зі складених звітів

Для отримання результатів, які використовують складені звіти, треба написати запит до таблиці, у якій зберігаються отримані дані.Структура таблиці form_values

`id` int(10) NOT NULL auto_increment, - ключ. Номер запису
`id_form` int(10) NOT NULL default '0', - ідентифікатор форми
`id_report` int(10) NOT NULL default '0', - ідентифікатор звіту
`field` varchar(50) NOT NULL default '', - іим'я поля (у базовому бланку)
`field_value` varchar(250) NOT NULL default '', - значення поля (у результуючому звіті)
PRIMARY KEY (`id`)

т.о.
select sum(form_values.field_value) from form_values where
form_values.field='field1'
поверне нам суму усіх значень поля field1, в яких би звітах це поле не траплялось. Для фільтрації звітів використовуйте розділ "Результати", в якому можна обрати звіти тільки однієї організації, певного періоду чи типу.

Зауваження

При інсталяції та впровадженні проекту краще виробити єдину систему надання імен змінним.
Наприклад, {zvit_2004-10-28_03_05} - для визначення поля 05 у розділі 3 звіту zvit_2004-10-28.it_2004-10-28.
Імена змінних можуть не бути унікальними. У такому випадку, Ви можете легко зібрати дані з декількох різних звітів. Але не треба зловживати цією властивістю, бо таким чином можна отримати невірний результат.

У системі "Звiт" передбачена можливість звернення до вже існуючих баз даних. Нижче приведений список баз даних, до яких можна підключатися:
postgresql, mssql,interbase, informix, odbc, mysql, oracle, peardb, adodb
Для того, щоб мати можливість підключитися до зовнішньої бази даних, треба у відповідному файлі каталогу /database вказати параметри підключення (як елементи масиву $oArray)

Адміністрування

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

Система прав на сервері звітів будується відповідно до статусу організації, у якій працює користувач, у загальній ієраріхї організацій, які беруть участь у системі. Це означає, що два користувачі з однієї організації мають однакові права. Інформацїю, отриману від однієї організації, бачать усі батьківські, але не бачать підлеглі організації.

Структура підпорядкування одних організацій до інших є деревоподібною. Тобто у кожної організації може бути будьяка кількість підлеглих структур Така система дозволяє серверу звітів обслуговувати кілька "дерев" організацій, які не обов'язково пов'язані одним коренем.

Организація збирання звітів, які прийшли електроною поштою, проводиться за допомогою системного демону Cron (чи будьякого іншого sheduler, який виконує системні задачи).
Усі файли PHP, які треба виконувати періодично, зібрані у каталозі /cron
Нижче приведений опис файлів та періодичність виконання.

Ім'я файлу Функції Періодичність виконання
check_email.php 1) Перевіряє поштову скриню
2) Обробляє окремі звіти
3) Веде log
4) Очищає поштову скриню
2 рази на добу, наприклад об 11-00 та о 15-00
debtors.php 1) Перевіряє строки складання звітів
2) Встановлює для усіх звітів наступний строк складення
3) Складає списки боржників
2 рази на місяць, наприклад 10 та 20 числа
mail_remainder.php 1) Розсилає користувачам нагадування про наближення строку складання чергового звіту (за три дні) 2) Розсилає списки боржників до вищих організацій 1 раз на добу

Статистика обробки пошти та розсилання попереджень ведеться у розділі "Log поштової скрині". Тут, також, ведеться статистика приймання звітів (чи відмов у прийманні), розсилання попереджень та списків боржників.

У випадку, якщо Ви хочете розширити можливості системи, додати новий модуль, змінити текст до посилання, слід ско ристуватися розділом "Посилання/права".

1)Якщо Ви хочете створити звичайне иекстове посилання (таке як "Звіти"), кликніть на іконці "додати" та заповніть усі поля у новому вікні. У полі "посиланя" вкажіть файл "../user/_about.php", а в полі "опис" - введіть текст у форматі html.



Інсталяція

Для інсталяції серверу "Звiт" та його роботи Вам знадобиться:

ОС: Linux(Unix)
Веб-сервер: Apache
PHP
Mysql
Sendmail
xlhtml
Cron
спеціальна поштова скриня для приймання звітів електроною поштою
Якщо усі системні вимоги було виконано, зробіть наступне:

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