Округление цены до тысячных в Minishop2?
Нужно в minishop2 сделать округление цены до тысячных. например 1.431
Пробовал уже все, что мог)) добился того, что цену вписать могу, а после сохранения, он сам округляет её((
В product.common.js пробовал:
ms2_price_format — менял — "[5, ",", " "]"
В getlist.class.php тоже пробовал менять, как в этом "посту"
Как же победить?). Если создавать свое поле, оно явно не будет работать в корзине корректно.
Пробовал уже все, что мог)) добился того, что цену вписать могу, а после сохранения, он сам округляет её((
В product.common.js пробовал:
price: {
xtype: 'numberfield',
decimalPrecision: 4,
description: '<b>[[+price]]</b><br />' + _('ms2_product_price_help')
},
decimalPrecision: 4 — изменил на 4ms2_price_format — менял — "[5, ",", " "]"
В getlist.class.php тоже пробовал менять, как в этом "посту"
Как же победить?). Если создавать свое поле, оно явно не будет работать в корзине корректно.
Комментарии: 15
выставил тип decimal(12,3) и в настройках прописал формат.Сделали? Кроме исправления getlist.class.php
А это где именно?
Я нашел только в minishop2.mysql.schema.xml
Я нашел только в minishop2.mysql.schema.xml
<field key="price" dbtype="decimal" precision="12,2" phptype="float" null="true" default="0"/>
Поменял на 12,4)) что то не сработало!)
Только теперь на выходе округляет, куда рыть?) В админке: 0.4398 | в товаре: 0.4400
Пробовал выставить ms2_price_format_no_zeros — Нет, ну так он округлил все равно и добавил лишние нули))
А в админке получилось выставить даже «десятитысячный» формат, после того как в Бд выставил свои значения, за что Вам огромное спасибо)!))
Пробовал выставить ms2_price_format_no_zeros — Нет, ну так он округлил все равно и добавил лишние нули))
А в админке получилось выставить даже «десятитысячный» формат, после того как в Бд выставил свои значения, за что Вам огромное спасибо)!))
В /assets/components/minishop2/js/web/default.js нашел такое, оно?:
miniShop2.Utils = {
empty: function (val) {
return (typeof(val) == 'undefined' || val == 0 || val === null || val === false || (typeof(val) == 'string' && val.replace(/\s+/g, '') == '') || (typeof(val) == 'object' && val.length == 0));
},
formatPrice: function (price) {
var pf = miniShop2Config.price_format;
price = this.number_format(price, pf[0], pf[1], pf[2]);
if (miniShop2Config.price_format_no_zeros && pf[0] > 0) {
price = price.replace(/(0+)$/, '');
price = price.replace(/[^0-9]$/, '');
}
return price;
},
Т.е. в админке теперь всё норм, даже сохраняет. А на самом сайте, например в корзине — округляет))
Закомментируйте этот кусок кода посмотрите, что будет.
formatPrice: function (price) {
var pf = miniShop2Config.price_format;
price = this.number_format(price, pf[0], pf[1], pf[2]);
if (miniShop2Config.price_format_no_zeros && pf[0] > 0) {
price = price.replace(/(0+)$/, '');
price = price.replace(/[^0-9]$/, '');
}
return price;
},
В таком случае он просто перестает считать общую сумму. Ради интереса попробовал вообще убрать default.js, относительно работает, но сумму так же в корзине округляет 0.4400, хотя в БД 0.4389 и в админке тоже правильно))
Такое ощущение, что берет из Бд, хотя я уже везде там выставил у cost и price decimal(12,4) ((
Есть еще версии?)
Такое ощущение, что берет из Бд, хотя я уже везде там выставил у cost и price decimal(12,4) ((
Есть еще версии?)
Сделайте так
formatPrice: function (price) {
return price;
},
В Итого Стоимость убрались нули)) т.е. опять до сотых))
Так как я пробовал отключать /assets/components/minishop2/js/web/default.js, наверное дело не в скрипте(( Либо внутренность плагина minishop, либо в БД...((
Так как я пробовал отключать /assets/components/minishop2/js/web/default.js, наверное дело не в скрипте(( Либо внутренность плагина minishop, либо в БД...((
Попробовал, кеш почистил, не получилось))
В админке цена так:
В корзине так:
Округляет последние 2 цифры и всё… Накинули версию, что возможно CSS, но прям сомнения.((
array (
'dbtype' => 'decimal',
'precision' => '12,4',
'phptype' => 'float',
'null' => true,
'default' => 0.0,
),
В админке цена так:
В корзине так:
Округляет последние 2 цифры и всё… Накинули версию, что возможно CSS, но прям сомнения.((
Судя по всему у вас округление или в шаблоне или феноме или плагин какой-то еще отрабатывает и приводит все к этим делам. Может, плагин на добавление товара в корзину. Но скорее всего нужно смотреть на плагины и сам код добавления товара в корзину, по-моему там где то видел как раз 2 после зпт в ручную. если не ошибаюсь.
Тестирую на пустом шаблоне, скорее всего плагины. Конечно автор хорошо спрятал, что аж не знаю куда лезть
Причем заметил, в самом товаре выводит нормально (через [[+price]]), а в корзине округляет {$product.price}
в системных настройках же меняли формат числа? ключ ms2_price_format
Да, все таки очень странно. На странице товара реально выводит нормально: 0,4398, через [[+price]]
А в корзине округляет в такой формат: 0.4400 через {$product.price}
А в корзине округляет в такой формат: 0.4400 через {$product.price}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.