public function basketMergeProduct(BasketInterface $basket, ProductInterface $product, BasketElementInterface $newBasketElement)
{
$event = new AddBasketElementEvent($basket, $newBasketElement, $product, $this);
$this->getEventDispatcher()->dispatch(BasketEvents::PRE_MERGE_PRODUCT, $event);
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);
$event = new AddBasketElementEvent($basket, $basketElement, $product, $this);
$this->getEventDispatcher()->dispatch(BasketEvents::POST_MERGE_PRODUCT, $event);
return $event->getBasketElement();
}