The Magento pricing rules may be deactivating for a number of reasons. More often than not, it could have something to do with the following:
Promotion Rules
- Your rules could be inactive, expired, or the conditions may no longer apply. Check Date Start, Date Expire and Status.
- If the rule is active, and has not expired try reapplying the rules, if there is a problem with the rules themselves reapplying will not correct the prices. Check the conditions and ensure that the rule is being applied to the right products.
- Clear the caches and reindex product prices.
Cron
If you find the price rules regularly deactivating or "switching off", it could be an indexing problem (especially when it always happens overnight).
- Check that your cron jobs are running properly. Magento runs the indexing scripts at midnight so if the cron has a problem and the price indexer was not run, then the prices will fall off.
- Try running cron if you get an error. If manually running cron gives you an error like Invalid Expression, check your cron schedules, if cron cannot even schedule jobs none will be run at all. Ensure the cron scripts run so magento can reindex the prices everyday.
- If there is no problem manually running cron, check cron_schedule in the database, you should be able to see if the job has been scheduled. It should also tell you the job status.
If the job was scheduled but it was 'missed', try adjusting the cron settings in Magento admin panel (System > Configuration > Advanced).
While you're in there, you can also set the Failure History Lifetime to something greater than a day so you'll have time to check it. When I first looked into my cron_schedule table I could not see any job, so I manually ran the cron too see if jobs were created and scheduled correctly. It worked fine but I wanted to see the scripts that were run the night before so I had to adjust the settings so I can see the jobs the following day when I got in for work.