Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Управление запасами» (Выбор комплекса задач автоматизации)

Содержание:

Введение

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

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

Целью данного курсового проекта является проектирование информационной системы “управления запасами”, которая позволит автоматизировать процесс управления товарными запасами на данном предприятии.

Задачи работы – описать проектирование бизнес процессов по управлению продовольственными запасами на складе и разработать графическое представление спроектированных процессов. К рассматриваемым процессам относятся – закупка, хранение, учёт и продажа товара.

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

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

Глава 1. Аналитическая часть

1.1 Выбор комплекса задач автоматизации

Архитектура автоматизированной информационной системы управления складом построена по трехуровневому принципу.

Первый компонент представляет собой видимую для пользователя часть — интерфейс типа «человек-машина» — «клиентское приложение», с помощью которого пользователь осуществляет ввод, изменение и удаление данных, дает запросы на выполнение операций и запросы на выборку данных (получение отчетов); этот компонент может быть доступен на компьютере, ТСД, планшете, смартфоне

Второй компонент (скрытая от пользователей часть системы) — сервер базы данных, осуществляет хранение данных. Пользователь через клиентское приложение инициирует процедуру запроса на выборку, ввод, изменение или удаление данных в базе данных (БД).

Третий компонент — бизнес-логика («задачи» или «процессы» — специализированные программы обработки) осуществляет инициированную пользователем обработку данных, и возвращает обработанные данные в БД, сообщая пользователю через экран клиентского приложения о завершении запрошенной обработки.

Данная система реализует следующие функции:

- Активное управление складом;

- Увеличение скорости набора товара;

- Получение точной информации о месте нахождения товара на складе;

- Эффективное управление товаром, имеющим ограниченные сроки годности;

- Получение инструмента для повышения эффективности и развития процессов по обработке товара на складе;

- Оптимизация использования складских площадей.

Опишем более подробно проектируемые процессы:

Закупка товара – в начале предприятие определяет потребность в товаре, после чего производится анализ спроса за определённый период на данном предприятии для определения закупаемого товара и его количества. Объём закупаемого товара зависит от его сроков хранения (годности). Если товар скоропортящийся, то его закупаемое количество не должно сильно превышать на него спрос. Затем финансовый директор даёт указание менеджеру изучить рынок предложений данного товара и определить наиболее выгодного поставщика. В результате принимается решение о закупке товара и составляется заявка поставщику. Далее осуществляется приёмка и проверка товара (количественная, качественная). При расхождении составляется акт приёмки товара, где указываются все претензии. В этом случае товар может быть возвращён, поставщик заменяет или допоставляет товар. После чего товар доставляется и размещается на складе, а данные о товаре заносятся в единую БД, содержащую данные обо всех запасах.

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

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

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

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

Продажа товара включает следующие процессы – принятие заявки на покупку товара, определение наличия товара на складе, выдача товара покупателю при предъявлении товарного чека, организация доставки товара при необходимости.

1.2 Характеристика существующих бизнес – процессов

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

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

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

При проведении инвентаризации специалисты с помощью терминалов для сбора данных (ТСД) считывают штрих-коды, которые автоматически заносятся в базы данных приборов.

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

При формировании команд система разрабатывает оптимальные маршруты перемещения техники по территории складского комплекса, что позволяет уменьшить холостой пробег погрузочных средств. На выполнение операций система назначает ту погрузочную технику, использование которой наиболее полно отвечает поставленной задаче. Выполнение заданий подтверждается сканированием штрих-кода. Таким образом, система контролирует все действия работника и позволяет практически полностью исключить возможность ошибочного размещения груза или неправильного комплектования заказа. В системе мгновенно обновляется вся информация о местоположении грузов, наличии товара на складе, действиях работников и произведенных операциях. Для удобства имеется возможность наблюдения за складом в режиме двухмерного графического отображения. По результатам работы или состоянию склада система позволяет формировать отчеты, которые могут как выводиться на печать, так и передаваться в корпоративную систему компании.

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

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

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

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

Главная цель оптово-розничного предприятия - получение прибыли через удовлетворение покупательского спроса.

Рисунок 1 Структура оптово-розничного склада продовольственной продукции

СКЛАД

Администрация

Отдел закупок

Отдел продаж

Кадры

Бухгалтерия

В администрацию входит руководство, осуществляющее управление и контроль над данным предприятием.

Бухгалтерия занимается ведением финансового учёта над товаром, проведением финансовых операций, осуществлением начисления заработной платы и других выплат, а также ведёт расчёт с поставщиками и принимает оплату за товар.

Кадры представляют собой отдел кадров и всех работников на данном предприятии.

Отдел закупок решает следующие задачи: формирование ассортимента товара, определения потребности в товаре, спроса на товар, объёма закупаемого товара, поиск поставщиков, организация закупок, приёмка товара.

Отдел продаж работает с покупателями и занимается приёмами заказов на покупку товаров, координирует действия торговых агентов и занимается организацией доставки товаров покупателям.

1.3 Характеристика документооборота, возникающего при решении задачи

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

Инвентаризацию проводит инвентаризационная комиссия, создаваемая по приказу руководителя или контролирующих организаций, имеющих на это право.

Рисунок 2 Схема документооборота по учету производственных запасов

Инвентаризация проводится по следующим причинам:

1) При смене материально-ответственных лиц.

2) При передаче имущества в аренду или при приватизации предприятия.

3) В случае пожара или стихийных бедствий.

4) По требованиям контролирующих организаций.

5) При установлении фактов хищений и злоупотреблений.

Плановая ежегодная инвентаризация.

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

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

По результатам сличительной ведомости проводится взаимный зачет излишков и недостач, являющихся результатом пересортицы.

После отражения пересортицы подсчитывается недостача или излишек. Излишки должны быть оприходованы как доход предприятия, а недостачи рассматриваются комиссией с целью определения их причин:

1) Естественная убыль при хранении на складе.

2) Порча при хранении сверх норм естественной убыли.

3) Недостача.

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

Правила проведения инвентаризации регламентированы Основными положениями по инвентаризации.

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

Проведение инвентаризации обязательно: перед составлением годовой бухгалтерской отчетности, при смене материально ответственных лиц (на день приемки-передачи дел), при установлении фактов стран адижок или злоупотреблений, порчи цен и (на день установления таких фактов), после пожара или стихийного бедствия (наводнения, землетрясения и др.), в случае ликвидации учреждения; согласно распоряжению судебных и следственных органов, при передаче имущества учреждения в аренду; при передаче предприятий, учреждений, организаций или их структурных подразделений из одного подчинения в другое (на установленную дату передачи).

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

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

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

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

- выявлены излишки ценностей подлежат оприходованию с последующим выявлением причин их возникновения и виновных в этом лиц;

- недостача материальных ценностей в пределах установленных норм естественной убыли списывается по распоряжению руководителя на расходы учреждения Нормы естественной убыли применяются только в случае выявления факт политических недостатков Списывать материальные ценности в пределах норм естественной убыли до установления факта недостачи запрещается При отсутствии утвержденных норм естественной убыли (по отдельным видам ценностей) все н естачи рассматриваются как сверхурочныеві;

- взаимозачет излишков и недостач через пересортицы может быть разрешен только в порядке исключения за один и тот же период, для одной и той же материально ответственного лица, в отношении материальных ценностей од ного и того же наименования и в тождественных количествах Если при этом стоимость материальных ценностей, которых не хватает, превышает стоимость ценностей, выявленных в излишках, разница в стоимости должна быть отнесена на виновных лиц;

- недостача материальных ценностей сверх норм естественной убыли, а также потери от порчи ценностей зачисляются на виновных лиц и взыскиваются с них по стоимости;

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

1.4 Обоснование проектных решений по информационному обеспечению.

Разрабатываемая система предназначена для работы в операционной системе Windows. Программа должна работать в любой операционной системе семейства Windows: Windows 95/98, NT (Service Pack 6), 2000 (Service Pack 3), XP, а также на серверных вариантах этой операционной системы. Такой выбор объясняется развитым удобным графическим пользовательским интерфейсом данного семейства операционных систем, а также ее популярностью на российском рынке. Многие фирмы-производители программного обеспечения, в том числе систем разработки приложений, также ориентированы на это семейство операционных систем, что привело к наличию на рынке большого количества систем программирования, позволяющих разрабатывать программное обеспечение для Windows.

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

В последнее время особую популярность приобретает операционная система Linux и ее производные.

В этой ситуации можно задать вопрос: "Зачем программистам осваивать средства разработки приложений для Windows, если существуют такая прекрасная операционная система?". Не смотря на растущую популярность Linux можно утверждать, что в мире персональных компьютеров операционная система Windows еще довольно долго будет доминировать и вряд ли в ближайшее время будет вытеснена.

В связи с тем, что программа хранит информацию в базе данных, необходимо наличие соответствующей СУБД.

Программа ориентирована на работу с базами данных формата: MS Access. Соответственно на компьютере должна быть установлена данная СУБД. Если база MS Access функционирует на сервере, то необходимо обеспечить подключение компьютера к серверу. Для работы с базой данных Ms Access на удаленном компьютере требуется наличия открытого общего доступа к базе расположенной на удаленном компьютере, через протокол SMB .

Также необходимо дать удаленному пользователю который подсоединяется к базе, права на чтение, запись, изменение данных на компьютере который будет хранить базу данных. Также для доступа к данным используется системы работы с базами данных MS Access версии не ниже 2007 фирмы Microsoft.

1.5 Обоснование проектных решений по программному обеспечению

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

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

Точно определив, какие именно данные вам нужны, каким образом они будут храниться в памяти и какая должна быть система доступа к данным, вы тем самым решили только вопрос управления данными. Кроме этого нужен еще простой способ автоматизации решения предстоящих типовых задач. Даже если вы можете разработать достаточно сложные «прикладные» электронные таблицы, у вас все равно не будет средств отладки и управления работой таких приложений, позволяющих легко создать, скажем, полные формы для заказов или систему учета материально-производственных запасов. Напротив, СУБД специально проектируются для создания приложений. Они представляют вам необходимый инструментарий для управления данными и их обработки, а также дают возможность каталогизировать объекты приложения и управлять взаимосвязями между ними. При этом вместе с СУБД в вашем распоряжении оказывается язык программирования и средство отладки.

В свете вышесказанного для автоматизации решения ваших задач вам необходимы мощная реляционная СУБД и система разработки приложений. Практически все существующие СУБД имеют средства разработки приложений, которые могут быть использованы программистами или квалифицированными пользователями при создании процедур для автоматизации управления и обработки данных. К сожалению, многие системы разработки приложений для создания процедур требуют знания некоторого языка программирования, например Си или Xbase. Несмотря на всю их силу и богатство средств, для успешного их использования от вас требуется наличие определенной профессиональной подготовки и опыта работы с ними. К счастью, имеются средства, позволяющие легко проектировать и создавать приложения для работы с базами данных без знания языка программирования. Работа в Microsoft Access начинается с определения реляционных таблиц и их полей, которые будут содержать данные. Сразу после этого вы с помощью форм, отчетов и макросов сможете определять действия над этими данными.

Формы и отчеты можно использовать для задания форматов вывода данных на экран и дополнительных вычислений, что очень похоже на работу с электронными таблицами. Но в этом случае содержащиеся в формах и отчетах форматы и инструкции по проведению вычислений отделены от данных (находящихся в таблицах), так что вы имеете полную свободу действий в использовании данных, не меняя при этом сами данные - достаточно создать дополнительную форму или отчет, использующие те же самые данные. Если вам нужно автоматизировать некоторые действия, то для установления связей между определенными формами и отчетами или для выполнения определенных действий в качестве отклика на некоторое событие (например, изменение данных в некотором поле формы) можно без особого труда создать макросы. Если нам нужны более изощренные средства, например библиотечные утилиты Windows, вы можете написать процедуру на Access Basic.

Глава 2. Проектная часть

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

Информационная модель предназначена для описания существующих бизнес - процессов на предприятии и идеального положения вещей - того, к чему нужно стремиться (модель ТО-ВЕ). Методология IDEF0 предписывает построение иерархической системы диаграмм - единичных описаний фрагментов системы [8].

Построение модели ИС начинается с описания функционирования предприятия (системы) в целом в виде контекстной диаграммы. На Рис. 3 представлена контекстная диаграмма ИС - «Управление запасами»:

Рисунок 3 Контекстная диаграмма IDEF0. Управление товаром на оптово-розничном складе

Взаимодействие системы с окружающей средой описывается в терминах:

  • входа (на рисунок 3 это «Поставщики», «Товар» и «Первичные документы»);
  • выхода (основной результат процесса – «Выходные документы», «Товар» и «Прибыль»);
  • управления («Законодательство», «Нормативы складского учёта» и «Конъюнктура рынка»);
  • механизмов («Материальная база», «Оборудование», «Персонал» – это ресурсы, необходимые для процесса функционирования предприятия).

«Поставщики» – поставляют товар; «Первичные документы» - товарные накладные, которые поставщики предоставляют в отделе закупок; «Покупатели» - те, для кого функционирует предприятие. Получение прибыли – цель коммерческой деятельности предприятия, чтобы добиться этой цели, необходимо продать как можно больше товаров.

«Законодательство», «Нормативы складского учёта» и «Конъюнктура рынка» – это правила управления процессом функционирования работы склада, а именно управления товарными запасами. Как предприятие со своими внутренними правилами, управление товаром должно выполняться согласно законодательству страны.

В оказании услуг принимает участие «Персонал» склада. Чтобы организовать хранение товара, предоставление его для продажи и получить прибыль, в деятельности управления запасами должны участвовать «Материальная база» и «Оборудование» – помещения, техника для транспортировки товара по складу, персональные компьютеры для ведения учёта товара и т.д.

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

Справочники системы:

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

1) Справочник «Группы номенклатуры» – содержит обобщающую информацию о группах товаров: полиграфическая продукция, сувенирная, канцелярские товары и т.п. Содержит реквизиты: «код», «наименование».

2) Справочник «Номенклатура» - содержит информацию о товарах, поступающих на склад. Содержит реквизиты: «артикул», «наименование», «описание», «группа номенклатуры», «единицы измерения», «количество в упаковке», «количество упаковок на паллете», «признак активности номенклатуры».

3) Справочник «Категории» - содержит дополнительную информацию о категориях товара: эксклюзивный, индивидуализированный (т.е. имеет символику конкретного РИЦ), обычный. Содержит реквизиты «код», «наименование», «описание».

4) Справочник «Единицы измерения» - содержит перечень единиц измерения, которые используются для указания количества товара. Пример: «шт.», «кг», «г» и т.п. Содержит реквизиты «код», «наименование».

5) Справочник «Поставщики» - содержит перечень поставщиков товаров. Содержит реквизиты «код», «наименование», «комментарий».

6) Справочник «Клиенты» - содержит перечень РИЦ, приобретающих товары в КЦ. Содержит реквизиты: «код», «наименование», «описание», «город», «адрес доставки».

7) Справочник «Должности» - содержит перечень должностей сотрудников. Примеры: «кладовщик участка приемки», «начальник склада», «менеджер по продажам» и т.п. Содержит реквизиты «код», «название», «описание».

8) Справочник «Отделы» содержит перечень отделов КЦ, имеющих отношение к складским операциям.

9) Справочник «Сотрудники» - содержит список сотрудников КЦ, имеющих отношение к складским операциям. Реквизиты справочника: «код», «ФИО», «Полное имя», «Должность», «Отдел», «Телефон», «e-mail».

Название справочника

Ответственный

Средний объем справочника, записей

Средняя частота актуализации

Средний объем актуализации

Справочник «Группы номенклатуры»

Начальник склада

10

1 раз в год

1-2 записи

Справочник «Номенклатура»

Начальник склада

1500

1 раз в месяц

10 записей

Справочник «Категории»

Начальник склада

3

1 раз в 3 года

1 запись

Справочник «Единицы измерения»

Начальник склада

10

1 раз в 3 года

1 запись

Справочник «Группы дефектов»

Контролер качества

50

1 раз в месяц

1 запись

Справочник «Дефекты»

Контролер качества

150

1 раз в месяц

3 записи

Справочник «Поставщики»

Менеджер снабжения

100

1 раз в неделю

2-3 записи

Справочник «Клиенты»

Начальник склада

300

1 раз в год

1 запись

Справочник «Должности»

Начальник склада

10

1 раз в 3 года

1 запись

Справочник «Отделы»

Начальник склада

10

1 раз в 3 года

1 запись

Справочник «Сотрудники»

Начальник склада

50

1 раз в месяц

1-2 записи

Таблица 1. Актуализация справочников системы

Входные файлы:

1) Файлы «Планируемые поставки» и «Ожидаемые артикулы» поступают из ИС отдела снабжения.

Файл «Планирумые поставки» содержит следующие первичные показатели:

- ожидаемая дата поступления;

- поставщик;

- основание поставки (номер и дата договора на поставку);

- ФИО менеджера отдела снабжения, ответственного за поставку.

Файл «Ожидаемые артикулы» содержит данные о поступаемых товарах:

- артикул;

- количество товара;

- категория товара;

- ссылка на справочник «Перечни дефектов».

2) Файл «Заказы» поступает из ИС отдела сбыта, и содержит следующие первичные показатели:

- дата заказа;

- номер заказа;

- номер РИЦ или номер отдела;

- фамилия менеджера отдела сбыта, ответственного за поставку.

Файл «Заказанные артикулы» содержит данные о товарах, участвующих в заказе:

- артикул;

- количество товара.

Входные документы системы:

1) Приходная накладная. При поступлении товара на склад оформляется документ приходная накладная.

Основные реквизиты документа:

- номер накладной;

- дата поступления товара;

- поставщик;

- основание;

- ФИО сотрудника склада, принявшего товар;

- ФИО менеджера, ответственного за поставку;

- ФИО водителя, доставившего груз.

Данные табличной части:

- артикул;

- наименование;

- единицы измерения;

- количество;

- цена;

- сумма без НДС;

- сумма с НДС.

Частота возникновения документа – 5 раз в день. Число строк табличной части – в среднем 5.

При вводе данных автоматически подключаются справочники «Номенклатура», «Единицы измерения», «Сотрудники». Номер накладной формируется автоматически.

2) Накладная на перемещение. Документ оформляется при отгрузке товара отделам КЦ. Последующее оформление продажи клиентам осуществляет отдел сбыта.

Документ содержит следующие реквизиты:

- номер накладной;

- номер заявки;

- получатель;

- дата отгрузки;

- ФИО сотрудника склада, выполняющего отгрузку.

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

- артикул;

- наименование;

- единицы измерения;

- количество;

- цена;

- сумма без НДС;

- сумма с НДС.

Формы ввода первичной информации:

1) Приемка по количеству

Форма «Приемка по количеству» предназначена для ввода данных о приемке по количеству поступивших на склад товаров. При этом происходит пересчет поступившего товара и осмотр упаковок на наличие повреждений.

Форма содержит данные из таблиц «Приход», «Повреждения», и справочника «Номенклатура».

2) Инвентаризация. В форму вводятся данные о проведении инвентаризации. Включает следующие реквизиты:

- дата проведения инвентаризации;

- табличная часть «Состав комиссии»;

- табличная часть «Перечень товаров для инвентаризации».

Табличная часть «Состав комиссии» заполняется при помощи справочника «Сотрудники» содержит реквизиты:

- ФИО;

- должность.

В табличной части «Перечень товаров для инвентаризации» содержатся данные:

- артикул (выбирается из справочника номенклатуры);

- наименование (заполняется автоматически);

- учетное количество (заполняется автоматически);

- фактическое количество (вводится вручную);

- расхождение (вычисляется автоматически);

- примечание (заполняется вручную).

Частота возникновения документа – 1-2 раза в месяц. Число строк табличной части – в среднем 300 записей.

4) Управление резервом

Форма предназначена для ввода и редактирования данных о резервах отделов КЦ. Форма отображает данные из таблицы «Резерв» при поддержке справочниками «Номенклатура», «Отделы».

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

Журнал прихода:

Журнал содержит данные о поступлениях товара за определенный период времени (рисунок 4).

Данные формируются на основе таблиц «Приход», «Повреждения» и «Качество» при поддержке справочниками «Номенклатура» и «Сотрудники».

Рисунок 4. Макет документа «Журнал прихода»

Журнал содержит реквизиты:

- «дата» из таблицы «Приход»;

- «номер накладной» из таблицы «Приход»;

- «поставщик» из таблицы «Приход»;

- «артикул» из таблицы «Приход»;

- «наименование товара» из справочника «Номенклатура»;

- «количество» из таблицы «Приход»;

- кладовщик – сотрудник склада, осуществлявший приемку (из справочника «Сотрудники».

В журнале данные группируются по дате, времени, поставщику, номеру накладной.

Журнал прихода является основным отчетом о работе отдела приемки грузов. Его просматривают начальник склада и менеджер отдела снабжения.

Отчет по качеству:

Отчет по качеству (рисунок 5) содержит результаты проверки качества партии поступившего товара.

Данные для отчета берутся из таблиц «Качество» и «Приход», «Номенклатура».

Рисунок 5. Макет отчета о проверке качества

Отчет о качестве представляет интерес для менеджера отдела снабжения, отвечающего за поставку данного товара.

Остатки по складу

Отчет «Остатки по складу» (рисунок 6) содержит следующие основные реквизиты:

- дата составления отчета;

- группа номенклатуры;

- артикул;

- остаток на складе;

- суммарное количество зарезервированного отделами товара;

- количество свободного товара.

Данные группируются по группе номенклатуры и артикулу, сортируются по артикулу.

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

Рисунок 6. Макет отчета «Остатки по складу»

2.4 Общие положения

Разрабатываемый программный продукт автоматизирует функции обработки данных и подготовки документов по учету товаров на складе ЗАО «Консультант Плюс».

Выделяется два подмножества функций складской системы (рисунок 7, приложение 1):

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

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

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

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

2.5 Характеристика базы данных

База данных системы реализуется на MS SQL Server. Разработаем ER-модель (Entity-Relationship model, модель «сущность-связь») базы данных.

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

Перечень сущностей и их соответствие информационной модели

Название сущности в информационной модели

Идентификатор таблицы

Справочник «Единицы измерения»

MeasureUnits

Справочник «Группы товара»

Groups

Справочник «Номенклатура»

Assortment

Справочник «Категории»

Categories

Справочник «Дефекты»

Defects

Справочник «Группы дефектов»

DefectGroups

Справочник «Перечни дефектов»

DefectSets

Справочник «Поставщики»

Supplier

Справочник «Клиенты»

Client

Справочник «Должности»

Positions

Справочник «Отделы»

Division

Справочник «Сотрудники»

Employee

Файл «Планируемые поставки»

ExpectedArrivals

Файл «Ожидаемые артикулы»

ExpectedArtikuls

Таблица «Приход»

Arrivals

Таблица «Поступившие артикулы»

ArrivalArtikuls

Таблица «Повреждения»

Damages

Таблица «Качество»

QualityTests

Таблица «Обнаруженные дефекты»

QualityDefects

Таблица «Остатки»

Rests

Файл «Заказы»

Demands

Файл «Заказанные артикулы»

DemandArtikuls

Таблица «Расход»

Expense

Таблица «Отгружаемые артикулы»

ExpenseArtikuls

Таблица «Резерв»

Reserved

Таблица «Инвентаризация»

Inventory

Таблица «Состав комиссии»

Commission

Таблица «Результат инвентаризации»

Result

2.6 Структурная схема проекта

Описание функций модулей

№ п/п

Наименование модуля

Функции модуля

Модуль безопасности

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

Модуль инициализации интерфейса программы

После успешного входа в систему, запускает программу, используя настройки прав доступа для учетной записи пользователя

Модуль импорта/экспорта

По назначенному расписанию или по запросу пользователя устанавливает соединение с серверами баз данных внешних систем и выполняет импорт или экспорт данных

Продолжение таблицы 42

№ п/п

Наименование модуля

Функции модуля

Модуль взаимодействия с базой данных

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

Модуль справочной системы

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

Модуль «Главная форма программы»

Содержит главное меню, из которого осуществляется вызов остальных экранных форм

Модуль «Отчеты»

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

Модуль «Справочники»

Содержит процедуры функции, позволяющие просматривать содержимое справочников системы, и редактировать их (если позволяют права доступа)

Модуль ввода данных «Приемка товаров»

Содержит процедуры и функции, позволяющие вводить/редактировать данные, связанные с приемкой товара по количеству и качеству

Модуль ввода данных «Отгрузка товаров»

Содержит процедуры и функции для ввода данных по отгрузке товаров

Модуль ввода данных «Инвентаризация»

Содержит процедуры и функции для ввода данных по инвентаризации товаров на складе

Модуль ввода данных «Управление резервом»

Содержит процедуры и функции для ввода данных по резервированию товаров на складе

Рисунок 9.1. Структурная схема пакета

2.7 Описание программных модулей

Основные вычисления в программе происходят при вводе данных о приемке и об отгрузке товара.

Рассмотрим работу модуля «Приход товара» (рисунок 10, приложение 3).

Работа модуля «Приход товара» начинается с выбора пункта меню «Журнал прихода грузов» (рисунок 11, приложение 3). В открывшейся форме кладовщик нажимает кнопку «Добавить», после чего открывается форма «Ожидаемые грузы».

В форме «Ожидаемые грузы» (рисунок 12, приложение 3) кладовщик выбирает запись, соответствующую поступившему товару, и нажимает кнопку «Приемка». Если подходящая запись не обнаружена (такое может случиться, например, в случае отсутствия связи по Интернет с КЦ: не произошел импорт данных из ИС отдела снабжения), то, чтобы работа склада не останавливалась, кладовщик может ввести все данные вручную, нажав кнопку «Новая». В обоих случаях откроется форма «Приход». Если груз регистрируется на основе записи «Ожидаемые грузы», то большинство полей формы «Приход» будет заполнена данными, поступившими из отдела снабжения. Если же груз регистрируется через кнопку «Новая», то все данные придется ввести вручную.

На рисунке 13, приложение 3 показана блок-схема заполнения приходной накладной при поступлении груза из списка ожидаемых грузов. При этом кладовщик заполняе только столбец «Количество мест», и при необходимости может отредактировать значения «Количество» и «Цена». Остальные показатели приходной накладной заполняются автоматически.

2.8 Контрольный пример реализации проекта и его описание

Для того чтобы просмотреть резервы товару за отделами КЦ, необходимо открыть окно «Управление резервами» (рисунок 14, приложение 4). В этом окне отображается список отделов, за которыми числится резерв. Зарезервированное количество можно изменить, либо вовсе удалить резерв определенного отдела. Также в этом же окне имеется возможность добавить резерв.

Допустим, в данном случае было принято решение снять с резерва учебного центра 15 шт дисков «КонсультантПлюс», чтобы обеспечить отгрузку в РИЦ 500 шт. дисков. Кладовщик выбирает строку «Учебный центр», нажимает кнопку «Изменить», и в открывшемся диалоговом окне (рисунок 15, приложение 4) вводит новое значение резерва.

Теперь на складе достаточно свободного товара, чтобы выполнить отгрузку в соответствии с заказом (рисунок 16, приложение 4).

Выбрав в таблице заказов интересующий заказ, кладовщик нажимает кнопку «Комплектация». Открывается окно ввода документа «Накладная на перемещение» (рисунок 17, приложение 4).

После того как накладная сформирована, отгрузку можно увидеть в журнале отгрузок (рисунок 18, приложение 4). При этом, если партия недоукомплектована по сравнению с заказом, то в столбце комплектность значение будет меньше 100%, и будет выделяться красным цветом. После того как товар отправлен в КЦ, кладовщик должен указать, что товар отгружен. Для этого необходимо нажать кнопку «Отгрузка», после чего в диалоговом окне (рисунок 19, приложение 4) указать время отправки, номер автомобиля и фамилию водителя.

Заключение

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

В аналитической части были проанализированы:

- существующие системы автоматизации бизнес-процессов компании;

- потоки данных при решении задач.

Были выявлены следующие недостатки:

1) многократное дублирование одной и той же информации в различных документах;

2) низкая оперативность при комплектации партии отгрузки, т.к. подбор подходящих партий товара для отгрузки осуществляется вручную;

3) неизбежные ошибки при комплектации заказов и «потеря» товара на складе, в результате чего этот товар теряет актуальность;

4) большие затраты времени на составление отчетов;

5) высокая трудоемкость обработки информации;

6) неполное и неэффективное использование технических средств, имеющихся в наличии.

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

- проектируемая система обеспечит функции приемки товаров от поставщиков, отгрузки товаров клиентам (в РИЦ) и отделам КЦ, функция управления складскими остатками, функция подготовки отчетов;

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

- карточки учета материалов будет вестись автоматически.

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

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

Разработано программное обеспечение: описана его архитектура, структура меню, структура базы данных.

- автоматизации процессов подготовки отчетов.

Потери предприятия в связи с потерей актуальности товаров, хранящихся на складе, сократятся на 20%, а потери в связи с ошибками при комплектации заказов – на 30 %. Срок окупаемости системы составит 1 год.

Список литературы

1. Арутюнов В.В. Теория экономических информационных систем: Московская финансово-промышленная академия. М., 2005. – 192 с.

2. Балдин К.В., Уткин В.Б. Информационные системы в экономике. М.:Издательско-торговая корпорация «Дашков и К», 2008. – 395 с.

3. Вендров А.М. Проектирование программного обеспечения экономических информационных систем:Учебник. – М.:Финансы и статистика, 2006. – 544 с.

4. Гагарина Л.Г., Киселев Д.В., Федотова Е.Л. Разработка и эксплуатация автоматизированных информационных систем / под ред.проф.Л.Г.Гагариной. – Москва: ИД «Форум»: Инфра-М, 2007 – 384 с.

5. Ефимов Е.Н., Патрушина С.М., Панферова Л.Ф., Хашиева Л.И. Информационные системы в экономике. – Москва: ИКЦ «МарТ», 2004. – 352 с.

6. Липаев В.В. Программная инженерия. Методологические основы. М.: ТЕИС, 2006. – 608 с.

7. Максимов Н.В., Попов И.И., Голицына О.Л. Информационные системы. Учебное пособие. Форум, 2009 г. - 496 с.

8. Проектирование экономических информационных систем: Учебник/Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф.; Под ред. Тельнова Ю.Ф. – М.:Финансы и статистика, 2003. - 512 с.

9. Садердинов А. А., Трайнёв В. А., Федулов А. А. Информационная безопасность предприятия: Учебное пособие. — М.:Издательско-торговая корпорация «Дашков и К°», 2005. - 336 с.

10.  Владимир Грекул, Нина Коровкина, Юрий Куприянов. Проектное управление в сфере информационных технологий. – М.:БИНОМ, ИНФРА-М, 2013.

11.  Ричард Ньютон. Управление проектами от А до Я. – М.: Альпина Паблишер, 2014.

Введение

Приложение 1. Общие положения

Рисунок 7. Дерево функций системы

Рисунок 8. Структура меню программы

Приложение 2. Характеристика базы данных

Рисунок 9. Структура базы данных

Приложение 3. Описание программных модулей

Рисунок 10. Блок-схема работы модуля

Рисунок 11. Выбор операции

Рисунок 12. Блок-схема работы с формой «Ожидаемые грузы»

Рисунок 13. Блок-схема регистрации прихода товара

Приложение 4. Контрольный пример реализации проекта и его описание

Рисунок 14. Окно управления резервами

Рисунок 15. Диалоговое окно изменения резерва

Рисунок 16. Заказы РИЦ

Рисунок 17. Формирование накладной на перемещение

Рисунок 18. Журнал отгрузок

Рисунок 19. Окно ввода параметров отгрузки

Приложение 5.

unit Priemka;

interface

uses

SysUtils, Windows, Classes, Graphics, Controls,

Forms, Dialogs, DB, DBTables,Math;

type

TDataModule2 = class(TDataModule)

TovarTableID_TOVAR: TAutoIncField;

TovarTableNAME_TOVAR: TStringField;

TovarSr: TDataSource;

TovarTable: TTable;

PrihodSr: TDataSource;

DocTable: TTable;

SaleTable: TTable;

DocSr: TDataSource;

SaleSr: TDataSource;

SaleTableID_TOVAR_SALE: TAutoIncField;

SaleTableNAME_TOVAR: TStringField;

SaleTableID_TOVAR: TIntegerField;

SaleTablePRICE: TCurrencyField;

SaleTableID_SALE: TIntegerField;

SaleTableSUMMA: TCurrencyField;

SaleTableNDS: TFloatField;

SaleTableSUMMA_NDS: TCurrencyField;

SaleTableALL_SUMMA: TCurrencyField;

SummaQry: TQuery;

SummaQrySUMMA: TCurrencyField;

SummaQrySUMMA_NDS: TCurrencyField;

SummaQryALL_SUMMA: TCurrencyField;

ClientSr: TDataSource;

ClientTable: TTable;

ClientTableID_CLIENT: TAutoIncField;

ClientTableCLIENT: TStringField;

ClientTableADRESS: TStringField;

ClientTableTELEPHONE: TStringField;

ClientTableFAX: TStringField;

ClientTableREKVEZIT: TStringField;

ClientTableBIK: TStringField;

ClientTableINN: TStringField;

ClientTableKOD_OKPO: TStringField;

ClientTableKOD_OKONH: TStringField;

ClientTableMAN: TStringField;

ClientTableDOCUMENT: TStringField;

FirmaTable: TTable;

FirmaSr: TDataSource;

FirmaTableFIRMA: TStringField;

FirmaTableADRESS: TStringField;

FirmaTableTELEPHON: TStringField;

FirmaTableFAX: TStringField;

FirmaTableREKVEZIT: TStringField;

FirmaTableBIK: TStringField;

FirmaTableINN: TStringField;

FirmaTableKOD_OKPO: TStringField;

FirmaTableKOD_OKONH: TStringField;

FirmaTableDIREKTOR: TStringField;

FirmaTableBUHGALTER: TStringField;

UpdateTovQry1: TQuery;

UpdateTovQry2: TQuery;

RashodQry: TQuery;

RashodSr: TDataSource;

RashodQryDATA_SALE: TDateField;

RashodQryID_TOVAR: TIntegerField;

RashodQryPRICE: TCurrencyField;

UpTovQry1: TQuery;

UpTovQry2: TQuery;

SaleTableNALOG: TFloatField;

SaleTableSUMMA_NALOG: TCurrencyField;

SummaQrySUMMA_NALOG: TCurrencyField;

TovarTableSELECT: TStringField;

KategTable: TTable;

KategSr: TDataSource;

KategTableID_KATEG: TAutoIncField;

KategTableNAME_KATEG: TStringField;

TovarTableID_KATEG: TIntegerField;

SumRashQry: TQuery;

ReportQry: TQuery;

SumRashQryID_TOVAR: TIntegerField;

SumRashQryNAME_TOVAR: TStringField;

SumRashQrySUMOFKOLVO_TOVAR: TFloatField;

SumRashQrySUMOFKOLVO_PRIHOD: TFloatField;

SelectQry: TQuery;

SaleTableCOUNTRY: TStringField;

SaleTableN_DECLAR: TStringField;

SumRashQry2: TQuery;

SumRashQry2ID_TOVAR: TIntegerField;

SumRashQry2NAME_TOVAR: TStringField;

SumRashQry2KOLVO_TOVAR: TIntegerField;

SumRashQry2KOLVO_PRIHOD: TSmallintField;

DeclTable: TTable;

DeclSr: TDataSource;

SelectDeclQry: TQuery;

SelectDeclSr: TDataSource;

SelectDeclQryN_DECLAR: TStringField;

SelectDeclQryID_DECLAR: TIntegerField;

SelectDeclQryID_TOVAR: TIntegerField;

DocTableID_SALE: TAutoIncField;

DocTableDATA_SALE: TDateField;

DocTableN_FAKTURA: TStringField;

DocTableN_NAKLAD: TStringField;

DocTableN_ORDER: TStringField;

DocTableCLIENT: TStringField;

DocTableDOC_SUMMA: TCurrencyField;

DocTableDOC_NDS: TCurrencyField;

DocTableDOC_ALL_SUMMA: TCurrencyField;

DocTableSUMMA_STRING: TStringField;

DocTableID_CLIENT: TIntegerField;

DocTableDOC_NALOG: TCurrencyField;

InsPlusQry: TQuery;

FirmaTableSEL: TStringField;

KategTableSEL: TStringField;

Query2: TQuery;

IntegerField1: TIntegerField;

StringField1: TStringField;

IntegerField2: TIntegerField;

SmallintField1: TSmallintField;

IntegerField3: TIntegerField;

SaleTableOSTATOK: TIntegerField;

UpPrihodQry: TQuery;

SumRashQry2OSTATOK: TIntegerField;

InsPrihodQry: TQuery;

SkaldTable: TTable;

SkladSr: TDataSource;

SkaldTableID_SKLAD: TAutoIncField;

SkaldTableNAME_SKALD: TStringField;

KategTableID_SKLAD: TIntegerField;

RashodQryN_NAKLAD: TStringField;

RashodQryCLIENT: TStringField;

PrihodQry: TQuery;

PrihodQryN_NAKLAD_PRIHOD: TStringField;

PrihodQryDATE_PRIHOD: TDateField;

PrihodQryPOSTAVSHIK: TStringField;

PrihodQryKOLVO_TOVAR: TFloatField;

PrihodQryPRICE_TOVAR: TCurrencyField;

PrihodQrySUMMA: TCurrencyField;

RashodQryDOC_SUMMA: TCurrencyField;

TovarTableSHIFR: TStringField;

TovarTablePRICE_PRIH: TCurrencyField;

TovarTablePRICE_RASH: TCurrencyField;

PrMoneyTable: TTable;

RasMoneyTable: TTable;

PrMoneySr: TDataSource;

RasMoneySr: TDataSource;

PrMoneyTableID_MONEY_PRIH: TAutoIncField;

PrMoneyTableID_SKLAD: TIntegerField;

PrMoneyTableDATA_MONEY_PRIH: TDateField;

PrMoneyTablePRIH_MONEY_RUB: TCurrencyField;

PrMoneyTablePRIH_MONEY_USD: TCurrencyField;

PrMoneyTablePRIH_KURS: TCurrencyField;

PrMoneyTableZA_CHTO_MONEY_PRIH: TStringField;

PrMoneyTableCOMMENT_MONEY_PRIH: TStringField;

RasMoneyTableID_RASHOD_MONEY: TAutoIncField;

RasMoneyTableID_SKLAD: TIntegerField;

RasMoneyTableDATA_RASH_MONEY: TDateField;

RasMoneyTableRASH_MONEY_RUB: TCurrencyField;

RasMoneyTableRASH_MONEY_USD: TCurrencyField;

RasMoneyTableRASH_KURS: TCurrencyField;

RasMoneyTableZA_CHTO_MONEY_RASH: TStringField;

RasMoneyTableCOMMENT_MONEY_RASH: TStringField;

SkladTableSELECT: TStringField;

ClientTableSEL: TStringField;

TovarTableED_IZM: TStringField;

TovarTableCOMMENT: TBlobField;

SaleTableKOLVO_TOVAR: TFloatField;

TovarTableOSTATOK: TFloatField;

ReportQryCLIENT: TStringField;

ReportQryADRESS: TStringField;

ReportQryTELEPHONE: TStringField;

ReportQryMAN: TStringField;

ReportQryDOCUMENT: TStringField;

ReportQryDATA_SALE: TDateField;

ReportQryN_NAKLAD: TStringField;

ReportQryN_ORDER: TStringField;

ReportQryDOC_SUMMA: TCurrencyField;

ReportQryDOC_NDS: TCurrencyField;

ReportQryDOC_ALL_SUMMA: TCurrencyField;

ReportQryDOC_NALOG: TCurrencyField;

ReportQrySUMMA_STRING: TStringField;

ReportQryNAME_TOVAR: TStringField;

ReportQryKOLVO_TOVAR: TFloatField;

ReportQryPRICE: TCurrencyField;

ReportQrySUMMA: TCurrencyField;

ReportQryNDS: TFloatField;

ReportQrySUMMA_NDS: TCurrencyField;

ReportQryALL_SUMMA: TCurrencyField;

ReportQryNALOG: TFloatField;

ReportQrySUMMA_NALOG: TCurrencyField;

ReportQryFIRMA: TStringField;

ReportQryADRESS_1: TStringField;

ReportQryTELEPHON: TStringField;

RashodQrySUMMA: TCurrencyField;

procedure DataModuleCreate(Sender: TObject);

procedure PrihodTableAfterPost(DataSet: TDataSet);

procedure RashodTableAfterPost(DataSet: TDataSet);

procedure SaleTableBeforePost(DataSet: TDataSet);

procedure SaleTableAfterPost(DataSet: TDataSet);

procedure SaleTableAfterDelete(DataSet: TDataSet);

procedure SaleTableBeforeEdit(DataSet: TDataSet);

procedure SaleTableBeforeDelete(DataSet: TDataSet);

procedure PrihodTableBeforeEdit(DataSet: TDataSet);

procedure PrihodTableBeforeDelete(DataSet: TDataSet);

procedure PrihodTableAfterDelete(DataSet: TDataSet);

private

{ private declarations }

public

{ public declarations }

end;

var

DataModule2: TDataModule2;

Id_tovar: integer;

implementation

function SummaString(m: real): string;

Var

por : array[0..4,0..2] of string;

por1: array[0..0,0..2] of string;

a : array[0..19] of string;

a1 : array[0..19] of string;

b1 : array[0..9] of string;

c : array[0..9] of string;

s : string;

p : integer;

mul : real;

l1 : integer;

pos_rub: integer;

begin

por[0,0]:='рубль '; por[0,1]:='рубля '; por[0,2]:='рублей ';

por[1,0]:='тысяча '; por[1,1]:='тысячи '; por[1,2]:='тысяч ';

por[2,0]:='миллион '; por[2,1]:='миллиона '; por[2,2]:='миллионов ';

por[3,0]:='миллиард '; por[3,1]:='миллиарда '; por[3,2]:='миллиардов ';

por[4,0]:='триллион '; por[4,1]:='триллиона '; por[4,2]:='триллионов ';

por1[0,0]:='копейка '; por1[0,1]:='копейки '; por1[0,2]:='копеек ';

a[0]:=' '; a[1]:='один '; a[2]:='два '; a[3]:='три '; a[4]:='четыре ';

a[5]:='пять '; a[6]:='шесть '; a[7]:='семь '; a[8]:='восемь ';

a[9]:='девять '; a[10]:='десять '; a[11]:='одиннадцать ';

a[12]:='двенадцать '; a[13]:='тринадцать '; a[14]:='четырнадцать ';

a[15]:='пятнадцать '; a[16]:='шестнадцать '; a[17]:='семнадцать ';

a[18]:='восемнадцать '; a[19]:='девятнадцать ';

a1[0]:=' '; a1[1]:='одна '; a1[2]:='две '; a1[3]:='три ';

a1[4]:='четыре '; a1[5]:='пять '; a1[6]:='шесть '; a1[7]:='семь ';

a1[8]:='восемь '; a1[9]:='девять '; a1[10]:='десять ';

a1[11]:='одиннадцать '; a1[12]:='двенадцать ';a1[13]:='тринадцать ';

a1[14]:='четырнадцать '; a1[15]:='пятнадцать '; a1[16]:='шестнадцать ';

a1[17]:='семнадцать '; a1[18]:='восемнадцать '; a1[19]:='девятнадцать ';

b1[0]:=' '; b1[1]:='десять '; b1[2]:='двадцать '; b1[3]:='тридцать ';

b1[4]:='сорок '; b1[5]:='пятьдесят '; b1[6]:='шестьдесят ';

b1[7]:='семьдесят '; b1[8]:='восемьдесят '; b1[9]:='девяносто ';

c[0]:=' '; c[1]:='сто '; c[2]:='двести '; c[3]:='триста ';

c[4]:='четыреста '; c[5]:='пятьсот '; c[6]:='шестьсот ';

c[7]:='семьсот '; c[8]:='восемьсот '; c[9]:='девятьсот ';

s:=' ';

For p:=4 downto 0 do begin

mul:=power(10,p*3);

l1:=Round(Int(m/mul));

m:=m-l1*mul;

if (l1>0) then begin

if (Round(Int(l1/100))>0) then begin

s:=s+c[Round(Int(l1/100))];

l1:=l1-Round(Int(l1/100))*100;

end;

if (l1>=20) then begin

s:=s+b1[Round(Int(l1/10))];

l1:=l1-Round(Int(l1/10))*10;

end;

if(p<>1) then s:=s+a[l1]

else s:=s+a1[l1];

if (l1=1)then s:=s+por[p,0];

if (l1>1) and (l1<5) then

s:=s+por[p,1];

if (l1<1) or (l1>4) then

s:=s+por[p,2];

end;{if}

end;{for}

pos_rub:=pos('рублей',s);

if (l1=0) and (pos_rub=0)

then s:=s+por[0,2];

l1:=Round(m*100);

If (l1>0) then begin

if (l1>=20) then begin

s:=s+b1[Round(Int(l1/10))];

l1:=l1-Round(Int(l1/10))*10;

end;

s:=s+a1[l1];

if (l1=1) then s:=s+por1[0,0];

if (l1>1) and (l1<5) then s:=s+por1[0,1];

if (l1<1) or (l1>4) then s:=s+por1[0,2];

end;{if}

SummaString:=s;

end;

procedure TDataModule2.DataModuleCreate(Sender: TObject);

begin

{TovarTable.Open;

PrihodTable.Open;

RashodTable.Open;

DocTable.Open;

SaleTable.Open;}

end;

procedure TDataModule2.PrihodTableAfterPost(DataSet: TDataSet);

begin

{If TovarTable.State<>dsEdit then

TovarTable.Edit;

TovarTable.FieldByName('OSTATOK').Value:=

TovarTable.FieldByName('OSTATOK').Value+PrihodTable.FieldByName('KOLVO_PRIHOD').Value;

TovarTable.Post;

}

{UpTovQry1.ParamByName('KOLVO').AsInteger:=

PrihodTable.FieldByName('KOLVO_PRIHOD').AsInteger;

UpTovQry1.ParamByName('ID_TOVAR').AsInteger:=

PrihodTable.FieldByName('ID_TOVAR').AsInteger;

UpTovQry1.ExecSQL;

TovarTable.Active:=False;

TovarTable.Active:=True;;}

end;

procedure TDataModule2.RashodTableAfterPost(DataSet: TDataSet);

begin

{ If TovarTable.State<>dsEdit then

TovarTable.Edit;

TovarTable.FieldByName('OSTATOK').Value:=

TovarTable.FieldByName('OSTATOK').Value-RashodTable.FieldByName('KOLVO_RASHOD').Value;

TovarTable.Post;

}

end;

procedure TDataModule2.SaleTableBeforePost(DataSet: TDataSet);

begin

Id_tovar:=SaleTable.FieldByName('ID_TOVAR').Value;

With SaleTable do begin

FieldByName('SUMMA').Value:=

FieldByName('KOLVO_TOVAR').Value*FieldByName('PRICE').Value;

FieldByName('SUMMA_NALOG').Value:=

((FieldByName('KOLVO_TOVAR').Value*FieldByName('PRICE').Value)/

(100+FieldByName('NALOG').Value))*

FieldByName('NALOG').Value;

FieldByName('SUMMA_NDS').Value:=

(FieldByName('KOLVO_TOVAR').Value*FieldByName('PRICE').Value-

FieldByName('SUMMA_NALOG').Value)/

(100+FieldByName('NDS').Value)*FieldByName('NDS').Value;

FieldByName('ALL_SUMMA').Value:=

FieldByName('SUMMA').Value-FieldByName('SUMMA_NALOG').Value-

FieldByName('SUMMA_NDS').Value;

end;

{ With SaleTable do begin

FieldByName('ALL_SUMMA').Value:=

FieldByName('KOLVO_TOVAR').Value*FieldByName('PRICE').Value;

FieldByName('SUMMA_NDS').Value:=

(FieldByName('KOLVO_TOVAR').Value*FieldByName('PRICE').Value)*

FieldByName('NDS').Value/100;

FieldByName('SUMMA_NALOG').Value:=

((FieldByName('KOLVO_TOVAR').Value*FieldByName('PRICE').Value)*

FieldByName('NDS').Value/100)*

FieldByName('NALOG').Value/100;

FieldByName('SUMMA').Value:=

FieldByName('ALL_SUMMA').Value+FieldByName('SUMMA_NALOG').Value+

FieldByName('SUMMA_NDS').Value;

end;

}

end;

procedure TDataModule2.SaleTableAfterPost(DataSet: TDataSet);

Var i:integer;

begin

If DocTable.State<>dsEdit then

DocTable.Edit;

SummaQry.Open;

DocTable.FieldByName('DOC_SUMMA').Value:=SummaQry.FieldByName('SUMMA').Value;

DocTable.FieldByName('DOC_NDS').Value:=SummaQry.FieldByName('SUMMA_NDS').Value;

DocTable.FieldByName('DOC_NALOG').Value:=SummaQry.FieldByName('SUMMA_NALOG').Value;

DocTable.FieldByName('DOC_ALL_SUMMA').Value:=SummaQry.FieldByName('ALL_SUMMA').Value;

DocTable.FieldByName('SUMMA_STRING').AsString:=

SummaString(SummaQry.FieldByName('SUMMA').AsFloat);

SummaQry.Close;

DocTable.Post;

UpdateTovQry1.ParamByName('KOLVO').AsInteger:=

SaleTable.FieldByName('KOLVO_TOVAR').AsInteger;

UpdateTovQry1.ParamByName('ID_TOVAR').AsInteger:=

SaleTable.FieldByName('ID_TOVAR').AsInteger;

UpdateTovQry1.ExecSQL;

TovarTable.Active:=False;

TovarTable.Active:=True;;

UpPrihodQry.ParamByName('ID_TOVAR').AsInteger:=ID_TOVAR;

{

UpPrihodQry.ParamByName('OSTATOK').AsInteger:=

TovarTable.FieldByName('OSTATOK').AsInteger;

UpPrihodQry.ParamByName('ID_TOVAR').AsInteger:=ID_TOVAR;

SaleTable.FieldByName('ID_TOVAR').AsInteger;

UpPrihodQry.ExecSQL;

}

{If PrihodTable.State<>dsEdit then

PrihodTable.Edit;

PrihodTable.FieldByName('OSTATOK').Value:=

TovarTable.FieldByName('OSTATOK').Value;

PrihodTable.Post;}

end;

procedure TDataModule2.SaleTableAfterDelete(DataSet: TDataSet);

begin

If DocTable.State<>dsEdit then

DocTable.Edit;

SummaQry.Open;

DocTable.FieldByName('DOC_SUMMA').Value:=SummaQry.FieldByName('SUMMA').Value;

DocTable.FieldByName('DOC_NDS').Value:=SummaQry.FieldByName('SUMMA_NDS').Value;

DocTable.FieldByName('DOC_ALL_SUMMA').Value:=SummaQry.FieldByName('ALL_SUMMA').Value;

DocTable.FieldByName('SUMMA_STRING').AsString:=

SummaString(SummaQry.FieldByName('SUMMA').AsFloat);

SummaQry.Close;

DocTable.Post;

{ UpPrihodQry.ParamByName('OSTATOK').AsInteger:=

TovarTable.FieldByName('OSTATOK').AsInteger;

UpPrihodQry.ParamByName('ID_TOVAR').AsInteger:=

TovarTable.FieldByName('ID_TOVAR').AsInteger;

UpPrihodQry.ExecSQL;

}

end;

procedure TDataModule2.SaleTableBeforeEdit(DataSet: TDataSet);

begin

UpdateTovQry2.ParamByName('KOLVO').AsInteger:=

SaleTable.FieldByName('KOLVO_TOVAR').AsInteger;

UpdateTovQry2.ParamByName('ID_TOVAR').AsInteger:=

SaleTable.FieldByName('ID_TOVAR').AsInteger;

UpdateTovQry2.ExecSQL;

TovarTable.Active:=False;

TovarTable.Active:=True;;

end;

procedure TDataModule2.SaleTableBeforeDelete(DataSet: TDataSet);

begin

UpdateTovQry2.ParamByName('KOLVO').AsInteger:=

SaleTable.FieldByName('KOLVO_TOVAR').AsInteger;

UpdateTovQry2.ParamByName('ID_TOVAR').AsInteger:=

SaleTable.FieldByName('ID_TOVAR').AsInteger;

UpdateTovQry2.ExecSQL;

TovarTable.Active:=False;

TovarTable.Active:=True;;

UpPrihodQry.ParamByName('OSTATOK').AsInteger:=

TovarTable.FieldByName('OSTATOK').AsInteger;

UpPrihodQry.ParamByName('ID_TOVAR').AsInteger:=ID_TOVAR;

SaleTable.FieldByName('ID_TOVAR').AsInteger;

UpPrihodQry.ExecSQL;

end;

procedure TDataModule2.PrihodTableBeforeEdit(DataSet: TDataSet);

begin

{UpTovQry2.ParamByName('KOLVO').AsInteger:=

PrihodTable.FieldByName('KOLVO_PRIHOD').AsInteger;

UpTovQry2.ParamByName('ID_TOVAR').AsInteger:=

PrihodTable.FieldByName('ID_TOVAR').AsInteger;

UpTovQry2.ExecSQL;

{ TovarTable.Active:=False;

TovarTable.Active:=True;;}

end;

procedure TDataModule2.PrihodTableBeforeDelete(DataSet: TDataSet);

begin

{UpTovQry2.ParamByName('KOLVO').AsInteger:=

PrihodTable.FieldByName('KOLVO_PRIHOD').AsInteger;

UpTovQry2.ParamByName('ID_TOVAR').AsInteger:=

PrihodTable.FieldByName('ID_TOVAR').AsInteger;

UpTovQry2.ExecSQL;

{ TovarTable.Active:=False;

TovarTable.Active:=True;; }

end;

procedure TDataModule2.PrihodTableAfterDelete(DataSet: TDataSet);

begin

TovarTable.Active:=False;

TovarTable.Active:=True;;

end;

end.