Округление значения стоимости заказа

Материал из 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%)%
Личные инструменты