2013-09-20 2 views
0

Я действительно избивал себя из-за этого, надеюсь, кто-то может мне помочь.Magento - добавление комментариев к комментариям от событий наблюдателя

У меня есть несколько событий наблюдателя, работающих отлично, это просто тот, который, похоже, не работает.

Функция creditmemoRefund не добавит комментария к заказу. Порядок 2 работает нормально, он определенно стреляет, как предполагалось, и тянет объект заказа. Почему он не добавляет комментарий?

Вот мой код ...

config.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
    <Avi_OrderAudit> 
     <version>0.0.1</version> 
    </Avi_OrderAudit> 
    </modules> 
    <global> 
<helpers> 
    <orderaudit> 
    <class>Avi_OrderAudit_Helper</class> 
    </orderaudit> 
</helpers> 
<models> 
    <orderaudit> 
    <class>Avi_OrderAudit_Model</class> 
    <resourceModel>orderaudit_mysql4</resourceModel> 
    </orderaudit> 
</models> 
<events> 
    <sales_order_place_after> <!-- identifier of the event we want to catch --> 
    <observers> 
     <sales_order_place_after_handler> <!-- identifier of the event handler --> 
     <type>model</type> <!-- class method call type; valid are model, object and singleton --> 
     <class>orderaudit/observer</class> <!-- observers class alias --> 
     <method>orderPlaced</method> <!-- observer's method to be called --> 
     <args></args> <!-- additional arguments passed to observer --> 
     </sales_order_place_after_handler> 
    </observers> 
    </sales_order_place_after> 
    <sales_order_payment_capture> <!-- identifier of the event we want to catch --> 
    <observers> 
     <sales_order_payment_capture_handler> <!-- identifier of the event handler --> 
     <type>model</type> <!-- class method call type; valid are model, object and singleton --> 
     <class>orderaudit/observer</class> <!-- observers class alias --> 
     <method>paymentCapture</method> <!-- observer's method to be called --> 
     <args></args> <!-- additional arguments passed to observer --> 
     </sales_order_payment_capture_handler> 
    </observers> 
    </sales_order_payment_capture> 
    <sales_order_creditmemo_refund> <!-- identifier of the event we want to catch --> 
    <observers> 
     <sales_order_creditmemo_refund_handler> <!-- identifier of the event handler --> 
     <type>model</type> <!-- class method call type; valid are model, object and singleton --> 
     <class>orderaudit/observer</class> <!-- observers class alias --> 
     <method>creditmemoRefund</method> <!-- observer's method to be called --> 
     <args></args> <!-- additional arguments passed to observer --> 
     </sales_order_creditmemo_refund_handler> 
    </observers> 
    </sales_order_creditmemo_refund> 
</events> 

Observer.php класс Avi_OrderAudit_Model_Observer {

public function orderPlaced(Varien_Event_Observer $observer) 
    { 
     if (Mage::getSingleton('admin/session')->isLoggedIn()) { 
     //if admin 
      $order = $observer->getEvent()->getOrder(); 
      $user = Mage::getSingleton('admin/session'); 
      $username = $user->getUser()->getUsername(); 
      $comment = "Order placed by <strong>".$username."</strong>"; 
      $order->addStatusHistoryComment($comment) 
       ->setIsVisibleOnFront(false) 
       ->setIsCustomerNotified(false); 
     } 
     else { 
     //placed by customer online 
      $order = $observer->getEvent()->getOrder(); 
      $order->addStatusHistoryComment('Order placed online by customer') 
       ->setIsVisibleOnFront(false) 
       ->setIsCustomerNotified(false); 
     } 
    } 

    public function paymentCapture(Varien_Event_Observer $observer) 
    { 
     $invoice = $observer->getEvent()->getInvoice(); 
     $order = $invoice->getOrder(); 
     $user = Mage::getSingleton('admin/session'); 
     $username = $user->getUser()->getUsername(); 
     $comment = "Payment captured by <strong>".$username."</strong>"; 
     $order->addStatusHistoryComment($comment) 
      ->setIsVisibleOnFront(false) 
      ->setIsCustomerNotified(false); 
    } 
    public function creditmemoRefund(Varien_Event_Observer $observer) 
    { 
     $creditmemo = $observer->getEvent()->getCreditmemo(); 
     $order = $creditmemo->getOrder(); 
     $user = Mage::getSingleton('admin/session'); 
     $username = $user->getUser()->getUsername(); 
     $comment = "Refund by <strong>".$username."</strong>"; 
     $order->addStatusHistoryComment($comment) 
      ->setIsVisibleOnFront(false) 
      ->setIsCustomerNotified(false); 

    } 
} 

ответ

1

После

$order->addStatusHistoryComment($comment) 
      ->setIsVisibleOnFront(false) 
      ->setIsCustomerNotified(false); 

вам нужно

$order->save(); 
+0

Я считаю, что у меня был еще один модуль наблюдения и то же событие. Отключил все локальные и общинные модули, и он начал работать нормально. – mike

Смежные вопросы