在一页结帐时重新计算商品价格

时间:2016-01-17 22:05:11

标签: magento magento-1.7

我使用的付款方式接受分期付款中的处理付款。使用分期付款时,需要使用未折扣价格,因此我在sales_quote_collect_totals_before注册了观察员,以便在选中分期付款选项时强制重新计算商品价格(代码如下)。

  1. 浏览单页结帐流程
  2. 到达付款信息部分
  3. 选择付款方式
  4. 查看分期付款选项
  5. 点击“继续”
  6. 到达购物车评论
  7. 注意价格未更新(即使观察员已被执行)
  8. 退回到付款方式选择
  9. 再次点击“继续”
  10. 到达购物车评论
  11. 价格现已更新
  12. 任何人都可以解释原因吗?并且可能解决我如何跳过步骤6-11 :-)?

    $installments = /* has the option been checked */
    
    /** @var Mage_Sales_Model_Quote_Item $item */
    foreach ($quote->getAllItems() as $item) {
        $product = $item->getProduct();
        $qty = $item->getQty();
    
        $price = $installments ? $product->getPrice() : $product->getFinalPrice($qty);
    
        if ($price == $item->getOriginalCustomPrice()) {
            continue;
        }
    
        $item->setPrice($price);
        $item->setCustomPrice($price);
        $item->setOriginalCustomPrice($price);
    
        $item->calcRowTotal();
    }
    

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了答案。

显然Mage_Sales_Model_Quote_Payment::importData在分配新的付款数据之前执行Mage_Sales_Model_Quote::collectTotals,之后totals_collected_flag阻止了重新计算。