Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите написать сложную для меня процедуру или функцию [D7, MSSQL]


Страницы:   1 2

Rostislav Rotaru ©   (2005-02-02 11:52:00) 

Здравствуйте.
Дело касается учета склада. Есть расходный документ. В базе он под видом:
- шапка документа: t_documents: document_id (id документа), document_type(тип документа, bit) document_number (номер), agent_id (id покупателя), document_date (дата)...
- табличная часть: t_moves: move_id(id строки), document_id(ссылка на документ), move_quantity (количество товара).
Есть таблица t_products_parties(партии товара): party_id, product_id(ссылка на товар), party_stock(остаток товара), party_type(тип партии, bit), party_price(цена партии)...

Нужно написать процедуру, которая бы правильнее и быстрее сняла бы с остатков(партия товара) необходимое количество и записала бы в документ. Ситуация была бы проще если бы не один ньюанс: все должно зависеть от типа документа и типа партии. Например: если t_documents.document_type=1 тогда t_products_parties.party_type не имеет значения. Если же если t_documents.document_type=0, тогда нужно учитывать только партии где t_products_parties.party_type=0.
Логика такова: пользователь создает документ, заполняет шапку. Дальше идет заполнение самой табличной части. Пользователь выбирает из списка товаров нужный товар. При выборе, нужно получить список всех подчиненных партий где есть остаток (в зависимости от типа документа) и по принципу "первая партия пришла, первая ушла(метод FIFO)", заблокировать запись и  перебросить количество в документ. Если в первой партии не хватает количества, тогда ищется остаток на второй партии и.т.д. Если операция проведена успешно, возвращается код успешного завершения и транзакция закрывается, если нет - тогда откат и вывод соответствующего сообщения.
Я реализовал все это на клиенте, через AdoCommand и AdodataSet и вроде работает. Но думаю, сервер с этим лучше справится в одной процедуре, если это возможно.
Постарался как можно подробнее описать проблему. Буду рад помощи. Готов предоставить любую дополнительную информацию.
Заранее благодарен.


stud   (2005-02-02 11:59:00) [21]


> Я реализовал все это на клиенте

так и в чем проблема реализовать на сервере??


Rostislav Rotaru   (2005-02-02 11:58:00) [22]

> Rostislav Rotaru ©   (02.02.05 11:57) [3]
что-то не то нажал...


Rostislav Rotaru   (2005-02-02 11:57:00) [23]

:)


Rostislav Rotaru   (2005-02-02 11:57:00) [24]

:)


Соловьев   (2005-02-02 11:53:00) [25]


> Готов предоставить любую дополнительную информацию.

В деньгах?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо