Кажется, по умолчанию события состояния заказа не существует, так как вы обычно наблюдаете за изменением состояния заказа? Я вижу две возможности: а) Перезаписать модель продаж / заказа, чтобы создать собственное событие для изменения состояния. Б) Наблюдать за событием сохранения заказа и посмотреть на состояние там.
Один из них - путь или есть лучший вариант?
Изменить: Спасибо за ваши ответы до сих пор. Ситуация немного сложнее. Я хочу добавить информацию к заказу в зависимости от текущего состояния. Теперь вот проблема: в событии save_before у меня все еще есть старое состояние, а теперь нет нового, потому что в модели продажи / заказа метод _beforeSave () выглядит следующим образом:
parent::_beforeSave();
$this->_checkState();
//...
Таким образом, событие обрабатывается в parent::_beforeSave();
НО, но в действительности состояние заказа впоследствии изменяется $this->_checkState();
(это автоматическое изменение, например, если вы создаете счет-фактуру, состояние перемещается в обработку, если отгрузки пока нет)
Я также не могу использовать событие save_after, так как хочу сохранить sth. в порядке, и это, вероятно, сломает все, чтобы вызвать сохранение в событии save_after.
Любые идеи? Моя единственная идея сейчас состоит в том, чтобы повторить $this->_checkState();
поведение в моем наблюдателе save_before, чтобы выяснить, каково будет состояние ...
источник
Я бы предпочел сохранить старое состояние из исходных данных в
sales_order_save_before
событии и еще раз проверить это вsales_order_save_after
илиbefore
, в зависимости от того, что вы хотите сделать.источник
getOrigData()
Вместо этого вы можете использовать : stackoverflow.com/a/8184430/719023save()
, но я не могу найти место, где это происходитЯ считаю, что переопределение
setState
методаMage_Sales_Model_Order
проще и лучше:источник