Как изменить количество знаков после запятой у товара в minishop2

Преамбула

В стандартных настройках Minishop2 для полей price и old_price установлено ограничение ввода на 2 знака после запятой. 

Речь об этих полях, которые на скриншоте переназваны согласно требованию заказчика. 

Заказчик хотел 3 знака после запятой.

 

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

 

Но это не работает.

Решение

Это не мое решение, но оно комплексное и собранное из разного рода google-поисков по разрозненным ресурсам.

Мне удалось сделать это путем изменений в 4 (четырех) местах:

  • php;
  • js;
  • бд (база данных);
  • schema.

Только после этого и очисток кэша (физического и админки) все заработало.

1. PHP

Путь к файлу  ../core/components/minishop2/processors/mgr/product/getlist.class.php

Найти и заменить 2 на 3 или необходимое количество

                $array['price'] = round($array['price'], 2);
$array['old_price'] = round($array['old_price'], 2);
            
2. JS

Путь к файлу  ../assets/components/minishop2/js/mgr/product/product.common.js

Найти и заменить decimalPrecision 2 на 3 или необходимое количество

                price: {
    xtype: 'numberfield',
    decimalPrecision: 3,
    description: '
' + _('ms2_product_price_help') }, old_price: { xtype: 'numberfield', decimalPrecision: 3, description: '
' + _('ms2_product_old_price_help') },
3. Schema

Путь к файлу  ../core/components/minishop2/model/schema/minishop2.mysql.schema.xml

Найти и заменить precision c 12,2 на 13,3 (по аналогии с weight) в object  "table="ms2_products" для

key="price" и  key="old_price"

precision="13,3"
4. БД

Через phpmyadmin или другим доступным способом найти таблицу modx_ms2_products

Изменить поля (для простоты сделать как у weight)

 

Итог

Не проверял с большим количеством, но по "3" результат есть.