annetf Posted January 18, 2014 Share Posted January 18, 2014 Здравствуйте. Prestashop 1.5.4 Валюта: рубль Десятичные:отключены Метод округления: в большую В магазине отключены, копейки. Например 5 687 руб. Методы округлений действует только на копейки. Подскажите, пожалуйста, в файле Tools.php, где, в какой строке и что нужно прописать, чтобы цена округлялась до десятых. Например стоит 5 687 руб., стало 5 690 руб. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted January 18, 2014 Share Posted January 18, 2014 если быстро, в функции public static function ps_round($value, $precision = 0) { //some code return round($value, $precision); } заменить 1 строку на return round($value, -1); 2 Link to comment Share on other sites More sharing options...
annetf Posted January 18, 2014 Author Share Posted January 18, 2014 (edited) Округление сработало. Edited January 19, 2014 by annetf (see edit history) Link to comment Share on other sites More sharing options...
annetf Posted January 19, 2014 Author Share Posted January 19, 2014 (edited) Но когда я открываю страницу товара и щелкая комбинации, цена отображается без округления. В админке комбинации округлены, в списке товаров и на главной тоже. Почему то не округляется только на странице товара =( Даже при добавлении в корзину все норм Как округлить комбинации(атрибуты) на стр товара?(в админке все норм) Edited January 19, 2014 by annetf (see edit history) Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted January 20, 2014 Share Posted January 20, 2014 при текущих настройках 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; 1 Link to comment Share on other sites More sharing options...
gnjbs Posted December 9, 2014 Share Posted December 9, 2014 Спасибо, очень помогли, а не подскажите как сделать округление в зависимости от валюты, т.е. если стоят доллары округление не нужно, а если рубли то нужно. В голову приходит, что то вроде этого 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now