Единицы измерений и дробное количество товаров в OpenCart без модулей и хаков


135

В дефолтном OpenCart количество товара - только целое число. Хочешь продавать ткань по 2.5 метра, доски по 0.75 штуки, краску по 1.25 литра или гвозди по 100.5 кг? Ни в этот раз. Система просто не даст ввести дробь, округлит до 1 и даже ошибку не выдаст. Для многих ниш это важный момент, а vanilla OpenCart тщательно игнорирует эту протребность. Клиент хочет 3.7 метра обоев - а ты ему "нет, ровно 4"!

Модули для дробного количества? Да, их полно. И все они - зло во плоти. Ставить отдельный модуль, который переписывает (часто криво, особенно если у тебя уже зоопарк модулей) корзину, checkout, заказы, остатки, экспорт/импорт в складской учёт - это не решение, а мазохизм. Надеюсь ты согласен, что это базовая фича e-commerce, а не экзотика, ну камон?

Как всегда, я сделал по-нормальному: добавил полноценный справочник единиц измерения количества прямо в ядро. Само собой всё остальное работает как и прежде, без багов, костылей и необходимости дополнительных действий.

Справочник единиц измерения в админке

Там можно:

  • В разделе Настройки > Локализация > Единицы количества, добавить свою единицу (многие уже добавлены).
  • Там же редактировать существующие.
  • Для каждого товара указать любую из добавленных единиц (по-умолчанию выбрано без единиц, как и есть в дефолте), ничего не ломается.

Всё работает на фронте: в карточке товара, в корзине и checkout - корректно отобрадаются дробные значения количества и единица измерения. В админке заказов - тоже всё красиво отображается с единицами. Остатки считаются корректно - обычная арифметика, ничего сверхъестественного. Экспорт/импорт, синхронизация со складским учетом - тоже без проблем, потому что это теперь часть ядра.

Никаких модулей, никаких переписываний контроллеров, никаких "PRO-версия за доплату". Поставил сборку, зашёл в локализацию, добавил нужную единицу измерения, привязал к товару, указал минимум и продавай хоть 0.05 метра, хоть 147.3. Клиент счастлив, ты не думаешь о техническом долге после очередного установленного модуля. Ну красота!

Но на слово верить не надо, качай сборку, тестируй. Увидишь баг, добро пожаловать в issues!


Написать комментарий
Введите код с картинки