не совсем в тему, но может пригодится. Мы работаем по принципу: контракт - заказ - приходная накладная. и приходка создается экспортом из заказа и в нее автоматом переносится кол-во из заказа. операторы вручную обнуляют его, а затем уже сканируют товар и проставляют кол-во по факту. если накладная небольшая, то обнуление не занимает много времени, а для больших я как раз и создал процедуру обнуления кол-ва. операторы перегоняют заказ в приход, сохраняют и закрывают накладную в черновике, затем в другой программе жмут кнопку обнулить - и готово.
1. проверяем что накладная никем не занята:
Код:
SELECT a.objtype, a.id, a.sid, a.sernum, a.locklabel, a.timepoint, a.clientproc FROM supermag.sslocks a where a.id = 'ПН111111';
результат должен быть null.
2. обнуляем кол-во
Код:
UPDATE supermag.smspec a SET a.quantity = 0, a.totalprice = 0, a.totalpricenotax = 0, a.totalpricecur = 0 WHERE a.doctype = 'WI' AND a.docid = 'ПН111111';
3. а также добавляем разницу в таблицу расхождений:
Код:
INSERT INTO supermag.slspecqmismatch b (b.doctype, b.docid, b.specitem, b.quantbydoc) VALUES (....);
* последний запрос не содержит данных...