The question:
we have a problem with catalog price rules in 1.9.0
we have some 1000 products in a site.
we applied catalog price rules to give discount for 500 products.
i did’t gave any date limit for catalog price rules
those special prices are displaying only until mid night.
next day, after mid- night special prices are not displaying in site.
cron is working fine.
please help me to find some solution.
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
You might need to do reindexing. Please reindex once then check it is working or not.
Method 2
source : https://stackoverflow.com/questions/25280095/magento-catalog-price-rule-disappears-at-night
credits for genius “Alexei Yerofeyev”. mostly i will never forget this man.
Yes, this is a bug in Magento (or some logic beyond my understanding). When Magento displays products on frontend, it checks if there are catalog rules for this date. And the date used for this check is your local, so in your case GMT+5. However, when catalog rules are being applied, it uses GMT date. So that means that you aren’t able to apply rules until 5 AM.
The problem is in Mage_CatalogRule_Model_Action_Index_Refresh::execute() function. You will have to rewrite this function/class either in your extension, or via the local version of the file.
You have to replace line 121 here :
app/code/core/Mage/CatalogRule/Model/Action/Index/Refresh.php
$timestamp = $coreDate->gmtTimestamp('Today');
with this line:
$timestamp = Mage::app()->getLocale()->date(null, null, null, true)->get(Zend_Date::TIMESTAMP);
After that you should be able to apply the rules.
Method 3
As stated above by @Baby-in-Magento the problem is with the indexer.
I had this problem as well, the issue exists when there is an offset of the local timezone greater than +01:00.
Basically just because magento is using the gmtTimestamp for the rule date which in the above stated case results in the day before today.
Therefor I developed a small module https://github.com/Chuvisco88/Chuvisco_CatalogRuleFix to fix the issue.
If someone ever has this problem, please give it a try.
Method 4
In my setup the solution was to set the mysql timezone same as the magento timezone
I managed it by using this initStatement in my local.xml file
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0