Parece que no hay un evento de estado de orden de forma predeterminada, entonces, ¿cómo se observa el cambio de estado de orden? Veo dos posibilidades: a) Sobrescribir el modelo de ventas / pedidos para crear su evento personalizado para un cambio de estado b) Observe el evento de guardado de pedidos y observe el estado allí
¿Es uno de estos el camino a seguir o hay una mejor opción?
Editar: Gracias por sus respuestas hasta ahora. La situación es un poco más complicada. Quiero agregar información al pedido según el estado actual. Ahora aquí está el problema: en el evento save_before todavía tengo el estado anterior y ahora no tengo el estado nuevo, porque en el modelo de ventas / pedidos el método _beforeSave () es el siguiente:
parent::_beforeSave();
$this->_checkState();
//...
Por lo tanto, el evento se procesa parent::_beforeSave();
PERO el estado del pedido se cambia realmente después $this->_checkState();
(este es el cambio automático, por ejemplo, si crea una factura, el estado se mueve al procesamiento si todavía no hay ningún envío)
Tampoco puedo usar el evento save_after, ya que quiero guardar algo. en el pedido y probablemente rompería todo para llamar a guardar en el evento save_after.
¿Algunas ideas? Mi única idea ahora es replicar el $this->_checkState();
comportamiento en mi observador save_before para descubrir cuál será finalmente el estado ...
fuente
Preferiría guardar el estado anterior de los datos originales en el
sales_order_save_before
evento y verificar esto nuevamente ensales_order_save_after
obefore
, dependiendo de lo que desee hacer.fuente
getOrigData()
lugar, puede usar : stackoverflow.com/a/8184430/719023save()
, pero no encuentro un lugar donde esto ocurraEncuentro que reemplazar el
setState
método esMage_Sales_Model_Order
más fácil y mejor:fuente