我正在为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');
谢谢!
解决方法:
我知道这是前一阵子,但是如果有人仍然需要帮助,希望以下内容会有用.
一旦进入您的观察者方法,请使用以下代码获取发票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事件获取上述代码.