Diferença entre `sales_order_place_after` e` sales_order_save_after`?

12

Magento 1 e Magento 2 têm os dois eventos:

  1. sales_order_place_after
  2. sales_order_save_after.

Eu tenho alguma confusão sobre eles, quais são as diferenças detalhadas entre eles?

Qual situação usar qual?

Key Shang
fonte

Respostas:

21

sales_order_place_after

  1. Este evento é despachado após o pagamento do pedido.
  2. Esta função de evento Mage_Sales_Model_Order::place()no Magento 1 e \Magento\Sales\Model\Order::place()no Magento 2

sales_order_save_after

  1. Este evento é chamado toda vez que o pedido é salvo. Por exemplo. Status do pedido alterado, faturado, enviado e nota de crédito.
  2. Este evento estendendo o modelo abstrato Mage_Core_Model_Abstract

    Por exemplo. o Mage_Sales_Model_Orderprefixo do evento de classe é sales_order, portanto, o nome real do evento após o carregamento será sales_order_load_after.

Abdul
fonte
5

1. sales_order_place_after:

Este evento é despachado do

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 é despachado somente após clicar em fazer pedido no frontend.

2. sales_order_save_after:

Este evento é acionado no pedido de salvamento, no back-end ou no front-end. Sempre que alguma edição é feita em ordem e salva, esse evento é despachado. Este evento é despachado ao colocar ordem do front-end também.

Purushotam Sangroula
fonte