Хотя это и не является ответом на конкретный вопрос, см. Мой комментарий / вопрос относительно этого выше ...
Обновление базы данных напрямую, как это, не является рекомендуемым подходом к настройке Adempiere.Это может потенциально нарушить согласованность в приложении, так как вы будете обходить встроенные механизмы приложения, такие как WorkFlows , ModelValidators и, возможно, Callouts .Эти механизмы, наряду с «Словарём приложений», существуют для обеспечения возможности настройки приложения ERP без риска возникновения противоречий.
Если бы вы использовали встроенные механизмы для сохранения сущности, не было бы риска взлома приложения.Каждая «сущность» в модели приложения расширяет класс PO (Persistent Object), который имеет метод save ().Использование этого вместо прямого обновления БД обеспечит выполнение всех правил, определенных в словаре приложений, а также выполнение функциональных возможностей, требуемых с помощью механизмов, упомянутых выше.
На самом деле это должен быть более простой маршрут с чем-токак ...
MRequisition req = new MRequistion(getCtx(), requisition_id, get_TrxName());
req.setDocStatus(DOCSTATUS_Voided);
req.setIsApproved(false);
req.save();
Я также могу порекомендовать прочитать следующую страницу из вики на Расширение Adempiere
Последний момент, часто есть логика, связанная сИзменения в статусе документа, которые, возможно, тоже стоит изучить!