我正在尝试在 Magento 结帐中应用折扣后的运费
我使用的是按价格计算的 UPS 免费送货,所以如果您在折扣后的总额低于免费送货的最低金额,它将不会为您提供免费送货服务。
Magento 在折扣前计算免费送货,因此我在本地 ups.php 文件中计算了折扣后的正确金额并将其应用于代码:
$coupon_code=Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode();
Mage::getSingleton("checkout/session")->setData("coupon_code",$coupon_code);
Mage::getSingleton('checkout/session')->getQuote()->setCouponCode($coupon_code)->setTotalsCollectedFlag(false)->collectTotals();
//Mage::getSingleton('checkout/cart')->getQuote()->setCouponCode($coupon_code)->collectTotals()->save();
$totals =Mage::getSingleton('checkout/session')->getQuote()->getTotals(); //Total object
$subtotal = $totals["subtotal"]->getValue(); //Subtotal value
if(isset($totals['discount']) && $totals['discount']->getValue()) {
$discount = $totals['discount']->getValue(); //Discount value if applied
} else {
$discount = '';
}
$r->setValue($request->getPackageValueWithDiscount( ) - $giftCardPrice);
if($discount!='') $r->setValueWithDiscount($subtotal-abs($discount));
else $r->setValueWithDiscount($request->getPackageValueWithDiscount( )- $giftCardPrice);
这解决了我的问题,因为在每次 Ajax 调用中,Magento 都会计算购物车的总数两次
我能做些什么?