protected function finalizeOrder($options = array()) { if (!count($this->order->getShipments())) { throw new ApplicationException('No shipments in order'); } $user = $this->order->user->get(); $user->load(); $newOrder = $this->order->finalize($options); $orderArray = $this->order->toArray(array('payments' => true)); // send order confirmation email if ($this->config->get('EMAIL_NEW_ORDER')) { $email = new Email($this->application); $email->setUser($user); $email->setTemplate('order.new'); $email->set('order', $orderArray); $email->send(); } // notify store admin if ($this->config->get('NOTIFY_NEW_ORDER')) { $email = new Email($this->application); $email->setTo($this->config->get('NOTIFICATION_EMAIL'), $this->config->get('STORE_NAME')); $email->setTemplate('notify.order'); $email->set('order', $orderArray); $email->set('user', $user->toArray()); $email->send(); } $this->session->set('completedOrderID', $this->order->getID()); if ($newOrder instanceof CustomerOrder) { SessionOrder::save($newOrder); } else { SessionOrder::destroy(); } return new ActionRedirectResponse('checkout', 'completed'); }