Magento ver. 1.9.1.0
I have a working module that observes checkout_submit_all_after, this logs the order, however I need to remove log entries when the order is
a) refunded
b) Cancelled in the admin
To monitor the change I am using sales_order_save_after, this is called when the order is placed but not when any actions are taken from the admin. i.e. I receive log entries when there is a new order but at not when I cancel an order
I can't figure out what I am doing wrong
app/etc/modules/Module_Followuporderemail.xml
<config>
<modules>
<Module_Followuporderemail>
<active>true</active>
<codePool>local</codePool>
</Module_Followuporderemail>
</modules>
</config>
app/code/local/Module/Followuporderemail/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Module_Followuporderemail>
<version>1.0.0</version>
</Module_Followuporderemail>
</modules>
<global>
<models>
<followuporderemail>
<class>Module_Followuporderemail_Model</class>
</followuporderemail>
</models>
<events>
<checkout_submit_all_after>
<observers>
<followuporderemail>
<type>singleton</type>
<class>followuporderemail/observer</class>
<method>logOrder</method>
</followuporderemail>
</observers>
</checkout_submit_all_after>
<sales_order_save_after>
<observers>
<watchorderstatus>
<type>singleton</type>
<class>followuporderemail/observer</class>
<method>checkCancelled</method>
</watchorderstatus>
</observers>
</sales_order_save_after>
</events>
</global>
</config>
app/code/local/Module/Followiporderemail/Model/Observer.php
<?php
class Module_Followuporderemail_Model_Observer
{
public function logOrder($observer)
{
$order = $observer->getEvent()->getOrder();
$order_id = $order->getIncrementId();
Mage::log('New Order Placed: ' . $order_id);
}
public function checkCancelled( $observer)
{
Mage::log('Order Status Change: ');
}
}
Best Answer
First of checkout_submit_all_after is one time when order has been placed.
But
sales_order_save_after
called serveral times,when any save event(save()
) are happened onSales/order
model(Mage::getModel('sales/order'))
.For your requirement, You should remove
sales_order_save_after
from global area and put it under adminhtmlAlso add this code at observer for check status changes