Please follow the below steps might be useful.
Path:- app/code/core/Mage/Sales/Model/Config/Ordered.php
Comment this code
/**
* Aggregate before/after information from all items and sort totals based on this data
*
* @return array
*/
protected function _getSortedCollectorCodes()
{
if (Mage::app()->useCache('config')) {
$cachedData = Mage::app()->loadCache($this->_collectorsCacheKey);
if ($cachedData) {
return unserialize($cachedData);
}
}
$configArray = $this->_modelsConfig;
// invoke simple sorting if the first element contains the "sort_order" key
reset($configArray);
$element = current($configArray);
if (isset($element['sort_order'])) {
uasort($configArray, array($this, '_compareSortOrder'));
} else {
foreach ($configArray as $code => $data) {
foreach ($data['before'] as $beforeCode) {
if (!isset($configArray[$beforeCode])) {
continue;
}
$configArray[$code]['before'] = array_unique(array_merge(
$configArray[$code]['before'], $configArray[$beforeCode]['before']
));
$configArray[$beforeCode]['after'] = array_merge(
$configArray[$beforeCode]['after'], array($code), $data['after']
);
$configArray[$beforeCode]['after'] = array_unique($configArray[$beforeCode]['after']);
}
foreach ($data['after'] as $afterCode) {
if (!isset($configArray[$afterCode])) {
continue;
}
$configArray[$code]['after'] = array_unique(array_merge(
$configArray[$code]['after'], $configArray[$afterCode]['after']
));
$configArray[$afterCode]['before'] = array_merge(
$configArray[$afterCode]['before'], array($code), $data['before']
);
$configArray[$afterCode]['before'] = array_unique($configArray[$afterCode]['before']);
}
}
uasort($configArray, array($this, '_compareTotals'));
}
$sortedCollectors = array_keys($configArray);
if (Mage::app()->useCache('config')) {
Mage::app()->saveCache(serialize($sortedCollectors), $this->_collectorsCacheKey, array(
Mage_Core_Model_Config::CACHE_TAG
)
);
}
return $sortedCollectors;
}
Replace the above code with:
/****
Note: While applying coupon code, Totals are not updating due to uasort not working in php7 then
modified the _getSortedCollectorCodes() function as shown below.
****/
protected function _getSortedCollectorCodes()
{
if (Mage::app()->useCache('config')) {
$cachedData = Mage::app()->loadCache($this->_collectorsCacheKey);
if ($cachedData) {
return unserialize($cachedData);
}
}
$configArray = $this->_modelsConfig;
// invoke simple sorting if the first element contains the "sort_order" key
reset($configArray);
$element = current($configArray);
Mage::log(var_export($element,true));
if (isset($element['sort_order'])) {
uasort($configArray, array($this, '_compareSortOrder'));
} else {
foreach ($configArray as $code => $data) {
foreach ($data['before'] as $beforeCode) {
if (!isset($configArray[$beforeCode])) {
continue;
}
$configArray[$code]['before'] = array_unique(array_merge(
$configArray[$code]['before'], $configArray[$beforeCode]['before']
));
$configArray[$beforeCode]['after'] = array_merge(
$configArray[$beforeCode]['after'], array($code), $data['after']
);
$configArray[$beforeCode]['after'] = array_unique($configArray[$beforeCode]['after']);
}
foreach ($data['after'] as $afterCode) {
if (!isset($configArray[$afterCode])) {
continue;
}
$configArray[$code]['after'] = array_unique(array_merge(
$configArray[$code]['after'], $configArray[$afterCode]['after']
));
$configArray[$afterCode]['before'] = array_merge(
$configArray[$afterCode]['before'], array($code), $data['before']
);
$configArray[$afterCode]['before'] = array_unique($configArray[$afterCode]['before']);
}
}
foreach ($configArray as $code => $data) {
$largest_small = $smallest_large = 0;
foreach ($data['after'] as $afterCode) {
if(isset($configArray[$afterCode]['sort_order']) && $largest_small < $configArray[$afterCode]['sort_order'])
$largest_small = $configArray[$afterCode]['sort_order'];
}
foreach ($data['before'] as $beforeCode) {
if(isset($configArray[$beforeCode]['sort_order']) && ($smallest_large == 0 || $configArray[$beforeCode]['sort_order'] < $smallest_large))
$smallest_large = $configArray[$beforeCode]['sort_order'];
}
if($smallest_large <= $largest_small+1){
$add = $largest_small+1-$largest_small;
if($smallest_large == 0) $smallest_large = $largest_small+1;
foreach ($configArray as $code1 => $data1) {
if(!isset($data1['sort_order'])) break;
if($smallest_large <= $data1['sort_order'])
$configArray[$code1]['sort_order'] += $add;
}
}
$configArray[$code]['sort_order'] = $largest_small+1;
}
uasort($configArray, array($this, '_compareSortOrder'));
}
$sortedCollectors = array_keys($configArray);
if (Mage::app()->useCache('config')) {
Mage::app()->saveCache(serialize($sortedCollectors), $this->_collectorsCacheKey, array(
Mage_Core_Model_Config::CACHE_TAG
)
);
}
return $sortedCollectors;
}
Please check now. i hope it will useful for you. thanks
what all you can do is you can assign one customer to particular group and select only that customer group for that coupon code.....
under Customer > Manage customer , assign that customer to Wholesale group
under shopping cart price rules , also assign that rule to Wholesale group
Don't assign any other customer to Wholesale group or you can create new customer group instead of Whoesale group....
Best Answer
To apply that rules to guest user, you need to also select
NOT LOGGED IN
at Customer group multiple options.Magento counts this as guest customer.
Uses per Coupon
The number of times the coupon code can be used.
Uses per Customer
Determines how
many times the coupon code can be used by the same registered customer
who belongs toany
of theselected customer groups
. The setting does not apply to guest shoppers who are members of theNOT LOGGED IN
customer group, orto customers who shop without logging in to their accounts. If there is no limit, leave the field blank
.See at here