首页 > 解决方案 > Magento 1.9 观察者检查客户是否至少有完整状态的订单

问题描述

我想使用观察者检查客户是否至少完成了一个订单以将订单状态更改为处理中(所以当客户按下下订单然后检查是否有任何订单完成然后将状态从待处理更改为处理)这是我的代码但是此编辑状态为上一个订单不是现有订单

类 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;

       }

}

}

标签: magento-1.9observer-pattern

解决方案


使用事件“sales_order_place_after”。与其他结帐事件相比,它在任何情况下都会在下订单时触发。

您描述的逻辑必须在观察者方法体中实现。


推荐阅读