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;
}
The Coupon code is applied and showing but when I Print the quoteData->GetData() then discount is not coming,and when I will update the refresh cart page then discount is coming
I got the solution
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;
}