/** * 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; }
/** * 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; }