/** * test for convert method */ public function testConvert() { $this->quoteItemMock->expects($this->exactly(2))->method('getProduct')->willReturn($this->productMock); $this->productMock->expects($this->once())->method('getTypeInstance')->willReturn($this->productTypeMock); $this->productTypeMock->expects($this->once())->method('getOrderOptions')->with($this->productMock)->willReturn(['option']); $this->objectCopyServiceMock->expects($this->at(0))->method('getDataFromFieldset')->with('quote_convert_item', 'to_order_item', $this->quoteItemMock)->willReturn([]); $this->objectCopyServiceMock->expects($this->at(1))->method('getDataFromFieldset')->with('quote_convert_item', 'to_order_item_discount', $this->quoteItemMock)->willReturn([]); $this->orderItemFactoryMock->expects($this->once())->method('create')->willReturn($this->orderItemMock); $this->assertInstanceOf('Magento\\Sales\\Model\\Order\\Item', $this->converter->convert($this->quoteItemMock, [])); }
/** * {@inheritdoc} */ public function convert($item, $data = array()) { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'convert'); if (!$pluginInfo) { return parent::convert($item, $data); } else { return $this->___callPlugins('convert', func_get_args(), $pluginInfo); } }
/** * @param Quote $quote * @return array */ protected function resolveItems(QuoteEntity $quote) { $quoteItems = $quote->getAllItems(); $orderItems = []; foreach ($quoteItems as $quoteItem) { $parentItem = isset($orderItems[$quoteItem->getParentItemId()]) ? $orderItems[$quoteItem->getParentItemId()] : null; $orderItems[$quoteItem->getId()] = $this->quoteItemToOrderItem->convert($quoteItem, ['parent_item' => $parentItem]); } return array_values($orderItems); }
/** * @param Quote $quote * @return array */ protected function resolveItems(QuoteEntity $quote) { $quoteItems = []; foreach ($quote->getAllItems() as $quoteItem) { /** @var \Magento\Quote\Model\Resource\Quote\Item $quoteItem */ $quoteItems[$quoteItem->getId()] = $quoteItem; } $orderItems = []; foreach ($quoteItems as $quoteItem) { $parentItem = isset($orderItems[$quoteItem->getParentItemId()]) ? $orderItems[$quoteItem->getParentItemId()] : null; $orderItems[$quoteItem->getId()] = $this->quoteItemToOrderItem->convert($quoteItem, ['parent_item' => $parentItem]); } return array_values($orderItems); }
/** * @param Quote $quote * @return array */ protected function resolveItems(QuoteEntity $quote) { $quoteItems = $quote->getAllItems(); for ($i = 0; $i < count($quoteItems) - 1; $i++) { for ($j = 0; $j < count($quoteItems) - $i - 1; $j++) { if ($quoteItems[$i]->getParentItemId() == $quoteItems[$j]->getId()) { $tempItem = $quoteItems[$i]; $quoteItems[$i] = $quoteItems[$j]; $quoteItems[$j] = $tempItem; } } } $orderItems = []; foreach ($quoteItems as $quoteItem) { $parentItem = isset($orderItems[$quoteItem->getParentItemId()]) ? $orderItems[$quoteItem->getParentItemId()] : null; $orderItems[$quoteItem->getId()] = $this->quoteItemToOrderItem->convert($quoteItem, ['parent_item' => $parentItem]); } return array_values($orderItems); }
/** * Prepare order based on quote address * * @param \Magento\Quote\Model\Quote\Address $address * @return \Magento\Sales\Model\Order * @throws \Magento\Checkout\Exception */ protected function _prepareOrder(\Magento\Quote\Model\Quote\Address $address) { $quote = $this->getQuote(); $quote->unsReservedOrderId(); $quote->reserveOrderId(); $quote->collectTotals(); $order = $this->quoteAddressToOrder->convert($address); $order->setQuote($quote); $order->setBillingAddress($this->quoteAddressToOrderAddress->convert($quote->getBillingAddress())); if ($address->getAddressType() == 'billing') { $order->setIsVirtual(1); } else { $order->setShippingAddress($this->quoteAddressToOrderAddress->convert($address)); } $order->setPayment($this->quotePaymentToOrderPayment->convert($quote->getPayment())); if ($this->priceCurrency->round($address->getGrandTotal()) == 0) { $order->getPayment()->setMethod('free'); } foreach ($address->getAllItems() as $item) { $_quoteItem = $item->getQuoteItem(); if (!$_quoteItem) { throw new \Magento\Checkout\Exception(__('Item not found or already ordered')); } $item->setProductType($_quoteItem->getProductType())->setProductOptions($_quoteItem->getProduct()->getTypeInstance()->getOrderOptions($_quoteItem->getProduct())); $orderItem = $this->quoteItemToOrderItem->convert($item); if ($item->getParentItem()) { $orderItem->setParentItem($order->getItemByQuoteItemId($item->getParentItem()->getId())); } $order->addItem($orderItem); } return $order; }