/** * Delete quote item. If it does not have identifier then it will be only removed from collection * * @param \Magento\Sales\Model\Quote\Item $item * @return $this */ public function deleteItem(\Magento\Sales\Model\Quote\Item $item) { if ($item->getId()) { $this->removeItem($item->getId()); } else { $quoteItems = $this->getItemsCollection(); $items = array($item); if ($item->getHasChildren()) { foreach ($item->getChildren() as $child) { $items[] = $child; } } foreach ($quoteItems as $key => $quoteItem) { foreach ($items as $item) { if ($quoteItem->compare($item)) { $quoteItems->removeItemByKey($key); } } } } return $this; }