gpt4 book ai didi

javascript - 自定义产品选项 - 修改基于百分比的定价逻辑 : Magento

转载 作者:行者123 更新时间:2023-11-30 06:39:26 24 4
gpt4 key购买 nike

我在使用包含“百分比”价格类型的自定义选项时遇到了一个真正的问题。

在 Simple 产品上,基于百分比的自定义选项按预期工作,但在 Configurable 或 Bundled 上,最终价格由基本价格决定,而不是基本价格 + 附加选项(这是业务要求规定的):

Config/Bundle Product

base price = $1000
option 1 + $100
option 2 + 5%
_____________________________
= $1150 (instead of $1155);

我没能找到很多解决这个大问题的方法。

我确实找到并实现了 this Answer ,但 Mage_Catalog_Model_Product_Type_Price -> _applyOptionsPrice 中返回的 $finalPrice 未正确评估自定义选项的基本价格 + 附加费。此外,在前端,在 Products.Options 中,解决方案也没有将基本价格纳入计算。我假设修复程序适用于以前版本的 magento(我使用的是 v1.11)。

我怀疑修复策略是正确的,但它是一个非常复杂的交换,我不完全清楚需要更改什么来处理这个问题。

欢迎提出任何想法。

干杯


更新

我在前端取得了一些成功(让 javascript 正确更新选项值和定价)。但是,这些更改没有写入价格模型。例如,当购物车开始渲染时,最终价格包含的不是满载价格,而是父产品的百分比:

这是我在后端的内容(它没有改变任何行为。我会注意到我刚刚将它们复制到 app/local 目录 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 分给可以帮助我解决这个问题的人。 ...

有人吗?

最佳答案

如果我没看错,您需要可配置和分组的产品,每个下一次期权价格修改都应应用于该值,该值是根据之前的值计算的(在应用上一次期权价格修改之后)。在这种情况下,您应该以下一种方式覆盖 Mage_Catalog_Model_Product_Type_Configurable_PriceMage_Catalog_Model_Product_Type_Grouped_Price 类中的 _applyOptionsPrice() 方法:

protected function _applyOptionsPrice($product, $qty, $finalPrice)
{
if ($optionIds = $product->getCustomOption('option_ids')) {
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);
$finalPrice += $group->getOptionPrice($confItemOption->getValue(), $finalPrice);
}
}
}

return $finalPrice;
}

关于javascript - 自定义产品选项 - 修改基于百分比的定价逻辑 : Magento,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12572531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com