从Mage_Sales_Model_Order_Invoice对象获取发票ID

时间:2011-11-04 14:21:53

标签: php magento observer-pattern invoice

我正在为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');

谢谢!

2 个答案:

答案 0 :(得分: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事件返回“unknown”。针对上述代码尝试sales_order_invoice_pay事件。

答案 1 :(得分:2)

您应该在config.xml和observer.php中使用事件“sales_order_invoice_save_after”:$observer->getEvent()->getInvoice();