Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 20:18   #1
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию База данных кассы

Пишу диплом - АИС сети аптек. Как правильно реализовать в базе данных продажу товара (в аптеке).

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

Я предполагаю такой алгоритм:

1. Фармацевт находит в таблице Склад товар - там видит остаток и номер шкафа и полки где лежит товар.
2. Идет и берет товар в нужном количестве - и добавляет его в чек. При этом количество товара на складе уменьшается. Чтобы другой фармацевт за другим терминалом видел, что, например, товара уже недостаточно.
3. После того как покупка вся собрана, фармацевт закрывает чек и записи добавляются в таблицу Продажи.

Где хранить записи в незакрытом чеке? Вдруг сбой по питанию или проблема с сетью (БД сетевая, сама СУБД MySQL хранится на сервере, кроме этих таблиц еще полно будет). Не убавлять количество на складе нельзя - так как много товара ходового и если терминалов будет 3 - 4, то фармацевт будет ходит зря - в таблице есть товар, но на полке нет - унес другой фармацевт.

Как это правильно сделать все?

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

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

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

Последний раз редактировалось Muramidaza; 03.03.2014 в 21:51.
Muramidaza вне форума Ответить с цитированием
Старый 03.03.2014, 22:13   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Как это правильно сделать все?
Изучайте предметную область. Разберитесь в бизнес процессах аптеки, хотя бы по данным из литературы и открытых источников. Тогда у Вас будут уже конкретные идеи насчёт реализации.
Streletz вне форума Ответить с цитированием
Старый 03.03.2014, 23:02   #3
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию

Я не знаю как сделать процедуру продажи. Если через промежуточную таблицу - это будет приемлемо?
Muramidaza вне форума Ответить с цитированием
Старый 03.03.2014, 23:04   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Для товара можно вписать еще одно поле - Взято в чек. То есть еще не продано, но уже отложено со склада. И только когда чек оформлен - списывать товар со склада (со снятием признака - взято в чек). При включении системы автоматически снимать признак взято в чек со всех товаров. Вот так незамысловато решается проблема с питанием компа.
Цитата:
И почему когда в настоящей аптеке фармацевт приносит товар и "пробивает" его, то при ошибке для отмены этого "пробивания" нужен специальный штрих код или пароль заведующего, даже если чек еще не закрыт?
Очевидно чтобы фармацевты не могли задним числом нахимичить в базе. Контроль целостности, однако. Скорее всего такая операция может служить для фарамцевта как минимум всякими выражениями неудовольствия со стороны заведующего типа - дебилы, не можете продажу оформить как надо.
Цитата:
Как это правильно сделать все?
Изучением предметной области. Тупо идти к заведующему аптеки и прямо объяснить ситуацию. Адекватный человек в общих чертах Вам расскажет почему так, а не иначе. ПРИ условии, если Вы не будете сувать нос куда не следует.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 03.03.2014 в 23:09.
Utkin вне форума Ответить с цитированием
Старый 04.03.2014, 08:31   #5
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кассы в delphi Terrance! Помощь студентам 8 20.09.2010 13:49
Переделать программу на кассы mephistophel Помощь студентам 0 12.06.2010 17:57
Небольшая база в Open Office База данных. sashaman Фриланс 3 11.04.2010 20:13
База данных с возможностью приема данных из файлов Excel Al_Sha БД в Delphi 6 16.10.2009 15:34
Мемоордер кассы SerArtur Microsoft Office Access 2 10.11.2008 15:42