Se o pedido já existir no sistema, você poderá imitar o comportamento principal e chamar save()
a coleção do histórico de status do pedido ou o próprio modelo do histórico de status.
// just some random order object
$order = Mage::getModel('sales/order')->load(2);
$message = 'Add status history comment!';
/** @var Mage_Sales_Model_Order_Status_History $history */
$history = Mage::getModel('sales/order_status_history')
->setOrder($order)
->setStatus($order->getStatus())
->setComment($message)
->setData('entity_name', Mage_Sales_Model_Order::HISTORY_ENTITY_NAME);
// EITHER model save
$history->save();
// OR collection save
$historyCollection = $order->getStatusHistoryCollection();
$historyCollection->addItem($history);
$historyCollection->save();
O save()
método da ordem não é chamado e, portanto, nenhum evento é despachado.
Sim: se sua lógica permitir que você escute o
sales_convert_quote_to_order
evento.Exemplo de
addSalesRuleNameToOrder
definido em Mage / SalesRule / Model / Observer.phpNenhuma chamada para
$order->save();
Eu usei isso com sucesso em um módulo personalizado. Meu método observador é apenas:
Esperando que isso possa ajudar ;-)
fonte