我有一個真正的問題與自定義選項納入「%」價格類型。自定義產品選項 - 修改基於百分比的定價邏輯:Magento
在簡單產品中,基於百分比的自定義選項按預期工作,但在可配置或捆綁的情況下,最終價格由基本價格確定,而不是基本價格+附加選項(這是商務需求規定的):
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才能正確地更新選項值和定價)。這些變化,但都沒有得到寫入價格模型。例如,當購物車進行渲染時,最終價格並非完全加載價格,而是父級產品的百分比:
下面是我在後端(這不會改變任何行爲)。我會注意到,我只是把他們複製到應用程序/ local目錄自動取款機,但我會適當地覆蓋它們,一旦我得到這個邏輯制定。
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_Prod uct_Type_Configurable_Price,並 Mage_Catalog_Model_Product_Type_Grouped_Price,沒有什麼可以替代的,因爲他們在Parent::getFinalPrice
每個呼叫在每個步驟以確定值...
問題仍然是 - 如何修改的定價模式以適應自定義選項百分比?
50分可以幫助我解決問題的人。 ...
有人嗎?
Zyava ==感謝您的答覆,但我已經嘗試這種解決方案(它在我的問題...) 。我已將此更改應用於標準的'Price.php'和'configure/Price.php'。分組使用其子產品來確定自定義選項的成本(所以'Price.php'應該是修復)。然而......價格不是**成功地更新價格(例如在購物車中)。不知道我錯過了什麼,但我真的需要弄清楚這一點。 – Bosworth99