【问题标题】:How can I get invoice ID given the $payment object in magento给定 magento 中的 $payment 对象,我如何获取发票 ID
【发布时间】:2014-03-31 18:20:54
【问题描述】:

鉴于 Magento 中的此功能:

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

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

如何获取发票或发票 ID?

【问题讨论】:

  • 您是否正在编写此函数来替换 Magento 功能?

标签: magento payment invoice


【解决方案1】:

Mage_Sales_Model_OrderhasInvoices()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();
              // ...
          }
      }

}

【讨论】:

  • 谢谢尤尔根。这很有帮助。鉴于我有发票集合,我如何从该集合中选择最后一个发票 ID?请参阅我在自己的捕获方法中运行此代码,该方法在 Magento 管理员中创建发票时调用。我想存储触发我的方法的发票的 ID。
  • 要获取任何Varien_Data_Collection 的最后一项,您可以使用集合的getLastItem() 方法。但是由于您没有告诉我们,哪个类包含您给定的capture() 方法以及哪个对象的哪个方法调用了您的capture() 方法,我们无法知道您所追求的具体发票对象。它可以像$this->getId() 一样简单,但这取决于您具体实施的流程。
  • @JürgenThelen:我也有同样的问题。 capture() 位于付款方式的模型文件中,当管理员为订单创建发票时将调用该文件。
猜你喜欢
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
相关资源
最近更新 更多