Skip to content

Commit 3a803bb

Browse files
authored
ENGCOM-7090: Fixed #26345 Reorder in Admin panel leads to report page in case of changed product custom option max characters #26348
2 parents 5aaacbd + 16edf9e commit 3a803bb

File tree

2 files changed

+191
-63
lines changed

2 files changed

+191
-63
lines changed

app/code/Magento/Sales/Controller/Adminhtml/Order/Create/Reorder.php

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,29 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Sales\Controller\Adminhtml\Order\Create;
79

810
use Magento\Backend\App\Action;
11+
use Magento\Backend\Model\View\Result\Forward;
912
use Magento\Backend\Model\View\Result\ForwardFactory;
13+
use Magento\Backend\Model\View\Result\Redirect;
14+
use Magento\Catalog\Helper\Product;
15+
use Magento\Framework\App\Action\HttpGetActionInterface;
16+
use Magento\Framework\Escaper;
1017
use Magento\Framework\View\Result\PageFactory;
11-
use Magento\Sales\Model\Order\Reorder\UnavailableProductsProvider;
1218
use Magento\Sales\Api\OrderRepositoryInterface;
19+
use Magento\Sales\Controller\Adminhtml\Order\Create;
1320
use Magento\Sales\Helper\Reorder as ReorderHelper;
21+
use Magento\Sales\Model\Order;
22+
use Magento\Sales\Model\Order\Reorder\UnavailableProductsProvider;
23+
use Psr\Log\LoggerInterface;
1424

15-
class Reorder extends \Magento\Sales\Controller\Adminhtml\Order\Create
25+
/**
26+
* Controller create order.
27+
*/
28+
class Reorder extends Create implements HttpGetActionInterface
1629
{
1730
/**
1831
* @var UnavailableProductsProvider
@@ -29,29 +42,37 @@ class Reorder extends \Magento\Sales\Controller\Adminhtml\Order\Create
2942
*/
3043
private $reorderHelper;
3144

45+
/**
46+
* @var LoggerInterface
47+
*/
48+
private $logger;
49+
3250
/**
3351
* @param Action\Context $context
34-
* @param \Magento\Catalog\Helper\Product $productHelper
35-
* @param \Magento\Framework\Escaper $escaper
52+
* @param Product $productHelper
53+
* @param Escaper $escaper
3654
* @param PageFactory $resultPageFactory
3755
* @param ForwardFactory $resultForwardFactory
3856
* @param UnavailableProductsProvider $unavailableProductsProvider
3957
* @param OrderRepositoryInterface $orderRepository
4058
* @param ReorderHelper $reorderHelper
59+
* @param LoggerInterface $logger
4160
*/
4261
public function __construct(
4362
Action\Context $context,
44-
\Magento\Catalog\Helper\Product $productHelper,
45-
\Magento\Framework\Escaper $escaper,
63+
Product $productHelper,
64+
Escaper $escaper,
4665
PageFactory $resultPageFactory,
4766
ForwardFactory $resultForwardFactory,
4867
UnavailableProductsProvider $unavailableProductsProvider,
4968
OrderRepositoryInterface $orderRepository,
50-
ReorderHelper $reorderHelper
69+
ReorderHelper $reorderHelper,
70+
LoggerInterface $logger
5171
) {
5272
$this->unavailableProductsProvider = $unavailableProductsProvider;
5373
$this->orderRepository = $orderRepository;
5474
$this->reorderHelper = $reorderHelper;
75+
$this->logger = $logger;
5576
parent::__construct(
5677
$context,
5778
$productHelper,
@@ -62,19 +83,21 @@ public function __construct(
6283
}
6384

6485
/**
65-
* @return \Magento\Backend\Model\View\Result\Forward|\Magento\Backend\Model\View\Result\Redirect
86+
* Adminhtml controller create order.
87+
*
88+
* @return Forward|Redirect
6689
*/
6790
public function execute()
6891
{
6992
$this->_getSession()->clearStorage();
7093
$orderId = $this->getRequest()->getParam('order_id');
71-
/** @var \Magento\Sales\Model\Order $order */
94+
/** @var Order $order */
7295
$order = $this->orderRepository->get($orderId);
7396
if (!$this->reorderHelper->canReorder($order->getEntityId())) {
7497
return $this->resultForwardFactory->create()->forward('noroute');
7598
}
7699

77-
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
100+
/** @var Redirect $resultRedirect */
78101
$resultRedirect = $this->resultRedirectFactory->create();
79102
if (!$order->getId()) {
80103
$resultRedirect->setPath('sales/order/');
@@ -90,10 +113,20 @@ public function execute()
90113
}
91114
$resultRedirect->setPath('sales/order/view', ['order_id' => $orderId]);
92115
} else {
93-
$order->setReordered(true);
94-
$this->_getSession()->setUseOldShippingMethod(true);
95-
$this->_getOrderCreateModel()->initFromOrder($order);
96-
$resultRedirect->setPath('sales/*');
116+
try {
117+
$order->setReordered(true);
118+
$this->_getSession()->setUseOldShippingMethod(true);
119+
$this->_getOrderCreateModel()->initFromOrder($order);
120+
$resultRedirect->setPath('sales/*');
121+
} catch (\Magento\Framework\Exception\LocalizedException $e) {
122+
$this->logger->critical($e);
123+
$this->messageManager->addErrorMessage($e->getMessage());
124+
return $resultRedirect->setPath('sales/*');
125+
} catch (\Exception $e) {
126+
$this->logger->critical($e);
127+
$this->messageManager->addException($e, __('Error while processing order.'));
128+
return $resultRedirect->setPath('sales/*');
129+
}
97130
}
98131

99132
return $resultRedirect;

0 commit comments

Comments
 (0)