Мы добавили атрибут продукта «да / нет» с надписью: «Разрешить этому продукту применять купоны?»со значением по умолчанию "yes".
Причина этого в том, что мы никогда не хотим, чтобы отдел продаж давал скидки на определенные основные продукты из тысяч доступных.
Мы могли бы добавитьэти продукты в качестве SKU для каждой из тысячи созданных купонов, но затем они могут быть случайно изменены или неправильно перечислены торговой командой, создавшей купоны.
Поэтому мы попросили их добавить это правило в своиновые купоны, чтобы исключить эти продукты.Мы также обновили все остальные купоны с помощью кода, чтобы включить это правило.
Когда я проверяю правило на Magento 1.5, выпуск Community, оно делает в точности противоположное тому, чтосостояние говорит.
Когда я тестирую то же правило на нашем другом корпоративном решении (magento 1.9), оно фактически делает то, что должно.
Когда у меня есть один продукт в корзине, являющийся продуктомдля этого атрибута установлено значение «Нет», и я применяю код купона, он принимает код купона.В другой системе (Enterprise) она отклоняет его, как и должно.
Кто-нибудь еще сталкивался с этим?
ОБНОВЛЕНИЕ: Хорошо, это стало еще интереснее.Когда я прошел через классы Rule, продукт был пропущен, но атрибут product не прошел.Область действия установлена на веб-сайте, и я проверил, сохраняется ли она под этой областью в серверной части.
Это действительно странно ...
В корпоративной системе атрибут продукта, с той же конфигурацией и данными.
Я даже пытался не иметь двойных негативов с другим новым атрибутом, чтобы убедиться.При нарушении следующего правила купон отклоняется: «Код купона недействителен».Это правильно, так как продукт установлен как «Можно использовать купон? = Нет».
Но проблема в том, что я не хочу проверять вседругие продукты, а не те, которые помечены как «Нет».
В любом случае это не будет работать для нас, так как мы не хотим применять купон, если есть какой-либо продукт вкорзина со значением «Нет» для атрибута «Можно использовать купон?».
Это правило двойного отрицания, независимо от того, как вы на него смотрите.
Я прошел через /app/code/core/Mage/SalesRule/Model/Rule/Condition/Product.php через функцию validate (), при добавлении продукта во второй раз, и данные отображаются в атрибутах, но когда я иду и повторно применяю купон и снова выполняю эту функцию, эти значения исчезают.это странно.
При добавлении нового товара в корзину:
При повторном применении кода купона:
Где, черт возьми, сделалописание и некоторые другие атрибуты исчезают с?
ОБНОВЛЕНИЕ ПРИМЕЧАНИЕ Я немного ближе.Когда я изменяю следующую функцию validate () в "/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product.php" из следующего:
public function validate(Varien_Object $object)
{
$product = false;
if ($object->getProduct() instanceof Mage_Catalog_Model_Product) {
$product = $object->getProduct();
} else {
$product = Mage::getModel('catalog/product')
->load($object->getProductId());
}
$product
->setQuoteItemQty($object->getQty())
->setQuoteItemPrice($object->getPrice())
->setQuoteItemRowTotal($object->getBaseRowTotal());
return parent::validate($product);
}
На это:
public function validate(Varien_Object $object)
{
$product = false;
$product = Mage::getModel('catalog/product')
->load($object->getProductId());
$product
->setQuoteItemQty($object->getQty())
->setQuoteItemPrice($object->getPrice())
->setQuoteItemRowTotal($object->getBaseRowTotal());
return parent::validate($product);
}
Тогда все отлично работает!