Не могу применить правило цены каталога программно - PullRequest
2 голосов
/ 28 декабря 2011

Я пытаюсь создать правило цены каталога программно (процентная скидка на категорию для конкретной группы клиентов). Но это не применяется программно. Даже если вы перейдете в раздел «Правила цены каталога» и нажмете кнопку «Применить правила» - он не применяется. Это применимо, только если вы перейдете к редактированию этого правила в бэкэнде, сохраните его без каких-либо изменений, а затем нажмите «Применить правила». Вот код:

$catalogRule = Mage::getModel('catalogrule/rule');
$catalogRule->setName($ruleName)
     ->setIsActive(true)
     ->setWebsiteIds(array(1))
     ->setCustomerGroupIds(array($group->getId()))
     ->setSimpleAction('by_percent')
     ->setDiscountAmount($discountAmount);

$categoryCondition = Mage::getModel('catalogrule/rule_condition_combine')
     ->setType('catalogrule/rule_condition_product')
     ->setAttribute('category_ids')
     ->setOperator('==')
     ->setValue($categoryId);

$catalogRule->getConditions()->addCondition($categoryCondition);
$catalogRule->save();
$catalogRule->applyAll();

Mage::app()->removeCache('catalog_rules_dirty');

Спасибо за помощь!

1 Ответ

1 голос
/ 28 декабря 2011

У вас ошибка в $categoryCondition. Вы должны использовать catalogrule/rule_condition_product модель, а не catalogrule/rule_condition_combine. Кроме того, значение идентификатора категории должно быть тип строки . Это действительно странная вещь, но с целочисленным значением она не работает (протестировано на версии 1.6.1.0).

Итак, вот решение:

$categoryCondition = Mage::getModel('catalogrule/rule_condition_product')
     ->setType('catalogrule/rule_condition_product')
     ->setAttribute('category_ids')
     ->setOperator('==')
     ->setValue("23"); // notice: this is should be a string!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...