「パーセント」価格タイプを組み込んだカスタム オプションで実際に問題が発生しています。
シンプルな製品では、パーセント ベースのカスタム オプションは期待どおりに機能しますが、構成可能またはバンドルでは、最終的な価格は基本価格 + 追加オプションではなく、基本価格から決定されます (これはビジネス要件によって決まります)。
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
た値は基本価格 + カスタム オプションの追加料金を正しく評価していません。さらに、フロントエンドでは 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_PriceParent::getFinalPrice
では、各ステップで値を決定するためにそれぞれを呼び出すため、オーバーライドするものは何もありません...
疑問が残ります - パーセンテージベースのカスタムオプションに対応するために価格モデルを変更するにはどうすればよいですか??
私がこれを解決するのを手伝ってくれる人に50ポイント。...
誰?