Проектирование информационной системы (базы данных и приложения) для решения операций по учету финансов предприятия. Разработка использующих их клиентских приложений с применением технологических платформ на языке PHP с применением технологии WEB.
Аннотация к работе
Данный факт помог многим компаниям сократить штат сотрудников, ответственных за учет в компании, а с другой стороны повысить надежность расчетов и сократить время формирования отчетов необходимых аналитикам компании. В рамках данного дипломного проекта необходимо реализовать следующее: - Операции: - приход денег в кассу/банк; Например, во всех развитых странах имеются базы данных всех автомобилей, в том числе и находящихся в розыске. С такой базой данных дорожный патруль имеет возможность в считанные секунды многое узнать о владельце проезжающего мимо автомобиля и определить, представляет ли он для полицейских профессиональный интерес. В переводе с английского "интерфейс" означает "посредник", так что сегодня Вы общаетесь с любой программой (сиречь машиной) через посредника, который представляет собой систему сменяющихся команд меню, рамок или окошек, в которые Вы можете посредством клавиатуры и мыши вводить данные и получать отчеты о запросах к этим данным.
Введение
В современном мире ни одна отрасль не может обойтись без применения ЭВМ, это устоявшийся и широко известный факт. Сейчас компьютер стал настолько привычной для нас вещью, что мы совершенно обыденно начинаем на него реагировать. Компьютер перестал быть предметом роскоши и превратился в необходимость. Многие компании стали применять современные технологии для повышения производительности своего бизнеса, использовать программу учета товарных ценностей, учета финансов и т.д. Данный факт помог многим компаниям сократить штат сотрудников, ответственных за учет в компании, а с другой стороны повысить надежность расчетов и сократить время формирования отчетов необходимых аналитикам компании.
1. Постановка задачи
В рамках данного дипломного проекта необходимо реализовать следующее: - Операции: - приход денег в кассу/банк;
- расход денег из кассы/банка;
- перемещение денег.
- Отчеты: - остатки денег в разрезе касс/банков;
- долги клиентов организации;
- долги организации клиентам.
- Функции: - печать приходного и расходного кассовых ордеров;
- печать платежных поручений;
- экспорт справочника клиентов в Excel.
2. Структура базы данных
Базы данных это очень мощный инструмент управления данными, а именно: Средство хранения данных. Прямо сейчас давайте уделим момент для разговора о базах данных вообще. Когда Вы слышите слова «базы данных», Вы, возможно, представляете себе некоторое абстрактное хранилище данных. Вы недалеки от истины и в действительности можно говорить о том, что первейшее назначение баз данных - это использование хорошо отработанных средств хранения данных. Электронные архивы мало похожи на своих бумажных предков, которые, будучи организованы в хранилища, занимали, порой, не одно здание. Конечно, и сегодня существует вероятность потери копий на электронных носителях в результате затопления, пожара или атомной войны, однако такую вероятность можно сравнительно легко свести практически к нулю.
Именно компактность электронных копий архивов позволяет, например, США держать отпечатки пальцев и другие биометрические многолетние данные всех иностранцев, легально посетивших штаты. Во времена бумажных носителей нечего было бы и думать об обслуживании хранения такого объема данных. Если бы, однако, какое-то государство взялось за такую работу, то вряд ли эту информацию можно было оперативно обрабатывать вручную, сколько бы людей на эти цели ни было бы выделено.
Быстрое извлечение нужных данных. На этом примере мы получаем намек на другое назначение баз данных - извлекать нужное подмножество информации за разумное время. Например, во всех развитых странах имеются базы данных всех автомобилей, в том числе и находящихся в розыске. С такой базой данных дорожный патруль имеет возможность в считанные секунды многое узнать о владельце проезжающего мимо автомобиля и определить, представляет ли он для полицейских профессиональный интерес. Попробуйте и здесь представить, как можно было бы получить такие сведения без электронных средств.
Актуализация данных. Однако не нужно думать, что базы данных - это что-то, сделанное на века, и потому остающееся незыблемым. Многие угнанные автомобили находятся и передаются прежним владельцам, а за это время угоняются многие другие машины. Это приводит нас к мысли, что электронная база данных должна постоянно обновляться и, следовательно, для общения с ней должны быть разработаны мощные и удобные средства для актуализации данных. Автор помнит то время, когда оператор общался с машиной почти напрямую, набирая с помощью тумблеров команды, состоящие из двоичных кодов. На таком "языке" много не поговоришь. Сегодня для этих целей существует так называемый "пользовательский интерфейс". В переводе с английского "интерфейс" означает "посредник", так что сегодня Вы общаетесь с любой программой (сиречь машиной) через посредника, который представляет собой систему сменяющихся команд меню, рамок или окошек, в которые Вы можете посредством клавиатуры и мыши вводить данные и получать отчеты о запросах к этим данным. Интерфейс устроен так, что он удобен и понятен пользователю, а сложный механизм общения интерфейса с машиной скрыт от пользователя. Разработкой всего этого занимаются квалифицированные программисты, однако результат их труда должен быть доступен не только специалисту высокой квалификации, но и простому обывателю и даже школьнику.
Безопасность. На этом месте у Вас может подсознательно возникнуть законное чувство тревоги: а что же будет, если какой-нибудь школьник, даже случайно или нечаянно, попробует изменить очень ценную информацию? Не волнуйтесь, у него ничего не выйдет. Ценная информация охраняется невидимой электронной службой безопасности. Если у школьника нет соответствующего разрешения, он и не получит доступа к данным. Электронная служба контролирует ограничение на доступ к данным, которое может заключаться в том, что одним пользователям разрешено только просматривать часть данных, другим - часть просматривать, а какую-то часть изменять и т.д. Разрешение на доступ к данным реализует системный администратор. Однако сам системный администратор имеет четкие инструкции на этот счет от производственной организации и несет ответственность за ее нарушение.
Если бы ценную информацию в базах данных было бы легко портить, они не заняли бы в настоящее время такого господствующего положения. Сегодня трудно назвать область деятельности, где бы ни использовались базы данных, так что из области знаний они плавно уходят в область общей культуры.
2.1 Таблицы справочников
База данных проекта состоит из следующих таблиц: Таблица 2.1. - Кассы предприятия
КАССА
ID Счетчик
Наименование Текст (50)
Кассир Текст (100)
Таблица 2.2. - Список банков
БАНК
ID Счетчик
Наименование Текст (50)
Город Текст (50)
БИК Текст (9)
КОРСЧЕТ Текст (20)
Индекс Текст (6)
Телефон Текст (50)
Таблица 2.3. - Список банковских счетов контрагентов
БСЧЕТА
ID Счетчик
БАНК БАНК.ID
Наименование Текст (30)
НОМСЧЕТА Текст (20)
Таблица 2.4. - Список собственных банковских счетов
С_БСЧЕТА
ID Счетчик
БАНК БАНК.ID
Наименование Число (30)
НОМСЧЕТА Число (20.0)
Таблица 2.5. - Список клиентов компании
КОНТРАГЕНТЫ
ID Счетчик
Наименование Текст (50)
ЮРАДРЕС Текст (255)
ИНН Текст (10)
КПП Текст (9)
Телефоны Текст (50)
Таблица 2.5. - Список счетов клиентов
СЧЕТАКОНТР
ID Счетчик
Контрагент КОНТРАГЕНТЫ.ID
Счет БСЧЕТА.ID
2.2 Таблицы операций
Таблица 2.6. - Фиксация движения денег в кассах предприятия
ДВИЖЕНИЯКАССЫ
ID Счетчик
КАССА КАССА.ID
Контрагент КОНТРАГЕНТЫ.ID
КОДОПРЕРАЦИИ Число (2.0)
Сумма Число (16.2)
НДС Число (16.2)
Таблица 2.7. - Фиксация движения денег на счетах компании
ДВИЖЕНИЕСЧЕТОВ
ID Счетчик
СЧЕТ С_БСЧЕТА.ID
Контрагент КОНТРАГЕНТЫ.ID
КОДОПРЕРАЦИИ Число (2.0)
Сумма Число (16.2)
НДС Число (16.2)
Таблица 2.8. - Фиксация оказания услуг клиентам
Услуги
ID Счетчик
Контрагент КОНТРАГЕНТЫ.ID
УСЛУГА Текст (неогр.)
Сумма Число (16.2)
НДС Число (16.2)
2.3 Взаимосвязи таблиц
Ниже на рисунке 2.1 приведена схема данных базы данных нашего курсового проекта: Рисунок 2.1 - Структура данных базы данных
2.4 Структура учета движение взаиморасчетов
В рамках данного курсового проекта необходимо было реализовать возможность учета движения денежных средств. Из этого следует, что необходимо реализовать следующие операции: - Движение денег по кассам предприятия;
- Движение денег по банковским счетам предприятия;
- Учет оказания услуг сторонним организациям;
Для учета движения документов движения по списанию денежных средств, используется отрицательное число «-1» в поле «КОДОПЕРАЦИИ» базы данных «ДВИЖЕНИЕКАССЫ» и «ДВИЖЕНИЯБАНКА», а для положительного движения «1». Данный механизм позволяет использовать только одну таблицу для движения как расходных, так и приходных операций и получать соответствующие отчеты на лету путем перемножения.
Поскольку учет оказания услуг сторонним организациям лежит за пределами данной работы, но необходимо реализовать возможность фиксации погашения кассовых долгов, то введена дополнительная таблица, имеющая достаточно примитивную структура, которая отображена в таблице 2.8.
Также в базе данных организовано существование нескольких банковских счетов для каждой юридической сторонней организации.
3 Интерфейс пользователя
3.1 Меню программы
Меню программы состоит из следующих пунктов: 1. Касса - Отображения реестра документов по кассовым операциям;
1.1. ПКО - Добавление нового документа «Приходного кассового ордера»;
1.2. РКО - Добавление нового документа «Расходного кассового ордера»;
1.3. Перемещение - Оформление двух документов РКО и ПКО за один ход;
1.4. Остатки в кассе - Отображение движение денег по каждой кассе;
2. Клиенты
2.1. Картотека - Добавление или редактирование справочника контрагентов;
2.2. Оказание услуг - Добавление или редактирование оказанных услуг сторонним организациям оказанных в справочнике «Картотека Клиентов»;
2.3. Взаиморасчеты - Общий отчет по отображению сальдо взаиморасчетов клиентов с учетом движения всех денежных средств компании и оказанных услуг.
3. Кассы - Справочник касс организации;
4. Банки - Справочник банков, которые обслуживают контрагентов;
5. Константы - Основные константы компании: Ф.И.О. начальника, название компании и т.д.
3.2 Справочники
Справочники используются для хранения первичной информации, с которой производятся дальнейшие манипуляции. Данные из справочниках, как правило, используются в документах движения и несут в себе функцию классификации по определенным критериям, что позволяет в дальнейшем по данным справочников делать всевозможные отчеты и анализировать информацию.
В данном курсовом проекте используются следующие справочники: - Справочник касс предприятия;
- Справочник банков и банковских счетов;
- Справочник клиентов компании;
- Справочник констант - базовые значения предприятия, такие как должность руководителя, его инициалы и другая внутренняя информации.
Все справочники имеют одинаковый интерфейс взаимодействия, а именно: Поле1 Поле2 … [Изменить] [Удалить]
Поле1 Поле2 … [Изменить] [Удалить]
… … … … …
Добавить новый элемент
Поле ввода 1 Поле ввода 1 … Х Х
Где «Поле1» … «ПОЛЕN» - статический текст, который нельзя изменять или соответствующее поле ввода, зависящее от типа переменной и свойства изменяемости данной переменной; «Изменить» - обновляет данные в базе данных; «Удалить» - удаляет значение в случает отсутствия данного элемента в дочерних таблицах;
На рисунке 3.1. изображен пример работы со справочником.
Рисунок 3.1 - Пример работы со справочником
Список литературы
В данный момент в программе реализованы следующие документы: - «Приходный кассовый ордер» - данный документ регистрирует приход денег в кассу предприятия;
- «Расходный кассовый ордер» - соответственно осуществляет операцию расхода денежных средств;
- «Оказание услуги» - фиктивный документ оказания услуг клиентам компании или фиксация затрат по оказанию услуг сторонними организациями;
Рисунок 3.2 - Приходный кассовый ордер
Интерфейс взаимодействия с пользователем представляет из себя обычную web-форму с полями ввода в соответствии с «Правилами Бухгалтерского Учета (ПБУ)», а именно: - Дата;
- Касса - соответствующая касса предприятии куда приходят или от куда уходят денежные средства;
- Контрагент - физическое или юридическое лицо которое учувствует в сделки приема или передачи денежных средств;
- Сумма - Сумма, указанная в национальной валюте, а именно в рублях. Для указания копеек необходимо использовать запятую;
- НДС - «Налог на добавленную стоимость» является процентом удерживаемого налога в доход государства за кассовое обслуживание;
- НП - с положение о «Налогах РФ» с 2004 года данный вид налоге считается отмененным на всей территории РФ;
- Принято от - Ф.И.О. стороннего физического лица, действующего от лица компании и от самого себя;
- Основание - Указывается причина совершения денежной операции, как правило является ссылкой на другой документ совершения полного пакета сделки в рамке одной торговой операции;
- Комментарий - свободное для вода текстовое поле, не является обязательным и служит сугубо для уточняющих пометок;
- Выдано - собственное подотчетное, физическое или юридическое лицо другой компании;
- Услуга - Текстовое описание осуществленной услуги нашей компании или же нашей компанией;
Рисунок 3.3 - Расходный кассовый ордер
Для работы с документами присутствуют следующие кнопки: - Сохранить - Добавление или изменения данных в базе данных компании;
- Добавить - Добавление данных в БД;
- Печатать - Формирование печатной формы для оформления бумажного эквивалента совершенной сделки;
Все описанные выше поля представлены на рисунках 3.2., 3.3. и 3.4.
Рисунок 3.4 - Оказание услуг
3.4 Отчеты
Отчеты служат для формирования всевозможной аналитической информации, которая строится на основе внесенных первичных данных. Большим преимуществом отчетов построенных на базе технологии баз данных, является актуальность данных, ее оперативное обновление и быстрота предоставления, нежели с использования классических методов «калькулятора и листа бумаги».
В рамках данной работы была поставлена задача формирования отчетов: остатков денег в разрезе касс/банков; долгов по контрагентам и собственных долгов;
Перечислим отчеты и описание получаемых результатов: Отчет движение денег по кассам - отражает общее движение денег по каждой кассе предприятия на основе документов ПКО и РКО; Отчет представлен на рисунке 3.5 и имеет следующие поля: - Касса - наименование кассы, по которой отражается текущий остаток;
- Остаток средств - суммовое выражение денежной валюты. В случае присутствия минуса в данном поле, означает, что было выдано средств больше, чем поступило, т.е. возникла нестандартная ситуация, которая не должна присутствовать, т.к. организация в соответствии с учетом не может выдать средств больше, нежели их поступило в кассу.
Рисунок 3.5 - Отчет движения по кассе
Взаиморасчеты с клиентами - данный отчет отражает общие взаиморасчеты с клиентами, как в нашу пользу, так и в пользу клиента, т.е. наш долг сторонней организации. Фактически с условиями поставленной задачи, данный отчет включает в себя два отчет: «Долги клиентов организации» и «Долги организации клиентам». Данный отчет изображен на рисунке 3.6., а его атрибуты имеют следующее описание: - Клиент - контрагент из справочника и может выступать как кредитор, так и дебитор для нашей компании;
- Касса - касса предприятия;
- Остаток средств - Сальдо взаиморасчетов. Минусовой остаток говорит о нашем долге сторонней организации.
Рисунок 3.6 - Взаиморасчеты с клиентами
3.5 Реестр документов
Все ранее сформированные документы хранятся в реестре документов, который отображает следующую информацию: вид документа, его номер, дату и кассу, над которой совершала соответствующая операция. Смотрите рисунок 3.7.
Из реестра документов существует возможность добавления новых документов по нажатию на соответствующие ссылки.
Рисунок 3.7 - Реестр кассовых документов
4 Программная реализация
В данном разделе будут описаны наиболее интересные моменты реализации проекта, такие как вывод на печать шаблонной формы, выборки из базы данных и т.д.
4.1 Структура работы программы
В простом варианте архитектура программы выглядит приблизительно, как на рисунке 4.1. Т.е. пользователь взаимодействует с базой данных через реализованное нами многопользовательское приложение.
Рисунок 4.1 - Структура информационной системы
Приложение логически можно разделить на две составляющие: - Удаленный сервер Apache, который взаимодействует с базой данных MYSQL;
- Интернет браузером, таким например как Internet Explorer в качестве клиентской части.
Т.е. с технической точки зрения можно представить данную систему как трехзвенную, т.е. сервер Apache с PHP обрабатывает промежуточную информацию, а клиентское ПО ее просто отображает.
В трехзвенной СУБД используется промежуточное звено - сервер приложений, являющееся посредником между клиентом и сервером БД. Сервер приложений призван полностью избавить клиента от каких бы то ни было забот по управлению данными и обеспечению связи с сервером БД.
Рисунок 4.2 Архитектура СУБД - трехзвенная
4.2 Организации справочников
Все справочники в проекте имеют схожую структуру организации данных создания и манипулирования данными.
Код программы имеет внутренние биты состояния ADD, EDIT, DEL, что определяет поведение скрипта перед отображением данных справочника.
Учитывая биты состояния, код легко использует различные в данный момент SQL запрос к БД и совершает соответственной действие. После предобработки файла справочника, делается выборка всех элементов справочника и их отображение. if($action=="add")
{
$res=sql("select count(*) as sz from `касса` where `Наименование`="$name"");
Формирование проводок, их отображение и изменение по двум данным документам осуществляется из одного программного кода.
Т.к. все входящие переменные из запросов базы данных или переданных данных из POST запроса имеет схожие названия с наименование полей ввода данных, что позволяет без особых усилий с использованием только нескольких битов фиксации состояний в рамках одного кода HTML отображать, добавлять и изменять данные.
Далее приведем описание внутренних состояний: - Код Операции - характеризует движение в минус или плюс, что соответствует ПКО это или РКО;
- Операция - имеет значение NEW, INS, UPD - что характеризуется как новый документ, операция вставки данных или их обновления соответственно.
- DOCID - если в запросе присутствует данное значение переменной или оно сформировалось в результате обработки одной из Операций, описанных выше, то осуществляется выборка данных и последующее отображение.
$ISNEW=0;
$UPDID=0;
$DOCID=(int)$DOCID; // Хитрость J ибо нельзя переменную обнулять, если есть вх. данные
} if($ISNEW==0) // Отображение в случае известности номера документа
{
$res=sql("select * from `ДВИЖЕНИЕКАССЫ` where `id` = "$DOCID" ");
$ar=fetch_array($res);
$opid=$ar[КОДОПЕРАЦИИ];
$kassa=$ar[Касса];
$client=$ar[Контрагент];
$summ=$ar[Сумма];
$nds=$ar[НДС];
$date=$ar[Дата];
$from=$ar[From];
$why=$ar[Основание];
sscanf($date, "%d-%d-%d", $yy, $mm, $dd); // Привод даты в вид документа
}
…
" name="opid">
" name="DOCID">
4.4 Отображение бланков документов
Поскольку существует вероятность того, что в нашем государстве бланки могут видоизменяться, то был применен механизм работы по шаблонам. Это значит, что сам бланк храниться в отдельном файле, и в тех местах, где необходимо заполнение каких-то данных, ставятся маркеры по формату «{» НАЗВАНИЕПЕРЕМННОЙ «}». Для обработки файлов используется класс INTEMPLATE, написанный на языке PHP.
$obj = new INTEMPLATE("./blanks"); // Указание директории с шаблонами
Существует вероятность того, что пользователь откроет документ и, изменив данные, выведет его на печать без сохранения в БД, поэтому было принято решение по формированию печатной ведомости на основе информации из полей ввода данных открытого документа, для чего был применен язык программирования JAVASCRIPT.
window.name = "bazarmain";
function print(){ d=document.forms["frm"];
p="?";
p= p "dd=" d.elements["dd"].value;
p= p "&mm=" d.elements["mm"].value;
p= p "&yy=" d.elements["yy"].value;
p= p "&kassa=" d.elements["kassa"].value;
p= p "&client=" d.elements["client"].value;
p= p "&summ=" d.elements["summ"].value;
p= p "&nds=" d.elements["nds"].value;
p= p "&from=" d.elements["from"].value;
p= p "&why=" d.elements["why"].value;
p= p "&opid=" d.elements["opid"].value;
p= p "&id=" d.elements["DOCID"].value;
w = window.open("pull.php" p, "chd", "menubar=1,height=600,width=780");
w.focus();
}
4.5 Отчет о взаиморасчетах клиентов
С точки зрения программной реализации он для нас имеет наибольший интерес, т.к. является наиболее сложен в реализации SQL запросов. Тут необходимо учесть много факторов, таких как: движение по кассам, движение по банкам; справочники контрагентов, касс, банков; оказание услуг.
Ниже приведен фрагмент выборки без учета движения денег по банку.
$res=sql("
SELECT sum( (`ДВИЖЕНИЕКАССЫ`.`Сумма` * `ДВИЖЕНИЕКАССЫ`.`КОДОПЕРАЦИИ`) `Услуги`.`Сумма`) AS sum, `Контрагенты`.`Наименование` AS contname, `касса`.`Наименование` AS cas
`ДВИЖЕНИЕКАССЫ`.`Касса` = `касса`.id AND `ДВИЖЕНИЕКАССЫ`.`Контрагент` = `Контрагенты`.id AND `Услуги`.`Контрагент` = `Контрагенты`.id
GROUP BY contname, cas
");
4.6 Использования нескольких СУБД
Для совместимость СУБД был внедрен механизм макросов, т.е. создания обобщающих функций, таких как: SQL, FETCH_ARRAY, CONNECT, которые в зависимости от указанной с конфигурации СУБД вызывают разные функции взаимодействия с СУБД.
В рамках данного проекта были использованы СУБД MYSQL и Microsoft SQL Server.
// Default will be MYSQL return mysql_fetch_array($res);
}
Заключение
В рамках данной курсовой работы был приобретен опыт в проектирования реляционных баз данных с учетом предметной области и рациональности организации структуры таблиц, создание взаимосвязанных запросов, программирование на языках PHP, SQL, HTML, JAVASCRIPT. Создания программного кода по модульному принципу, а также создание необходимого механизма для взаимодействия с несколькими разными СУБД.
Список литературы
1. Документы стандартов RFC;
2. Документация по описанию функции языка PHP, http://www.php.net;
3. Документация по работе с СУБД MYSQL, http://www.mysql.com;