1.在模块的config.xml中定义触发事件:
<events> <sales_order_invoice_save_commit_after> <!-- identifier of the event we want to catch --> <observers> <sales_order_invoice_save_commit_after_handler> <!-- identifier of the event handler --> <type>model</type> <!-- class method call type; valid are model, object and singleton --> <class>mysales/observer</class> <!-- observers class alias --> <method>changeOrderStatus</method> <!-- observer's method to be called --> <args></args> <!-- additional arguments passed to observer --> </sales_order_invoice_save_commit_after_handler> </observers> </sales_order_invoice_save_commit_after> </events>
2.在Model/Observer.php中定义方法
<?php
class Bysoft_Mysales_Model_Observer
{
public function changeOrderStatus(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$invoice = $observer->getEvent()->getInvoice();
$order_update = $invoice->getOrder();
$order = Mage::getModel('sales/order')->loadByIncrementId($order_update->getIncrementId());
$state = 'processing';
$status = 'paid';
$comment = 'Changing state to Processing and status to paid Status';
$isCustomerNotified = false;
$order->setState($state, $status, $comment, $isCustomerNotified);
$order->save();
}
}
用Paypal standand 支付方式的时候遇到提交一个发票不更改订单状态的问题。可以用以上方法解决。