我对包含“百分比”价格类型的自定义选项有一个真正的问题。
在 Simple 产品上,基于百分比的自定义选项按预期工作,但在 Configurable 或 Bundled 上,最终价格由基本价格确定,而不是基本价格 + 附加选项(这是 biz 要求规定的):
Config/Bundle Product
base price = $1000
option 1 + $100
option 2 + 5%
_____________________________
= $1150 (instead of $1155);
我还没有找到很多东西来处理这个原本很大的问题。
我确实找到并实施了这个 Answer,但$finalPrice
返回的Mage_Catalog_Model_Product_Type_Price -> _applyOptionsPrice
没有正确评估自定义选项的 baseprice + upcharge。此外,在前端, Products.Options
解决方案中也没有将基准价格纳入计算中。我假设修复是针对以前版本的 magento(我在 v1.11 上)。
我怀疑修复的策略是正确的,但它是一个非常复杂的交换,我并不完全清楚需要改变什么来处理这个问题。
任何想法都会受到欢迎。
干杯
更新
我在前端取得了一些成功(让 javascript 更新选项值和正确定价)。但是这些更改并没有写入价格模型。例如,当购物车渲染时,最终价格不是包含满载价格,而是包含父产品的百分比:
这是我在后端的内容(这不会改变任何行为。我会注意到我刚刚将它们复制到应用程序/本地目录 atm 中,但是一旦我得到这个逻辑,我会正确覆盖它们.
Mage_Catalog_Model_Product_Type_Price
public function getFinalPrice($qty=null, $product)
{
//... aggregate tier and special pricing, then apply custom options
$finalPrice = $product->getData('final_price');
$finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice);
return max(0, $finalPrice);
}
protected function _applyOptionsPrice($product, $qty, $finalPrice)
{
if ($optionIds = $product->getCustomOption('option_ids')) {
$basePrice = $finalPrice;
foreach (explode(',', $optionIds->getValue()) as $optionId) {
if ($option = $product->getOptionById($optionId)) {
$confItemOption = $product->getCustomOption('option_'.$option->getId());
$group = $option->groupFactory($option->getType())
->setOption($option)
->setConfigurationItemOption($confItemOption);
// grab option value based on finalprice
$finalPrice += $group->getOptionPrice($confItemOption->getValue(), $finalPrice);
}
};
}
Mage::log('base price :'.$basePrice.' final price :'.$finalPrice);
return $finalPrice;
}
据我所知,在Mage_Catalog_Model_Product_Type_Configurable_Price和
Mage_Catalog_Model_Product_Type_Grouped_Price中,没有什么可以覆盖的,因为它们每个都调用Parent::getFinalPrice
来确定每一步的值......
问题仍然存在 - 我如何修改定价模型以适应基于百分比的自定义选项?
50分给可以帮助我解决这个问题的人。...
任何人?