2011-11-04 47 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();