/**
  * Remote coupon from cart
  *
  * @throws Mage_Exception
  */
 public function cancelAction()
 {
     $isAjax = $this->getRequest()->getParam('isAjax');
     try {
         $quote = $this->_getQuote();
         $couponCode = (string) $this->getRequest()->getParam('coupon_code_cancel');
         $oldCouponCode = $quote->getCouponCode();
         $this->couponService->removeCoupon($quote, $couponCode);
         $newCouponCode = $quote->getCouponCode();
         $foundInOldCoupon = stristr($oldCouponCode, $couponCode) !== false;
         $foundInNewCoupon = stristr($newCouponCode, $couponCode) !== false;
         $hasCouponChanged = $foundInOldCoupon === true && $foundInNewCoupon === false;
         if ($hasCouponChanged) {
             $this->_getSession()->addSuccess($this->__('Coupon code %s was canceled.', $couponCode));
         } else {
             $this->_getSession()->addError($this->__('Cannot cancel the coupon code.'));
         }
     } catch (Mage_Core_Exception $e) {
         $this->_getSession()->addError($e->getMessage());
     } catch (Exception $e) {
         $this->_getSession()->addError($this->__('Cannot cancel the coupon code.'));
         Mage::logException($e);
     }
     if (!$isAjax) {
         $this->_goBack();
     }
 }
Esempio n. 2
0
 /**
  * Get applied coupons
  * @return array
  */
 public function getAppliedCoupons()
 {
     if (!isset($this->appliedCodes)) {
         $quote = $this->getQuote();
         $this->appliedCodes = $this->couponService->getCouponCodesFromQuote($quote);
     }
     return $this->appliedCodes;
 }
Esempio n. 3
0
 /**
  * Update coupon usage
  * @param Mage_Sales_Model_Order
  */
 protected function updateCouponUsage(Mage_Sales_Model_Order $order)
 {
     $couponCodes = $this->couponService->getCouponCodesFromOrder($order);
     // default handler works well with 1 code, we don't need to change anything
     if (count($couponCodes) > 1) {
         $customerId = $order->getCustomerId();
         $this->couponService->updateCouponUsage($couponCodes, $customerId);
     }
 }
 /**
  * Validate the coupon usage for given address
  * @param Mage_Sales_Model_Quote_Address
  */
 protected function validateCouponUsage(Mage_Sales_Model_Quote_Address $address)
 {
     $quote = $address->getQuote();
     $customerId = $quote->getCustomerId();
     $couponCodes = $this->couponService->getCouponCodesFromQuote($quote);
     $newCodes = $couponCodes;
     foreach ($couponCodes as $index => $couponCode) {
         $isValid = $this->isValidCouponUsage($couponCode, $customerId);
         if (!$isValid) {
             unset($newCodes[$index]);
         }
     }
     if ($newCodes != $couponCodes) {
         $couponCode = implode(',', $newCodes);
         $quote->setCouponCode($couponCode);
     }
 }
Esempio n. 5
0
 /**
  * Get the applied coupon codes
  * @return array
  */
 public function getAppliedCoupons()
 {
     $quote = $this->getQuote();
     return $this->couponService->getCouponCodesFromQuote($quote);
 }