0

我正在尝试在 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 都会计算购物车的总数两次

我能做些什么?

4

0 回答 0