2013-09-03 5 views
0

Я пытаюсь создать правило Magento каталог цен с условием в сочетании с использованием «любой» вместо «всех»Magento объединить каталог правила цена

Следующий код создает правило, с двумя Условия работы - но они комбинируются с использованием всех , Кто-нибудь знает, как добиться этого? Я использую Magento 1.7.0.2 (Community Edition)

$skuCondition = Mage::getModel('catalogrule/rule_condition_product') 
        ->setType('catalogrule/rule_condition_product') 
       ->setAggregator('any') 
       ->setAttribute('category_ids') 
        ->setOperator('==') 
       ->setValue('18'); 


$skuCondition2 = Mage::getModel('catalogrule/rule_condition_product') 
        ->setType('catalogrule/rule_condition_product') 
       ->setAttribute('category_ids') 
        ->setOperator('==') 
       ->setValue('40'); 

$catalogPriceRule->getConditions()->addCondition($skuCondition); 
$catalogPriceRule->getConditions()->addCondition($skuCondition2); 

$catalogPriceRule->save(); 

ответ

0

Изменяя свой подход и использовать одно правило с другим условием мне удалось достичь того же, как показано ниже. Обратите внимание на использование '()' вместо '==', чтобы обозначить 'is any of'. Я нашел это решение, создавая правила и глядя на данные в таблице базы данных «catalogrule», если вы выбираете, кроме колонки «condition_serialized» я нашел

8:"operator";s:2:"()";s 

Где «()» является оператором

Так что мой окончательный код был:

$catalogPriceRule->setName($name) 
       ->setDescription('') 
       ->setIsActive(1) 
       ->setWebsiteIds(array($websiteId)) 
       ->setCustomerGroupIds(array($customerGroupId)) 
       ->setFromDate('') 
       ->setToDate('') 
       ->setSortOrder('') 
       ->setSimpleAction($actionType) 
       ->setDiscountAmount($discount) 
       ->setStopRulesProcessing(0); 

$skuCondition = Mage::getModel('catalogrule/rule_condition_product') 
       ->setType('catalogrule/rule_condition_product') 
       ->setAggregator('any') 
       ->setAttribute('category_ids') 
       ->setOperator('()') 
       ->setValue('18,40'); 

$catalogPriceRule->getConditions()->addCondition($skuCondition); 
$catalogPriceRule->save(); 

Надеется, что кто-то помогает!

+0

«catalogrule/rule_condition_product» должно быть «salesrule/rule_condition_product» Вы можете проверить это, проверив скрытый ввод в администрировании ... Кроме этого код работает. – karantan