получить идентификатор счета из объекта Mage_Sales_Model_Order_Invoice - PullRequest
3 голосов
/ 04 ноября 2011

Я пишу наблюдателю для события sales_order_invoice_register, я хотел бы получить только что сохраненный номер счета.Я не могу найти функцию для получения этого идентификатора, ни один из этих закомментированных вызовов не работает.Любая идея?Вот код

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 ]

2 голосов
/ 29 марта 2012

Вы должны использовать событие "sales_order_invoice_save_after" в config.xml и в вашем обозревателе.php: $observer->getEvent()->getInvoice();

2 голосов
/ 27 марта 2012

Я знаю, что это было некоторое время назад, но в случае, если кто-то все еще нуждается в помощи по этому вопросу, надеюсь, будет полезно следующее.

В методе наблюдателя используйте следующий код для получения идентификатора счета.

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

Вы можете просмотреть таблицу sales_flat_invoice в Mage db (ID - это первое поле с именем 'entity_id'). Если у вас есть объект $ invoice, аналогичный любому другому объекту, который наследуется от класса Varien_Object , вы можете использовать метод getData() Magento для доступа к значениям атрибута.

Кроме того, возможно, нужно посмотреть на другое событие, возможно ... событие sales_order_invoice_register возвращает "неизвестно" в соответствии с документами Mage. Попробуйте событие sales_order_invoice_pay для приведенного выше кода.

...