In default magento, on click of "Apply rules" in catalog price rules (Promotions > Catalog Price Rules), it get the products for all the active rules and add the data in a separate table. If there are more than five active rules, then lots of data have to be created and the process takes a lot of time. If we have to create a new rule, the save and apply will re-calculate for all the active rules.
The below code is to apply the rule only for the given rule id.
$rule = Mage::getModel('catalogrule/rule')->load($rule_id);
$rule->getResource()->updateRuleProductData($rule);
$rule->getResource()->applyAllRules();
$indexProcess = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_price');
if ($indexProcess) {
$indexProcess->reindexAll();
}
Comments
Post a Comment