Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ToOrderItem.php
Go to the documentation of this file.
1 <?php
8 
12 use Magento\Sales\Api\Data\OrderItemInterfaceFactory as OrderItemFactory;
14 
19 {
23  protected $objectCopyService;
24 
28  protected $orderItemFactory;
29 
33  protected $dataObjectHelper;
34 
40  public function __construct(
41  OrderItemFactory $orderItemFactory,
43  \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
44  ) {
45  $this->orderItemFactory = $orderItemFactory;
46  $this->objectCopyService = $objectCopyService;
47  $this->dataObjectHelper = $dataObjectHelper;
48  }
49 
55  public function convert($item, $data = [])
56  {
57  $options = $item->getProductOrderOptions();
58  if (!$options) {
59  $options = $item->getProduct()->getTypeInstance()->getOrderOptions($item->getProduct());
60  }
61  $orderItemData = $this->objectCopyService->getDataFromFieldset(
62  'quote_convert_item',
63  'to_order_item',
64  $item
65  );
66  if (!$item->getNoDiscount()) {
67  $data = array_merge(
68  $data,
69  $this->objectCopyService->getDataFromFieldset(
70  'quote_convert_item',
71  'to_order_item_discount',
72  $item
73  )
74  );
75  }
76 
77  $orderItem = $this->orderItemFactory->create();
78  $this->dataObjectHelper->populateWithArray(
79  $orderItem,
80  array_merge($orderItemData, $data),
81  \Magento\Sales\Api\Data\OrderItemInterface::class
82  );
83  $orderItem->setProductOptions($options);
84  if ($item->getParentItem()) {
85  $orderItem->setQtyOrdered(
86  $orderItemData[OrderItemInterface::QTY_ORDERED] * $item->getParentItem()->getQty()
87  );
88  }
89  return $orderItem;
90  }
91 }
$orderItem
Definition: order.php:30
__construct(OrderItemFactory $orderItemFactory, Copy $objectCopyService, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper)
Definition: ToOrderItem.php:40