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()时,折扣不会到来,当我更新刷新购物车页面时,折扣即将到来
答案 0 :(得分: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;
}