Наблюдатель Magento 1.9 проверяет, есть ли у клиента хотя бы заказ с полным статусом - PullRequest
0 голосов
/ 30 сентября 2018

Я хочу использовать наблюдателя, чтобы проверить, есть ли у клиента хотя бы один завершенный заказ, чтобы изменить статус заказа на обработку (поэтому, когда клиент нажимает на размещенный заказ, затем проверяет, завершен ли какой-либо заказ, затем изменяет статус с ожидающего на обработку), этомой код, но этот статус редактирования предыдущего заказа не существует

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

       }

}

}

1 Ответ

0 голосов
/ 01 октября 2018

Используйте событие "sales_order_place_after".По сравнению с другими событиями оформления заказа он срабатывает в любом случае при размещении заказа.

Ваша описанная логика должна быть реализована в теле метода наблюдателей.

...