public function createOrderFromCart(OrderInterface $cart) { $order = $this->orderManager->createOrder(); $order->setCustomer($cart->getCustomer()); $order->setOrderDate(new \DateTime()); $this->orderManager->setOrderState($order, 'unprocessed'); // $order->setPrices($cart->getPrices()); //TODO: order pricing should be independent from a cart // Copy the (sales) channel if it is provided if (null != $cart->getChannel()) { $order->setChannel($cart->getChannel()); } //$fulfillmentAgreement = $this->orderManager->createFulfillmentAgreement(); //$paymentAgreement = $this->orderManager->createPaymentAgreement(); //$order->setFulfillmentAgreement($fulfillmentAgreement); //$order->setPaymentAgreement($paymentAgreement); $items = $cart->getItems(); if (null != $items) { foreach ($cart->getItems() as $cartItem) { $orderItem = $this->orderManager->addProductToOrder($order, $cartItem->getProduct()); //$orderItem->setPricing($cartItem->getPricing()); $this->orderManager->setItemQuantity($orderItem, $cartItem->getQuantity()); $this->orderManager->setOrderItemState($orderItem, 'unprocessed'); } } return $order; }
public function isValidOpenOrder(OrderInterface $order = null, PartnerInterface $customer = null) { if (null == $order) { return false; } if (null != $customer && $customer != $order->getCustomer()) { return false; } if ($order->getState() != OrderState::OPEN) { return false; } return true; }