Количество товара нецелым числом в Заказах
Продолжаю извращаться веселиться с количеством товара, которое необходимо выразить нецелым числом.
В корзину нецелые числа получилось запихать.
Общий итог тоже подсчитывается с нецелыми исходными значениями.
При обновлении страницы с корзиной введенные ранее значения сохраняются.
Но возникла новая проблемка, даже две:
1. На странице с информацией об успешной отправке заказа мы видим опять целые значения, если же исходное значение было меньше 1, то видим 0. Эти же самые целые значения приходят и в письме на ящик заказчика. (см. картинку)
2. Если зайти в управление заказами, то там тоже целые значения, которые даже вручную не получается сменить на дробные.
Всю ночь просидел, изучая файлы минишопа, в файле core/components/minishop2/model/schema/minishop2.mysql.schema.xml нашел строчку:
В базе данных нашел таблицу ms2_order_products, там тоже изменил тип для count, но и эти манипуляции не помогли…
Интересно, что сумма за товар в заказе выводится правильно, то есть равна нецелому значению кол-ва * цену
Подскажите, люди добрые, в какую сторону копать надо?
В корзину нецелые числа получилось запихать.
Общий итог тоже подсчитывается с нецелыми исходными значениями.
При обновлении страницы с корзиной введенные ранее значения сохраняются.
Но возникла новая проблемка, даже две:
1. На странице с информацией об успешной отправке заказа мы видим опять целые значения, если же исходное значение было меньше 1, то видим 0. Эти же самые целые значения приходят и в письме на ящик заказчика. (см. картинку)
2. Если зайти в управление заказами, то там тоже целые значения, которые даже вручную не получается сменить на дробные.
Всю ночь просидел, изучая файлы минишопа, в файле core/components/minishop2/model/schema/minishop2.mysql.schema.xml нашел строчку:
<field key="count" dbtype="int" precision="10" phptype="integer" attributes="unsigned" null="true" default="1" />заменил на:<field key="count" dbtype="decimal" precision="12,2" phptype="float" null="true" default="0" />В базе данных нашел таблицу ms2_order_products, там тоже изменил тип для count, но и эти манипуляции не помогли…
Интересно, что сумма за товар в заказе выводится правильно, то есть равна нецелому значению кол-ва * цену
Подскажите, люди добрые, в какую сторону копать надо?
Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
cost = price * count
При этом результат умножения является правильным, значит и значения тоже правильные, но count всё-равно выводится как целое число… непонятненько…
Нашел кривенький способ — пойти обратным путем и создать новый плейсхолдер [[+mycount]] который будет выводить результат деления cost на price
В чанке msGetOrder добавил строчку:
На странице с отправленным заказом теперь отображается всё правильно, в письме тоже приходят правильные значения.
Теперь как-то бы разобраться со значениями в панели управления заказами…
Но при обновлении все опять перетрется, так что лучше так не делать.
Можно попробовать хранить в базе число, увеличенное в 10 или 100 раз, смотря какое округление у чисел, а уже выводить его, поделив на 10 или 100.
Обновления минишопа выходят не так уж часто, поэтому, на мой взгляд затирание изменений это не большая проблема. После обновления опять поправлю пару строчек, да и всё.
Для вывода кол-ва именно в заказах [[+mycount]] не использую, воспользовался подсказкой, которая указана выше.
Начало истории с нецелым кол-вом товара в списке товаров, в корзине, в миникорзине вот тут.
Готовой пошаговой инструкции, к сожалению нет. Внимательно прочитайте посты и комменты на эту тему и у Вас тоже всё получится.
Редактируем файлы
core/components/minishop2/model/minishop2/mscarthandler.class.php
Ищем
(у меня это строка 153)
Меняем на
Файл:
core/components/minishop2/model/minishop2/mysql/msorderproduct.map.inc.php
Ищем
меняем на
Файл:
core/components/minishop2/model/schema/minishop2.mysql.schema.xml
Ищем
меняем на
Добавлю к инструкции, необходимо так же в default.js поправить строку
на строку
у меня это 283 — 285 строка
Без этой правки при добавлении в корзину страница будет перезагружаться, пока количество товара в корзине не достигнет единицы