Автор Тема: Убрать округление цен  (Прочитано 8701 раз)

Оффлайн Drifter-B

  • Пользователь
  • **
  • Сообщений: 25
    • Просмотр профиля
Убрать округление цен
« : Апреля 28, 2012, 11:12:12 am »
Версия 5.0.2

Вопрос знатокам: Возможно ли убрать округление цен до целых чисел?
У меня присутствуют цены "1,8 руб", "1,4 руб", а при вводе они округляются до "1 руб".

Заранее спасибо.

Jordan

  • Гость
Re: Убрать округление цен
« Ответ #1 : Апреля 28, 2012, 11:45:21 am »
Я через БД делаю 2 запросами
Цитировать
ALTER TABLE `SS_products` CHANGE `Price` `Price` BIGINT NULL DEFAULT NULL;
ALTER TABLE `SS_products` CHANGE `Price` `Price` FLOAT( 20 ) NULL DEFAULT NULL;
И отбрасываются все копейки

Jordan

  • Гость
Re: Убрать округление цен
« Ответ #2 : Апреля 28, 2012, 12:16:34 pm »
Неправильно понял вопрос. Извините....

Оффлайн Drifter-B

  • Пользователь
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Убрать округление цен
« Ответ #3 : Апреля 28, 2012, 02:03:19 pm »
Т.е. если изменить тип поля в базе, всё будет ok?
Если так, то какой тип ставить - real?

Оффлайн Юрий

  • Старожил
  • ****
  • Сообщений: 322
    • Просмотр профиля
    • Во-Сток
Re: Убрать округление цен
« Ответ #4 : Апреля 28, 2012, 02:46:50 pm »
Если по всем магазину убрать тогда в файле cfg/functions.php
найти ф-ю
function show_price($price)
{
if (fract($price))
$price = number_format($price, 2, ',', ' ');
else $price = number_format($price, 0, '', ' ');

$csign_left  = (defined("CONF_CURRENCY_ID_LEFT")) ? CONF_CURRENCY_ID_LEFT : "US $";
$csign_right = (defined("CONF_CURRENCY_ID_RIGHT")) ? CONF_CURRENCY_ID_RIGHT : "";
return $csign_left.$price.$csign_right;
}

и заменить на
function show_price($price)
{
$price = number_format($price, 2, ',', '');//если до десятых то 2->1

$csign_left  = (defined("CONF_CURRENCY_ID_LEFT")) ? CONF_CURRENCY_ID_LEFT : "US $";
$csign_right = (defined("CONF_CURRENCY_ID_RIGHT")) ? CONF_CURRENCY_ID_RIGHT : "";
return $csign_left.$price.$csign_right;
}

Оффлайн Drifter-B

  • Пользователь
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Убрать округление цен
« Ответ #5 : Апреля 28, 2012, 03:02:27 pm »
Да, отображение цены это изменило, спасибо. Однако, это только пол дела. Цена округляется до целых сразу при вводе товара в базу. Как бы теперь и это побороть?

Оффлайн Юрий

  • Старожил
  • ****
  • Сообщений: 322
    • Просмотр профиля
    • Во-Сток
Re: Убрать округление цен
« Ответ #6 : Апреля 28, 2012, 03:53:23 pm »
Где Вы это увидели? Я только что специально просмотрел catalog_products_edit.php - ничего похожего на округление - не увидел....

В структуре поля Price стоит Тип -> float, по этому в базу и пишется целое число!
Вроде целое - int.
а float - Числа с плавающей точкой
« Последнее редактирование: Апреля 28, 2012, 04:01:48 pm от Юрий »

Оффлайн Drifter-B

  • Пользователь
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Убрать округление цен
« Ответ #7 : Апреля 28, 2012, 04:00:14 pm »
Всё, извиняюсь - клинический случай тупости. =)
У меня при вводе цены в виде "1,40" она почему-то сохраняется как 1, а если вводить "1.40" то нормально сохраняется как 1.4...

Извиняюсь за беспокойство.

Оффлайн Drifter-B

  • Пользователь
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Убрать округление цен
« Ответ #8 : Мая 17, 2012, 01:15:09 pm »
Кстати, а почему при разных раскладках скрипт ведёт себя по-разному? Объясню:
Поле "цена" в админке, вод производится с нум-пада:
раскладка русская -> ввожу 1,4 -> отображается "1,4" -> в базу пишется 1
раскладка английская -> ввожу 1,4 -> отображается "1.4" -> в базу пишется 1,4

Это глюк такой или где-то стоит проверка? Возможно я чего-то не понимаю, конечно... =)

Оффлайн Drifter-B

  • Пользователь
  • **
  • Сообщений: 25
    • Просмотр профиля
Re: Убрать округление цен
« Ответ #9 : Мая 18, 2012, 07:15:23 am »
Да, предложенный твик помогает.
Спасибо.