Экран редактирования заказа позволяет вносить изменения по инициативе плагина
[ ]Начиная с V7Preview5 плагин может редактировать через API текущий заказ, не получая EntityAlreadyInUseException
:-)
Ранее в V7Preview4 была добавлена возможность редактировать текущий заказ при обработке карты или штрихкода (подробности). Теперь аналогичная возможность доступна в любой момент, когда не выполняются другие операции.
Для внесения изменений в заказ, открытый на экране редактирования, плагину необходимо вызвать метод TryEditCurrentOrder
и передать в него ссылку на callback, который iikoFront вызовет, как только появится такая возможность.
При бездействии это произойдёт немедленно, а если в этот момент выполняются другие операции, то callback будет вызван сразу по их завершении.
В любом случае, метод TryEditCurrentOrder
вернёт управление после вызова callback’а.
Если callback выбросит исключение, оно вылетит из TryEditCurrentOrder
.
В случае, если в момент вызова TryEditCurrentOrder
выполнялась другая операция, которая в итоге привела к выходу с экрана редактирования заказа, callback не удастся вызвать ни сразу, ни отложенно, а метод TryEditCurrentOrder
сгенерирует исключение OperationCanceledException
.
Пока метод TryEditCurrentOrder
поддерживается только на экране редактирования заказа в режиме фастфуда или ресторана (IOrderEditScreen
).
Позднее появится поддержка экранов редактирования доставки, банкета, экрана оплаты и т. п.
На время выполнения callback’а показывается прогрессбар.
В callback будут переданы текущий заказ, локальная версия IOperationService
для редактирования текущего заказа, а также IViewManager
с возможностью показывать диалоговые окна и менять текст на прогрессбаре.
Во входящее в SamplePlugin окно EditorTester
, где собраны примеры редактирования заказа, добавлена галочка «Apply changes to order that is opened in iikoFront», при её включении изменения применяются к текущему открытому на экране заказу.