0

我刚刚发现 Magento 自 1.8 以来似乎有一个与购物车规则有关的错误。

假设我们有一些可配置的产品,如果数量少于 50,则希望为特定产品添加“折扣”。在我的情况下,它是附加费而不是折扣(您可以轻松添加负折扣,因此它将获得附加费更改两个文件参见http://php.quicoto.com/extra-fee-shopping-cart-price-rules-magento/)。

那么 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

看起来$objectMage_Sales_Quote_Item. 如果是这样,它解释了为什么要针对第一个孩子检查规则 - 因为它是购物车中可配置产品的唯一孩子。购物车中不能同时包含多个特定可配置产品项的子项

于 2016-01-07T14:59:43.260 回答