2016-07-13 5 views
0
public function coupon($data) { 
     $couponCode = $data['couponcode']; 
     if (!Zend_Validate::is(trim($couponCode), 'NotEmpty')) { 
      throw new Exception($this->__('coupon code cannot be empty.')); 
     } 
     $oCoupon = Mage::getModel('salesrule/coupon')->load($couponCode, 'code'); 
     $data = $oCoupon->getData(); 
     if (empty($data)) { 
      throw new Exception($this->__('coupon code did not match.')); 
     }  
     $quote = Mage::getModel('checkout/session')->getQuote(); 
     $quote->setCouponCode($couponCode); 
     $quote->save(); 
     $quoteData = Mage::getModel('checkout/cart')->getQuote(); 
     $subTotal = $quoteData['subtotal']; 
     $subtotal_with_discount = $quoteData['subtotal_with_discount']; 
     $grandTotal = $quoteData['grand_total']; 
     $discountTotal = ($subTotal - $subtotal_with_discount); 
     $discount = number_format($discountTotal, 4, null, ''); 
     return $discount; 
    } 

Код купона применяется и показывать, но когда я Печатная версия quoteData-> GetData(), то скидка не будет, и когда я буду обновлять страницу корзины обновления, то скидка приходитДобавление скидки на код купона программно

ответ

2

Я получил решение

public function coupon($data) { 
     $couponCode = $data['couponcode']; 
     if (!Zend_Validate::is(trim($couponCode), 'NotEmpty')) { 
      throw new Exception($this->__('coupon code cannot be empty.')); 
     } 
     $oCoupon = Mage::getModel('salesrule/coupon')->load($couponCode, 'code'); 
     $data = $oCoupon->getData(); 
     if (empty($data)) { 
      throw new Exception($this->__('coupon code did not match.')); 
     } 
     Mage::getSingleton('checkout/cart')->getQuote()->getShippingAddress() 
       ->setCollectShippingRates(true); 
     Mage::getSingleton('checkout/cart')->getQuote() 
       ->setCouponCode($couponCode)->collectTotals()->save(); 
     $quoteData = Mage::getModel('checkout/cart')->getQuote(); 
     $subTotal = $quoteData['subtotal']; 
     $subtotal_with_discount = $quoteData['subtotal_with_discount']; 
     $grandTotal = $quoteData['grand_total']; 
     $discountTotal = ($subTotal - $subtotal_with_discount); 
     $discount = number_format($discountTotal, 4, null, ''); 

     return $discount; 
    }