/** * 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'); }
/** * 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); } } }