示例#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');
 }
示例#2
0
文件: CartTest.php 项目: extcode/cart
 /**
  * @test
  */
 public function getCouponTaxReturnsAllCouponsTaxSum()
 {
     $gross = 10.0;
     $tax = $gross - $gross / ($this->normalTaxClass->getCalc() + 1);
     $firstCoupon = $this->getMock(\Extcode\Cart\Domain\Model\Cart\CartCoupon::class, [], array(), '', false, true, true, array('getCode', 'getTax', 'getTaxClass', 'getIsUseable', 'getIsCombinable'));
     $firstCoupon->expects($this->any())->method('getCode')->will($this->returnValue('firstCouponCode'));
     $firstCoupon->expects($this->any())->method('getTax')->will($this->returnValue($tax));
     $firstCoupon->expects($this->any())->method('getTaxClass')->will($this->returnValue($this->normalTaxClass));
     $firstCoupon->expects($this->any())->method('getIsUseable')->will($this->returnValue(true));
     $firstCoupon->expects($this->any())->method('getIsCombinable')->will($this->returnValue(true));
     $this->grossCart->addCoupon($firstCoupon);
     $taxes = [];
     $taxes[$this->normalTaxClass->getId()] += $tax;
     $this->assertArraySubset($taxes, $this->grossCart->getCouponTaxes());
     $this->netCart->addCoupon($firstCoupon);
     $this->assertArraySubset($taxes, $this->netCart->getCouponTaxes());
 }