找不到Magento事件


Magento Event Not Found

我正在开发magento 1.6.1.0版本。我没有发现任何事件后航运生成或订单状态完成后打电话。然后,当订单状态完成时,我调用我们的模块观察者。

订单状态完成后,我想更新客户属性值。

请给我这个问题的答案。

我有搜索和做各种事情,但他们不是有用的

首先从sales_order_save_after事件开始。这当然会起作用,但是会在更新和保存订单时调用。因此,逻辑必须考虑订单是什么时候新创建的&直接完成,或者稍后将订单标记为完成(后者是最常见的)。您可能需要根据取消、多个订单等调整订单的逻辑和可接受的最终状态值。

/**
 * Update customer attribute when order is completed.
 * 
 * Need to catch two conditions:
 * 1) Order is new AND `status` = complete
 * 2) Order exists but `status` is changed to complete
 *
 * @param $obs Varien_Event_Observer
 */
public function adjustCustomerAfterComplete($obs)
{
    /* @var $order Mage_Sales_Model_Order */
    $order = $obs->getOrder();
    if ($order->getStatus() === $order::STATE_COMPLETE
        && $order->getOrigData('status' !== $order::STATE_COMPLETE))
    {
        Mage::getModel('customer/customer')
                ->load($order->getCustomerId())
                ->setCustomAttr('new val') //custom attr code
                ->save();
        //Another approach if you don't need events, etc.:
        /*
        $obj = new Varien_Object(
            array(
                 'entity_id'=>$order->getCustomerId(),
                 'custom_attr'=>'new val'
            )
        );
        Mage::getResourceModel('customer/customer')
                 ->saveAttribute($obj,'custom_attr');
        */
    }
}