2016-07-13 2 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; 
    } 
関連する問題