2011-11-04 46 views
3

我正在爲sales_order_invoice_register事件寫一個觀察者,我想獲取剛剛保存的發票號。我無法找到檢索該ID的函數,這些註釋的調用都不起作用。任何想法? 這裏的代碼從Mage_Sales_Model_Order_Invoice對象獲取發票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'); 

謝謝!

+2

你有沒有試過'的var_dump($ id_invoice->的getData());',看它是否給有幫助嗎? – jprofitt

+0

[不存在任何有用的東西](http://pastebin.com/XhpZ81Ms):( – Infrid

+0

我剛剛在發票模型中取得了一個快速峯值,並且有可能在該事件時對象尚未保存因爲它沒有ID,你需要的ID是什麼?也許我可以幫忙找出解決辦法 – jprofitt

回答

2

我知道這是前一陣子,但如果有人仍然需要這方面的幫助,希望以下將被使用。

一旦在您的觀察員方法中,使用以下代碼來獲取發票ID。

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

可以在法師分貝檢查出sales_flat_invoice表(編號與名稱的第一個字段「ENTITY_ID」)。獲得$ invoice對象後,類似於從類繼承的任何其他對象,您可以使用Magento的getData()方法來訪問屬性值。

另外,需要查看不同的事件...根據法師文檔,sales_order_invoice_register事件返回「unknown」。上述代碼嘗試使用sales_order_invoice_pay事件。

2

你應該用事件 「sales_order_invoice_save_after」 在config.xml並在observer.php:$observer->getEvent()->getInvoice();