我正在为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');
谢谢!
答案 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();