Skip to content

Commit f269d8d

Browse files
ENGCOM-1531: Add Parent Item to order item in repository #14614
- Merge Pull Request #14614 from JeroenVanLeusden/magento2:JeroenVanLeusden-patch-1 - Merged commits: 1. f121e1c
2 parents ee59325 + f121e1c commit f269d8d

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

app/code/Magento/Sales/Model/Order/ItemRepository.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public function get($id)
114114
}
115115

116116
$this->addProductOption($orderItem);
117+
$this->addParentItem($orderItem);
117118
$this->registry[$id] = $orderItem;
118119
}
119120
return $this->registry[$id];
@@ -213,6 +214,20 @@ protected function addProductOption(OrderItemInterface $orderItem)
213214
return $this;
214215
}
215216

217+
/**
218+
* Set parent item.
219+
*
220+
* @param OrderItemInterface $orderItem
221+
* @throws InputException
222+
* @throws NoSuchEntityException
223+
*/
224+
private function addParentItem(OrderItemInterface $orderItem)
225+
{
226+
if ($parentId = $orderItem->getParentItemId()) {
227+
$orderItem->setParentItem($this->get($parentId));
228+
}
229+
}
230+
216231
/**
217232
* Set product options data
218233
*
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Sales\Model\Order;
9+
10+
class ItemRepositoryTest extends \PHPUnit\Framework\TestCase
11+
{
12+
/** @var \Magento\Sales\Model\Order */
13+
private $order;
14+
15+
/** @var \Magento\Sales\Api\OrderItemRepositoryInterface */
16+
private $orderItemRepository;
17+
18+
/** @var \Magento\Framework\Api\SearchCriteriaBuilder */
19+
private $searchCriteriaBuilder;
20+
21+
protected function setUp()
22+
{
23+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
24+
25+
$this->order = $objectManager->create(\Magento\Sales\Model\Order::class);
26+
$this->orderItemRepository = $objectManager->create(\Magento\Sales\Api\OrderItemRepositoryInterface::class);
27+
$this->searchCriteriaBuilder = $objectManager->create(\Magento\Framework\Api\SearchCriteriaBuilder::class);
28+
}
29+
30+
/**
31+
* @magentoDataFixture Magento/Sales/_files/order_configurable_product.php
32+
*/
33+
public function testAddOrderItemParent()
34+
{
35+
$this->order->load('100000001', 'increment_id');
36+
37+
foreach ($this->order->getItems() as $item) {
38+
if ($item->getProductType() === \Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) {
39+
$orderItem = $this->orderItemRepository->get($item->getItemId());
40+
$this->assertInstanceOf(\Magento\Sales\Api\Data\OrderItemInterface::class, $orderItem->getParentItem());
41+
}
42+
}
43+
44+
$itemList = $this->orderItemRepository->getList(
45+
$this->searchCriteriaBuilder->addFilter('order_id', $this->order->getId())->create()
46+
);
47+
48+
foreach ($itemList->getItems() as $item) {
49+
if ($item->getProductType() === \Magento\Catalog\Model\Product\Type::TYPE_SIMPLE) {
50+
$this->assertInstanceOf(\Magento\Sales\Api\Data\OrderItemInterface::class, $item->getParentItem());
51+
}
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)