3

sales_order_invoice_register イベントのオブザーバーを作成しています。保存したばかりの請求書番号を取得したいと考えています。その ID を取得する関数が見つかりません。コメントされた呼び出しはどれも機能しません。何か案が?ここにコード

public function foobar($observer){

      $order = $observer->getEvent()->getOrder();
      $id_order = $order->getRealOrderId();
      $id_invoice = $observer->getEvent()->getInvoice(); // the Mage_Sales_Model_Order_Invoice object
      //$id_invoice = $id_invoice->getId();                                                                                                         
      //$id_invoice = $id_invoice->getIncrementId();                                                                                                            
      //$id_invoice = $id_invoice->getInvoiceId();                                                                                                           
      //$id_invoice = $id_invoice->getRealIncrementId();                                                                                               
      //$id_invoice = $id_invoice->getData('invoice_id');

ありがとう!

4

2 に答える 2

2

config.xml と observer.php で "sales_order_invoice_save_after" イベントを使用する必要があります。$observer->getEvent()->getInvoice();

于 2012-03-29T12:26:30.567 に答える
2

これは少し前のことですが、誰かがまだこれについて助けを必要としている場合は、次のものが役立つことを願っています.

オブザーバー メソッドに入ったら、次のコードを使用して請求書 ID を取得します。

$invoice = $observer->getEvent()->getInvoice();
$invoice_id = $invoice->getData('entity_id');  // or you could also use ->getEntityId();

Mage データベースのsales_flat_invoiceテーブルを確認できます(ID は「entity_id」という名前の最初のフィールドです)。$invoice オブジェクトを取得したら、 Varien_Objectクラスから継承する他のオブジェクトと同様に、Magento のgetData()メソッドを使用して属性値にアクセスできます。

また、おそらく別のイベントを調べる必要があります...Mageのドキュメントによると、sales_order_invoice_registerイベントは「不明」を返します。sales_order_invoice_pay上記のコードのイベントを試してください。

于 2012-03-27T18:15:50.930 に答える