Дробное количество товара в minishop2?

Здравствуйте!

Нашел вроде бы решения, но что-то ничего не помогает, в любом случае при указании дробного количества выходит ошибка Введите допустимые значения. Ближайшие допустимые значения

Есть ли работающие способы на сегодняшний момент? Заранее спасибо

Последним пользовался подсказками из этого коммента
Harry
23 декабря 2020, 07:44
modx.pro
486
0

Комментарии: 8

Harry
23 декабря 2020, 08:26
0
Проблема решилась, но появилась вторая.

После оформления заказа и в админке количество все равно указывается целым числом: если меньше одного, то 0, если больше, то ближайшее целое. Куда теперь ковырять, чтобы и там отображалось верно. Интересно то, что сумму считает верно, но вот именно count выводит неправильно после оформления заказа и в админке.
    Роман
    23 декабря 2020, 10:26
    0
    А что вы продаете, что у вас не целое число? Вообще в базе ms2_order_products, там установлено целое число, соответственно и в minishop2.mysql.schema.xml тоже указано целое число. Там вам много где придется править, поэтому лучше переведи вашу единицу измерения в меньшую сторону. Если продаете в литрах, переведите в миллилитры, если миллилитрах → микролитры
      Harry
      23 декабря 2020, 11:08
      0
      Ситуация такая. Я сделал сайт для снабженцов компании: они выбирают товары из каталога, добавляют их в заявки (корзина) и сохраняют их (оформление заказа). Руководство выделяет деньги в соответствии с суммой заявки каждому снабженцу. Товары разные: строительные материалы, продукты, хозтовары, также есть такие позиции как парковка, мойка и заправка. Цены могут меняться с каждым разом, поэтому помимо обычной цены я добавил еще одно поле «Цена покупки», чтобы если расходы были ниже или выше, чем в заявке, снабженцы могли это указать перед закрытием заявки и руководство видело из-за чего другая сумма. Так вот, очень неудобно было бы менять все в наименьшую сторону, так как снабженцам помимо их рабочих суматох еще и придется перед заполнением считать цены: вместо КГ в Г, вместо М в СМ, вместо М2 в СМ2 — тут 100% будут ошибки.

      Я путем велосипеда добавил возможность указывать дробное количество, но оно только в корзине. В каталоге, после оформления заказа (заявки) и в админке указываются все равно целые числа, хотя сумма считается правильно, т.е. учитываются дробные, а сам count почему-то все равно целое число.
        Роман
        23 декабря 2020, 11:23
        0
        Тогда во первых нужно поменять значение в базе данных для поля count в таблице ms2_order_products, на decimal, значение сами поставите или 10,4 или на сколько оно дробное. Или расширять класс, добавлять отдельное поле. Или, если сложно лезть в исходники minishop2 и там ломать. =) Это файлы в core где нужно править msorderproduct.map.inc.php, minishop2.mysql.schema.xml, ну и в assets/components/minishop2/js/mgr/orders/ тоже нужно смотреть. Но такой подход плохой, после обновления minishop2 все слетит. Поэтому лучше расширять классы, заменять нужные значения.
          Harry
          23 декабря 2020, 11:34
          0
          Да, изменил в БД тип count с integer на float. Теперь и в админке и после оформления заказа показывается дробное число. Но остался один момент: не подскажите почему в каталоге (сниппет msProducts) не получается добавить дробное число в корзину, т.е. я его могу изменить только в самой корзине уже, но не перед добавлением.
            Роман
            23 декабря 2020, 12:56
            0
            Возможно тут:
            /www/promelectrica.ru/assets/components/minishop2/js/web/default.js
            Тут тоже нужно посмотреть if (status['total_count'] < 1) поставить минимальное значение 0.0000001

            Нужно смотреть, что он передает. И искать все что связано с cart/add, cart/change, cart/remove
              Harry
              23 декабря 2020, 13:01
              0
              Нет, это никак не связано с этим. Потому что ошибка Введите допустимые значения. Ближайшие допустимые значения... выходит именно из-за того, что я ввожу дробное число, не важно больше или меньше 1.
    Harry
    23 декабря 2020, 14:16
    0
    1) Решение актуальное на сегодня в этом комменте.
    2) Также надо изменить в таблице ms2_order_products тип count с int(10) на float.
    3) Чтобы была возможность добавлять дробное число в корзину с каталога, достаточно в чанке tpl.msProducts.row (или в вашем аналоге) для инпута с name=«count» step=any
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8