3
3
* Copyright © Magento, Inc. All rights reserved.
4
4
* See COPYING.txt for license details.
5
5
*/
6
+ declare (strict_types=1 );
7
+
6
8
namespace Magento \Sales \Controller \Adminhtml \Order \Create ;
7
9
8
10
use Magento \Backend \App \Action ;
11
+ use Magento \Backend \Model \View \Result \Forward ;
9
12
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 ;
10
17
use Magento \Framework \View \Result \PageFactory ;
11
- use Magento \Sales \Model \Order \Reorder \UnavailableProductsProvider ;
12
18
use Magento \Sales \Api \OrderRepositoryInterface ;
19
+ use Magento \Sales \Controller \Adminhtml \Order \Create ;
13
20
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 ;
14
24
15
- class Reorder extends \Magento \Sales \Controller \Adminhtml \Order \Create
25
+ /**
26
+ * Controller create order.
27
+ */
28
+ class Reorder extends Create implements HttpGetActionInterface
16
29
{
17
30
/**
18
31
* @var UnavailableProductsProvider
@@ -29,29 +42,37 @@ class Reorder extends \Magento\Sales\Controller\Adminhtml\Order\Create
29
42
*/
30
43
private $ reorderHelper ;
31
44
45
+ /**
46
+ * @var LoggerInterface
47
+ */
48
+ private $ logger ;
49
+
32
50
/**
33
51
* @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
36
54
* @param PageFactory $resultPageFactory
37
55
* @param ForwardFactory $resultForwardFactory
38
56
* @param UnavailableProductsProvider $unavailableProductsProvider
39
57
* @param OrderRepositoryInterface $orderRepository
40
58
* @param ReorderHelper $reorderHelper
59
+ * @param LoggerInterface $logger
41
60
*/
42
61
public function __construct (
43
62
Action \Context $ context ,
44
- \ Magento \ Catalog \ Helper \ Product $ productHelper ,
45
- \ Magento \ Framework \ Escaper $ escaper ,
63
+ Product $ productHelper ,
64
+ Escaper $ escaper ,
46
65
PageFactory $ resultPageFactory ,
47
66
ForwardFactory $ resultForwardFactory ,
48
67
UnavailableProductsProvider $ unavailableProductsProvider ,
49
68
OrderRepositoryInterface $ orderRepository ,
50
- ReorderHelper $ reorderHelper
69
+ ReorderHelper $ reorderHelper ,
70
+ LoggerInterface $ logger
51
71
) {
52
72
$ this ->unavailableProductsProvider = $ unavailableProductsProvider ;
53
73
$ this ->orderRepository = $ orderRepository ;
54
74
$ this ->reorderHelper = $ reorderHelper ;
75
+ $ this ->logger = $ logger ;
55
76
parent ::__construct (
56
77
$ context ,
57
78
$ productHelper ,
@@ -62,19 +83,21 @@ public function __construct(
62
83
}
63
84
64
85
/**
65
- * @return \Magento\Backend\Model\View\Result\Forward|\Magento\Backend\Model\View\Result\Redirect
86
+ * Adminhtml controller create order.
87
+ *
88
+ * @return Forward|Redirect
66
89
*/
67
90
public function execute ()
68
91
{
69
92
$ this ->_getSession ()->clearStorage ();
70
93
$ orderId = $ this ->getRequest ()->getParam ('order_id ' );
71
- /** @var \Magento\Sales\Model\ Order $order */
94
+ /** @var Order $order */
72
95
$ order = $ this ->orderRepository ->get ($ orderId );
73
96
if (!$ this ->reorderHelper ->canReorder ($ order ->getEntityId ())) {
74
97
return $ this ->resultForwardFactory ->create ()->forward ('noroute ' );
75
98
}
76
99
77
- /** @var \Magento\Backend\Model\View\Result\ Redirect $resultRedirect */
100
+ /** @var Redirect $resultRedirect */
78
101
$ resultRedirect = $ this ->resultRedirectFactory ->create ();
79
102
if (!$ order ->getId ()) {
80
103
$ resultRedirect ->setPath ('sales/order/ ' );
@@ -90,10 +113,20 @@ public function execute()
90
113
}
91
114
$ resultRedirect ->setPath ('sales/order/view ' , ['order_id ' => $ orderId ]);
92
115
} 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
+ }
97
130
}
98
131
99
132
return $ resultRedirect ;
0 commit comments