Skip to content

Commit f1fc8c1

Browse files
committed
ACP2E-2910: Order Rest API call is taking a long time to execute
1 parent 57a3231 commit f1fc8c1

File tree

6 files changed

+197
-256
lines changed

6 files changed

+197
-256
lines changed

app/code/Magento/GiftMessage/Model/Plugin/OrderGet.php

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,34 +21,18 @@ class OrderGet
2121
*/
2222
protected $giftMessageOrderItemRepository;
2323

24-
/**
25-
* @var \Magento\Sales\Api\Data\OrderExtensionFactory
26-
*/
27-
protected $orderExtensionFactory;
28-
29-
/**
30-
* @var \Magento\Sales\Api\Data\OrderItemExtensionFactory
31-
*/
32-
protected $orderItemExtensionFactory;
33-
3424
/**
3525
* Init plugin
3626
*
3727
* @param \Magento\GiftMessage\Api\OrderRepositoryInterface $giftMessageOrderRepository
3828
* @param \Magento\GiftMessage\Api\OrderItemRepositoryInterface $giftMessageOrderItemRepository
39-
* @param \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory
40-
* @param \Magento\Sales\Api\Data\OrderItemExtensionFactory $orderItemExtensionFactory
4129
*/
4230
public function __construct(
4331
\Magento\GiftMessage\Api\OrderRepositoryInterface $giftMessageOrderRepository,
44-
\Magento\GiftMessage\Api\OrderItemRepositoryInterface $giftMessageOrderItemRepository,
45-
\Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory,
46-
\Magento\Sales\Api\Data\OrderItemExtensionFactory $orderItemExtensionFactory
32+
\Magento\GiftMessage\Api\OrderItemRepositoryInterface $giftMessageOrderItemRepository
4733
) {
4834
$this->giftMessageOrderRepository = $giftMessageOrderRepository;
4935
$this->giftMessageOrderItemRepository = $giftMessageOrderItemRepository;
50-
$this->orderExtensionFactory = $orderExtensionFactory;
51-
$this->orderItemExtensionFactory = $orderItemExtensionFactory;
5236
}
5337

5438
/**
@@ -78,21 +62,18 @@ public function afterGet(
7862
protected function getOrderGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)
7963
{
8064
$extensionAttributes = $order->getExtensionAttributes();
81-
if ($extensionAttributes && $extensionAttributes->getGiftMessage()) {
65+
if (($extensionAttributes && $extensionAttributes->getGiftMessage()) || !$order->getGiftMessageId()) {
8266
return $order;
8367
}
8468

8569
try {
86-
/** @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
8770
$giftMessage = $this->giftMessageOrderRepository->get($order->getEntityId());
8871
} catch (NoSuchEntityException $e) {
8972
return $order;
9073
}
9174

92-
/** @var \Magento\Sales\Api\Data\OrderExtension $orderExtension */
93-
$orderExtension = $extensionAttributes ? $extensionAttributes : $this->orderExtensionFactory->create();
94-
$orderExtension->setGiftMessage($giftMessage);
95-
$order->setExtensionAttributes($orderExtension);
75+
$extensionAttributes->setGiftMessage($giftMessage);
76+
$order->setExtensionAttributes($extensionAttributes);
9677

9778
return $order;
9879
}
@@ -107,15 +88,16 @@ protected function getOrderItemGiftMessage(\Magento\Sales\Api\Data\OrderInterfac
10788
{
10889
$orderItems = $order->getItems();
10990
if (null !== $orderItems) {
110-
/** @var \Magento\Sales\Api\Data\OrderItemInterface $orderItem */
11191
foreach ($orderItems as $orderItem) {
11292
$extensionAttributes = $orderItem->getExtensionAttributes();
113-
if ($extensionAttributes && $extensionAttributes->getGiftMessage()) {
93+
if (
94+
($extensionAttributes && $extensionAttributes->getGiftMessage()) ||
95+
!$orderItem->getGiftMessageId()
96+
) {
11497
continue;
11598
}
11699

117100
try {
118-
/* @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
119101
$giftMessage = $this->giftMessageOrderItemRepository->get(
120102
$order->getEntityId(),
121103
$orderItem->getItemId()
@@ -124,12 +106,8 @@ protected function getOrderItemGiftMessage(\Magento\Sales\Api\Data\OrderInterfac
124106
continue;
125107
}
126108

127-
/** @var \Magento\Sales\Api\Data\OrderItemExtension $orderItemExtension */
128-
$orderItemExtension = $extensionAttributes
129-
? $extensionAttributes
130-
: $this->orderItemExtensionFactory->create();
131-
$orderItemExtension->setGiftMessage($giftMessage);
132-
$orderItem->setExtensionAttributes($orderItemExtension);
109+
$extensionAttributes->setGiftMessage($giftMessage);
110+
$orderItem->setExtensionAttributes($extensionAttributes);
133111
}
134112
}
135113
return $order;

app/code/Magento/Sales/Model/OrderRepository.php

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313
use Magento\Framework\Exception\InputException;
1414
use Magento\Framework\Exception\NoSuchEntityException;
1515
use Magento\Framework\ObjectManager\ResetAfterRequestInterface;
16-
use Magento\Sales\Api\Data\OrderExtensionFactory;
1716
use Magento\Sales\Api\Data\OrderExtensionInterface;
1817
use Magento\Sales\Api\Data\OrderInterface;
1918
use Magento\Sales\Api\Data\OrderSearchResultInterfaceFactory as SearchResultFactory;
20-
use Magento\Sales\Api\Data\ShippingAssignmentInterface;
2119
use Magento\Sales\Model\Order\ShippingAssignmentBuilder;
2220
use Magento\Sales\Model\ResourceModel\Metadata;
2321
use Magento\Tax\Api\OrderTaxManagementInterface;
@@ -43,11 +41,6 @@ class OrderRepository implements \Magento\Sales\Api\OrderRepositoryInterface, Re
4341
*/
4442
protected $searchResultFactory = null;
4543

46-
/**
47-
* @var OrderExtensionFactory
48-
*/
49-
private $orderExtensionFactory;
50-
5144
/**
5245
* @var ShippingAssignmentBuilder
5346
*/
@@ -89,7 +82,6 @@ class OrderRepository implements \Magento\Sales\Api\OrderRepositoryInterface, Re
8982
* @param Metadata $metadata
9083
* @param SearchResultFactory $searchResultFactory
9184
* @param CollectionProcessorInterface|null $collectionProcessor
92-
* @param \Magento\Sales\Api\Data\OrderExtensionFactory|null $orderExtensionFactory
9385
* @param OrderTaxManagementInterface|null $orderTaxManagement
9486
* @param PaymentAdditionalInfoInterfaceFactory|null $paymentAdditionalInfoFactory
9587
* @param JsonSerializer|null $serializer
@@ -100,7 +92,6 @@ public function __construct(
10092
Metadata $metadata,
10193
SearchResultFactory $searchResultFactory,
10294
CollectionProcessorInterface $collectionProcessor = null,
103-
\Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory = null,
10495
OrderTaxManagementInterface $orderTaxManagement = null,
10596
PaymentAdditionalInfoInterfaceFactory $paymentAdditionalInfoFactory = null,
10697
JsonSerializer $serializer = null,
@@ -111,8 +102,6 @@ public function __construct(
111102
$this->searchResultFactory = $searchResultFactory;
112103
$this->collectionProcessor = $collectionProcessor ?: ObjectManager::getInstance()
113104
->get(\Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface::class);
114-
$this->orderExtensionFactory = $orderExtensionFactory ?: ObjectManager::getInstance()
115-
->get(\Magento\Sales\Api\Data\OrderExtensionFactory::class);
116105
$this->orderTaxManagement = $orderTaxManagement ?: ObjectManager::getInstance()
117106
->get(OrderTaxManagementInterface::class);
118107
$this->paymentAdditionalInfoFactory = $paymentAdditionalInfoFactory ?: ObjectManager::getInstance()
@@ -159,13 +148,12 @@ public function get($id)
159148
*
160149
* @param OrderInterface $order
161150
* @return void
151+
* @throws NoSuchEntityException
162152
*/
163153
private function setOrderTaxDetails(OrderInterface $order)
164154
{
165155
$extensionAttributes = $order->getExtensionAttributes();
166-
if ($extensionAttributes === null) {
167-
$extensionAttributes = $this->orderExtensionFactory->create();
168-
}
156+
169157
$orderTaxDetails = $this->orderTaxManagement->getOrderTaxDetails($order->getEntityId());
170158
$appliedTaxes = $orderTaxDetails->getAppliedTaxes();
171159

@@ -187,9 +175,6 @@ private function setOrderTaxDetails(OrderInterface $order)
187175
private function setPaymentAdditionalInfo(OrderInterface $order): void
188176
{
189177
$extensionAttributes = $order->getExtensionAttributes();
190-
if ($extensionAttributes === null) {
191-
$extensionAttributes = $this->orderExtensionFactory->create();
192-
}
193178

194179
$paymentAdditionalInformation = [];
195180
$payment = $order->getPayment();
@@ -220,10 +205,10 @@ private function setPaymentAdditionalInfo(OrderInterface $order): void
220205
*
221206
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
222207
* @return \Magento\Sales\Api\Data\OrderSearchResultInterface
208+
* @throws NoSuchEntityException
223209
*/
224210
public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
225211
{
226-
/** @var \Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult */
227212
$searchResult = $this->searchResultFactory->create();
228213
$this->extensionAttributesJoinProcessor->process($searchResult);
229214
$this->collectionProcessor->process($searchCriteria, $searchResult);
@@ -305,9 +290,7 @@ private function setShippingAssignments(OrderInterface $order)
305290
/** @var OrderExtensionInterface $extensionAttributes */
306291
$extensionAttributes = $order->getExtensionAttributes();
307292

308-
if ($extensionAttributes === null) {
309-
$extensionAttributes = $this->orderExtensionFactory->create();
310-
} elseif ($extensionAttributes->getShippingAssignments() !== null) {
293+
if ($extensionAttributes->getShippingAssignments() !== null) {
311294
return;
312295
}
313296
$this->shippingAssignmentBuilder->setOrder($order);

app/code/Magento/Sales/Model/ResourceModel/Order/Address/Collection.php

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,4 @@ protected function _construct()
4141
AddressResource::class
4242
);
4343
}
44-
45-
/**
46-
* Redeclare after load method for dispatch event
47-
*
48-
* @return $this
49-
*/
50-
protected function _afterLoad()
51-
{
52-
parent::_afterLoad();
53-
54-
$this->_eventManager->dispatch($this->_eventPrefix . '_load_after', [$this->_eventObject => $this]);
55-
56-
return $this;
57-
}
5844
}

app/code/Magento/Tax/Model/Plugin/AddTaxesExtensionAttribute.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
namespace Magento\Tax\Model\Plugin;
2020

21-
use Magento\Sales\Api\Data\OrderExtensionFactory;
22-
use Magento\Sales\Api\Data\OrderItemExtensionFactory;
2321
use Magento\Sales\Api\Data\OrderInterface;
2422
use Magento\Sales\Api\Data\OrderSearchResultInterface;
2523
use Magento\Sales\Api\OrderRepositoryInterface;
@@ -38,15 +36,11 @@ class AddTaxesExtensionAttribute
3836
/**
3937
* @param TaxCollectionFactory $taxCollectionFactory
4038
* @param TaxItemCollectionFactory $taxItemCollectionFactory
41-
* @param OrderExtensionFactory $orderExtensionFactory
42-
* @param OrderItemExtensionFactory $orderItemExtensionFactory
4339
* @param Converter $dataConverter
4440
*/
4541
public function __construct(
4642
private readonly TaxCollectionFactory $taxCollectionFactory,
4743
private readonly TaxItemCollectionFactory $taxItemCollectionFactory,
48-
private readonly OrderExtensionFactory $orderExtensionFactory,
49-
private readonly OrderItemExtensionFactory $orderItemExtensionFactory,
5044
private readonly Converter $dataConverter
5145
) {
5246
}
@@ -145,9 +139,6 @@ private function execute(array $orders): void
145139
}
146140
$this->addOrderItemsAssociatedItemizedTaxes($order, $orderItemAssociatedTaxes);
147141
$extensionAttributes = $order->getExtensionAttributes();
148-
if ($extensionAttributes === null) {
149-
$extensionAttributes = $this->orderExtensionFactory->create();
150-
}
151142
$extensionAttributes->setAdditionalItemizedTaxes($additionalItemizedTaxes);
152143
$extensionAttributes->setTaxes($taxes);
153144
}
@@ -180,9 +171,6 @@ private function addOrderItemsAssociatedItemizedTaxes(OrderInterface $order, arr
180171
{
181172
foreach ($order->getItems() as $orderItem) {
182173
$extensionAttributes = $orderItem->getExtensionAttributes();
183-
if ($extensionAttributes === null) {
184-
$extensionAttributes = $this->orderItemExtensionFactory->create();
185-
}
186174
$extensionAttributes->setItemizedTaxes($orderItemAssociatedTaxes[$orderItem->getItemId()] ?? []);
187175
$orderItem->setExtensionAttributes($extensionAttributes);
188176
}

app/code/Magento/Tax/Model/Sales/Order/TaxManagement.php

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace Magento\Tax\Model\Sales\Order;
99

10-
use Magento\Framework\Exception\NoSuchEntityException;
1110
use Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterfaceFactory as TaxDetailsDataObjectFactory;
1211
use Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterface as AppliedTax;
1312
use Magento\Sales\Model\Order\Tax\Item;
@@ -19,11 +18,6 @@ class TaxManagement implements \Magento\Tax\Api\OrderTaxManagementInterface
1918
*/
2019
protected $orderItemTaxFactory;
2120

22-
/**
23-
* @var \Magento\Sales\Model\OrderFactory
24-
*/
25-
protected $orderFactory;
26-
2721
/**
2822
* @var \Magento\Tax\Api\Data\OrderTaxDetailsInterfaceFactory
2923
*/
@@ -40,20 +34,17 @@ class TaxManagement implements \Magento\Tax\Api\OrderTaxManagementInterface
4034
protected $appliedTaxDataObjectFactory;
4135

4236
/**
43-
* @param \Magento\Sales\Model\OrderFactory $orderFactory
4437
* @param \Magento\Sales\Model\ResourceModel\Order\Tax\ItemFactory $orderItemTaxFactory
4538
* @param \Magento\Tax\Api\Data\OrderTaxDetailsInterfaceFactory $orderTaxDetailsDataObjectFactory
4639
* @param \Magento\Tax\Api\Data\OrderTaxDetailsItemInterfaceFactory $itemDataObjectFactory
4740
* @param TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory
4841
*/
4942
public function __construct(
50-
\Magento\Sales\Model\OrderFactory $orderFactory,
5143
\Magento\Sales\Model\ResourceModel\Order\Tax\ItemFactory $orderItemTaxFactory,
5244
\Magento\Tax\Api\Data\OrderTaxDetailsInterfaceFactory $orderTaxDetailsDataObjectFactory,
5345
\Magento\Tax\Api\Data\OrderTaxDetailsItemInterfaceFactory $itemDataObjectFactory,
5446
TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory
5547
) {
56-
$this->orderFactory = $orderFactory;
5748
$this->orderItemTaxFactory = $orderItemTaxFactory;
5849
$this->orderTaxDetailsDataObjectFactory = $orderTaxDetailsDataObjectFactory;
5950
$this->itemDataObjectFactory = $itemDataObjectFactory;
@@ -133,16 +124,6 @@ protected function aggregateAppliedTaxes(TaxDetailsDataObjectFactory $appliedTax
133124
*/
134125
public function getOrderTaxDetails($orderId)
135126
{
136-
$order = $this->orderFactory->create()->load($orderId);
137-
if (!$order) {
138-
throw new NoSuchEntityException(
139-
__(
140-
'No such entity with %fieldName = %fieldValue',
141-
['fieldName' => 'orderId', 'fieldValue' => $orderId]
142-
)
143-
);
144-
}
145-
146127
$orderItemAppliedTaxes = $this->orderItemTaxFactory->create()->getTaxItemsByOrderId($orderId);
147128
$itemsData = [];
148129
foreach ($orderItemAppliedTaxes as $itemAppliedTax) {

0 commit comments

Comments
 (0)