Оперативное планирование
СОДЕРЖАНИЕ
1) ИСТОРИЯ ОРГАНИЗАЦИИ…………………………………………………
2) Анализ аппаратно-программных средств, используемых на предприятии…………………………………………………
3) Описание ВНЕДРЯЕМОй информационной системы
3.1) Основные функциональные возможности системы ………….………………….....6
3.2) Назначение и цели создания веб-приложения ……………………….……………..7
3.3) Общие требования к информационной системе ……………………………...…...8
3.4) Программная реализация
3.4.1) Инструментальные средства разработки………………………....……….……1
3.4.2) Реализация базы данных ……………………………………………………..….14
3.4.3) Реализация клиентского приложения ………………………………….………27
4) ЗАКЛЮЧЕНИЕ…………………………………......…
5) СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ……………………………….….....4
ПРИЛОЖЕНИЕ 1. ХРОНОЛОГИЯ ПРОХОЖДЕНИЯ ПРАКТИКИ …………………...47
ПРИЛОЖЕНИЕ 2. ХАРАКТЕРИСТИКА ПО ПРОХОЖДЕНИЮ ПРАКТИКИ
1) ИСТОРИЯ ПРЕДПРИЯТИЯ
Pull and Bear (Пул энд Бир) - испанский бренд мужской и женской молодежной одежды. Принадлежит концерну Inditex, который владеет такими брендами как Massimo Dutti, Zara, Oysho, Uterqüe, Stradivarius, Bershka.
Бренд относительно молодой, был представлен компанией Inditex в 1991 году и позиционировал себя как неформальная мужская одежда для молодежи. Марка сразу взялась за продвижения на рынке и 1992 году был открыт магазин за пределами Испании в Португалии. А в 1995 году были открыты представительства в Греции и Мальте. Компания и далее продолжала свою экспансию, и в 1997 году было открыто представительство в Израиле.
После чего компания решает захватить и рынок женской молодежной одежды. В 1998 году выходит первая женская коллекция.
В 2001 году PULL & BEAR представляет новую линию одежды под названием SICKONINETEEN. Она тут же завоевывает популярность и поступает во все магазины сети.
Сейчас торговую марку Pull and Bear (Пул энд Бир) можно увидеть в таких странах как Ирландия, Венесуэла, Арабские Эмираты, Мексика, Бахрейн, Ливан, Словакия, Россия и с недавнего времени Украина.
Чем же подкупает этот Испанский бренда покупателей и покупательниц?
В первую очередь это грамотная ценовая политика и необычный дизайн вещей. Это вещи среднего ценового диапазона, их может себе позволить много кто. Есть распродажи на которых цена бывает падает на 70 %. Дизайн одежды весьма привлекателен для молодежи, качество вполне соответствует цене.
Первый магазин Pull & Bear в России открылся в 2004 году в Москве в ТЦ «Охотный Ряд», затем в ТРЦ «Европейский», «Метрополисе», «Атриуме» и других центрах. Также эта компания имеет представительства в Санкт-Петербурге, Казани, Красноярске, Новосибирске, Липецке, Воронеже, Нижнем Новгороде, Краснодаре, Омске, Калининграде и, конечно, Ростове-на-Дону.
В 2010 году компания продолжает международную экспансию в мире моды и появляется в Болгарии, Казахстане, Сингапуре. Всего за 20 лет существования марки одежды Pull and Bear были открыты около 685 магазинов в 47 странах мира. На данный момент в компании работают порядка 7000 человек.
Головной офис компании располагается в испанском городе Ла-Корунья. Российское представительство базируется в Москве.
Магазины построены по модульному принципу, чтобы упростить достижение сочетаемости и комбинаторности предметов одежды и предоставить разные варианты среды в течение всего сезона.
Магазин «Pull and Bear» в торговом центре «Горизонт» был открыт в 2005 году. С каждым годом экономические показатели магазина растут, и он всё больше наращивает клиентскую базу.
В штате магазина на данный момент числятся 14 человек: 3 менеджера,8 кассиров и 3 консультанта.
Магазин 5414 «Пулл энд Беар» расположен по адресу:
г. Ростов-на-Дону, пр. Михаила Нагибина 32/2, ТЦ «Горизонт»
Тел.: (863) 272-51-32
Эл. почта: [email protected]
2) Анализ аппаратно-программных средств, используемых на предприятии
В магазине 5414 «Пулл энд Беар» ведётся работа на 2 персональных компьютерах. Характеристика: процессор Celeron(R) CPU 2.66 GHz, жесткий диск 80 GB, ОЗУ 512MB; жидкокристаллические мониторы по 17 дюймов, лазерные мыши; операционная система Windows XP.
На всех ПК установлены такие лицензионные программные средства как Microsoft Word, Microsoft Excel, Microsoft Access, Acrobat Reader, 1-С Предприятие и др.
3. Описание ВНЕДРЯЕМОЙ информационной системы
3.1 Основные функциональные возможности системы
Для того чтобы автоматизировать процесс анализа и реализации продаж текстильных товаров, необходимо решить следующие задачи:
1) хранение и обеспечение целостного состояния БД магазина;
2) защиту хранимой информации от несанкционированного изменения;
3) управление авторизацией пользователей (сотрудников), в т.ч.
управление разграничением прав пользователей на основании политики групп пользователей: ограничение функций системы в зависимости от наличия соответствующих прав;
4) простая система проведения продаж и регистрации чеков;
5) предоставление статистической информации о совершённых продажах в режиме on-line;
6) наглядное схематичное представление информации о товарах, наличествующих в магазине (стоке) с точным указанием оставшегося количества и визуальным представлением каждого артикула;
7) удобная система регистрации новых приходящих поставок и просмотра информации по отгруженным;
8) регистрация и удаление пользователей;
3.2 Назначение и цели создания веб-приложения
Веб-приложение —клиент- серверное приложение, в котором клиентом выступает браузер, а сервером — веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому веб-приложения являются межплатформенными сервисами.
Существенное преимущество построения веб-приложений для поддержки стандартных функций браузера заключается в том, что функции должны выполняться независимо от операционной системы данного клиента. Вместо того чтобы писать различные версии для Microsoft Windows, Mac OS X, GNU/Linux и других операционных систем, приложение создается один раз для произвольно выбранной платформы и на ней разворачивается.
Таким образом, для того, чтобы проектируемое ПО могло импортироваться на различные платформы, необходимо разработать именно веб-приложение.
3.3 Общие требования к информационной системе
3.3.1 Требования к интерфейсу пользователя
интерфейс должен обеспечивать переход ко всем возможным объектам системы;
информация должна быть представлена в легком для восприятия виде;
предусмотреть контроль вводимой информации;
пользовательский интерфейс должен предполагать структуру, интуитивно понятную пользователям и обеспечивать максимальную степень дружелюбности, компактность представления информации;
обеспечить целостность хранимой информации;
обеспечить защиту от несанкционированного доступа к информации;
3.3.2 Требования к программному обеспечению
Система написана на языках PHP и JScript. Структурированные данные хранятся в таблицах СУБД MsSQL Server. Использование модульной структуры системы определяет возможность расширения системы в дальнейшем.
Для работы описываемой системы необходимо наличие следующих программных средств.
На серверной стороне:
ОС Windows 2000/ME/XP/Vista/Seven;
Microsoft SQL Server 2000 выше;
Web-сервер Apache 2.2.15 и выше;
Интерпретатор языка PHP 5.2.9;
На клиентской стороне:
ОС Windows 2000/ME/XP/Vista/Seven/Unix-по
Браузер Mozilla Firefox/Opera/Internet Explorer, желательно последней версии;
3.3.3 Требования к техническому обеспечению
На серверной стороне:
300 МГц – CPU, 256 Mb Мб – ОЗУ, свободное дисковое пространство для установки программного продукта 50 Мб;
На клиентской стороне:
300 МГц – CPU, 256 Mb Мб – ОЗУ;
3.4 Программная реализация
3.4.1 Инструментальные средства разработки
При разработке данного проекта использовались следующие инструментальные средства:
3.4.1.1 Microsoft SQL Server
Microsoft SQL Server — система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов — Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с небольшими и средними по размеру базами данных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка. Microsoft SQL Server в качестве языка запросов использует версию SQL, получившую название Transact-SQL (сокращённо T-SQL), являющуюся реализацией SQL-92 (стандарт ISO для SQL) с множественными расширениями. T-SQL позволяет использовать дополнительный синтаксис для хранимых процедур и обеспечивает поддержку транзакций (взаимодействие базы данных с управляющим приложением).
Microsoft SQL Server также поддерживает Open Database Connectivity (ODBC) — интерфейс взаимодействия приложений с СУБД. Версия SQL Server 2005 обеспечивает возможность подключения пользователей через веб-сервисы, использующие протокол SOAP. Это позволяет клиентским программам, не предназначенным для Windows, кроссплатформенно соединяться с SQL Server. Microsoft также выпустила сертифицированный драйвер JDBC, позволяющий приложениям под управлением Java (таким как BEA и IBM WebSphere) соединяться с Microsoft SQL Server 2000 и 2005. В SQL Server 2005 встроена поддержка .NET Framework. Благодаря этому, хранимые процедуры БД могут быть написаны на любом языке платформы .NET, используя полный набор библиотек, доступных для .NET Framework, включая Common Type System (система обращения с типами данных в Microsoft .NET Framework). Однако, в отличие от других процессов, .NET Framework, будучи базисной системой для SQL Server 2005, выделяет дополнительную память и выстраивает средства управления SQL Server вместо того, чтобы использовать встроенные средства Windows. Это повышает производительность в сравнении с общими алгоритмами Windows, так как алгоритмы распределения ресурсов специально настроены для использования в структурах SQL Server.
3.4.1.2 Apache + PHP
Apache - свободный веб-сервер. Apache является кроссплатформенным ПО, поддерживая операционные системы GNU/Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6. Недостатком наиболее часто называется отсутствие удобного стандартного интерфейса для администратора.
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации: Конфигурация сервера (httpd.conf), Конфигурация виртуального хоста (httpd.conf c версии 2.2 extra/httpd-vhosts.conf), Конфигурация уровня директории (.htaccess). Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.
Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).
Помимо этого, параметры могут быть заданы через ключи командной строки.
Apache HTTP Server поддерживает модульность. Существует более 400 модулей, выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками.
Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла. Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки. В данной работе использовался модуль для PHP (mod_php). Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, sh, Java.
PHP — скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов. Интерпретатор состоит из ядра и подключаемых модулей, «расширений», представляющих собой динамические библиотеки. Расширения позволяют дополнить базовые возможности языка, предоставляя возможности для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и т. п. Любой желающий может разработать своё собственное расширение и подключить его. Существует огромное количество расширений, как стандартных, так и созданных сторонними компаниями и энтузиастами, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя. Расширение php_mssql.dll, используемое в данном проекте, позволяет работать с базами данных MS SQL SERVER.
3. 4.1.3 Adobe Dreamweaver
Adobe Dreamweaver — HTML-редактор. Разработан и поддерживался компанией Macromedia в версиях до 8-й Следующие версии выпускает Adobe. Богатый инструментарий, открытость приложения для всевозможных настроек, удобный интерфейс и другие особенности сделали Dreamweaver одним из наиболее популярных HTML-редакторов в мире. Недостатком считается добавление «лишнего» кода. Приложение поддерживает формат CSS и проверяет его работоспособность в различных браузерах, дает возможность работать с технологиями XML, JavaScript, PHP, ASP и ASP.NET. Среда для разработки Ajax-приложений позволяет создать продукт, который может выполнять самые разные функции от получения информации из RSS каналов и баз данных до создания визуальных эффектов. Также программа обеспечивает возможность создания сайтов на основе тегов DIV.
3.4.2 Реализация базы данных
3.4.2.1 Логическая модель базы данных
Семь сущностей находятся в третьей нормальной форме, т. е. все атрибуты сущностей содержат атомарные значения (значения в домене не являются ни списками, ни множествами простых или сложных значений); каждый неключевой атрибут полностью зависит от первичного ключа; никакой неключевой атрибут не зависит от другого неключевого атрибута.
Рисунок 1 — Логическая модель базы данных
3.2.2 Описание таблиц
Всего в базе данных находится 7 таблиц, ниже приводится их описание.
Таблица Area предназначена для хранения информации об отделах магазина и содержит следующие столбцы:
1. ID (char,Length=1,NOT NULL,PK,identity seed=1) - содержит ID отдела.
2. Name (char, Length=10, NOT NULL) - содержит название отдела.
3. Count_employees (char, Length=10, NOT NULL) - содержит количество сотрудников отдела.
Рисунок 2 — Таблица Areas
Таблица Checks предназначена для хранения информации о чеках и содержит следующие столбцы :
1. ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID чека.
2. [Date] (datetime, Length=8) - содержит дату и время создания чека.
3. Employee_ID (char, Length=3) - содержит ID сотрудника, создавшего чек.
4. Sum (float, Length=8) - содержит общую сумму чека.
Рисунок 3 — Таблица Checks
Таблица Deliveries предназначена для хранения информации о поставках товара и содержит следующие столбцы :
1. Delivery_ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID поставки.
2. [Date] (datetime, Length=8) - содержит дату и время регистрации поставки.
3. Supplier_ID (char, Length=3) - содержит ID поставщика.
4. Product_article (char, Length=20) - содержит артикул поставленного товара.
5. [Count] (int, Length=4, NOT NULL) содержит количество поставленного товара.
Рисунок 4 — Таблица Deliveries
Таблица Employees предназначена для хранения информации о сотрудниках и содержит следующие столбцы :
1. ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID сотрудника.
2. Area_ID (char,Length=1) - содержит ID отдела.
3. [First name] (char, Length=20) содержит имя сотрудника.
4. [Last name] (char, Length=20) содержит фамилию сотрудника.
5. [Position] (char, Length=20) содержит должность сотрудника.
6. Sales (char, Length=10) содержит сумму продаж сотрудника.
7. Login (char, Length=10) содержит логин сотрудника для работы с информационной системой.
8. Password (char, Length=10) содержит пароль сотрудника для работы с информационной системой.
Рисунок 5 — Таблица Employees
Таблица Products предназначена для хранения информации о товарах и содержит следующие столбцы :
1. Article (char,Length=20,NOT NULL,PK, identity seed=1) - содержит артикул товара.
2. Name (char,Length=10) - содержит название товара.
3. [Size] (text, Length=16) содержит размер товара.
4. Price (float, Length=8) содержит цену товара.
5. Area_ID (char,Length=1) - содержит ID отдела.
6. Structure (text, Length=16) содержит состав товара.
7. Country (char,Length=10) - содержит страну - производитель товара.
8. [Count] (int, Length=4) содержит текущее количество товара.
9. Image (char, Length=50) содержит путь к фотографии товара.
10. [Available sizes] (char, Length=10) содержит количество возможных размеров аналогичного товара.
Рисунок 6 — Таблица Products
Таблица Sales предназначена для хранения информации о продажах и содержит следующие столбцы :
1. Check_ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID чека.
2. Article (char,Length=20,NOT NULL,PK, identity seed=1) - содержит артикул товара.
3. [Count] (char, Length=10) - содержит количество товара в продаже.
4. Price (float, Length=8) содержит цену продажи.
Рисунок 7 — Таблица Sales
Таблица Suppliers предназначена для хранения информации о поставщиках и содержит следующие столбцы :
1. Supplier_ID (char,Length=3,NOT NULL,PK, identity seed=1) - содержит ID чека.
2. Article (char,Length=20,NOT NULL,PK, identity seed=1) - содержит артикул товара.
3. [Count] (char, Length=10) - содержит количество товара в продаже.
4. Price (float, Length=8) - содержит цену продажи.
Рисунок 8 — Таблица Suppliers
3.4.2.3 Описание триггеров
Триггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события (действием) — по сути добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.
Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанного с ним события; например, до добавления записи) или AFTER (после события). В случае, если триггер вызывается до события, он может внести изменения в модифицируемую событием запись (конечно, при условии, что событие — не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые могут быть использованы в триггере (например, может быть запрещено вносить изменения в таблицу, на которой «висит» триггер, и т. п.)
В некоторых серверах триггеры могут вызываться не для каждой модифицируемой записи, а один раз на изменение таблицы. Такие триггеры называются табличными. В разрабатываемой БД используются следующие табличные триггеры:
1) В таблице Checks:
1.1) Для уменьшения суммы продаж сотрудника при удалении чека
Листинг 1.1 Триггер DelEmpSales.
CREATE TRIGGER DelEmpSales ON dbo.Checks
FOR DELETE
AS
UPDATE Employees
SET Employees.Sales = Employees.Sales-(SELECT [Sum] FROM deleted)
WHERE (ID = (SELECT Employee_ID
FROM deleted) ) ;
1.2) Для увеличения суммы продаж сотрудника при создании чека
Листинг 1.2 Триггер InsEmpSales.
CREATE TRIGGER InsEmpSales ON dbo.Checks
FOR INSERT
AS
UPDATE Employees
SET Employees.Sales = Employees.Sales+(SELECT [Sum] FROM inserted)
WHERE (ID = (SELECT Employee_ID
FROM inserted) ) ;
1.3) Для изменения суммы продаж сотрудника при изменении чека
Листинг 1.3 Триггер UpdEmpSales.
CREATE TRIGGER UpdEmpSales ON dbo.Checks
FOR UPDATE
AS
UPDATE Employees
SET Employees.Sales = Employees.Sales+(SELECT [Sum] FROM inserted)-(SELECT [Sum] FROM deleted)
WHERE (ID = (SELECT Employee_ID
FROM inserted) ) AND (ID = (SELECT Employee_ID
FROM deleted) );
2) В таблице Deliveries:
2.1) Для уменьшения количества товара при удалении поставки
Листинг 1.4 Триггер DEL1.
CREATE TRIGGER DEL1 ON dbo.Deliveries
FOR DELETE
AS
UPDATE Products
SET Products.[Count] = Products.[Count]-(SELECT [Count] FROM deleted)
WHERE Article = (SELECT Product_article
FROM deleted );
2.2) Для увеличения количества товара при создании поставки
Листинг 1.5 Триггер ADD1.
CREATE TRIGGER ADD1 ON dbo.Deliveries
FOR INSERT
AS
UPDATE Products
SET Products.[Count] = Products.[Count]+(SELECT [Count] FROM inserted)
WHERE Article = (SELECT Product_article
FROM inserted);
2.3) Для изменения количества товара при изменении поставки
Листинг 1.6 Триггер UPD1.
CREATE TRIGGER UPD1 ON dbo.Deliveries
FOR UPDATE
AS
UPDATE Products
SET Products.[Count] = Products.[Count]-(SELECT [Count] FROM deleted) +(SELECT [Count] FROM inserted)
WHERE (Article = (SELECT Product_article
FROM inserted) ) AND (Article = (SELECT Product_article
FROM deleted) );
3) В таблице Employees:
3.1) Для уменьшения количества сотрудников отдела при удалении сотрудника
Листинг 1.7 Триггер DelEmp.
CREATE TRIGGER DelEmp ON dbo.Employees
FOR DELETE
AS
DECLARE Z CURSOR FOR
SELECT COUNT(ID) AS ALL_EMP, Area_ID
FROM EMPLOYEES
GROUP BY Area_ID;
OPEN Z;
DECLARE @Qty int, @Dept tinyint;
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
END
CLOSE Z;
DEALLOCATE Z
3.2) Для увеличения количества сотрудников отдела при добавлении сотрудника
Листинг 1.8 Триггер InsEmp.
CREATE TRIGGER InsEmp ON dbo.Employees
FOR Insert
AS
DECLARE Z CURSOR FOR
SELECT COUNT(ID) AS ALL_EMP, Area_ID
FROM EMPLOYEES
GROUP BY Area_ID;
OPEN Z;
DECLARE @Qty int, @Dept tinyint;
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
END
CLOSE Z;
DEALLOCATE Z
3.3) Для изменения количества сотрудников отдела при изменении сотрудника
Листинг 1.9 Триггер Upd.
CREATE TRIGGER Upd ON dbo.Employees
FOR UPDATE
AS
DECLARE Z CURSOR FOR
SELECT COUNT(ID) AS ALL_EMP, Area_ID
FROM EMPLOYEES
GROUP BY Area_ID;
OPEN Z;
DECLARE @Qty int, @Dept tinyint;
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Z INTO @Qty, @Dept
UPDATE Areas
SET Count_employees = @Qty
WHERE ID = @Dept;
END
CLOSE Z;
DEALLOCATE Z
4) В таблице Sales:
4.1) Для уменьшения суммы чека при удалении продажи
Листинг 1.10 Триггер DelChecks.
CREATE TRIGGER DelChecks ON dbo.Sales
FOR DELETE
AS
UPDATE Checks
SET Checks.[Sum] = Checks.[Sum]-(SELECT Price FROM deleted)
WHERE (ID = (SELECT Check_ID
FROM deleted) ) ;
4.2) Для увеличения суммы чека при добавлении продажи
Листинг 1.11 Триггер InsChecks.
CREATE TRIGGER InsChecks ON dbo.Sales
FOR INSERT
AS
UPDATE Checks
SET Checks.[Sum] = Checks.[Sum]+(SELECT Price FROM inserted)
WHERE (ID = (SELECT Check_ID
FROM inserted) ) ;
4.3) Для изменения суммы чека при изменении продажи

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