0

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]);
    }/**/

この小さなスニペットはそれに関連していますが、私の目には意味がありません。構成可能な製品の最初の製品に対してルールをチェックする必要があるのはなぜですか? 他の製品に対してルールをランダムにチェックするのはなぜですか?

誰かがそれについて考えていますか?

今のところ私の解決策は、この行をコメントアウトするだけです... ;-)そして、ルールが適切に適用されます。

フェリックスに挨拶

これは、magento バックエンドのルールに関する画像です

4

1 に答える 1

0

$objectのインスタンスのようですMage_Sales_Quote_Item。その場合、ルールが最初の子に対してチェックされる理由が説明されています。これは、カート内の構成可能な製品の唯一の子であるためです。カート内の特定の構成可能な製品項目の複数の子を同時に指定することはできません

于 2016-01-07T14:59:43.260 に答える