3

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

谢谢!

4

2 回答 2

2

我知道这是不久前的事,但如果有人仍然需要帮助,希望以下内容会有所帮助。

进入观察者方法后,使用以下代码获取发票 ID。

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

您可以查看 Mage db 中的sales_flat_invoice表(ID 是名称为“entity_id”的第一个字段)。一旦你有了 $invoice 对象,类似于从Varien_Object类继承的任何其他对象,你可以使用 Magento 的getData()方法来访问属性值。

此外,可能需要查看不同的事件...... sales_order_invoice_register 事件根据 Mage 文档返回“未知”。尝试sales_order_invoice_pay上述代码的事件。

于 2012-03-27T18:15:50.930 回答
2

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

于 2012-03-29T12:26:30.567 回答