2014-03-31 62 views
1

的$支付對象鑑於此功能在Magento:我怎樣才能發票ID給在Magento

public function capture(Varien_Object $payment, $amount) 
{ 
     $order = $payment->getOrder(); 
     $order_id = $order->getId(); 

     $invoice = ???? 
     $invoice_id = $invoice->getId(); 
} 

我怎樣才能得到發票或發票ID?

+0

你寫這個功能來代替Magento的功能? –

回答

1

Mage_Sales_Model_Order有像hasInvoices()getInvoiceCollection()方法:

public function capture(Varien_Object $payment, $amount) 
{ 
     $order = $payment->getOrder(); 
     $order_id = $order->getId(); 

     if ($order->hasInvoices()) { 
      $oInvoiceCollection = $order->getInvoiceCollection(); 
      foreach ($oInvoiceCollection as $oInvoice) { 
       $invoice_id = $oInvoice->getId(); 
       // ... 
      } 
     } 

} 
+0

謝謝尤爾根。這很有幫助。鑑於我有發票集合,我如何從集合中選擇最後一個發票ID?請參閱我在自己的捕獲方法中運行此代碼,在Magento admin中創建發票時調用此代碼。我想存儲觸發我方法的發票的ID。 – user3482316

+0

要獲取任何'Varien_Data_Collection'的最後一項,您可以使用集合的'getLastItem()'方法。但是由於您沒有告訴我們,哪個類包含您的給定'capture()'方法以及哪個對象調用您的'capture()'方法的哪個方法,我們無法知道您正在使用哪個特定的發票對象。它可以像'$ this-> getId()'一樣簡單,但這取決於您準確實施的流程。 –

+0

@JürgenThelen:我的確有同樣的問題。 'capture()'在付款方式的模型文件中,當管理員爲訂單創建發票時將被調用。 –