1

こんにちは、注文が完了または終了したときに注文情報をキャプチャしたいです。(sales_order_place_after)などのさまざまなイベントを試しましたが、要件を完了しませんでした。管理者側から注文を完了し、Xmlなどの情報をキャプチャするためのオブザーバーを作成します。

<events>
        <sales_order_place_after>
        <observers>
            <extra_options>             
                <class>My_Module_Model_Observer</class>
                <method>salesConvertQuoteItemToOrderItem</method>
            </extra_options>
        </observers>
            </sales_order_place_after>
    </events>

観察者 :

public function salesConvertQuoteItemToOrderItem($observer)
    {

        $order = $observer->getOrder();
        $orders = $observer->getEvent()->getOrder();

        if($order->getState() == Mage_Sales_Model_Order::STATE_COMPLETE){
         echo "<pre>";
        print_r($orders);exit;
        }
    }

誰か助けてもらえますか?前もって感謝します

4

2 に答える 2

2

間違ったイベントを聞いていることを除いて、あなたはすべてを正しくやっています。sales_order_save_after代わりに使用する必要があります。

于 2012-11-26T09:28:08.970 に答える
2

sales_order_save_afterを使用することは依然として適切ですが、状態を確認する必要もあります(Mischaが示唆しているように)。

public function salesOrderSaveAfter($observer)
{       
    $order = $observer->getEvent()->getOrder();
    if($order->getState() != Mage_Sales_Model_Order::STATE_COMPLETE) {
        return $this;
    }       

    if($order->getData('state') == $order->getOrigData('state')) {
        return $this;
    }

    // do your stuff

    return $this;
}

これは私にとってはうまくいきます。

于 2013-08-02T08:42:53.347 に答える