public function fromCart(\Jigoshop\Entity\Cart $cart) { $order = new \Jigoshop\Entity\Order($this->options->get('tax.classes')); $state = $cart->getStateToSave(); $state['items'] = unserialize($state['items']); $state['customer'] = unserialize($state['customer']); unset($state['shipping'], $state['payment']); $order->setTaxDefinitions($cart->getTaxDefinitions()); $order->restoreState($state); $shipping = $cart->getShippingMethod(); if ($shipping && $shipping instanceof ShippingMethod) { $order->setShippingMethod($shipping); $order->setShippingTax($cart->getShippingTax()); } $payment = $cart->getPaymentMethod(); if ($payment && $payment instanceof PaymentMethod) { $order->setPaymentMethod($payment); } return $order; }