Magento には 1.8 以降、カート ルールに関連するバグがあるようです。
いくつかの構成可能な製品があり、数量が 50 未満の場合に特定の製品に「割引」を追加したいとします。私の場合、それは割引ではなく追加料金です (負の割引を簡単に追加できるので、 2 つのファイルの変更については、http://php.quicoto.com/extra-fee-shopping-cart-price-rules-magento/を参照してください)。
それで、マジェントは何をしますか?
1) ルールがその製品に対して有効かどうかをチェックします。2) そうでない場合は、構成可能な製品であるかどうかをチェックし、最初の単純な製品を取得して、それに対してルールをチェックします。
この場合、真の原因 数量が 50 未満です (この単純な製品がカートにさえないためです....)
ルールを「50 未満で 1 以上」に拡張しても機能しませんでした。
$product = $object->getProduct();
if (!($product instanceof Mage_Catalog_Model_Product)) {
$product = Mage::getModel('catalog/product')->load($object->getProductId());
}
// here, everythign correct. $valid is false cause item is less then x times in cart..
$valid = parent::validate($object);
// this part makes no sense, cause he's checking on a child which is not in cart.
/** /
if (!$valid && $product->getTypeId() == Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
$children = $object->getChildren();
$valid = $children && $this->validate($children[0]);
}/**/
この小さなスニペットはそれに関連していますが、私の目には意味がありません。構成可能な製品の最初の製品に対してルールをチェックする必要があるのはなぜですか? 他の製品に対してルールをランダムにチェックするのはなぜですか?
誰かがそれについて考えていますか?
今のところ私の解決策は、この行をコメントアウトするだけです... ;-)そして、ルールが適切に適用されます。
フェリックスに挨拶