Wenn die Bestellung bereits im System vorhanden ist, können Sie das Kernverhalten nachahmen und save()
entweder die Bestellstatusverlaufssammlung oder das Statusverlaufsmodell selbst aufrufen .
// 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();
Die save()
Methode der Bestellung wird nicht aufgerufen und somit werden keine Ereignisse ausgelöst.
Ja: Wenn Ihre Logik es Ihnen erlaubt,
sales_convert_quote_to_order
Ereignisse anzuhören .Beispiel für
addSalesRuleNameToOrder
in Mage / SalesRule / Model / Observer.php definiertKein Anruf bei
$order->save();
Ich habe dies erfolgreich in einem benutzerdefinierten Modul verwendet. Meine Beobachtermethode ist nur:
Hoffe das könnte helfen ;-)
quelle