Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Остатки SMGOODS отличаются от остатков по документам : Супермаг Плюс (Супермаг 2000)

22.11.2024 22:12


09.11.2015 11:53
Обнаружил такое.

Очевидная причина - кривизна рук программиста. Чего-то полез править, и недоправил.

Но, может, кто подскажет какие-то штатные (без залезания в БД руками) ситуации, когда такое получается.

SQL код:
select rest_doc.article, rest_doc.quantity, smgoods.quantity
  from (
select spc.article, nvl(sum(
                               decode(head.doctype,
                                      'WI', spc.quantity,
                                      'CR', spc.quantity,
                                      'CS', -spc.quantity,
                                      'WO', -spc.quantity,
                                      0
                                     )
                           ), 0
                       ) quantity
 
  from smdocuments head, smspec spc
 where head.doctype = spc.doctype
   and head.id = spc.docid
   and (head.location = 6 or head.locationfrom = 6 or head.locationto = 6)
 group by spc.article
       ) rest_doc, smgoods
 where rest_doc.article = smgoods.article
   and smgoods.storeloc = 6
   and rest_doc.quantity != smgoods.quantity 
09.11.2015 11:58
А вы уверены, что все документы движения товара учли?
Нет перемещений? Нет производства?
09.11.2015 17:05
Просто так я проверять не взялся бы, разумеется. Заметили по некоторым артикулам такое расхождение, и мне сообщили.

SQL код:
select head.doctype, ap.appname, count(1)
  from smdocuments head, ssdoctypes dt, smclientapps ap
 where head.doctype = dt.doctype
   and dt.appmodule = ap.id
 group by head.doctype, ap.appname 
09.11.2015 17:11
Штатно, увы, уже много лет остатки не разбегаются...
Кстати, в исходном запросе статусы документов учитываются? Неужели нет заблокированных или в черновике приходов/расходов?
Штатная процедура наведения порядка находится в адм.модуле и называется "Перерасчет остатков".
09.11.2015 17:13
"Не смешно, зато про войну" :)
Вопрос-то был, что в первом запросе учитываются, например, не все документы товародвижения. Сравнивать теплое с мягким нет смысла.
Для начала прогоните перерасчет остатков в этом месте хранения, чтобы не ломать голову, что, кто и где там напортачил.
А потом сядьте узким кругом принимающих решение лиц и определитесь, зачем вам такой геморрой с ручной заменой шестеренок на ходу.
09.11.2015 17:29
> Неужели нет заблокированных или в черновике приходов/расходов?

Это забыл учесть, спасибо.

> Вопрос-то был, что в первом запросе учитываются, например, не все документы товародвижения.

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

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

По сути, мой запрос, с напильником, решает ту же задачу.

> Штатно, увы, уже много лет остатки не разбегаются...

Ясно.
09.11.2015 17:38
Цитата:
DMaslov
По сути, мой запрос, с напильником, решает ту же задачу.
Не решает, так как статусы документов не учитывает.

С изменениями скриптами smgoods я бы поступала поосторожнее.
Там еще ожидаемое количество есть, которое меняется заказами и приходами. Еще и его можно "порушить". А еще, что будет, если кто-то во время изменения остаток надумает исправить документ?

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

Ну и хорошо бы сделать ревизию всего собственного кода на предмет выявления источника расхождения остатков.
09.11.2015 17:39
Цитата:
OlegON "Не смешно, зато про войну" :)
Вопрос-то был, что в первом запросе учитываются, например, не все документы товародвижения.
Судя по второму запросу и перчисленным типам документов учитываются все имеющиеся в базе.
09.11.2015 18:31
Цитата:
Mtirt Не решает, так как статусы документов не учитывает.
С напильником, head.docstate = 3, и блокировки.

Цитата:
делается при монопольном доступе к базе.
Да, я уже понял, что у СуперМАГа - это решение всех проблем.
09.11.2015 19:03
Цитата:
DMaslov Да, я уже понял, что у СуперМАГа - это решение всех проблем.
Надо отметить, что проблема в большинстве случаев только одна - кривые руки, полагающие, что если что-то крутится, то это обязательно надо покрутить :)
Часовой пояс GMT +3, время: 22:12.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.