/** * Set qty and custom price for quote item * * @param Item $item * @param Object $request * @param Product $candidate * @return void */ public function prepare(Item $item, Object $request, Product $candidate) { /** * We specify qty after we know about parent (for stock) */ $item->addQty($candidate->getCartQty()); $customPrice = $request->getCustomPrice(); if (!empty($customPrice)) { $item->setCustomPrice($customPrice); $item->setOriginalCustomPrice($customPrice); } }
/** * Tests that adding a quantity to an item with a parent item and an id will not change the quantity. */ public function testAddQtyExistingParentItemAndId() { $existingQuantity = 2; $quantityToAdd = 3; $parentItemMock = $this->getMockBuilder('Magento\\Quote\\Model\\Quote\\Item')->setMethods(['addChild', '__wakeup'])->disableOriginalConstructor()->getMock(); $this->model->setParentItem($parentItemMock); $this->model->setId(1); $this->model->setData('qty', $existingQuantity); $this->model->addQty($quantityToAdd); $this->assertEquals($existingQuantity, $this->model->getQty()); $this->assertNull($this->model->getQtyToAdd()); }
/** * Set qty and custom price for quote item * * @param Item $item * @param \Magento\Framework\Object $request * @param Product $candidate * @return void */ public function prepare(Item $item, Object $request, Product $candidate) { /** * We specify qty after we know about parent (for stock) */ if ($request->getResetCount() && !$candidate->getStickWithinParent() && $item->getId() == $request->getId()) { $item->setData(CartItemInterface::KEY_QTY, 0); } $item->addQty($candidate->getCartQty()); $customPrice = $request->getCustomPrice(); if (!empty($customPrice)) { $item->setCustomPrice($customPrice); $item->setOriginalCustomPrice($customPrice); } }