Jump to content

Округление до десятых


Recommended Posts

Здравствуйте.

Prestashop 1.5.4

Валюта: рубль

Десятичные:отключены

Метод округления: в большую

 

В магазине отключены, копейки. Например 5 687 руб.

Методы округлений действует только на копейки.

 

Подскажите, пожалуйста, в файле Tools.php, где, в какой строке и что нужно прописать, чтобы цена округлялась до десятых. Например стоит 5 687 руб., стало 5 690 руб.

Link to comment
Share on other sites

Но когда я открываю страницу товара и щелкая комбинации, цена отображается без округления.


В админке комбинации округлены, в списке товаров и на главной тоже.


Почему то не округляется только на странице товара =(


Даже при добавлении в корзину все норм


Как округлить комбинации(атрибуты) на стр товара?(в админке все норм)


Edited by annetf (see edit history)
Link to comment
Share on other sites

при текущих настройках

 

themes/yourtheme/js/tools.js -> function ps_round

function ps_round(value, precision)
{
	if (typeof(roundMode) === 'undefined')
		roundMode = 2;
	if (typeof(precision) === 'undefined')
		precision = 2;
	
	method = roundMode;
	if (method === 0)
		return ceilf(value, precision);
	else if (method === 1)
		return floorf(value, precision);
	precisionFactor = precision === 0 ? 1 : Math.pow(10, precision);
	return Math.round(value * precisionFactor) / precisionFactor;
}

last line change to

return Math.round(value * 0.1) / 0.1;
  • Like 1
Link to comment
Share on other sites

  • 10 months later...

Спасибо, очень помогли, а не подскажите как сделать округление в зависимости от валюты, т.е. если стоят доллары округление не нужно, а если рубли то нужно. В голову приходит, что то вроде этого

if ($currency[0]['id_currency'] == '1') {
if ($method == PS_ROUND_UP)  
     return Tools::ceilf($value, $precision);
elseif ($method == PS_ROUND_DOWN)
return Tools::floorf($value, $precision);
return round($value, -3);
}
else {
if ($method == PS_ROUND_UP)  
     return Tools::ceilf($value, $precision);
elseif ($method == PS_ROUND_DOWN)
return Tools::floorf($value, $precision);
return round($value, $precision);
}

Работать не хочет, может поможет кто?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...