Округление значения стоимости заказа
Материал из Umicms
При применении скидки к заказу либо к товару, общая стоимость часто получается с десятичными знаками. Значение стоимости заказа можно округлить в большую сторону при использовании События order_refresh. Для выполнения поставленной задачи, в папке classes/modules/emarket/ создадим файл custom_events.php со следующим содержанием:
<?php new umiEventListener("order_refresh", "emarket", "OnActualPrice"); ?>
Также необходимо создать файл permissions.custom.php:
<?php $permissions = array('purchasing' => array('OnActualPrice', 'ceilvalue')); ?>
А в файл __custom.php, после слов //TODO: добавим метод:
public function OnActualPrice($e) { if($e->getMode() == "after") { $actual_price = &$e->getRef('actualPrice'); $actual_price = ceil($actual_price); } }
метод OnActualPrice округляет стоимость заказа до большего целого числа. Допустим 291.3 -> 292. Если необходимо подобное значение цены 3442.67 округлить до значения 3450, то в методе OnActualPrice необходимо строку:
$actual_price = ceil($actual_price);
заменить на:
$actual_price = ceil($actual_price/10)*10;
Чтобы округлить цену, указанную для элементов заказа, или у самого товара, то добавим в файл classes/modules/emarket/__custom.php еще один метод:
public function ceilvalue($value) { return ceil($value); }
А в необходимых TPL-шаблонах, в блоках 'price_actual', вместо макроса %actual%, пропишем макрос:
%emarket ceilvalue(%actual%)%
