Esempio n. 1
0
 /**
  * Add coupon from this system to quote
  *
  * @param Mage_Sales_Model_Quote $quote
  * @param ShopgateCartBase       $order
  *
  * @return Mage_Sales_Model_Quote
  * @throws ShopgateLibraryException
  */
 protected function _setQuoteShopCoupons($quote, $order)
 {
     if (count($order->getExternalCoupons()) > 1) {
         throw new ShopgateLibraryException(ShopgateLibraryException::COUPON_TOO_MANY_COUPONS);
     }
     foreach ($order->getExternalCoupons() as $coupon) {
         /* @var $coupon ShopgateShopgateCoupon */
         $couponInfos = $this->jsonDecode($coupon->getInternalInfo(), true);
         if ($order instanceof ShopgateOrder) {
             if (!$coupon->getInternalInfo()) {
                 throw new ShopgateLibraryException(ShopgateLibraryException::COUPON_NOT_VALID, 'Field "internal_info" is empty.');
             }
             /** @var Mage_SalesRule_Model_Coupon $mageCoupon */
             if ($this->_getConfigHelper()->getIsMagentoVersionLower1410()) {
                 $mageCoupon = Mage::getModel('salesrule/rule')->load($couponInfos["coupon_id"]);
             } else {
                 $mageCoupon = Mage::getModel('salesrule/coupon')->load($couponInfos["coupon_id"]);
             }
             $count = (int) $mageCoupon->getTimesUsed();
             $count--;
             $mageCoupon->setTimesUsed($count);
             $mageCoupon->save();
         }
         $quote->setCouponCode($coupon->getCode());
         foreach ($quote->getAllAddresses() as $address) {
             $address->setCouponCode($coupon->getCode());
         }
         $quote->setTotalsCollectedFlag(false);
         $quote->collectTotals();
         if ($this->_errorOnInvalidCoupon) {
             if ($coupon->getCode() != $quote->getCouponCode()) {
                 throw new ShopgateLibraryException(ShopgateLibraryException::COUPON_NOT_VALID, 'Code transferred by Shopgate"' . $coupon->getCode() . '" != "' . $quote->getCouponCode() . '" code in Magento');
             }
         }
         $quote->save();
     }
     return $quote;
 }
Esempio n. 2
0
 /**
  * Validate current coupon code
  *
  * @param Mage_Sales_Model_Quote $quote
  * @param string                 $couponCode
  *
  * @return bool
  */
 protected function validateCouponCode($quote, $couponCode = '')
 {
     $codeLength = strlen($couponCode);
     $isCodeLengthValid = $codeLength && $codeLength <= 255;
     // Validate NEW coupon
     if ($codeLength) {
         if ($isCodeLengthValid && $couponCode == $quote->getCouponCode()) {
             Mage::getSingleton('adminhtml/session')->setCouponMessage(Mage::helper('checkout/cart')->__('Coupon code "%s" was applied.', Mage::helper('core')->escapeHtml($couponCode)));
             return true;
         } else {
             // If NEW coupon is not valid add error message
             Mage::getSingleton('adminhtml/session')->setCouponMessage(Mage::helper('checkout/cart')->__('Coupon code "%s" is not valid.', Mage::helper('core')->escapeHtml($couponCode)));
             Mage::helper('mageworx_orderspro/edit')->addPendingChanges(Mage::registry('orderspro_order')->getEntityId(), array('coupon_code' => ''));
             return false;
             // reset coupon code to empty
         }
     } else {
         Mage::getSingleton('adminhtml/session')->setCouponMessage(Mage::helper('checkout/cart')->__('Coupon code was canceled.'));
         $quote->setCouponCode('');
         return true;
     }
 }
Esempio n. 3
0
 /**
  * Set the coupon code on the quote
  *
  * @param Mage_Sales_Model_Quote
  * @param $couponCode
  */
 public function setCouponCode(Mage_Sales_Model_Quote $quote, $couponCode)
 {
     $quote->setCouponCode($couponCode);
     $quote->setTotalsCollectedFlag(false)->collectTotals();
     $quote->save();
 }