Цитата:
Сообщение от
BOAL
метод inventTrans.delete() сам пересчитывает InventSum
Ничего больше не нужно.
Это не так.
Создаю межскладское пермещение, комплектую меньше изначально предложенного, в результате имею три проводки, одна из которых со статусом 'Физ.Зарезервировано', и количеством = разнице между изначально предложенным количеством и реально скомплетованным. Далее смотрю что В наличии -- физ. зарезервировано 1. Далее удаляю проводку со статусом 'Физ.зарезервировано':
PHP код:
ttsbegin;
while select forupdate inventTrans
index hint TransTypeTransRef_idx
where inventTrans.TransRefId == '123886_090' &&
inventTrans.StatusIssue == StatusIssue::ReservPhysical
{
itemId = inventTrans.ItemId;
inventTrans.delete(NoYes::Yes);
}
ttscommit;
Проверяю проводки -- две, физ.зарезервировано удалена. Смотрю 'В Наличии' -- как было Физ.Зарезервировано, так там и сидит. Проблема решается пересчетом inventSum:
PHP код:
inventSumReCalcItem = new InventSumReCalcItem(itemId, false, CheckFix::Fix);
inventSumReCalcItem.updateNow();
Но при таком раскладе, кажется мне лишним то что я лезу в проводки - удаляю там запись, потом пересчитываю InventSum, и встает вопрос -- нельзя ли это делать штатными средствами или по их аналогии.