我刚刚发现 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]);
}/**/
这个小片段与它有关,在我看来它没有任何意义。为什么要根据可配置产品的第一个产品检查规则?为什么要针对其他产品随机检查规则?
有人知道吗?
我现在的解决方案,只需将此行注释掉... ;-) 并且该规则会按应有的方式应用。
迎接菲利克斯