Magento Cart Rule BUG - Неправильно применяется, когда "меньше чем" и настраивается продукт
Я только что узнал, что 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]);
}/**/
этот небольшой фрагмент связан с этим, и в моих глазах это не имеет никакого смысла. почему правило должно проверяться по первому продукту настраиваемого? зачем случайно проверять правило по отношению к какому-либо другому продукту?
у кого-нибудь есть идеи по этому поводу?
мое решение на данный момент, просто закомментируйте эту строку...;-) и правило будет применено, как и должно быть.
приветствует Феликса
1 ответ
Похоже $object
это пример Mage_Sales_Quote_Item
, Если это так, это объясняет, почему правило проверяется по первому дочернему элементу - потому что это единственный дочерний элемент настраиваемого продукта в корзине. В корзине не может быть одновременно более одного дочернего элемента определенного настраиваемого товара