¿Diferencia entre `sales_order_place_after` y` sales_order_save_after`?

12

Magento 1 y Magento 2 tienen los dos eventos:

  1. sales_order_place_after
  2. sales_order_save_after.

Tengo cierta confusión sobre ellos, ¿cuáles son las diferencias detalladas entre ellos?

¿Qué situación usar?

Key Shang
fuente

Respuestas:

21

sales_order_place_after

  1. Este evento se envía después de realizar el pago del pedido.
  2. Este evento funciona desde Mage_Sales_Model_Order::place()Magento 1 y \Magento\Sales\Model\Order::place()Magento 2

sales_order_save_after

  1. Este evento se llama cada vez que se guarda el pedido. Por ej. Estado del pedido modificado, facturado, enviado y nota de crédito.
  2. Este evento extiende el modelo abstracto. Mage_Core_Model_Abstract

    Por ej. el Mage_Sales_Model_Orderprefijo evento de clase es sales_order, por lo que el nombre del evento real de carga después será sales_order_load_after.

Abdul
fuente
5

1. sales_order_place_after:

Este evento se envía desde el

class Mage_Sales_Model_Order extends Mage_Sales_Model_Abstract
{
...
public function place()
{
    Mage::dispatchEvent('sales_order_place_before', array('order'=>$this));
    $this->_placePayment();
    Mage::dispatchEvent('sales_order_place_after', array('order'=>$this));
    return $this;
}

Este evento se envía solo después de hacer clic en realizar pedido desde la interfaz.

2. sales_order_save_after:

Este evento se activa al guardar el orden, ya sea desde el backend o la interfaz. Cada vez que se realiza alguna edición en orden y se guarda, se envía este evento. Este evento se envía al realizar el pedido desde la interfaz también.

Purushotam Sangroula
fuente