/**
* @param \Sonata\Component\Basket\BasketElementInterface $basketElement A basket element instance
* @param string $format A format to obtain raw product
*
* @return \Sonata\Component\Order\OrderElementInterface
*/
public function createOrderElement(BasketElementInterface $basketElement, $format = 'json')
{
$orderElement = new $this->orderElementClassName();
$orderElement->setQuantity($basketElement->getQuantity());
$orderElement->setUnitPrice($basketElement->getUnitPrice(true));
$orderElement->setPrice($basketElement->getPrice(true));
$orderElement->setPriceIncludingVat($basketElement->isPriceIncludingVat());
$orderElement->setVatRate($basketElement->getVatRate());
$orderElement->setDesignation($basketElement->getName());
$orderElement->setProductType($this->getCode());
$orderElement->setStatus(OrderInterface::STATUS_PENDING);
$orderElement->setDeliveryStatus(ServiceDeliveryInterface::STATUS_OPEN);
$orderElement->setCreatedAt(new \DateTime());
$orderElement->setOptions($basketElement->getOptions());
$product = $basketElement->getProduct();
$orderElement->setDescription($product->getDescription());
$orderElement->setProductId($product->getId());
$orderElement->setRawProduct($this->getRawProduct($product, $format));
return $orderElement;
}