Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions
RefundOrder Class Reference
Inheritance diagram for RefundOrder:
RefundOrderInterface

Public Member Functions

 __construct (ResourceConnection $resourceConnection, OrderStateResolverInterface $orderStateResolver, OrderRepositoryInterface $orderRepository, CreditmemoRepositoryInterface $creditmemoRepository, RefundAdapterInterface $refundAdapter, CreditmemoDocumentFactory $creditmemoDocumentFactory, RefundOrderValidator $validator, NotifierInterface $notifier, OrderConfig $config, LoggerInterface $logger)
 
 execute ( $orderId, array $items=[], $notify=false, $appendComment=false, \Magento\Sales\Api\Data\CreditmemoCommentCreationInterface $comment=null, \Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface $arguments=null)
 

Detailed Description

Class RefundOrder @SuppressWarnings(PHPMD.CouplingBetweenObjects)

Definition at line 24 of file RefundOrder.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( ResourceConnection  $resourceConnection,
OrderStateResolverInterface  $orderStateResolver,
OrderRepositoryInterface  $orderRepository,
CreditmemoRepositoryInterface  $creditmemoRepository,
RefundAdapterInterface  $refundAdapter,
CreditmemoDocumentFactory  $creditmemoDocumentFactory,
RefundOrderValidator  $validator,
NotifierInterface  $notifier,
OrderConfig  $config,
LoggerInterface  $logger 
)

RefundOrder constructor.

Parameters
ResourceConnection$resourceConnection
OrderStateResolverInterface$orderStateResolver
OrderRepositoryInterface$orderRepository
CreditmemoRepositoryInterface$creditmemoRepository
RefundAdapterInterface$refundAdapter
CreditmemoDocumentFactory$creditmemoDocumentFactory
RefundOrderValidator$validator
NotifierInterface$notifier
OrderConfig$config
LoggerInterface$logger@SuppressWarnings(PHPMD.ExcessiveParameterList)

Definition at line 91 of file RefundOrder.php.

102  {
103  $this->resourceConnection = $resourceConnection;
104  $this->orderStateResolver = $orderStateResolver;
105  $this->orderRepository = $orderRepository;
106  $this->creditmemoRepository = $creditmemoRepository;
107  $this->refundAdapter = $refundAdapter;
108  $this->creditmemoDocumentFactory = $creditmemoDocumentFactory;
109  $this->validator = $validator;
110  $this->notifier = $notifier;
111  $this->config = $config;
112  $this->logger = $logger;
113  }
$config
Definition: fraud_order.php:17
$orderRepository
Definition: order.php:69
$logger

Member Function Documentation

◆ execute()

execute (   $orderId,
array  $items = [],
  $notify = false,
  $appendComment = false,
\Magento\Sales\Api\Data\CreditmemoCommentCreationInterface  $comment = null,
\Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface  $arguments = null 
)

Create offline refund for order

Parameters
int$orderId

Implements RefundOrderInterface.

Definition at line 118 of file RefundOrder.php.

125  {
126  $connection = $this->resourceConnection->getConnection('sales');
127  $order = $this->orderRepository->get($orderId);
128  $creditmemo = $this->creditmemoDocumentFactory->createFromOrder(
129  $order,
130  $items,
131  $comment,
132  ($appendComment && $notify),
133  $arguments
134  );
135  $validationMessages = $this->validator->validate(
136  $order,
137  $creditmemo,
138  $items,
139  $notify,
140  $appendComment,
141  $comment,
142  $arguments
143  );
144  if ($validationMessages->hasMessages()) {
145  throw new \Magento\Sales\Exception\DocumentValidationException(
146  __("Creditmemo Document Validation Error(s):\n" . implode("\n", $validationMessages->getMessages()))
147  );
148  }
149  $connection->beginTransaction();
150  try {
151  $creditmemo->setState(\Magento\Sales\Model\Order\Creditmemo::STATE_REFUNDED);
152  $order->setCustomerNoteNotify($notify);
153  $order = $this->refundAdapter->refund($creditmemo, $order);
154  $order->setState(
155  $this->orderStateResolver->getStateForOrder($order, [])
156  );
157  $order->setStatus($this->config->getStateDefaultStatus($order->getState()));
158 
159  $order = $this->orderRepository->save($order);
160  $creditmemo = $this->creditmemoRepository->save($creditmemo);
161  $connection->commit();
162  } catch (\Exception $e) {
163  $this->logger->critical($e);
164  $connection->rollBack();
165  throw new \Magento\Sales\Exception\CouldNotRefundException(
166  __('Could not save a Creditmemo, see error log for details')
167  );
168  }
169  if ($notify) {
170  if (!$appendComment) {
171  $comment = null;
172  }
173  $this->notifier->notify($order, $creditmemo, $comment);
174  }
175 
176  return $creditmemo->getEntityId();
177  }
$order
Definition: order.php:55
__()
Definition: __.php:13
$arguments
$connection
Definition: bulk.php:13
$items

The documentation for this class was generated from the following file: