Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
VoidAction.php
Go to the documentation of this file.
1 <?php
7 
9 
10 class VoidAction extends Action
11 {
17  const ADMIN_RESOURCE = 'Magento_Sales::sales_creditmemo';
18 
22  protected $creditmemoLoader;
23 
28 
34  public function __construct(
35  Action\Context $context,
36  \Magento\Sales\Controller\Adminhtml\Order\CreditmemoLoader $creditmemoLoader,
37  \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
38  ) {
39  $this->creditmemoLoader = $creditmemoLoader;
40  $this->resultForwardFactory = $resultForwardFactory;
41  parent::__construct($context);
42  }
43 
49  public function execute()
50  {
51  $this->creditmemoLoader->setOrderId($this->getRequest()->getParam('order_id'));
52  $this->creditmemoLoader->setCreditmemoId($this->getRequest()->getParam('creditmemo_id'));
53  $this->creditmemoLoader->setCreditmemo($this->getRequest()->getParam('creditmemo'));
54  $this->creditmemoLoader->setInvoiceId($this->getRequest()->getParam('invoice_id'));
55  $creditmemo = $this->creditmemoLoader->load();
56  if ($creditmemo) {
57  try {
58  $creditmemo->void();
59  $transactionSave = $this->_objectManager->create(\Magento\Framework\DB\Transaction::class);
60  $transactionSave->addObject($creditmemo);
61  $transactionSave->addObject($creditmemo->getOrder());
62 
63  if ($creditmemo->getInvoice()) {
64  $transactionSave->addObject($creditmemo->getInvoice());
65  }
66  $transactionSave->save();
67  $this->messageManager->addSuccessMessage(__('You voided the credit memo.'));
68  } catch (\Magento\Framework\Exception\LocalizedException $e) {
69  $this->messageManager->addErrorMessage($e->getMessage());
70  } catch (\Exception $e) {
71  $this->messageManager->addErrorMessage(__('We can\'t void the credit memo.'));
72  }
73  $resultRedirect = $this->resultRedirectFactory->create();
74  $resultRedirect->setPath('sales/*/view', ['creditmemo_id' => $creditmemo->getId()]);
75  return $resultRedirect;
76  } else {
77  $resultForward = $this->resultForwardFactory->create();
78  $resultForward->forward('noroute');
79  return $resultForward;
80  }
81  }
82 }
$transactionSave
Definition: invoice.php:20
__()
Definition: __.php:13
__construct(Action\Context $context, \Magento\Sales\Controller\Adminhtml\Order\CreditmemoLoader $creditmemoLoader, \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory)
Definition: VoidAction.php:34