Skip to content

Commit

Permalink
ENGCOM-7090: Fixed #26345 Reorder in Admin panel leads to report page…
Browse files Browse the repository at this point in the history
… in case of changed product custom option max characters #26348

 - Merge Pull Request #26348 from cedmudit/magento2:2.3-developPR26345
 - Merged commits:
   1. 16079d9
   2. 86dc12d
   3. a21b246
   4. 43f9e2b
   5. 7ba11b8
   6. 6c5fbcb
   7. f7819a6
  • Loading branch information
magento-engcom-team committed Mar 13, 2020
2 parents a66a2d5 + f7819a6 commit 16edf9e
Show file tree
Hide file tree
Showing 2 changed files with 191 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,29 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\Sales\Controller\Adminhtml\Order\Create;

use Magento\Backend\App\Action;
use Magento\Backend\Model\View\Result\Forward;
use Magento\Backend\Model\View\Result\ForwardFactory;
use Magento\Backend\Model\View\Result\Redirect;
use Magento\Catalog\Helper\Product;
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\Escaper;
use Magento\Framework\View\Result\PageFactory;
use Magento\Sales\Model\Order\Reorder\UnavailableProductsProvider;
use Magento\Sales\Api\OrderRepositoryInterface;
use Magento\Sales\Controller\Adminhtml\Order\Create;
use Magento\Sales\Helper\Reorder as ReorderHelper;
use Magento\Sales\Model\Order;
use Magento\Sales\Model\Order\Reorder\UnavailableProductsProvider;
use Psr\Log\LoggerInterface;

class Reorder extends \Magento\Sales\Controller\Adminhtml\Order\Create
/**
* Controller create order.
*/
class Reorder extends Create implements HttpGetActionInterface
{
/**
* @var UnavailableProductsProvider
Expand All @@ -29,29 +42,37 @@ class Reorder extends \Magento\Sales\Controller\Adminhtml\Order\Create
*/
private $reorderHelper;

/**
* @var LoggerInterface
*/
private $logger;

/**
* @param Action\Context $context
* @param \Magento\Catalog\Helper\Product $productHelper
* @param \Magento\Framework\Escaper $escaper
* @param Product $productHelper
* @param Escaper $escaper
* @param PageFactory $resultPageFactory
* @param ForwardFactory $resultForwardFactory
* @param UnavailableProductsProvider $unavailableProductsProvider
* @param OrderRepositoryInterface $orderRepository
* @param ReorderHelper $reorderHelper
* @param LoggerInterface $logger
*/
public function __construct(
Action\Context $context,
\Magento\Catalog\Helper\Product $productHelper,
\Magento\Framework\Escaper $escaper,
Product $productHelper,
Escaper $escaper,
PageFactory $resultPageFactory,
ForwardFactory $resultForwardFactory,
UnavailableProductsProvider $unavailableProductsProvider,
OrderRepositoryInterface $orderRepository,
ReorderHelper $reorderHelper
ReorderHelper $reorderHelper,
LoggerInterface $logger
) {
$this->unavailableProductsProvider = $unavailableProductsProvider;
$this->orderRepository = $orderRepository;
$this->reorderHelper = $reorderHelper;
$this->logger = $logger;
parent::__construct(
$context,
$productHelper,
Expand All @@ -62,19 +83,21 @@ public function __construct(
}

/**
* @return \Magento\Backend\Model\View\Result\Forward|\Magento\Backend\Model\View\Result\Redirect
* Adminhtml controller create order.
*
* @return Forward|Redirect
*/
public function execute()
{
$this->_getSession()->clearStorage();
$orderId = $this->getRequest()->getParam('order_id');
/** @var \Magento\Sales\Model\Order $order */
/** @var Order $order */
$order = $this->orderRepository->get($orderId);
if (!$this->reorderHelper->canReorder($order->getEntityId())) {
return $this->resultForwardFactory->create()->forward('noroute');
}

/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
/** @var Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
if (!$order->getId()) {
$resultRedirect->setPath('sales/order/');
Expand All @@ -90,10 +113,20 @@ public function execute()
}
$resultRedirect->setPath('sales/order/view', ['order_id' => $orderId]);
} else {
$order->setReordered(true);
$this->_getSession()->setUseOldShippingMethod(true);
$this->_getOrderCreateModel()->initFromOrder($order);
$resultRedirect->setPath('sales/*');
try {
$order->setReordered(true);
$this->_getSession()->setUseOldShippingMethod(true);
$this->_getOrderCreateModel()->initFromOrder($order);
$resultRedirect->setPath('sales/*');
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$this->logger->critical($e);
$this->messageManager->addErrorMessage($e->getMessage());
return $resultRedirect->setPath('sales/*');
} catch (\Exception $e) {
$this->logger->critical($e);
$this->messageManager->addException($e, __('Error while processing order.'));
return $resultRedirect->setPath('sales/*');
}
}

return $resultRedirect;
Expand Down
Loading

0 comments on commit 16edf9e

Please sign in to comment.