Skip to content

Commit 9898fac

Browse files
merge magento/2.3-develop into magento-eqp/REPO-66-coding-standard
2 parents 95ff068 + 70bf7c6 commit 9898fac

File tree

9 files changed

+207
-96
lines changed

9 files changed

+207
-96
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ atlassian*
4848
/pub/media/import/*
4949
!/pub/media/import/.htaccess
5050
/pub/media/logo/*
51+
/pub/media/custom_options/*
52+
!/pub/media/custom_options/.htaccess
5153
/pub/media/theme/*
5254
/pub/media/theme_customization/*
5355
!/pub/media/theme_customization/.htaccess

app/code/Magento/Catalog/etc/adminhtml/system.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<field id="grid_per_page_values" translate="label comment" type="text" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
6060
<label>Products per Page on Grid Allowed Values</label>
6161
<comment>Comma-separated.</comment>
62-
<validate>validate-per-page-value-list</validate>
62+
<validate>validate-per-page-value-list required-entry</validate>
6363
</field>
6464
<field id="grid_per_page" translate="label comment" type="text" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
6565
<label>Products per Page on Grid Default Value</label>
@@ -69,7 +69,7 @@
6969
<field id="list_per_page_values" translate="label comment" type="text" sortOrder="4" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
7070
<label>Products per Page on List Allowed Values</label>
7171
<comment>Comma-separated.</comment>
72-
<validate>validate-per-page-value-list</validate>
72+
<validate>validate-per-page-value-list required-entry</validate>
7373
</field>
7474
<field id="list_per_page" translate="label comment" type="text" sortOrder="5" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
7575
<label>Products per Page on List Default Value</label>

app/code/Magento/Quote/Model/QuoteManagement.php

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -532,19 +532,7 @@ protected function submitQuote(QuoteEntity $quote, $orderData = [])
532532
);
533533
$this->quoteRepository->save($quote);
534534
} catch (\Exception $e) {
535-
if (!empty($this->addressesToSync)) {
536-
foreach ($this->addressesToSync as $addressId) {
537-
$this->addressRepository->deleteById($addressId);
538-
}
539-
}
540-
$this->eventManager->dispatch(
541-
'sales_model_service_quote_submit_failure',
542-
[
543-
'order' => $order,
544-
'quote' => $quote,
545-
'exception' => $e
546-
]
547-
);
535+
$this->rollbackAddresses($quote, $order, $e);
548536
throw $e;
549537
}
550538
return $order;
@@ -611,4 +599,41 @@ protected function _prepareCustomerQuote($quote)
611599
$shipping->setIsDefaultBilling(true);
612600
}
613601
}
602+
603+
/**
604+
* Remove related to order and quote addresses and submit exception to further processing.
605+
*
606+
* @param Quote $quote
607+
* @param \Magento\Sales\Api\Data\OrderInterface $order
608+
* @param \Exception $e
609+
* @throws \Exception
610+
*/
611+
private function rollbackAddresses(
612+
QuoteEntity $quote,
613+
\Magento\Sales\Api\Data\OrderInterface $order,
614+
\Exception $e
615+
): void {
616+
try {
617+
if (!empty($this->addressesToSync)) {
618+
foreach ($this->addressesToSync as $addressId) {
619+
$this->addressRepository->deleteById($addressId);
620+
}
621+
}
622+
$this->eventManager->dispatch(
623+
'sales_model_service_quote_submit_failure',
624+
[
625+
'order' => $order,
626+
'quote' => $quote,
627+
'exception' => $e,
628+
]
629+
);
630+
} catch (\Exception $consecutiveException) {
631+
$message = sprintf(
632+
"An exception occurred on 'sales_model_service_quote_submit_failure' event: %s",
633+
$consecutiveException->getMessage()
634+
);
635+
636+
throw new \Exception($message, 0, $e);
637+
}
638+
}
614639
}
Lines changed: 64 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,27 @@
11
<?php
22
/**
3-
*
43
* Copyright © Magento, Inc. All rights reserved.
54
* See COPYING.txt for license details.
65
*/
6+
declare(strict_types=1);
7+
78
namespace Magento\Shipping\Controller\Adminhtml\Order\Shipment;
89

910
use Magento\Backend\App\Action;
11+
use Magento\Framework\App\Action\HttpPostActionInterface;
12+
use Magento\Framework\App\ObjectManager;
13+
use Magento\Framework\Controller\ResultFactory;
14+
use Magento\Framework\Controller\ResultInterface;
15+
use Magento\Framework\Exception\LocalizedException;
16+
use Magento\Framework\Serialize\SerializerInterface;
17+
use Magento\Sales\Api\Data\ShipmentTrackInterfaceFactory;
18+
use Magento\Sales\Api\ShipmentRepositoryInterface;
19+
use Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader;
1020

11-
class AddTrack extends \Magento\Backend\App\Action
21+
/**
22+
* Add new tracking number to shipment controller.
23+
*/
24+
class AddTrack extends Action implements HttpPostActionInterface
1225
{
1326
/**
1427
* Authorization level of a basic admin session
@@ -18,56 +31,84 @@ class AddTrack extends \Magento\Backend\App\Action
1831
const ADMIN_RESOURCE = 'Magento_Sales::shipment';
1932

2033
/**
21-
* @var \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader
34+
* @var ShipmentLoader
2235
*/
2336
protected $shipmentLoader;
2437

38+
/**
39+
* @var ShipmentRepositoryInterface
40+
*/
41+
private $shipmentRepository;
42+
43+
/**
44+
* @var ShipmentTrackInterfaceFactory
45+
*/
46+
private $trackFactory;
47+
48+
/**
49+
* @var SerializerInterface
50+
*/
51+
private $serializer;
52+
2553
/**
2654
* @param Action\Context $context
27-
* @param \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader
55+
* @param ShipmentLoader $shipmentLoader
56+
* @param ShipmentRepositoryInterface|null $shipmentRepository
57+
* @param ShipmentTrackInterfaceFactory|null $trackFactory
58+
* @param SerializerInterface|null $serializer
2859
*/
2960
public function __construct(
3061
Action\Context $context,
31-
\Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader
62+
ShipmentLoader $shipmentLoader,
63+
ShipmentRepositoryInterface $shipmentRepository = null,
64+
ShipmentTrackInterfaceFactory $trackFactory = null,
65+
SerializerInterface $serializer = null
3266
) {
33-
$this->shipmentLoader = $shipmentLoader;
3467
parent::__construct($context);
68+
69+
$this->shipmentLoader = $shipmentLoader;
70+
$this->shipmentRepository = $shipmentRepository ?: ObjectManager::getInstance()
71+
->get(ShipmentRepositoryInterface::class);
72+
$this->trackFactory = $trackFactory ?: ObjectManager::getInstance()
73+
->get(ShipmentTrackInterfaceFactory::class);
74+
$this->serializer = $serializer ?: ObjectManager::getInstance()
75+
->get(SerializerInterface::class);
3576
}
3677

3778
/**
38-
* Add new tracking number action
79+
* Add new tracking number action.
3980
*
40-
* @return void
41-
* @throws \Magento\Framework\Exception\LocalizedException
81+
* @return ResultInterface
4282
*/
4383
public function execute()
4484
{
4585
try {
4686
$carrier = $this->getRequest()->getPost('carrier');
4787
$number = $this->getRequest()->getPost('number');
4888
$title = $this->getRequest()->getPost('title');
89+
4990
if (empty($carrier)) {
50-
throw new \Magento\Framework\Exception\LocalizedException(__('Please specify a carrier.'));
91+
throw new LocalizedException(__('Please specify a carrier.'));
5192
}
5293
if (empty($number)) {
53-
throw new \Magento\Framework\Exception\LocalizedException(__('Please enter a tracking number.'));
94+
throw new LocalizedException(__('Please enter a tracking number.'));
5495
}
96+
5597
$this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
5698
$this->shipmentLoader->setShipmentId($this->getRequest()->getParam('shipment_id'));
5799
$this->shipmentLoader->setShipment($this->getRequest()->getParam('shipment'));
58100
$this->shipmentLoader->setTracking($this->getRequest()->getParam('tracking'));
59101
$shipment = $this->shipmentLoader->load();
60102
if ($shipment) {
61-
$track = $this->_objectManager->create(
62-
\Magento\Sales\Model\Order\Shipment\Track::class
63-
)->setNumber(
103+
$track = $this->trackFactory->create()->setNumber(
64104
$number
65105
)->setCarrierCode(
66106
$carrier
67107
)->setTitle(
68108
$title
69109
);
70-
$shipment->addTrack($track)->save();
110+
$shipment->addTrack($track);
111+
$this->shipmentRepository->save($shipment);
71112

72113
$this->_view->loadLayout();
73114
$this->_view->getPage()->getConfig()->getTitle()->prepend(__('Shipments'));
@@ -78,16 +119,18 @@ public function execute()
78119
'message' => __('We can\'t initialize shipment for adding tracking number.'),
79120
];
80121
}
81-
} catch (\Magento\Framework\Exception\LocalizedException $e) {
122+
} catch (LocalizedException $e) {
82123
$response = ['error' => true, 'message' => $e->getMessage()];
83124
} catch (\Exception $e) {
84125
$response = ['error' => true, 'message' => __('Cannot add tracking number.')];
85126
}
86-
if (is_array($response)) {
87-
$response = $this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class)->jsonEncode($response);
88-
$this->getResponse()->representJson($response);
89-
} else {
90-
$this->getResponse()->setBody($response);
127+
128+
if (\is_array($response)) {
129+
$response = $this->serializer->serialize($response);
130+
131+
return $this->resultFactory->create(ResultFactory::TYPE_JSON)->setJsonData($response);
91132
}
133+
134+
return $this->resultFactory->create(ResultFactory::TYPE_RAW)->setContents($response);
92135
}
93136
}

0 commit comments

Comments
 (0)