2011-12-28 2 views
2

프로그래밍 방식으로 카탈로그 가격 규칙을 만들려고합니다 (특정 고객 그룹의 범주에 대한 백분율 할인). 그러나 프로그래밍 방식으로 적용되지는 않습니다. 카탈로그 가격 규칙 섹션으로 가서 "규칙 적용"버튼을 눌러도 적용되지 않습니다. 백엔드에서이 규칙을 편집하고 수정하지 않고 저장 한 다음 "규칙 적용"을 눌러야 만 적용됩니다.프로그래밍 방식으로 카탈로그 가격 규칙을 적용 할 수 없습니다.

$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

$categoryCondition에 오류가 있습니다. catalogrule/rule_condition_product 모델을 사용하고 catalogrule/rule_condition_combine이 아닌 모델을 사용해야합니다. 카테고리 ID 값은 문자열 유형이어야합니다. 이것은 정말 이상한 일이지만, 정수 값을 사용하면 작동하지 않습니다 (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! 
+0

최고 :

그래서, 여기에 솔루션입니다! 너 바위 야, 정말 고마워! – Snowcore

관련 문제