Example #1
0
 /**
  * Action order Cart
  *
  * @param \Extcode\Cart\Domain\Model\Order\Item $orderItem
  * @param \Extcode\Cart\Domain\Model\Order\Address $billingAddress
  * @param \Extcode\Cart\Domain\Model\Order\Address $shippingAddress
  *
  * @ignorevalidation $shippingAddress
  *
  * @return void
  */
 public function orderCartAction(\Extcode\Cart\Domain\Model\Order\Item $orderItem = null, \Extcode\Cart\Domain\Model\Order\Address $billingAddress = null, \Extcode\Cart\Domain\Model\Order\Address $shippingAddress = null)
 {
     if ($orderItem == null || $billingAddress == null) {
         $this->redirect('showCart');
     }
     $this->cart = $this->cartUtility->getCartFromSession($this->settings['cart'], $this->pluginSettings);
     if ($this->cart->getCount() == 0) {
         $this->redirect('showCart');
     }
     $this->parseData();
     $this->orderUtility->checkStock($this->cart);
     $orderItem->setCartPid(intval($GLOBALS['TSFE']->id));
     if ($this->request->hasArgument('shipping_same_as_billing')) {
         $isShippingAddressSameAsBilling = $this->request->getArgument('shipping_same_as_billing');
         if ($isShippingAddressSameAsBilling == 'true') {
             $shippingAddress = null;
             $orderItem->removeShippingAddress();
         }
     }
     $this->orderUtility->saveOrderItem($this->pluginSettings, $this->cart, $orderItem, $billingAddress, $shippingAddress);
     $this->orderUtility->handleStock($this->cart);
     $this->orderUtility->handlePayment($orderItem, $this->cart);
     $this->orderUtility->autoGenerateDocuments($orderItem, $this->pluginSettings);
     $this->sendMails($orderItem, $billingAddress, $shippingAddress);
     $this->view->assign('cart', $this->cart);
     $this->view->assign('orderItem', $orderItem);
     $paymentId = $this->cart->getPayment()->getId();
     if (intval($this->pluginSettings['payments']['options'][$paymentId]['preventClearCart']) != 1) {
         $this->cart = $this->cartUtility->getNewCart($this->settings['cart'], $this->pluginSettings);
     }
     $this->sessionHandler->writeToSession($this->cart, $this->settings['cart']['pid']);
 }