9 use Magento\Catalog\Api\Data\ProductOptionExtensionFactory;
11 use Magento\Catalog\Model\ProductOptionFactory;
19 use Magento\Sales\Api\Data\OrderItemSearchResultInterfaceFactory;
67 private $collectionProcessor;
94 $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
105 public function get(
$id)
110 if (!isset($this->registry[
$id])) {
115 __(
"The entity that was requested doesn't exist. Verify the entity and try again.")
123 return $this->registry[
$id];
135 $searchResult = $this->searchResultFactory->create();
139 foreach ($searchResult->getItems() as
$orderItem) {
143 return $searchResult;
154 $this->metadata->getMapper()->delete(
$entity);
155 unset($this->registry[
$entity->getEntityId()]);
179 if (
$entity->getProductOption()) {
181 $entity->setProductOptions([
'info_buyRequest' =>
$request->toArray()]);
184 $this->metadata->getMapper()->save(
$entity);
186 return $this->registry[
$entity->getEntityId()];
201 if (isset($this->processorPool[$productType])
203 $data = $this->processorPool[$productType]->convertToProductOption(
$request);
209 if (isset($this->processorPool[
'custom_options'])
211 $data = $this->processorPool[
'custom_options']->convertToProductOption(
$request);
227 private function addParentItem(OrderItemInterface
$orderItem)
229 if ($parentId =
$orderItem->getParentItemId()) {
230 $orderItem->setParentItem($this->
get($parentId));
268 $request = $this->objectFactory->create([
'qty' =>
$entity->getQtyOrdered()]);
270 $productType =
$entity->getProductType();
271 if (isset($this->processorPool[$productType])
272 && !
$entity->getParentItemId()) {
275 $requestUpdate = $this->processorPool[$productType]->convertToBuyRequest(
$productOption);
276 $request->addData($requestUpdate->getData());
280 if (isset($this->processorPool[
'custom_options'])
281 && !
$entity->getParentItemId()) {
284 $requestUpdate = $this->processorPool[
'custom_options']->convertToBuyRequest(
$productOption);
285 $request->addData($requestUpdate->getData());
298 private function getCollectionProcessor()
300 if (!$this->collectionProcessor) {
305 return $this->collectionProcessor;
save(OrderItemInterface $entity)
setProductOption(OrderItemInterface $orderItem, array $data)
__construct(DataObjectFactory $objectFactory, Metadata $metadata, OrderItemSearchResultInterfaceFactory $searchResultFactory, ProductOptionFactory $productOptionFactory, ProductOptionExtensionFactory $extensionFactory, array $processorPool=[], CollectionProcessorInterface $collectionProcessor=null)
getBuyRequest(OrderItemInterface $entity)
getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)