e-Zvit
Анализатор отчетов.


Введение

Сервер отчетов "Звiт" - это информационная система, позволяющая организовать сдачу, прием, храниение и анализ отчетов. Любая иерархическая структура отчитывающихся организаций может воспользоваться системой "Звiт" для работы с отчетами, составленными в формате 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. нажмите на кнопку "Добавить"

В этом разделе Вы можете заполнить данными отчеты, которые Вам необходимо сдать.
Введите значения в пустые поля. Чтобы посмотреть, как выглядит заполненный отчет, нажмите на кнопку "Проверить отчет". Если Вы не обнаружили ошибок и считаете, что отчет можно отправлять, нажмите на кнопку "Отправить отчет".

Все отчеты, которые сдавала Ваша организация и все ей подчиненные организации.
В этом разделе Вы можете отредактировать уже сданные отчеты при условии, что они не были заблокированы.

Блокированные отчеты

Т.к. значение любой глобальной переменной является результатом выполнения SQL-запроса, то при использовании данных из одних отчетов в других накладывает ограничения на редактирования "донорских" отчетов. До тех пор, пока данные отчета не использовались - отчет доступен для редактирования. Если данные одного отчета вошли в другой отчет - "донорский" отчет блокируется. Удаление отчета, использующего "чужие" данные автоматически разблокирует задействованные отчеты.

Этот раздел содержит список подчинешнных организаций, которые задерживают сдачу отчета или же сдали его не вовремя. В колонке "Срок сдачи" указывается официальная дата сдачи отчета, а в колонке "Дата внесения" - дата поступления отчета от подчиненной организации(в том случае, если отчет был внесен с опозданием).


Анализ отчетов

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

Например, из всех отчетов "отчет 1" нужно получить результаты в виде "отчет 1 - результаты".

Пусть бланк основного отчета задается excel файлом (рис.1), а результаты мы получим в виде рис.2

Отчет "отчет 1 " рис.1
Результирующий отчет "отчет 1 - результаты" рис.2

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

Создадим глобальные переменные results_sum и results_count. Рассмотрев структуру базы данных (Приложение1), можно написать 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. Для того, чтобы проверить значение формулы нажмите на кнопку "Вычислить значение".

Т.к. значение любой глобальной переменной является результатом выполнения SQL-запроса, то при использовании данных из одних отчетов в других, накладывает ограничения на редактирования "донорских" отчетов. До тех пор, пока данные отчета не использовались - отчет доступен для редактирования. Если данные одного отчета вошли в другой - "донорский" отчет блокируется. Удаление отчета, использующего "чужие" данные автоматически разблокирует задействованные отчеты.

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

Результирующий бланк загружается в разделе "Бланки нашей организации" или поступает от вышестоящей организации.
В разделе "Результаты" отметьте отчеты, предназначенные для сбора данных, а в списке в верхней части окна, выберите название результирующего отчета.

Сбор результатов из уже сданных отчетов

Для получения результатов, использующих сданные отчеты, нужно написать запрос к таблице, в которой хранятся полученные данные. Структура таблицы form_values

`id` int(10) NOT NULL auto_increment, - ключ. Номер записи
`id_form` int(10) NOT NULL default '0', - идентификатор формы
`id_blank` 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.

В системе "Зв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) Рассылает пользователям напоминания о наступлении срока сдачи очередного отчета (за 3 дня) 2) Рассылает списки должников вышестоящим организациям 1 раз в сутки

Статистика обработки электронной почты и рассылки предупреждений ведется в разделе "Log почтового ящика". Тут ведется статистика приема отчетов ( или отказа в приеме), рассылки предупреждений и списков должников.

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

1) Если Вы хотите создать обычную текстовую ссылку (такую как "Отчеты"), щелкните на иконке "добавить" и заполните поля в открывшемся окне. В поле "Ссылка" укажите файл "../user/_about.php", а в поле "Описание" - вбейте текст в формате html.



Настройка и установка

Для установки сервера "Звiт" и его работы Вам потребуется:

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

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