/**
* Merge a product with another when the product is already present into the basket
*
*
* @param \Sonata\Component\Basket\BasketInterface $basket
* @param \Sonata\Component\Product\ProductInterface $product
* @param \Sonata\Component\Basket\BasketElementInterface $newBasketElement
*
* @throws \RuntimeException
*
* @return bool|\Sonata\Component\Basket\BasketElementInterface
*/
public function basketMergeProduct(BasketInterface $basket, ProductInterface $product, BasketElementInterface $newBasketElement)
{
if (!$basket->hasProduct($product)) {
return false;
}
$basketElement = $basket->getElement($product);
if (!$basketElement) {
throw new \RuntimeException('no basket element related to product.id : %s', $product->getId());
}
$basketElement->setQuantity($basketElement->getQuantity() + $newBasketElement->getQuantity());
$this->updateComputationPricesFields($basket, $basketElement, $product);
return $basketElement;
}