Перейти к содержимому


Округляем цены по всей категории


  • Вы не можете ответить в тему
Сообщений в теме: 5

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 15 August 2013 - 11:38 PM

Это дополнение округляет цены в категории и (при установленной галке) в подкатегориях.
На текущий момент округляется 0-60=>50 и 61-99=>90, но никто не мешает изменить.

Спонсор: golftuning

Выглядит банально :).

Прикрепленный файл  1.JPG   97.67К   32 Количество загрузок:

Установка:
-------------------------
в файле catalog_products_categories.tpl.html
перед строкой

<table class="adn"><tr><td class="se6"></td></tr></table>


вставляем


{* BEGIN RoundPrice *}
{if !$search_value}
<form method="POST" name="round_price" action='{$urlToSubmit}&amp;round_price=yes' id="round_price">
<br><a href="#" onclick="if (window.confirm('Вы уверены, что хотите округлить цену?')) document.getElementById('round_price').submit(); return false" class="inl">Округлить цену всех товаров в категории</a>
<label><input type="checkbox" name="round_subcat" value="1" checked>Включая подкатегории</label>
</form>
{/if}
{* END RoundPrice *}



в файле catalog_products_categories.php

после строки

$callBackParam = array();

вставляем


# BEGIN RoundPrice
if ( isset($_GET["round_price"]) && isset($_GET['categoryID']))
{
$round_str = "UPDATE ".PRODUCTS_TABLE." SET Price=IF(MOD(Price,100)>60,TRUNCATE(Price,-2)+90,TRUNCATE(Price,-2)+50) ";
if (isset($_POST['round_subcat']))
{
function round_recursiveCat($catID, $arrayID=array()) {
global $fc;
foreach ($fc as $val) if ($val['parent'] == $catID) $arrayID = round_recursiveCat($val['categoryID'],$arrayID);
$arrayID[]=$catID;
return $arrayID;}
db_query($round_str."WHERE categoryID IN(".implode(",",round_recursiveCat($_GET['categoryID'])).")");
}
else db_query($round_str."WHERE categoryID=".$_GET['categoryID']);
}
# END RoundPrice

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 16 August 2013 - 07:54 AM

Хм. А чем неподошло стандартное округление в движке?
  • 0

#3 golftuning

    Пользователь

  • Пользователи
  • PipPip
  • 18 сообщений
Репутация: 0
Начинающий

Отправлено 16 August 2013 - 10:58 AM

Хм. А чем неподошло стандартное округление в движке?

Сереж, а оно там есть ?
  • 0

#4 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 16 August 2013 - 11:05 AM

Сереж, а оно там есть ?

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

Единственное что не совсем правильно это когда идет подсчет в корзине то копейки учитываются и получается если товар стоит например 100,60 рублей, - покажет на сайте 101 руб. а если купить 2 шт. то в корзине покажет 201 рубль, а не 202 рубля, потому что считает все равно с копейками 201.20 рублей, а округляет уже сумму до 201 рубля.
Но это както не особо принципиально помоему. )
  • 0

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 August 2013 - 11:14 AM

Штатное округление прежде всего "порядочное", т.е. не по произвольному условию, а на порядок. Один-два-три. А тут округление несколько сложнее, все цены будут кончаться либо на 50руб, либо на 90руб. Если бы надо было все цены округлять до 10руб или 100руб, то подошло бы и штатное.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 16 August 2013 - 11:46 AM

понял, т.е. округляются не только копейки но и рубли
  • 0