我想使用观察者来检查客户是否至少有一个订单已完成以将订单状态更改为处理中(因此,当客户按下就地订单时,请检查是否有任何订单已完成然后将状态从待处理状态更改为处理中) 这是我的代码,但是对先前订单的修改状态不是现有订单
类ChangeOrder_Observerstatus_Model_Observer {
public function autoOrderevent(Varien_Event_Observer $observer)
{
$order = $observer->getEvent()->getOrder();
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$custAdmin = Mage::getSingleton('customer/session')->getCustomer();
$custAdminId = $custAdmin->getId();
$order_collection = Mage::getModel('sales/order')->getCollection()
->addFieldToSelect('*')
->addFieldToFilter('customer_id', $custAdminId)
;
foreach($order_collection as $order)
{
if ($order->getState() == "complete") {
$Is_Complet = true;
}
}
if($Is_Complet)
{
if(!Mage::registry('prevent_observer')):
Mage::register('prevent_observer',true);
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Payment Complete.');
$order->save();
endif;
}
}
}
答案 0 :(得分:0)
使用事件“ sales_order_place_after”。与其他结帐事件相比,无论何时下订单,它都会触发。
您描述的逻辑必须在观察者方法主体中实现。