Exemplo n.º 1
0
 /**
  * Action Add Coupon
  *
  * @return void
  */
 public function addCouponAction()
 {
     if ($this->request->hasArgument('couponCode')) {
         $this->cart = $this->cartUtility->getCartFromSession($this->settings['cart'], $this->pluginSettings);
         $couponCode = $this->request->getArgument('couponCode');
         /** @var \Extcode\Cart\Domain\Model\Product\Coupon $coupon */
         $coupon = $this->couponRepository->findOneByCode($couponCode);
         if ($coupon && $coupon->getIsAvailable()) {
             $newCartCoupon = $this->objectManager->get(\Extcode\Cart\Domain\Model\Cart\CartCoupon::class, $coupon->getTitle(), $coupon->getCode(), $coupon->getCouponType(), $coupon->getDiscount(), $this->cart->getTaxClass($coupon->getTaxClassId()), $coupon->getCartMinPrice(), $coupon->getIsCombinable());
             $couponWasAdded = $this->cart->addCoupon($newCartCoupon);
             if ($couponWasAdded == 1) {
                 $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.ok.coupon.added', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::OK, $storeInSession = true);
             }
             if ($couponWasAdded == -1) {
                 $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.error.coupon.already_added', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING, $storeInSession = true);
             }
             if ($couponWasAdded == -2) {
                 $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.error.coupon.not_combinable', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING, $storeInSession = true);
             }
         } else {
             $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.error.coupon.not_accepted', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING, $storeInSession = true);
         }
         $this->sessionHandler->writeToSession($this->cart, $this->settings['cart']['pid']);
     }
     $this->redirect('showCart');
 }
Exemplo n.º 2
0
 /**
  * Add Coupons to Order Item
  */
 protected function addCoupons()
 {
     /**
      * @var $cartCoupon \Extcode\Cart\Domain\Model\Cart\CartCoupon
      */
     foreach ($this->cart->getCoupons() as $cartCoupon) {
         if ($cartCoupon->getIsUseable()) {
             $orderDiscount = new \Extcode\Cart\Domain\Model\Order\Discount($cartCoupon->getTitle(), $cartCoupon->getCode(), $cartCoupon->getGross(), $cartCoupon->getNet(), $cartCoupon->getTaxClass(), $cartCoupon->getTax());
             $orderDiscount->setPid($this->storagePid);
             $this->orderDiscountRepository->add($orderDiscount);
             $this->orderItem->addDiscount($orderDiscount);
             $coupon = $this->productCouponRepository->findOneByCode($cartCoupon->getCode());
             $coupon->incNumberUsed();
             $this->productCouponRepository->update($coupon);
         }
     }
 }