当前位置: 首页>>代码示例>>PHP>>正文


PHP Creditmemo::getDoTransaction方法代码示例

本文整理汇总了PHP中Magento\Sales\Model\Order\Creditmemo::getDoTransaction方法的典型用法代码示例。如果您正苦于以下问题:PHP Creditmemo::getDoTransaction方法的具体用法?PHP Creditmemo::getDoTransaction怎么用?PHP Creditmemo::getDoTransaction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Magento\Sales\Model\Order\Creditmemo的用法示例。


在下文中一共展示了Creditmemo::getDoTransaction方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: refund

 /**
  * Refund payment online or offline, depending on whether there is invoice set in the creditmemo instance
  * Updates transactions hierarchy, if required
  * Updates payment totals, updates order status and adds proper comments
  *
  * @param Creditmemo $creditmemo
  * @return $this
  * @throws \Exception
  * @throws \Magento\Framework\Exception\LocalizedException
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function refund($creditmemo)
 {
     $baseAmountToRefund = $this->_formatAmount($creditmemo->getBaseGrandTotal());
     $this->_generateTransactionId(Transaction::TYPE_REFUND);
     // call refund from gateway if required
     $isOnline = false;
     $gateway = $this->getMethodInstance();
     $invoice = null;
     if ($gateway->canRefund() && $creditmemo->getDoTransaction()) {
         $this->setCreditmemo($creditmemo);
         $invoice = $creditmemo->getInvoice();
         if ($invoice) {
             $isOnline = true;
             $captureTxn = $this->_lookupTransaction($invoice->getTransactionId());
             if ($captureTxn) {
                 $this->setParentTransactionId($captureTxn->getTxnId());
             }
             $this->setShouldCloseParentTransaction(true);
             // TODO: implement multiple refunds per capture
             try {
                 $gateway->setStore($this->getOrder()->getStoreId());
                 $this->setRefundTransactionId($invoice->getTransactionId());
                 $gateway->refund($this, $baseAmountToRefund);
                 $creditmemo->setTransactionId($this->getLastTransId());
             } catch (\Magento\Framework\Exception\LocalizedException $e) {
                 if (!$captureTxn) {
                     throw new \Magento\Framework\Exception\LocalizedException(__('If the invoice was created offline, try creating an offline credit memo.'), $e);
                 }
                 throw $e;
             }
         }
     }
     // update self totals from creditmemo
     $this->_updateTotals(['amount_refunded' => $creditmemo->getGrandTotal(), 'base_amount_refunded' => $baseAmountToRefund, 'base_amount_refunded_online' => $isOnline ? $baseAmountToRefund : null, 'shipping_refunded' => $creditmemo->getShippingAmount(), 'base_shipping_refunded' => $creditmemo->getBaseShippingAmount()]);
     // update transactions and order state
     $transaction = $this->_addTransaction(Transaction::TYPE_REFUND, $creditmemo, $isOnline);
     if ($invoice) {
         $message = __('We refunded %1 online.', $this->_formatPrice($baseAmountToRefund));
     } else {
         $message = $this->hasMessage() ? $this->getMessage() : __('We refunded %1 offline.', $this->_formatPrice($baseAmountToRefund));
     }
     $message = $message = $this->_prependMessage($message);
     $message = $this->_appendTransactionToMessage($transaction, $message);
     $this->setOrderStateProcessing($message);
     $this->_eventManager->dispatch('sales_order_payment_refund', ['payment' => $this, 'creditmemo' => $creditmemo]);
     return $this;
 }
开发者ID:niranjanssiet,项目名称:magento2,代码行数:59,代码来源:Payment.php

示例2: prepareOrder

 /**
  * Prepare order data for refund
  *
  * @param \Magento\Sales\Model\Order\Creditmemo $creditmemo
  * @return void
  */
 protected function prepareOrder(\Magento\Sales\Model\Order\Creditmemo $creditmemo)
 {
     $order = $creditmemo->getOrder();
     $baseOrderRefund = $this->priceCurrency->round($order->getBaseTotalRefunded() + $creditmemo->getBaseGrandTotal());
     $orderRefund = $this->priceCurrency->round($order->getTotalRefunded() + $creditmemo->getGrandTotal());
     $order->setBaseTotalRefunded($baseOrderRefund);
     $order->setTotalRefunded($orderRefund);
     $order->setBaseSubtotalRefunded($order->getBaseSubtotalRefunded() + $creditmemo->getBaseSubtotal());
     $order->setSubtotalRefunded($order->getSubtotalRefunded() + $creditmemo->getSubtotal());
     $order->setBaseTaxRefunded($order->getBaseTaxRefunded() + $creditmemo->getBaseTaxAmount());
     $order->setTaxRefunded($order->getTaxRefunded() + $creditmemo->getTaxAmount());
     $order->setBaseDiscountTaxCompensationRefunded($order->getBaseDiscountTaxCompensationRefunded() + $creditmemo->getBaseDiscountTaxCompensationAmount());
     $order->setDiscountTaxCompensationRefunded($order->getDiscountTaxCompensationRefunded() + $creditmemo->getDiscountTaxCompensationAmount());
     $order->setBaseShippingRefunded($order->getBaseShippingRefunded() + $creditmemo->getBaseShippingAmount());
     $order->setShippingRefunded($order->getShippingRefunded() + $creditmemo->getShippingAmount());
     $order->setBaseShippingTaxRefunded($order->getBaseShippingTaxRefunded() + $creditmemo->getBaseShippingTaxAmount());
     $order->setShippingTaxRefunded($order->getShippingTaxRefunded() + $creditmemo->getShippingTaxAmount());
     $order->setAdjustmentPositive($order->getAdjustmentPositive() + $creditmemo->getAdjustmentPositive());
     $order->setBaseAdjustmentPositive($order->getBaseAdjustmentPositive() + $creditmemo->getBaseAdjustmentPositive());
     $order->setAdjustmentNegative($order->getAdjustmentNegative() + $creditmemo->getAdjustmentNegative());
     $order->setBaseAdjustmentNegative($order->getBaseAdjustmentNegative() + $creditmemo->getBaseAdjustmentNegative());
     $order->setDiscountRefunded($order->getDiscountRefunded() + $creditmemo->getDiscountAmount());
     $order->setBaseDiscountRefunded($order->getBaseDiscountRefunded() + $creditmemo->getBaseDiscountAmount());
     if ($creditmemo->getDoTransaction()) {
         $order->setTotalOnlineRefunded($order->getTotalOnlineRefunded() + $creditmemo->getGrandTotal());
         $order->setBaseTotalOnlineRefunded($order->getBaseTotalOnlineRefunded() + $creditmemo->getBaseGrandTotal());
     } else {
         $order->setTotalOfflineRefunded($order->getTotalOfflineRefunded() + $creditmemo->getGrandTotal());
         $order->setBaseTotalOfflineRefunded($order->getBaseTotalOfflineRefunded() + $creditmemo->getBaseGrandTotal());
     }
     $order->setBaseTotalInvoicedCost($order->getBaseTotalInvoicedCost() - $creditmemo->getBaseCost());
 }
开发者ID:pradeep-wagento,项目名称:magento2,代码行数:38,代码来源:Refund.php


注:本文中的Magento\Sales\Model\Order\Creditmemo::getDoTransaction方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。