Информационная система учета товарно-материальных ценностей на примере ЗАО "Дикси"

Разработка системы учета товарно-материальных ценностей с использованием стандартных методологий функционального и информационного моделирования. Экономические параметры разработки и внедрения информационной системы. Разработка клиентской части системы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 03.04.2013
Размер файла 1,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Введение

Целью данного дипломного проекта является разработка экономической информационной системы учета товарно-материальных ценностей на примере ЗАО «Дикси» г. Серпухов.

Разработка системы должна осуществляться с использованием стандартных методологий функционального моделирования: IDEF0 и информационного моделирования IDEF1Х. Моделирование должно выполняться в рамках стандартов, поддерживаемых программными средствами моделирования ERWin 4.0 и BPWin 4.0. Данные хранятся в таблицах MS SQL Server. Для работы с БД должен использоваться язык запросов SQL в рамках стандарта ANSI SQL-92. Для разработки пользовательских интерфейсов и средств генерации отчетов (любых твердых копий) должен использоваться язык программирования Delphi 10.

1. Специальный раздел

1.1 Описание функциональных подсистем ЭИС (для комплекса задач)

Целью данного дипломного проекта является разработка многопользовательской централизованной системы с архитектурой «клиент-сервер». Пользователями разрабатываемой системы являются:

? Заведующий складом РЦ - контроль работы кладовщиков и проведение инвентаризации;

? Кладовщики склада РЦ - прием продукции на склад РЦ от поставщиков и отгрузка продукции со склада РЦ для доставки в торговые точки компании;

? Логисты РЦ - формирование общих заказов поставщикам продукции, оптимальное распределение и планирование доставки продукции с центрально-распределительного склада в торговые точки компании, формирование результатной отчетности для руководства компании;

В разрабатываемой информационной системе учета товарно-материальных ценностей на складе РЦ ЗАО «Дикси» предлагается выделить следующие функциональные подсистемы:

? Подсистема «Поставки продукции»;

? Подсистема «Отгрузки продукции»;

? Подсистема «Результатная отчетность».

Для описания задач функциональных подсистем и информационных связей между ними построена функциональная модель в виде диаграммы бизнес-функций (BFD - Business Function Diagram) (см. рис. 2.1).

Рисунок 2.1 - Диаграмма бизнес-функций подсистем ИС

1.2 Новая технология выполнения выбранной функции управления

Для описания новой технологии выполнения учета товарно-материальных ценностей на складе РЦ ЗАО «Дикси» построены структурно-функциональные диаграммы «AS-ТО-BE» в методологии IDEF0, с помощью CASE-средства BPwin. Внешняя часть функциональной модели информационной системы учета товарно-материальных ценностей на складе РЦ ЗАО «Дикси» представлена в виде контекстной диаграммы или модели «черного ящика» (см. рис. 2.2).

Рисунок 2.2 - Контекстная диаграмма «AS-ТО-BE»

Диаграмма декомпозиции системы первого уровня A0 отражает подсистемы разрабатываемой ИС и информационные связи между ними (см. рис. 2.3).

Рисунок 2.3 - Диаграмма декомпозиции системы первого уровня (A0)

Пользователями подсистемы «Поставки продукции» являются кладовщики и логисты склада РЦ ЗАО «Дикси». Данная подсистема служит для автоматизации следующих функций:

? Загрузка заказа из торговой точки (обработка документов MS Excel);

? Формирование общего заказа поставщику в MS Word;

? Регистрация поставок продукции на склад РЦ;

? Расчет суммы принятой продукции;

? Формирование приходной накладной по форме ТОРГ-14 в MS Word.

Диаграмма декомпозиции подсистемы второго уровня A1 отражает функции подсистемы «Поставки продукции» (см. рис. 2.4).

Рисунок 2.4 - Диаграмма декомпозиции подсистемы «Поставки продукции» (A1)

Пользователями подсистемы «Отгрузки продукции» являются логисты склада РЦ ЗАО «Дикси». Данная подсистема служит для автоматизации следующих функций:

? Распределение партий продукции по торговым точкам;

? Расчет суммы отгрузки продукции в торговую точку;

? Формирование товарно-транспортной накладной по форме Т-1 в MS Word.

Диаграмма декомпозиции подсистемы второго уровня A2 отражает функции подсистемы «Отгрузки продукции» (см. рис. 2.5).

Рисунок 2.5 - Диаграмма декомпозиции подсистемы «Отгрузки продукции» (A2)

Пользователями подсистемы «Результатная отчетность» являются заведующий и логисты склада РЦ ЗАО «Дикси». Данная подсистема служит для автоматизации следующих функций:

? Контроль и учет остатков продукции;

? Формирование инвентаризационной ведомости в MS Word;

? Формирование ежемесячного отчета об отгруженной продукции (группировка/диаграмма по магазинам) в MS Word;

? Формирование ежемесячного отчета о принятой от поставщиков продукции (группировка/диаграмма по поставщикам) в MS Word;

? Формирование еженедельного отчета об остатках продукции (группировка/диаграмма по видам продукции) в MS Word.

Диаграмма декомпозиции подсистемы второго уровня A3 отражает функции подсистемы «Результатная отчетность» (см. рис. 2.6).

Рисунок 2.6 - Диаграмма декомпозиции подсистемы «Результатная отчетность» (A3)

1.3 Описание обеспечивающих подсистем ЭИС

1.3.1 Организационное обеспечение

Организационное обеспечение - совокупность методов и средств, регламентирующих взаимодействие работников с техническими средствами и между собой в процессе разработки и эксплуатации информационной системы [1].

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

? в случае возникновения со стороны функционального подразделения необходимости изменения функциональности системы, пользователи должны обратиться к руководителю или разработчику ИС;

К защите от ошибочных действий персонала предъявляются следующие требования:

? должна быть предусмотрена система подтверждения легитимности пользователя при просмотре данных;

? для всех пользователей должна быть запрещена возможность удаления преднастроенных объектов и отчетности;

? для снижения ошибочных действий пользователей должно быть разработано полное и доступное руководство пользователя

1.3.2 Информационное обеспечение

Информационная модель и ее описание

Одним из ключевых моментов создания ИС с целью автоматизации информационных процессов организации является всестороннее изучение объектов автоматизации, их свойств, взаимоотношений между этими объектами, и представление полученной информации в виде информационной модели данных.

Информационная модель данных предназначена для представления семантики предметной области в терминах субъективных средств описания - сущностей, атрибутов, идентификаторов сущностей, супертипов, подтипов и т.д. Элементы информационной модели данных предметной области являются входными данными для решения задачи проектирования базы данных - создания логической модели данных [2].

IDEF1 (Information Modeling) - одна из методологий семейства IDEF. Применяется для построения информационной модели, которая представляет структуру информации, необходимой для поддержки функций производственной системы или среды. Метод IDEF1, разработанный Т. Рэмей основан на подходе П. Чена. Он позволяет построить модель данных, эквивалентную реляционной модели в третьей нормальной форме. В настоящее время на основе совершенствования методологии IDEF1 создана ее новая версия -- методология IDEF1X. IDEF1X разработана с учетом таких требований, как простота изучения и возможность автоматизации. IDEF1X-диаграммы используются рядом распространённых CASE-средств (в частности, ERwin, Design/IDEF) [3].

Сущность в IDEF1X описывает собой совокупность или набор экземпляров похожих по свойствам, но однозначно отличаемых друг от друга по одному или нескольким признакам. Каждый экземпляр является реализацией сущности. Таким образом, сущность в IDEF1X описывает конкретный набор экземпляров реального мира. Связи в IDEF1X представляют собой ссылки, соединения и ассоциации между сущностями. Связи это суть глаголы, которые показывают, как соотносятся сущности между собой [4].

В результате анализа предметной области, были выделены сущности. Описание реальных объектов предметной области, которые отражают выделенные сущности, представлено в таблице 2.1.

Таблица 2.1

Глоссарий сущностей

Имя

Определение

1

ТОРГОВАЯ ТОЧКА

Торговые точки компании ЗАО «Дикси»

2

ПРОДУКЦИЯ

Товары, которые поступают на склад РЦ ЗАО «Дикси», размещаются там и отгружаются в торговые точки компании

3

ГРУППА

Разновидности товаров, разделенные по функциональному применению

4

ЗАКАЗ

Документ, подтверждающий заказ продукции с торговых точек компании «Дикси»

5

ПОСТАВЩИК

Организации, поставляющие продукцию на склад РЦ ЗАО «Дикси»

6

РАСХОД

Факт включения продукции в заказ с торговой точки

7

ОБЩИЙ ЗАКАЗ

Документ, подтверждающий поступление продукции от поставщика на склад РЦ ЗАО «Дикси»

8

ПРИХОД

Факт включения продукции в приходную накладную

После определения атрибутов сущностей, типов данных, средствами Erwin, была построена диаграмма «Сущность-связь», которая представлена на рисунке 2.7.

Рисунок 2.7 - Диаграмма «Сущность-связь»

После определения атрибутов сущностей, выделения первичных и внешних ключей, и связей между сущностями была составлена IDEF1X-диаграмма КВ-уровня (см. рис. 2.8).

Рисунок 2.8 - IDEF1X-диаграмма КВ-уровня

Описание атрибутов сущностей с указанием владельцев-сущностей, а также первичных и внешних ключей, представлено в таблице 2.2.

Таблица 2.2

Описание атрибутов сущностей

Имя

Смысл

Ключ

Сущность

Код

Уникальный номер торговой точки ЗАО «Дикси», автоматически присваиваемый ей при регистрации

PK

ТОРГОВАЯ ТОЧКА

Имя

Наименование торговой точки ЗАО «Дикси»

Телефон

Контактный телефон торговой точки ЗАО «Дикси»

Адрес

Местоположение торговой точки ЗАО «Дикси»

Артикул

Уникальный номер продукции, присваиваемый ей при регистрации

PK

ПРОДУКЦИЯ

Номенклатура

Название продукции хранящейся на складе РЦ ЗАО «Дикси»

Группа

Группа продукции

FK

Единица

Единица измерения продукции

Цена

Приходная цена единицы продукции

Страна

Страна производитель продукции

Код

Уникальный код группы продукции

PK

ГРУППА

Имя

Название группы продукции

Код

Уникальный номер поставщика продукции ЗАО «Дикси», автоматически присваиваемый ей при регистрации

PK

ПОСТАВЩИК

Имя

Наименование поставщика продукции ЗАО «Дикси»

Телефон

Контактный телефон поставщика продукции ЗАО «Дикси»

Номер

Уникальный номер приходной накладной, присваиваемый ей при регистрации

PK

ОБЩИЙ ЗАКАЗ

Дата

Дата поставки продукции на склад компании, по приходной накладной от поставщика

Поставщик

Поставщик продукции

FK

Общий заказ

Номер приходной накладной, подтверждающий приход продукции на склад от поставщика

PK (FK)

ПРИХОД

Артикул

Штрих-код продукции, включенной в приходную накладную

PK (FK)

Количество

Количество единиц продукции, включенной в заказ поставщику

Факт

Фактическое количество единиц продукции, включенной в приходную накладную

Номер

Уникальный номер заказа продукции с торговой точки, автоматически присваиваемый ему при формировании

PK

ЗАКАЗ

Точка

Код торговой точки оформившей заказ

FK

Дата

Дата формирования заказа

Статус

Дата выполнения заказа

Номер

Номер заказа, подтверждающий отгрузку продукции в торговую точку

PK (FK)

РАСХОД

Артикул

Штрих-код продукции, включенной в заказ с торговой точки

PK (FK)

Количество

Количество единиц продукции, включенной в заказ с торговой точки

Факт

Фактическое количество единиц продукции, включенной в товарно-транспортную накладную

Используемые классификаторы и система кодирования

Классификатор - это систематизированный свод однородных наименований объектов, предметов, явлений по классификационным признакам (номенклатура) и их кодовых обозначений (кодов). Код - условное обозначение объекта цифровым или алфавитно-цифровыми знаками по определенным правилам, установленным системами кодирования. Основная цель кодирования состоит в однозначном обозначении объектов. Штриховой код (штрих-код или бар-код) представляет собой подготовленное при помощи компьютера графическое изображение (полоски или штрихи) некоторой последовательности цифр (и букв). Цифры, на основании которых разрабатывается указанное изображение, называются цифровым эквивалентом штрихового кода. Для кодирования продукции используется штриховой код EAN-13 (см. рис. 2.9).

Рисунок 2.9 - Структура кода EAN-13

Контрольную цифру кода можно определить с помощью следующих математических действий:

1. Складываем цифры, стоящие на четных позициях, затем на нечетных позициях (см. рис. 2.10).

Рисунок 2.10 - Расчет контрольной цифры кода

2. Складываем результат сложения цифр на четных позициях, помноженный на три и результат сложения цифр на нечетных позициях:

(33*3) + 24 = 123

3. Контрольное число представляет собой разницу между окончательной суммой (123) и ближайшим к ней наибольшим числом, кратным десяти (в данном случае - 130): 130 - 123 = 7

Полученный результат и соответствует контрольной цифре.

Характеристика нормативно-справочной и входной информации

Для решения поставленной задачи используется условно-постоянная и оперативная входная информации. Условно-постоянная входная информация отражается в справочниках системы, таких как:

? «Торговые точки» - содержит информацию о торговых точках компании «Дикси»;

? «Продукция» - содержит информацию о продукции, реализуемой в магазинах компании «Дикси»;

? «Группы товаров» - содержит информацию о разновидностях продукции, реализуемой в магазинах компании «Дикси»;

? «Поставщики» - содержит информацию о поставщиках продукции на склад РЦ компании «Дикси».

Оперативная входная информация отражается в следующих таблицах:

? «Общий заказ» - содержит информацию о жизненном цикле приходных накладных;

? «Приход» - содержит информацию о составе приходной накладной;

? «Заказ» - содержит информацию о жизненном цикле товарно-транспортных накладных;

? «Расход» - содержит информацию о составе товарно-транспортной накладной.

Входная информация заносится в справочники и таблицы оперативного учета на основании входных документов. Перечень и описание входных документов представлен в таблице 2.3.

Таблица 2.3

Перечень и описание входных документов

Наименование входного документа

Форма представления

Сроки выдачи

Получатель информации

Карточка торговой точки

Документ

Во время появления новой торговой точки

Логист

Заказ

Документ

Во время поступления нового заказа с торговой точки

Логист

Карточка поставщика

Документ

Во время появления нового поставщика продукции

Логист

Факт поступления продукции

Документ

Во время поступления продукции на склад РЦ от поставщика

Логист

? Документ «Карточка торговой точки» - содержит информацию о новой торговой точке ЗАО «Дикси» и её реквизитах;

? Документ «Заказа» - содержит информацию о дате заказа и продукции, заказанной определенной торговой точкой;

? Документ «Карточка поставщика» - содержит информацию о новых поставщиках продукции, выполняющих поставки на склад РЦ ЗАО «Дикси».

Характеристика результатной информации

Оперируя соответствующей информацией из справочников и таблиц, с помощью разрабатываемой ИС можно сформировать необходимые выходные документы. Перечень и описание выходных документов представлен в таблице 2.4.

Таблица 2.4

Перечень и описание выходных документов

Наименование выходного документа

Форма представления

Сроки выдачи

Получатель информации

Общий заказ

Документ

По графику поставок

Поставщик

Приходная накладная (форма ТОРГ-14)

Документ

Во время поступления продукции от поставщика на склад РЦ

Поставщик,

Бухгалтерия

Товарно-транспортная накладная (форма Т-1)

Документ

Во время отгрузки продукции со склада РЦ в торговые точки

Торговая точка,

Бухгалтерия

Инвентаризационная ведомость

Документ

При проведении инвентаризации

Руководство, Бухгалтерия

Отчет об остатках продукции (группировка/диаграмма по видам продукции)

Форма,

Документ

Еженедельно

Руководство, Бухгалтерия

Отчет об отгруженной продукции (группировка/диаграмма по магазинам)

Форма,

Документ

Ежемесячно

Руководство, Бухгалтерия

Отчет о принятой от поставщиков продукции (группировка/диаграмма по поставщикам)

Форма,

Документ

Ежемесячно

Руководство, Бухгалтерия

? Документ «Приходная накладная» - содержит информацию о поставщике и получателе продукции, номере и дате приходной накладной, а также наименования позиций и количестве поставляемой продукции на склад РЦ ЗАО «Дикси».

? Товарно-транспортная накладная (Т-1) - документ подтверждающий отгрузку продукции со склада РЦ ЗАО «Дикси» в торговую точку компании, для осуществления реализации продукции. Товарно-транспортная накладная (ТТН) необходима в том случае, когда стороны обращаются к автотранспортной организации для перевозки груза. Но товарно-транспортная накладная не отражает оказание услуг по транспортировке товара, она всего лишь удостоверяет факт перемещения груза и расчеты за перевозку транспортом. Для товарно-транспортной накладной утверждена форма Т-1. Это единственный документ, по которому у грузоотправителей списываются ТМЦ и приходуются у грузополучателей.

? Инвентаризационная ведомость - документ, содержащий учетную информацию о фактических остатках продукции на складе РЦ ЗАО «Дикси».

? Отчет об остатках продукции (группировка/диаграмма по видам продукции) - документ, содержащий учетную информацию о фактических остатках продукции на складе РЦ ЗАО «Дикси», сгруппированным по видам продукции.

? Отчет об отгруженной продукции (группировка/диаграмма по магазинам) - документ, содержащий учетную информацию о фактическом количестве отгруженной продукции со склада РЦ ЗАО «Дикси» в торговые точки компании, сгруппированным по магазинам.

? Отчет о принятой от поставщиков продукции (группировка/диаграмма по поставщикам) - документ, содержащий учетную информацию о фактическом количестве принятой продукции на склад РЦ ЗАО «Дикси» от поставщиков, сгруппированным по поставщикам.

1.3.3 Математическое обеспечение

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

(2.1)

где:

? ? N - Сумма накладной (руб.)

? K - Количество единиц товара, поставляемого на склад РЦ ЗАО «Дикси» (шт.)

? C - Цена единицы товара, поставляемого на склад РЦ ЗАО «Дикси» (руб.)

? n - Количество позиций товаров в приходной накладной (шт.)

1.3.4 Техническое обеспечение

Информационная система автоматизации учета товарно-материальных ценностей на складе РЦ ЗАО «Дикси» разработанная на базе MS SQL Server и Delphi 10 не требует дополнительных затрат на приобретение нового технического обеспечения. Разрабатываемая ИС будет эффективно функционировать по средствам имеющегося на предприятии технического обеспечения.

Требования к техническому обеспечению представлены в Таблице 2.5.

Таблица 2.5

Требования к техническому обеспечению

Характеристика

Значение

Процессор

Intel Pentium 4 2100 MHz

Оперативная память

DDR 512 Mb

Жесткий диск

IDE SeaGate 100 Gb

Видеокарта

MSI GeForce GTX650 1024MB

Аудиокарта

Realtech AL 1810

DVD-RW

NEC DVD-RW AD 7173S

Сетевой адаптер

Marvell Yukon 88E8001/8003/8010 PCI Gigabit Ethernet Controller

Монитор

Proview MA782KC PL00018 17"

Блок бесперебойного питания

BackUps 525

Клавиатура

Logitech KB 250 PC/2

Мышь оптическая

Logitech M-SBF96 Optical Wheel

1.4 Экономические параметры разработки и внедрения ЭИС

1.4.1 Планирование и контроль выполнения работ

В Таблице 2.6 приведён перечень работ, выполняемых на всех стадиях разработки ЭИС.

Таблица 2.6

Состав работ и стадии разработки АС

Стадии разработки

Перечень работ

Техническое задание

постановка задачи

подбор литературы

сбор исходных данных

определение требований к системе

Эскизный проект

анализ программных средств схожей тематики

разработка общей структуры ПС

разработка структуры программы по подсистемам

документирование

Технический проект

определение требований к АС

выбор инструментальных средств

определение свойств и требований к аппаратному обеспечению

Рабочий проект

программирование

тестирование и отладка ПС

разработка программной документации

согласование и утверждение программы и методики испытаний

Внедрение

опытная эксплуатация

анализ данных полученных в результате эксплуатации

корректировка технической документации

Планирование и контроль выполнения работ выполнены с помощью диаграммы Ганта (см. рис. 2.11).

Рисунок 2.11 - Диаграмма Ганта

Таким образом, общая трудоёмкость разработки ЭИС составляет 31 человеко-дней, а её продолжительность - 49 календарных дней.

1.4.2 Расчет себестоимости разработки и внедрения ЭИС

Расчет затрат на разработку необходим для обоснования экономической эффективности системы. Плановые затраты на разработку включают все расходы, связанные с ее выполнением, независимо от источника их финансирования. Определение затрат на разработку производится путем составления калькуляции плановой себестоимости. Она является основным документом, на основании которого осуществляется планирование и учет затрат на выполнение [5].

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

Сумма расходов на разработку и внедрение включает в себя следующие затраты:

? Заработная плата разработчиков (программиста, консультанта, руководителя);

? Стоимость расходных материалов;

? Стоимость лицензионного программного обеспечения, используемого при разработке;

? Стоимость одного рабочего места;

? Стоимость лицензионного программного обеспечения, которое необходимо приобрести для внедрения и успешного функционирования системы.

В стоимость разработки программного средства включаются следующие затраты:

В разработке данного проекта участвовал программист, консультант и руководитель. Заработная плата по разработчикам представлена в таблице 2.8.

Таблица 2.8

Заработная плата разработчиков ЭИС

Разработчики

Ставка (руб./ч)

Ставка (руб./д.)

Кол-во раб. дн.

Сумма (руб.)

Отчисления в ПФР, ФССР, ФМС (34%)

Итого (руб.)

Программист

150

1200

31

37200

12648,00

48848,00

Консультант

110

880

6

6160

2094,4

8254,4

Руководитель

200

1600

4

6400

2176,00

8576,00

Итого заработная плата разработчиков ЭИС (руб.)

66678,4

Стоимость расходных материалов (Таблица 2.9).

Таблица 2.9

Стоимость расходных материалов

Наименование статьи расходов

Стоимость ед-цы (руб.)

Кол-во

Сумма (руб.)

Бумага формата А4

45

1

45

Записная книжка

40

1

40

Шариковая ручка

25

1

25

Итого стоимость расходных материалов (руб.)

110

Стоимость лицензионного программного обеспечения, используемого при разработке (Таблица 2.10).

Таблица 2.10

Стоимость лицензионного программного обеспечения

Наименование статьи расходов

Стоимость ед-цы (руб.)

Срок лицензии (мес.)

Сумма (руб.)

MS SQL Server

64030,00

1

64030,00

Delphi 10

32740,00

1

32740,00

Итого стоимость программного обеспечения (руб.)

96770,00

На оснащение рабочего места необходимыми техническими средствами не потребуется дополнительных затрат, так как на предприятии уже имеется в наличии необходимое оборудование. К тому же, для внедрения и успешного функционирования системы не требуется приобретение дополнительного программного обеспечения. Система будет функционировать на основе программного обеспечения используемого при разработке. На рисунке 2.12 представлена диаграмма затрат, входящих в стоимость программного продукта.

Рисунок 2.12 - Затраты на разработку и внедрение ИС.

Рассчитаем общую сумму денежных средств, которую необходимо вложить в проект: рублей.

1.4.3 Обоснование целесообразности разработки и внедрения ЭИС

Разработанная информационная система автоматизирует функции логистов, кладовщиков и заведующих складом РЦ ЗАО «Дикси» и сокращает время на расчет сумм товарных чеков, а также автоматизирует формирование сопроводительной документации. Час работы логиста компании «Дикси» стоит 80 рублей (). Час работы кладовщика компании «Дикси» стоит 60 рублей (). Час работы заведующего складом компании «Дикси» стоит 110 рублей ().

Экономия во времени (), которая достигнута благодаря внедрению системы, рассчитывается по формуле:

(2.5)

где, - время, необходимое на выполнение функций логиста до внедрения системы;

- время, необходимое на выполнение функций логиста после внедрения системы;

Суммарная экономия в рублях за год будет равна:

(2.6)

Расчеты потенциальной экономии времени логиста компании «Дикси» от внедрения системы представлены в таблице 2.13.

Таблица 2.13

Потенциальная экономия времени логиста от внедрения системы

№ п/п

Наименование операции

Количество операций за год

Время до (часов)

Время после (часов)

1

Ввод данных в систему

6230

1600

135

2

Поиск данных в системе

35000

3560

580

3

Формирование сопроводительной документации

3740

1750

38

4

Формирование результатных отчетов

24

72

2

Итого количество времени (часов)

6982

755

Расчеты потенциальной экономии времени кладовщика компании «Дикси» от внедрения системы представлены в таблице 2.14.

Таблица 2.14

Потенциальная экономия времени кладовщика от внедрения системы

№ п/п

Наименование операции

Количество операций за год

Время до (часов)

Время после (часов)

1

Ввод данных в систему

350

350

48

2

Поиск данных в системе

12600

3600

285

3

Формирование сопроводительной документации

350

175

53

Итого количество времени (часов)

4125

386

Расчеты потенциальной экономии времени заведующего складом компании «Дикси» от внедрения системы представлены в таблице 2.15.

Таблица 2.15

Потенциальная экономия времени кладовщика от внедрения системы

№ п/п

Наименование операции

Количество операций за год

Время до (часов)

Время после (часов)

1

Поиск данных в системе

9800

2450

307

2

Формирование результатных отчетов

18

54

18

Итого количество времени (часов)

2504

325

Таким образом затраты до внедрения системы составляли:

Затраты после внедрения системы:

Рассчитываем суммарную экономию в рублях за год:

1.4.4 Экономический эффект от внедрения ЭИС

В результате деления суммы расходов на разработку и внедрение системы на сумму экономии за год получим срок окупаемости проекта в месяцах:

(2.7)

где, R - сумма расходов.

Срок окупаемости рассчитываем по формуле (2.7):

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

Список использованных источников

1. Экономика и управление. Организационное обеспечение ИС. [Электронный ресурс]. - Электрон. текстовые данные. - Режим доступа: http://www.economica-upravlenie.ru/content/view/445/9/.

2. Диго С.М. Базы данных: проектирование и использование: Учебник - М.: «Финансы и статистика», 2005.

3. Вендров А.М. CASE-технологии. Современные методы и средства

4. проектирования информационных систем. // М.: «Финансы и статистика», 1998г.

5. Сибилёв В.Д. Проектирование баз данных: Учеб. пособие. -- Томск: Томский межвузовский центр дистанционного образования, 2007. -- 201 с.

6. Скрипкин К.Г. Экономическая эффективность информационных систем. М.: ДМК Пресс, 2002.

7. Система Microsoft SQL Server. [Электронный ресурс]. - Электрон. текстовые данные. - Режим доступа: http://www.intuit.ru/department/database/basedbw/8/basedbw_8.html.

8. Галисеев Г.В. Программирование в среде Delphi 7: самоучитель - М.: «Диалектика», 2003.

9. В. Понамарев. Базы данных в Delphi 7: Самоучитель - С.-Пб.: «Питер», 2003.

ПРИЛОЖЕНИЕ А. Листинг программного кода

информационная система товарный материальный

unit UnitMain;

interface

var

Rashod: TRashod;

implementation

{$R *.dfm}

uses UnitDM, UnitSKlient, UnitREPORT, UnitPost, UnitSotr, UnitGRUP,UnitTovar, UnitAvtor;

//Заказ поставщику

procedure TRashod.BitBtn1Click(Sender: TObject);

var

n: integer;

begin

DM.ADOQuery1.Close;

DM.ADOQuery1.Open;

if DM.ADOQuery1.RecordCount = 0 then

begin

ShowMessage('На данный момент нет невыполненных заказов с торговых точек');

Exit;

end;

DM.ADOQuery2.Close;

DM.ADOQuery2.Open;

With DM.ADOQuery2 do

begin

DM.ADOQuery2.First;

DM.ADOTable8.Last;

n:=DM.ADOTable8Номер.Value;

while not EOF do

begin

inc(n);

DM.ADOTable10.Insert;

DM.ADOTable10Номер.Value:=n;

DM.ADOTable10Дата.Value:=Date();

DM.ADOTable10Поставщик.Value:=DM.ADOQuery2Поставщик.Value;

DM.ADOTable10.Post;

DM.ADOQuery1.Close;

DM.ADOQuery1.Filter:='Поставщик='+IntToStr(DM.ADOQuery2Поставщик.Value);

DM.ADOQuery1.Filtered:=True;

DM.ADOQuery1.Open;

With DM.ADOQuery1 do

begin

DM.ADOQuery1.First;

while not EOF do

begin

DM.ADOTable11.Insert;

DM.ADOTable11Артикул.Value:=DM.ADOQuery1Артикул.Value;

DM.ADOTable11Общийзаказ.Value:=n;

DM.ADOTable11Количество.Value:=DM.ADOQuery1SumКоличество.Value;

DM.ADOTable11.Post;

DM.ADOQuery1.Next;

end;

end;

DM.ADOQuery2.Next;

end;

end;

DM.ADOTable8.Close;

DM.ADOTable8.Open;

N7.Click;

end;

//Поиск расходной накладной

procedure TRashod.BitBtnPoiskClick(Sender: TObject);

begin

BitBtnSbros.Enabled:=True;

if EditPoiskRN.Text = '' then

Begin

ShowMessage('Введите номер заказа/накладной!');

EditPoiskRN.SetFocus

End

Else

Begin

DM.ADOTable6.Close;

DM.ADOTable6.Filter:='Номер='+Chr(39)+EditPoiskRN.Text+Chr(39);

DM.ADOTable6.Filtered:=True;

DM.ADOTable6.Open;

End;

end;

//Поиск приходной накладной

procedure TRashod.BitBtnPoiskPNClick(Sender: TObject);

begin

BitBtnSbrosPN.Enabled:=True;

if EditPoiskPN.Text = '' then

Begin

ShowMessage('Введите номер прихода!');

EditPoiskPN.SetFocus

End

Else

Begin

DM.ADOTable8.Close;

DM.ADOTable8.Filter:='Номер='+Chr(39)+EditPoiskPN.Text+Chr(39);

DM.ADOTable8.Filtered:=True;

DM.ADOTable8.Open;

End;

end;

//Отмена поиска расходной накладной

procedure TRashod.BitBtnSbrosClick(Sender: TObject);

begin

EditPoiskRN.Clear;

DM.ADOTable6.Close;

DM.ADOTable6.Filtered:=False;

DM.ADOTable6.Open;

BitBtnSbros.Enabled:=False;

end;

//Отмена поиска приходной накладной

procedure TRashod.BitBtnSbrosPNClick(Sender: TObject);

begin

EditPoiskPN.Clear;

DM.ADOTable8.Close;

DM.ADOTable8.Filtered:=False;

DM.ADOTable8.Open;

BitBtnSbrosPN.Enabled:=False;

end;

//Определение марок товара выбранной группы

procedure TRashod.ComboBox1Change(Sender: TObject);

begin

If ComboBox1.Text = '[Все]' Then

Begin

DM.ADOTable8.Close;

DM.ADOTable8.Filtered:=False;

DM.ADOTable8.Open;

End

Else

Begin

If ComboBox1.Text = 'Выполненные' Then

Begin

DM.ADOTable8.Close;

DM.ADOTable8.Filter:='Статус <> Null';

DM.ADOTable8.Filtered:=True;

DM.ADOTable8.Open;

End;

If ComboBox1.Text = 'Невыполненные' Then

Begin

DM.ADOTable8.Close;

DM.ADOTable8.Filter:='Статус = Null';

DM.ADOTable8.Filtered:=True;

DM.ADOTable8.Open;

End;

End;

end;

//Определение марок товара выбранной группы

procedure TRashod.ComboBoxGRChange(Sender: TObject);

begin

If ComboBoxGR.Text = '[Все]' Then

Begin

DM.ADOTable6.Close;

DM.ADOTable6.Filtered:=False;

DM.ADOTable6.Open;

End

Else

Begin

If ComboBoxGR.Text = 'Выполненные' Then

Begin

DM.ADOTable6.Close;

DM.ADOTable6.Filter:='Статус <> Null';

DM.ADOTable6.Filtered:=True;

DM.ADOTable6.Open;

End;

If ComboBoxGR.Text = 'Невыполненные' Then

Begin

DM.ADOTable6.Close;

DM.ADOTable6.Filter:='Статус = Null';

DM.ADOTable6.Filtered:=True;

DM.ADOTable6.Open;

End;

End;

end;

//Активация формы

procedure TRashod.FormActivate(Sender: TObject);

begin

if flag <>1 then

begin

flag:=1;

Rashod.AlphaBlend:=True;

UnitAvtor.FAvtor.ShowModal;

end;

end;

//Отображение Отчетов

procedure TRashod.N10Click(Sender: TObject);

begin

UnitREPORT.FormREPORT.ShowModal;

end;

//Отображение РАСХОД

procedure TRashod.N11Click(Sender: TObject);

begin

PanelP.Visible:=False;

PanelR.Visible:=True;

TabSet1.TabIndex:=0;

end;

//Открыть справочник ПОСТАВЩИКИ

procedure TRashod.N12Click(Sender: TObject);

begin

UnitPost.FormPost.ShowModal;

end;

//Открыть справочник СОТРУДНИКИ

procedure TRashod.N13Click(Sender: TObject);

begin

UnitSotr.FormSotr.ShowModal;

end;

//Печать приходной накладной

procedure TRashod.N14Click(Sender: TObject);

var

Name, NameS: OleVariant;

Sum, SumM: single;

n, SL: integer;

S: string;

begin Name:=ExtractFilePath(Application.ExeName)+/Шаблоны/Приход.doc';

S:=DM.DataSource8.DataSet.FieldValues['Номер'];

NameS:=ExtractFilePath(Application.ExeName)+'/Документы/Приход № '+S+'.doc';

DM.WordApplication1.Connect;

Try

Application.Minimize;

DM.WordApplication1.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); DM.WordDocument1.ConnectTo(DM.WordApplication1.ActiveDocument);

DM.WordDocument1.SaveAs(NameS); DM.WordDocument1.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DM.DataSource8.DataSet.FieldValues['Статус']; DM.WordDocument1.Tables.Item(2).Cell(2,3).Range.InsertBefore(S);

S:=DM.ADOTable8Поставщик2.Value; DM.WordDocument1.Tables.Item(3).Cell(3,2).Range.InsertBefore(S);

n:=1; Sum:=0; SumM:=0;

//Отбор продукции по накладной

With DM.ADOTable9 do

begin

First;

while not EOF do

begin DM.WordDocument1.Tables.Item(4).Cell(n+3,1).Range.InsertBefore(IntToStr(n));

S:=DM.ADOTable9Артикул2.Value; DM.WordDocument1.Tables.Item(4).Cell(N+3,2).Range.InsertBefore(S);

S:=DM.ADOTable9Группа.Value; DM.WordDocument1.Tables.Item(4).Cell(N+3,3).Range.InsertBefore(S);

S:=DM.ADOTable9Единица.Value; DM.WordDocument1.Tables.Item(4).Cell(N+3,4).Range.InsertBefore(S);

S:=Format('%m',[DM.ADOTable9Цена.Value]); DM.WordDocument1.Tables.Item(4).Cell(N+3,5).Range.InsertBefore(S);

S:=IntToStr(DM.ADOTable9Количество.Value); DM.WordDocument1.Tables.Item(4).Cell(N+3,6).Range.InsertBefore(S);

S:=Format('%m',[DM.ADOTable9Цена2.Value]); DM.WordDocument1.Tables.Item(4).Cell(N+3,7).Range.InsertBefore(S);

DM.WordDocument1.Tables.Item(4).Cell(N+3,8).Range.InsertBefore(S);

SumM:=SumM+DM.ADOTable9Цена2.Value;

DM.WordDocument1.Tables.Item(4).Rows.Add(EmptyParam);

inc(N);

Next;

end;

end;

S:=Format('%m',[SumM]);

DM.WordDocument1.Tables.Item(5).Cell(1,2).Range.InsertBefore(S);

DM.WordApplication1.Visible:=True;

Except

begin

ShowMessage('Бланк документа с именем "Приходная накладная" не найден!!!');

DM.WordApplication1.Disconnect;

Application.Restore;

exit;

end;

end;

DM.WordApplication1.Disconnect;

Application.Restore;

end;

procedure TRashod.N16Click(Sender: TObject);

var

S, S1: string;

temp: OleVariant;

Excel: Variant;

t, n: integer;

begin

S:=ExtractFilePath(Application.ExeName)+'Заказы\';

OpenDialog1.InitialDir:=S;

if OpenDialog1.Execute then

temp:=OpenDialog1.FileName;

Excel:= CreateOleObject('Excel.Application');

Try

Excel.Workbooks.Open[temp];

S:=Excel.Range['b3'];

DM.ADOTable14.Last;

n:=DM.ADOTable14Номер.Value;

inc(n);

DM.ADOTable14.Insert;

DM.ADOTable14Номер.Value:=n;

DM.ADOTable14Дата.Value:=Date();

DM.ADOTable14Точка.Value:=StrToInt(S);

DM.ADOTable14.Post;

t:=9;

repeat

S:='a'+IntToStr(t);

S1:=Excel.Range[S];

if S1 <> '' then

begin

DM.ADOTable15.Insert;

DM.ADOTable15Заказ.Value:=n;

S1:=Excel.Range[S];

DM.ADOTable15Артикул.Value:=StrToInt(S1);

S:='d'+IntToStr(t);

S1:=Excel.Range[S];

DM.ADOTable15Количество.Value:=StrToInt(S1);

DM.ADOTable15.Post;

end;

inc(t);

until S1 = '';

ShowMessage('Заказ успешно загружен!!!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

Except

begin

ShowMessage('Шаблон документа "Заказ" заполнен с ошибками!');

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

Application.Restore;

exit;

end;

end;

DM.ADOTable6.Close;

DM.ADOTable6.Open;

end;

procedure TRashod.N17Click(Sender: TObject);

begin

Rashod.Close;

end;

//Открыть справочник КЛИЕНТЫ

procedure TRashod.N2Click(Sender: TObject);

begin

FormKlient.Show;

end;

//Печать расходной накладной

procedure TRashod.N3Click(Sender: TObject);

var

Name, NameS: OleVariant;

Sum: single;

n: integer;

S: string;

begin Name:=ExtractFilePath(Application.ExeName)+'/Шаблоны/Расход.doc';

S:=DM.DataSource6.DataSet.FieldValues['Номер'];

NameS:=ExtractFilePath(Application.ExeName)+'/Документы/Расход № '+S+'.doc';

DM.WordApplication1.Connect;

Try

Application.Minimize;

DM.WordApplication1.Documents.Open(Name,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); DM.WordDocument1.ConnectTo(DM.WordApplication1.ActiveDocument);

DM.WordDocument1.SaveAs(NameS); DM.WordDocument1.Tables.Item(2).Cell(2,2).Range.InsertBefore(S);

S:=DM.DataSource6.DataSet.FieldValues['Статус']; DM.WordDocument1.Tables.Item(2).Cell(2,3).Range.InsertBefore(S);

S:=DM.ADOTable6Точка2.Value+' '+DM.ADOTable6Адрес.Value; DM.WordDocument1.Tables.Item(3).Cell(1,2).Range.InsertBefore(S);

n:=1; Sum:=0;

//Отбор продукции по накладной

With DM.ADOTable7 do

begin

First;

while not EOF do

begin DM.WordDocument1.Tables.Item(4).Cell(n+3,1).Range.InsertBefore(IntToStr(n));

S:=DM.ADOTable7Артикул2.Value;

DM.WordDocument1.Tables.Item(4).Cell(N+3,2).Range.InsertBefore(S);

S:=DM.ADOTable7Группа.Value;

DM.WordDocument1.Tables.Item(4).Cell(N+3,3).Range.InsertBefore(S);

S:=DM.ADOTable7Единица.Value;

DM.WordDocument1.Tables.Item(4).Cell(N+3,4).Range.InsertBefore(S);

S:=Format('%m',[DM.ADOTable7Цена.Value]);

DM.WordDocument1.Tables.Item(4).Cell(N+3,5).Range.InsertBefore(S);

S:=IntToStr(DM.ADOTable7Количество.Value);

DM.WordDocument1.Tables.Item(4).Cell(N+3,6).Range.InsertBefore(S);

S:=Format('%m',[DM.ADOTable7Цена2.Value]);

DM.WordDocument1.Tables.Item(4).Cell(N+3,7).Range.InsertBefore(S);

DM.WordDocument1.Tables.Item(4).Cell(N+3,8).Range.InsertBefore(S);

Sum:=Sum+DM.ADOTable7Цена2.Value;

DM.WordDocument1.Tables.Item(4).Rows.Add(EmptyParam);

inc(N);

Next;

end;

end;

S:=Format('%m',[Sum]);

DM.WordDocument1.Tables.Item(5).Cell(1,2).Range.InsertBefore(S);

DM.WordApplication1.Visible:=True;

Except

begin

ShowMessage('Бланк документа с именем "Расход" не найден!!!');

DM.WordApplication1.Disconnect;

Application.Restore;

exit;

end;

end;

DM.WordApplication1.Disconnect;

Application.Restore;

End;

//Формирование инвентаризационной ведомости

procedure TRashod.N4Click(Sender: TObject);

var

FileName, FileNameSave: OleVariant;

S: string;

N,p,r,o: integer;

begin

N:=3;

FileName:=ExtractFilePath(Application.ExeName)+'/Шаблоны/Ведомость.doc';

S:=DateToStr(Date);

FileNameSave:=ExtractFilePath(Application.ExeName)+'/Документы/Ведомость от '+S+'.doc';

DM.WordApplication1.Connect;

Try

Application.Minimize;

DM.WordApplication1.Documents.Open(FileName,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

DM.WordDocument1.ConnectTo(DM.WordApplication1.ActiveDocument);

DM.WordDocument1.SaveAs(FileNameSave);

DM.WordDocument1.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

DM.ADOTable5.Close;

DM.ADOTable5.Open;

//Отбор товаров

With DM.ADOTable5 do

begin

First;

while not EOF do

begin

S:=DM.ADOTable5Группа2.Value;

DM.WordDocument1.Tables.Item(2).Cell(N,1).Range.InsertBefore(S);

S:=DM.ADOTable5Номенклатура.Value;

DM.WordDocument1.Tables.Item(2).Cell(N,2).Range.InsertBefore(S);

S:=DM.ADOTable5Единица.Value;

DM.WordDocument1.Tables.Item(2).Cell(N,4).Range.InsertBefore(S);

S:=IntToStr(DM.ADOTable5Артикул.Value);

DM.WordDocument1.Tables.Item(2).Cell(N,3).Range.InsertBefore(S);

DM.ADOQuery3.Close;

DM.ADOQuery3.Filter:='Артикул='+S;

DM.ADOQuery3.Filtered:=True;

DM.ADOQuery3.Open;

DM.ADOQuery4.Close;

DM.ADOQuery4.Filter:='Артикул='+S;

DM.ADOQuery4.Filtered:=True;

DM.ADOQuery4.Open;

if DM.ADOQuery3SumКоличество.Value = Null then p:=0

else

p:=DM.ADOQuery3SumКоличество.Value;

if DM.ADOQuery4SumКоличество.Value = Null then r:=0

else

r:=DM.ADOQuery4SumКоличество.Value;

o:=p-r;

S:=IntToStr(p);

DM.WordDocument1.Tables.Item(2).Cell(N,5).Range.InsertBefore(S);

S:=IntToStr(r);

DM.WordDocument1.Tables.Item(2).Cell(N,6).Range.InsertBefore(S);

S:=IntToStr(o);

DM.WordDocument1.Tables.Item(2).Cell(N,7).Range.InsertBefore(S);

DM.WordDocument1.Tables.Item(2).Rows.Add(EmptyParam);

inc(N);

Next;

end;

end;

DM.WordApplication1.Visible:=True;

Except

begin

ShowMessage('Бланк документа "Ведомость" не найден!');

Application.Restore;

exit;

end;

end;

DM.WordApplication1.Disconnect;

Application.Restore;

end;

//Справочник группы товаров

procedure TRashod.N6Click(Sender: TObject);

begin

UnitGRUP.FormGRUP.ShowModal;

end;

//Отобразить вкладку приход

procedure TRashod.N7Click(Sender: TObject);

begin

PanelP.Visible:=True;

PanelR.Visible:=False;

TabSet1.TabIndex:=1;

end;

//Справочник продукция

procedure TRashod.N8Click(Sender: TObject);

begin

UnitTovar.FormTovar.ShowModal;

end;

//Заказ на производство

procedure TRashod.N9Click(Sender: TObject);

var

FileName, FileNameSave: OleVariant;

S: string;

N: integer;

begin

N:=3;

FileName:=ExtractFilePath(Application.ExeName)+'/Шаблоны/Заказ.doc';

S:=DateToStr(Date);

FileNameSave:=ExtractFilePath(Application.ExeName)+'/Документы/Заказ от '+S+'.doc';

DM.WordApplication1.Connect;

Try

Application.Minimize;

DM.WordApplication1.Documents.Open(FileName,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

DM.WordDocument1.ConnectTo(DM.WordApplication1.ActiveDocument);

DM.WordDocument1.SaveAs(FileNameSave);

DM.WordDocument1.Tables.Item(1).Cell(1,2).Range.InsertBefore(S);

S:=DM.ADOTable8Поставщик2.Value;

DM.WordDocument1.Tables.Item(1).Cell(2,2).Range.InsertBefore(S);

//Отбор товаров

With DM.ADOTable9 do

begin

First;

while not EOF do

begin

S:=DM.ADOTable9Группа.Value;

DM.WordDocument1.Tables.Item(2).Cell(N,1).Range.InsertBefore(S);

S:=DM.ADOTable9Артикул2.Value;

DM.WordDocument1.Tables.Item(2).Cell(N,2).Range.InsertBefore(S);

S:=IntToStr(DM.ADOTable9Артикул.Value);

DM.WordDocument1.Tables.Item(2).Cell(N,3).Range.InsertBefore(S);

S:=DM.ADOTable9Единица.Value;

DM.WordDocument1.Tables.Item(2).Cell(N,4).Range.InsertBefore(S);

S:=IntToStr(DM.ADOTable9Количество.Value);

DM.WordDocument1.Tables.Item(2).Cell(N,5).Range.InsertBefore(S);

DM.WordDocument1.Tables.Item(2).Rows.Add(EmptyParam);

inc(N);

Next;

end;

end;

DM.WordApplication1.Visible:=True;

Except

begin

ShowMessage('Бланк документа "Заказ" не найден!');

Application.Restore;

exit;

end;

end;

DM.WordApplication1.Disconnect;

Application.Restore;

end;

//Отображение ПРИХОД_РАСХОД

procedure TRashod.TabSet1Click(Sender: TObject);

begin

If TabSet1.TabIndex=1 Then

begin

PanelP.Visible:=True;

PanelR.Visible:=False;

end;

If TabSet1.TabIndex=0 Then

begin

PanelP.Visible:=False;

PanelR.Visible:=True;

end;

end;

end.

unit UnitDM;

interface

var

DM: TDM;

implementation

{$R *.dfm}

uses UnitMain, UnitSKlient;

//Добавить позицию в приходную накладную

procedure TDM.ADOQuery5CalcFields(DataSet: TDataSet);

var

Sum: single;

begin

ADOQuery6.Close;

ADOQuery6.Filter:='Имя='+Chr(39)+ADOQuery5Имя.Value+Chr(39);

ADOQuery6.Filtered:=True;

ADOQuery6.Open;

Sum:=0;

With DM.ADOQuery6 do

begin

First;

while not EOF do

begin

Sum:=Sum+ADOQuery6Сумма.Value;

Next;

end;

end;

ADOQuery5Сумма.Value:=Sum;

ADOQuery6.Filtered:=False;

end;

//Сумма прихода

procedure TDM.ADOQuery6CalcFields(DataSet: TDataSet);

begin

ADOQuery6Сумма.Value:=ADOQuery6Цена.Value*ADOQuery6SumКоличество.Value;

end;

//Сумма расхода

procedure TDM.ADOQuery7CalcFields(DataSet: TDataSet);

begin

ADOQuery7Сумма.Value:=ADOQuery7Цена.Value*ADOQuery7SumКоличество.Value;

end;

procedure TDM.ADOQuery8CalcFields(DataSet: TDataSet);

var

Sum: single;

begin

ADOQuery7.Close;

ADOQuery7.Filter:='Код='+IntToStr(ADOQuery8Код.Value);

ADOQuery7.Filtered:=True;

ADOQuery7.Open;

Sum:=0;

With DM.ADOQuery7 do

begin

First;

while not EOF do

begin

Sum:=Sum+ADOQuery7Сумма.Value;

Next;

end;

end;

ADOQuery8Сумма.Value:=Sum;

ADOQuery7.Filtered:=False;

end;

procedure TDM.ADOTable12CalcFields(DataSet: TDataSet);

var

p, r:integer;

begin

ADOQuery9.Close;

ADOQuery9.Filter:='Артикул='+IntToStr(ADOTable12Артикул.Value);

ADOQuery9.Filtered:=True;

ADOQuery9.Open;

ADOQuery10.Close;

ADOQuery10.Filter:='Артикул='+IntToStr(ADOTable12Артикул.Value);

ADOQuery10.Filtered:=True;

ADOQuery10.Open;

if ADOQuery9SumКоличество.Value = Null then p:=0

else

p:=ADOQuery9SumКоличество.Value;

if DM.ADOQuery10SumКоличество.Value = Null then r:=0

else

r:=DM.ADOQuery10SumКоличество.Value;

ADOTable12Остаток.Value:=p-r;

ADOTable12Сумма.Value:=ADOTable12Остаток.Value*ADOTable12Цена.Value;

end;

procedure TDM.ADOTable13CalcFields(DataSet: TDataSet);

var

Sum: single;

begin

ADOTable12.Close;

ADOTable12.Filter:='Группа='+IntToStr(ADOTable13Код.Value);

ADOTable12.Filtered:=True;

ADOTable12.Open;

Sum:=0;

With DM.ADOTable12 do

begin

First;

while not EOF do

begin

Sum:=Sum+ADOTable12Сумма.Value;

Next;

end;

end;

ADOTable13Сумма.Value:=Sum;

ADOTable12.Filtered:=False;

end;

procedure TDM.ADOTable1AfterInsert(DataSet: TDataSet);

begin

inc(k);

ADOTable1Код.Value:=k;

end;

procedure TDM.ADOTable1BeforeInsert(DataSet: TDataSet);

begin

ADOTable1.Last;

k:=ADOTable1Код.Value;

end;

procedure TDM.ADOTable2AfterInsert(DataSet: TDataSet);

begin

inc(k);

ADOTable2Код.Value:=k;

end;

procedure TDM.ADOTable2BeforeInsert(DataSet: TDataSet);

begin

ADOTable2.Last;

k:=ADOTable2Код.Value;

end;

procedure TDM.ADOTable3AfterInsert(DataSet: TDataSet);

begin

inc(k);

ADOTable3Код.Value:=k;

end;

procedure TDM.ADOTable3BeforeInsert(DataSet: TDataSet);

begin

ADOTable3.Last;

k:=ADOTable3Код.Value;

end;

procedure TDM.ADOTable5AfterInsert(DataSet: TDataSet);

begin

inc(k);

ADOTable5Артикул.Value:=k;

end;

procedure TDM.ADOTable5BeforeInsert(DataSet: TDataSet);

begin

ADOTable5.Last;

k:=ADOTable5Артикул.Value;

end;

procedure TDM.ADOTable7CalcFields(DataSet: TDataSet);

begin

if (ADOTable7Количество.Value <> null) and (ADOTable7Цена.Value <> null) then

ADOTable7Цена2.Value:=ADOTable7Количество.Value*ADOTable7Цена.Value;

end;

procedure TDM.ADOTable9CalcFields(DataSet: TDataSet);

begin

if (ADOTable9Количество.Value <> null) and (ADOTable9Цена.Value <> null) then ADOTable9Цена2.Value:=ADOTable9Количество.Value*ADOTable9Цена.Value;

end;

//Определение позиций приходной накладной

procedure TDM.DataSource6DataChange(Sender: TObject; Field: TField);

var

S: single;

begin

//Выводим на экран номер и дату расхода

If DataSource6.DataSet.FieldValues['Номер'] = Null then

Begin

Rashod.LabelN.Caption:= 'ТОВАРНО-ТРАНСПОРТНАЯ НАКЛАДНАЯ № 00000';

Rashod.LabelD.Caption:= 'от 00.00.00';

ADOTable7.Close;

ADOTable7.Filtered:=False;

ADOTable7.Open;

Rashod.LabelSum.Caption:= 'Итого сумма накладной: 0,00 руб.';

End

Else

Begin

Rashod.LabelD.Caption:= 'от '

+DateToStr(DataSource6.DataSet.FieldValues['Дата']);

If Length(IntToStr(DataSource6.DataSet.FieldValues['Номер'])) = 1 Then

Begin

Rashod.LabelN.Caption:= 'ТОВАРНО-ТРАНСПОРТНАЯ НАКЛАДНАЯ № 0000'

+IntToStr(DataSource6.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource6.DataSet.FieldValues['Номер'])) = 2 Then

Begin

Rashod.LabelN.Caption:= 'ТОВАРНО-ТРАНСПОРТНАЯ НАКЛАДНАЯ № 000'

+IntToStr(DataSource6.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource6.DataSet.FieldValues['Номер'])) = 3 Then

Begin

Rashod.LabelN.Caption:= 'ТОВАРНО-ТРАНСПОРТНАЯ НАКЛАДНАЯ № 00'

+IntToStr(DataSource6.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource6.DataSet.FieldValues['Номер'])) = 4 Then

Begin

Rashod.LabelN.Caption:= 'ТОВАРНО-ТРАНСПОРТНАЯ НАКЛАДНАЯ № 0'

+IntToStr(DataSource6.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource6.DataSet.FieldValues['Номер'])) > 4 Then

Begin

Rashod.LabelN.Caption:= 'ТОВАРНО-ТРАНСПОРТНАЯ НАКЛАДНАЯ № '

+IntToStr(DataSource6.DataSet.FieldValues['Номер']);

End;

//Выводим на экран позиции накладной

ADOTable7.Close;

ADOTable7.Filter:='Заказ='+Chr(39)+IntToStr(ADOTable6Номер.Value)+Chr(39);

ADOTable7.Filtered:=True;

ADOTable7.Open;

//Выводим на экран cумму накладной

S:=0;

With ADOTable7 do

begin

First;

while not EOF do

Begin

S:=S+ADOTable7Цена2.Value;

Next;

End;

end;

Rashod.LabelSum.Caption:= 'Итого сумма накладной: '

+Format('%f',[S])+' руб.';

End;

end;

//Определение позиций расходной накладной

procedure TDM.DataSource8DataChange(Sender: TObject; Field: TField);

var

S: single;

begin

//Выводим на экран номер и дату расхода

If DataSource8.DataSet.FieldValues['Номер'] = Null then

Begin

Rashod.LabelNP.Caption:= 'ПРИХОДНАЯ НАКЛАДНАЯ № 00000';

Rashod.LabelDP.Caption:= 'от 00.00.00';

ADOTable9.Close;

ADOTable9.Filtered:=False;

ADOTable9.Open;

Rashod.LabelSumP.Caption:= 'Итого сумма приходной накладной: 0,00 руб.';

End

Else

Begin

Rashod.LabelDP.Caption:= 'от '

+DateToStr(DataSource8.DataSet.FieldValues['Дата']);

If Length(IntToStr(DataSource8.DataSet.FieldValues['Номер'])) = 1 Then

Begin

Rashod.LabelNP.Caption:= 'ПРИХОДНАЯ НАКЛАДНАЯ № 0000'

+IntToStr(DataSource8.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource8.DataSet.FieldValues['Номер'])) = 2 Then

Begin

Rashod.LabelNP.Caption:= 'ПРИХОДНАЯ НАКЛАДНАЯ № 000'

+IntToStr(DataSource8.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource8.DataSet.FieldValues['Номер'])) = 3 Then

Begin

Rashod.LabelNP.Caption:= 'ПРИХОДНАЯ НАКЛАДНАЯ № 00'

+IntToStr(DataSource8.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource8.DataSet.FieldValues['Номер'])) = 4 Then

Begin

Rashod.LabelNP.Caption:= 'ПРИХОДНАЯ НАКЛАДНАЯ № 0'

+IntToStr(DataSource8.DataSet.FieldValues['Номер']);

End;

If Length(IntToStr(DataSource8.DataSet.FieldValues['Номер'])) > 4 Then

Begin

Rashod.LabelNP.Caption:= 'ПРИХОДНАЯ НАКЛАДНАЯ № '

+IntToStr(DataSource8.DataSet.FieldValues['Номер']);

End;

//Выводим на экран позиции накладной

ADOTable9.Close;

ADOTable9.Filter:='[Общий заказ]='+Chr(39)+IntToStr(ADOTable8Номер.Value)+Chr(39);

ADOTable9.Filtered:=True;

ADOTable9.Open;

//Выводим на экран cумму товарного чека

S:=0;

With ADOTable9 do

begin

First;

while not EOF do

Begin

S:=S+ADOTable9Цена2.Value;

Next;

End;

end;

Rashod.LabelSumP.Caption:= 'Итого сумма приходной накладной: '

+Format('%f',[S])+' руб.';

End;

end;

end.

unit UnitREPORT;

interface

var

FormREPORT: TFormREPORT;

implementation

uses UnitDM;

{$R *.dfm}

//Сформировать отчет

procedure TFormREPORT.BitBtn1Click(Sender: TObject);

var

DT1, DT2: TDateTime;

Sum1, Sum2, Sum3: single;

S: string;

begin

DM.ADOTable12.Close;

DM.ADOQuery6.Close; DM.ADOQuery6.Parameters.ParamValues['N']:=DateToStr(DateTimePicker2.Date); DM.ADOQuery6.Parameters.ParamValues['K']:=DateToStr(DateTimePicker1.Date);

DM.ADOQuery6.Open;

DM.ADOQuery5.Close; DM.ADOQuery5.Parameters.ParamValues['N']:=DateToStr(DateTimePicker2.Date); DM.ADOQuery5.Parameters.ParamValues['K']:=DateToStr(DateTimePicker1.Date);

DM.ADOQuery5.Open;

DM.ADOTable12.Close;

DM.ADOQuery9.Close; DM.ADOQuery9.Parameters.ParamValues['N']:=DateToStr(DateTimePicker2.Date); DM.ADOQuery9.Parameters.ParamValues['K']:=DateToStr(DateTimePicker1.Date);

DM.ADOQuery9.Open;

DM.ADOQuery10.Close;

DM.ADOQuery10.Parameters.ParamValues['N']:=DateToStr(DateTimePicker2.Date);

DM.ADOQuery10.Parameters.ParamValues['K']:=DateToStr(DateTimePicker1.Date);

DM.ADOQuery10.Open;

Sum1:=0;

With DM.ADOQuery5 do

begin

First;

while not EOF do

Begin

Sum1:=DM.ADOQuery5Сумма.Value+Sum1;

Next;

End;

end;

Label1.Caption:=Format('%m',[Sum1]);

DM.ADOQuery7.Close;

DM.ADOQuery7.Parameters.ParamValues['N']:=DateToStr(DateTimePicker2.Date);

DM.ADOQuery7.Parameters.ParamValues['K']:=DateToStr(DateTimePicker1.Date);

DM.ADOQuery7.Open;

DM.ADOQuery8.Close;

DM.ADOQuery8.Parameters.ParamValues['N']:=DateToStr(DateTimePicker2.Date);

DM.ADOQuery8.Parameters.ParamValues['K']:=DateToStr(DateTimePicker1.Date);

DM.ADOQuery8.Open;

Sum2:=0;

With DM.ADOQuery8 do

begin

First;

while not EOF do

Begin

Sum2:=DM.ADOQuery8Сумма.Value+Sum2;

Next;

End;

end;

Label2.Caption:=Format('%m',[Sum2]);

Sum3:=0;

With DM.ADOTable13 do

begin

First;

while not EOF do

Begin

Sum3:=DM.ADOTable13Сумма.Value+Sum3;

Next;

End;

end;

Label3.Caption:=Format('%m',[Sum3]);

DM.ADOTable12.Open;

end;

procedure TFormREPORT.TabSet1Click(Sender: TObject);

begin

If TabSet1.TabIndex=0 Then

begin

Panel6.Visible:=True;

Panel5.Visible:=False;


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.