Skip to main content

Magento - Apply only one Catalog Price Rule


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

Popular posts from this blog

Magento - Unit Testing

Magento 2 comes with default unit testing in built. But, for magento 1, it is very difficult to perform unit testing. There is an extension EcomDev_PHPUnit, which can help us in performing unit tests in magento 1.