我使用的付款方法,接受处理付款在分期付款。在使用分期付款时,需要使用未折扣的价格,因此我已经向sales_quote_collect_totals_before注册了一个观察者,以便在选中prices选项时强制重新计算项目价格(代码如下)。
有人能解释原因吗?并可能给出一个解决方案,说明我如何可以跳过步骤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();
}发布于 2016-01-20 22:52:27
好的,我自己找到了答案。
显然,Mage_Sales_Model_Quote_Payment::importData在分配新的支付数据之前执行Mage_Sales_Model_Quote::collectTotals,然后totals_collected_flag阻止重新计算。
https://stackoverflow.com/questions/34844313
复制相似问题