Формат поля Цена в Админке

Тема в разделе "Общие вопросы", создана пользователем RubenS, 22 мар 2015.

  1. RubenS

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

    Сообщения:
    50
    Симпатии:
    8
    Формат поля Цена в Админке не соответствует количеству знаков после запятой в установках Валюты.

    И в product_form.tpl и в product_list.tpl

    Это правильно?
    Лишние нули только путают, да и если в настройках указано 2 для Рубля, то зачем показывать 4 ?

    Конечно можно сделать исправляющее расширение-модификатор ...
     
  2. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    правильно! Это не ошибка движка, так задумано.
     
  3. RubenS

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

    Сообщения:
    50
    Симпатии:
    8
    Полная чушь эти лишние нули, и почему тогда только 4 нуля, а не 6-8-10 ? В чем великий смысл создателя?
     
  4. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    спросите создателя Даниеля..

    Вы же задаете вопрос, вам отвечают. Если знаете ответ, так предлагайте как положено, а не намеками и вопросами!
    В чем проблема написать про это в соответствующей теме и предложить решение или предложение??
     
  5. RubenS

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

    Сообщения:
    50
    Симпатии:
    8
    Ок, лучше подскажите где формируется $product['price'] в админке, т.к. на сайте оно уже с форматом и разделителем и знаком валюты, а в админке пустое и не хочется простой number_format(,2,) вставлять. Надо же использовать данные настройки валюты.
     
  6. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    В админку данные берутся напрямую из базы и поэтому показываются так как есть, со всеми нулями итд.

    В админке в списке товаров, чтобы уменьшить кол-во знаков в зависимости от настроек, делаем так.

    в контроллере \admin\controller\catalog\product.php

    меняем это 'price' => $result['price'], (~370 строка)

    на это 'price' => number_format(round($result['price'], (int)$this->currency->getDecimalPlace()), (int)$this->currency->getDecimalPlace(), '.', ''),
     
    Последнее редактирование: 22 мар 2015
  7. platonovS

    platonovS Новичок

    Сообщения:
    2
    Симпатии:
    0
    Как тоже самое сделать в ocStore 2.1.0.2.1 ?

    А то чет именно эта замена не помогает. Причем в этом файле 2 раза встречается исходная строка. Пробовал заменить по одной и сразу 2 - не помогло.

    Надоело уже стирать это 4 нуля
     
  8. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    не стирайте, в этом нет смысла. Решение рабочее. Возможно не обновили модификаторы.
     
  9. Beard

    Beard Новичок

    Сообщения:
    4
    Симпатии:
    0
    А может кто подскажет как убрать нули после точки "Наличие:1.000" в карточке товара?
     
  10. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    вопрос не по теме. А убирается стандартной функцией, например http://php.net/number-format
     
  11. Beard

    Beard Новичок

    Сообщения:
    4
    Симпатии:
    0
    а можно готовое решение?
     
  12. DiMoss

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

    Сообщения:
    862
    Симпатии:
    236
    Заходите в БД, в таблице *_product у столбца quantity меняете Тип на int.
     
    Beard нравится это.
  13. Beard

    Beard Новичок

    Сообщения:
    4
    Симпатии:
    0
    спасибо
     
  14. P@TROL

    P@TROL Новичок

    Сообщения:
    4
    Симпатии:
    0
    Не подскажите вариант для ocStore 2.3.0.2.3?

    Вылезло:
    Notice: Undefined variable: currency in ../system/library/cart/currency.php on line
    Warning: Missing argument 1 for Cart\Currency::getDecimalPlace(), called in ../system/storage/modification/admin/controller/catalog/product.php on line 420 and defined in ../system/library/cart/currency.php on line
     
  15. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    для 2.3 видимо так
    PHP:
    'price' => number_format(round($result['price'], (int)$this->currency->getDecimalPlace($this->config->get('config_currency'))), (int)$this->currency->getDecimalPlace($this->config->get('config_currency')), '.'''),
     
    P@TROL нравится это.
  16. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Для тех кто не понимает почему 4 нуля, и считает єто бредом.
    4ре нуля это общепринятая МИРОВАЯ практика работы с денежным форматом, тогда точность расчетов и погрешность становятся достаточно малыми величинами
     
  17. P@TROL

    P@TROL Новичок

    Сообщения:
    4
    Симпатии:
    0
    Чтобы уменьшить в скидке:
    Код:
    'special'    => $special,
    Заменяем на:
    Код:
    'special' => number_format(round($special, (int)$this->currency->getDecimalPlace($this->config->get('config_currency'))), (int)$this->currency->getDecimalPlace($this->config->get('config_currency')), '.', ''),

    В моем случае используются только рубли...
     
  18. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Да какая разница..
    Вам мешают 0000 - но в абез они будут так храниться

    number_format(round($special, (int)$this->currency->getDecimalPlace($this->config->get('config_currency'))), (int)$this->currency->getDecimalPlace($this->config->get('config_currency')), '.', ''),
    Зачем вам это?

    что вы этим хотите добиться?
    достаточно только round(число, 2)

    Что ж вы, например, точку не меняете на запятую? Ведь так принято?
     
    P@TROL нравится это.
  19. P@TROL

    P@TROL Новичок

    Сообщения:
    4
    Симпатии:
    0
    Мне нужно было оставить только 2 нуля... Если подскажите вариант получше, я буду только рад...
     
  20. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Не читали?