/**
  * Given a cart line, creates a new order line
  *
  * @param OrderInterface    $order    Order
  * @param CartLineInterface $cartLine Cart Line
  *
  * @return OrderLineInterface OrderLine created
  */
 public function createOrderLineByCartLine(OrderInterface $order, CartLineInterface $cartLine)
 {
     $orderLine = $cartLine->getOrderLine() instanceof OrderLineInterface ? $cartLine->getOrderLine() : $this->orderLineFactory->create();
     /**
      * @var OrderLineInterface $orderLine
      */
     $orderLine->setOrder($order)->setPurchasable($cartLine->getPurchasable())->setQuantity($cartLine->getQuantity())->setProductAmount($cartLine->getProductAmount())->setAmount($cartLine->getAmount())->setHeight($cartLine->getHeight())->setWidth($cartLine->getWidth())->setDepth($cartLine->getDepth())->setWeight($cartLine->getWeight());
     $this->orderLineEventDispatcher->dispatchOrderLineOnCreatedEvent($order, $cartLine, $orderLine);
     return $orderLine;
 }
示例#2
0
 /**
  * Loads CartLine prices.
  * This method does not consider Coupon
  *
  * @param CartLineInterface $cartLine Cart line
  *
  * @return CartLineInterface Line with prices loaded
  */
 protected function loadCartLinePrices(CartLineInterface $cartLine)
 {
     $purchasable = $cartLine->getPurchasable();
     $productPrice = $purchasable->getPrice();
     /**
      * If present, reducedPrice will be used as product price in current CartLine.
      */
     if ($purchasable->getReducedPrice()->getAmount() > 0) {
         $productPrice = $purchasable->getReducedPrice();
     }
     /**
      * Setting amounts for current CartLine.
      *
      * Line Currency was set by CartManager::addProduct when factorying CartLine
      */
     $cartLine->setProductAmount($productPrice->multiply($cartLine->getQuantity()));
     $cartLine->setAmount($cartLine->getProductAmount());
     return $cartLine;
 }