/** * 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); } }
/** * Prepares custom price and sets into a BuyRequest object as option of quote item * * @param array $info * @param Item $item * @return array */ protected function setCustomPrice(array $info, Item $item) { $itemPrice = $this->parseCustomPrice($info['custom_price']); /** @var \Magento\Framework\Object $infoBuyRequest */ $infoBuyRequest = $item->getBuyRequest(); if ($infoBuyRequest) { $infoBuyRequest->setCustomPrice($itemPrice); $infoBuyRequest->setValue(serialize($infoBuyRequest->getData())); $infoBuyRequest->setCode('info_buyRequest'); $infoBuyRequest->setProduct($item->getProduct()); $item->addOption($infoBuyRequest); } $item->setCustomPrice($itemPrice); $item->setOriginalCustomPrice($itemPrice); }