В CS-Cart по умолчанию нет возможности работы с дробными значениями остатков товаров, это вызывает большие неудобства для владельцев магазинов продуктов, стройматериалов, типографии. Любой продукции где надо оперировать дробными значениями.
Еще одна проблема - это продажа товара упаковками, вы можете задать шаг количества товара, но не будет понятно сколько при этом упаковок получит клиент. Или вы продаете товар упаковками, но учитываете его на складе в штуках, либо в весе(кг, г, т) или объеме(м3, л3) Наш модуль решает сразу 2 проблемы и позволяет продавать товары дробными частями и упаковками

Вы можете гибко настраивать модуль для каждого товара индивидуально или для всего магазина в целом, либо добавить исключения.
Модуль поддерживает отображения единицы измерения количества товара, настройку шага для выбора количества, минимального и максимального количество товара для заказа. Он решает проблемы отображения доступных товаров на сайте и упрощает процесс продажи.

Продажа товара упаковками теперь настраивается очень гибко и понятно как для владельца магазина, так и для клиента. Вы можете:
- Продавать только упаковками и отображать упаковки;
- Продавать упаковками и показывать сколько единиц товара получит клиент;
- Продавать штуками и показывать и давать добавлять товар в корзину упаковками.
При этом учитывать товар вы будете поштучно (целыми числами или дробями) и настраивать это можно индивидуально для каждого товара.

Особенности модуля
- Продажа товаров дробными единицами;
- Совместимость с CommerceML;
- Установка единицы измерения количества товаров. Как глобально, так и локально;
- Отключение дробного остатка для единиц введенных в исключения;
- Установка шага выбора количества товаров для заказа;
- Установка минимального и максимального значения для заказа;
- Настраиваемое отображение для продажи упаковками;
- Настраиваемое отображение количества в корзине;
- Совместим с шаблонами Unitheme и Youpi.
- Store Builder
- Store Builder Ultimate
- Multi-Vendor
- Multi-Vendor Plus
- Multi-Vendor Ultimate
- Вендорам
- Владельцам
- Покупателям
- English
- Русский
- 4.17.X
- 4.16.X
- 4.15.X
- 4.14.X
- 4.13.X
- 4.12.X
Установка
После скачивания модуля, его установка производится штатными средствами CS-Cart на странице Панель администратора → Модули → Управление модулями → Загрузить и установить модуль (+).
Для версии CS-Cart 4.13.1 и выше Панель администратора → Модули → Управление модулями → Кнопка Шестеренка → Ручная установка.

Установка хуков
Для корректной работы требуется установить хуки по инструкции. Информация собрана во вкладке модуля Информация.
Данная операция по добавлению хуков актуальна для текущей версии модуля v.2.5.13 и более поздних, в будущих версиях возможно данная операция уже не понадобиться.

Для отображения количество товара в корзине, необходимо добавить 3 хука в файл “fn.cart.php”:
- Откройте файл fn.cart.php (файл будет находиться по пути: app/functions/fn.cart.php);
- В открывшемся файле найдите строку с кодом (ориентировочно между строк 6057-6062):
- После найденной строчкой вставьте код:
- В результате у вас должно получится следующее:
- Далее в файле найдите строку с кодом (ориентировочно между строк 6522-6524):
- После найденной строчкой вставьте код:
- В результате у вас должно получится следующее:
- Далее в файле найдите строку с кодом (ориентировочно между строк 9340-9342):
- После найденной строчкой вставьте код:
- В результате у вас должно получится следующее:
- Сохраните изменения в файле;
- Очистить кэш:
- В админ панели выберите Администрирование → Хранилище данных → Очистить кэш.
if (!empty($product['qty_step']) && $product['qty_step'] > $min_qty) {
$min_qty = $product['qty_step'];
fn_set_hook('check_amount_in_stock_min_qty', $product, $min_qty, $product_id);
if (!empty($product['qty_step']) && $product['qty_step'] > $min_qty) {
$min_qty = $product['qty_step'];
}
fn_set_hook('check_amount_in_stock_min_qty', $product, $min_qty, $product_id);
$cart_amount_changed = false;

$amount = fn_normalize_amount(@$data['amount']);
fn_set_hook('add_product_to_cart_post_normalize_ammount', $product_id, $amount, $data);
$amount = fn_normalize_amount(@$data['amount']);
fn_set_hook('add_product_to_cart_post_normalize_ammount', $product_id, $amount, $data);
if (!isset($data['extra']['exclude_from_calculate'])) {

$amount = fn_normalize_amount($v['amount']);
fn_set_hook('update_cart_products_normalize_amount_post', $amount, $v);
$amount = fn_normalize_amount($v['amount']);
fn_set_hook('update_cart_products_normalize_amount_post', $amount, $v);
$v['extra'] = empty($cart['products'][$k]['extra']) ? array() : $cart['products'][$k]['extra'];


Для работы с commerceml, необходимо добавить хук в файл “OrderConvertor.php”:
- Откройте файл OrderConvertor.php (файл будет находиться по пути: app/addons/commerceml/src/Convertors/OrderConvertor.php);
- В открывшемся файле найдите строку с кодом (ориентировочно между строк 44-46):
- После найденной строчкой вставьте код:
- В результате у вас должно получится следующее:
- Сохраните изменения в файле;
- Очистить кэш:
- В админ панели выберите Администрирование → Хранилище данных → Очистить кэш.
$order->id->external_id = $element->getAsString('id');
fn_set_hook('commerceml_order_convertor_convert_pre', $element, $import_storage, $order);
$order->id->external_id = $element->getAsString('id');
fn_set_hook('commerceml_order_convertor_convert_pre', $element, $import_storage, $order);
foreach ($element->get('products/product', []) as $item) {


Настройка
Настройка модуля (Глобальные настройки)
Перейдите в раздел Модули → Скачанные модули → Дробный остаток → Вкладка Настройки
Основные настройки:
На вкладке настройки поделены на 3 раздела, Глобальные настройки для товаров, Глобальные настройки для упаковок, Настройки корзины.
Применение этих настроек влияет сразу на все товары магазина, если не заданы локальные настройки у товара (об этом ниже).
Глобальные настройки для товаров
Использовать дробный остаток - Включение данной функции позволит редактировать поле: Единица измерения количества.
ПримерНапример в магазине продающий кабеля присутствуют товары продающейся только в метрах, в этом случае в настройках модуля можно включить использование дробного остатка и задать единицу измерения количества, метр. В результате у всех товаров (если локально у товара не выбрано другая настройка/выключено использование дробного остатка) будет отображаться единица измерения количества указанная в глобальных настройках модуля.

Глобальные настройки для упаковок
Товар продаётся:
- Поштучно - товары продаются штуками, все товары (если локально у товара не выбрано другая настройка/включено продажа упаковками) будут продаваться в штучном или аналогичном виде;
- Упаковками - товары продаются упаковками, можно задать:
- Количество товара в упаковке - Шаг изменения количества товара, который будет применяться к товарам продающимся упаковками;

Варианты отображения выбора количества товара:
- Показывать количество упаковок - Отображать в карточке товара и каталоге только счетчик с количеством упаковок;
- Показывать количество товара и упаковок - Отображать в карточке товара и каталоге счетчик с количеством упаковок и количеством товаров в упаковке. Пример
- Количество позиций - сколько видов товара лежит в корзине;
- Количество единиц - сколько всего единиц товара лежит в корзине;
- Не отображать.
- Отображать единицы измерения в предложениях продавцов
- Отображать все способы продажи на странице категорий
- Глобальные настройки:
- Для товара будет использоваться единица измерения количества из глобальных настроек модуля;
- Для товара можно можно задать:
- Шаг списка выбора количества;
- Минимальное количество товара для заказа;
- Максимальное количество для покупки одного товара.
- Да:
- Для товара принудительно будет использоваться дробный остаток;
- Для товара можно можно задать:
- Единица измерения количества;
- Шаг списка выбора количества;
- Минимальное количество товара для заказа;
- Максимальное количество для покупки одного товара.
- Нет:
- Для товара принудительно будет выключен дробный остаток;
- Для товара можно можно задать:
- Единица измерения количества.
- Глобальные настройки:
- Для товара будут использоваться глобальные настройки для упаковок;
- Для товара не доступны к редактированию поля:
- Количество товара в упаковке;
- Варианты отображения выбора количества товара;
- Да:
- Для товара можно задать количество товара в упаковке;
- Для товара можно выбрать варианты отображения выбора количества товара;
- Нет:
- Товар продается штуками, глобальные настройки не влияют на товар, локальные поля недоступны для редактирования.

Например в магазине по продаже продуктов оптом присутствует товар: ящик молока. Данный товар необходимо продавать упаковками и демонстрировать, что в 1 упаковке 12 пакетов молока. Для этого в настройках модуля необходимо выбрать: - Товар продаётся: Упаковками; - Количество товара в упаковке: 12; - Варианты отображения выбора количества товара: Показывать количество товара и упаковок.

Настройки корзины
Режим отображения количества на иконке корзины - Позволяет выбрать вариант отображения на иконке корзины:



В настройках модуля в вкладке Отображение представлены настройки отвечающие за отображение единиц измерения и способов продажи на витрине.

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

Эта и все последующие настройки отвечают за отображение всех способ продажи на страницах и блоках по выбору.

К примеру вы не хотите перегружать информацией клиента на странице отложенных товаров и блоке товаров. В этом случае снимаются галочки с нужный пунктов и на витрине на этих страницах и блоках будет отображаться только стандартный счетчик добавления товара в корзину, вместо расширенного с отображением упаковок и значений шага в упаковке.
Вид с включенной настройкой Отображать все способы продажи в блоке товаров:

Вид с выключенной настройкой Отображать все способы продажи в блоке товаров:

Вид с включенной настройкой Отображать все способы продажи на странице отложенные товары:

Вид с выключенной настройкой Отображать все способы продажи на странице отложенные товары:

В настройках модуля во вкладке Информация отображается инструкция по добавлению хуков, описанная в начале данной инструкции.
Настройка модуля (Локальные настройки)
Перейдите в раздел Товары → Товары → Откройте товар для настройки дробного остатка → Перейдите во вкладку Модули → Найдите блок MS: Дробный остаток.

Настройки для товаров
Использовать дробный остаток
В магазине по продаже кондитерских товаров необходимо продавать товар миндальные лепестки, минимальный заказ от 500 гр. шаг увеличения по 100 гр. и максимальное количество товара для заказа 2000 гр. В этом случае в настройках модуля задается Единица измерения количества и включается Использование дробного остатка:

В настройках товара заполняются следующие поля:

В результате карточка будет выглядеть так:

Например в магазине по продаже мебели есть товар саморезы, продаваемые в граммах, с шагом в 50 гр. минимальным заказом от 200 гр. и максимальным до 5000 р. В этом случае в настройках модуля Использование дробного остатка выключено:

В настройках товара заполняются следующие поля:

В результате карточка будет выглядеть так:

Например в магазине по продаже напитков можно задать единицы измерения бутылка, банка, пакет и т.п. для каждого товара:

Настройки для упаковок
Товар продаётся упаковками
Например магазин по продаже напитков оптом, предлагает клиентам только упаковки по 6 бутылок. В этом случае настройки модуля будут выглядеть так:

Локально для товаров надо выбрать:
Использовать дробный остаток: Глобальные настройки Товар продаётся упаковками: Глобальные настройки
В результате карточка будет выглядеть так:


Массовое редактирование
Через обновление товаров в CS-Cart:
- Открыть раздел Товары → Товары;
- Выберите необходимые товары;
- Нажмите Редактировать выбранные;
- Выбрать поля для редактирования;
- Нажать Редактировать выбранные;
- Ввести новые значения для выбранных полей; Значение global - Глобальные настройки Y - Да N - Нет
- Нажать Сохранить.



Через экспорт импорт товаров:
- Открыть раздел Администрирование → Экспорт данных → Товары;
- Переместить из списка доступных полей в экспортируемые поля следующие поля: MS:Allow Fractional Amount MS:Product Amount Step MS:Product minimum order quantity MS:Product maximum order quantity MS:Product Amount Postfix MS:Product Sale Type MS:Show Sale Types Данные поля отобразятся в табличном файле для редактирование настроек дробного остатка
- Нажать Экспорт;
- В табличном файле внести необходимые изменения и сохранить;
- Открыть раздел Администрирование → Импорт данных → Товары;
- Нажать кнопку +;
- Выбрать табличный файл;
- Перейти на следующий шаг Сопоставление полей;
- Сопоставить поля как изображено ниже:
- Нажать Импорт.


v2.10.0 (скоро)
[+] Новый расчет количества. Происходит расчет кол-во уп. переводится в ед. и сравнивается с кол-во ед. в наличии, если их достаточно, то добавляет в корзину
[*] Подправлены стили
[+] Добавлена запись данных по дробному остатку товара в таблицу order_details после оформления/обновления заказа
[+] Добавлена передача в шаблоны писем по заказу переменные из настроек модуля и переменные по дробному остатку по каждому товару в таблице товаров
[!] Не корректный тег на странице "Товара". Исправлено
[*] Изменены стили для счёткика количества на странице "Товара" и "Корзина" для youpi темы
[!] Ошибка расчёта количества при вводе значения вручную. Исправлено
[!] Дубликат атрибута id на странице "Корзина". Исправлено
[!] При установке количества товара на странице "Корзина" не работает округление. Исправлено
[*] Добавлена переменная для вывода кол-ва товаров csc_fractional_stock
[+] В hooks.php исправлен метод fn_csc_fractional_stock_create_order_details (добалена логика проверки и запись значения в специальную переменную - единичный товар или упаковки товара)
[+] По пути \app\addons\csc_fractional_stock\Tygh\Template\Snippet в класс CscFractionalStockVariables добавлена переменная csc_fractional_stock_show_amount
[+] В класс CscProductVariable в метод attributes добавлена csc_fractional_stock_show_amount
[+] Добавлено отображение символа валюты для переменной csc_fractional_stock_price_by_piece
[!] Неккоректно считалось стоимость товара в упаковке при добавлении в корзину. Исправлено
v2.9.1 от 28.03.2024
[*] Стандартизация языковых переменных
[*] Подправлены стили у unitheme2
[+] Добавлены шаблоны и стили для youpitheme
[+] Добавлены настройки для массового редактирования товаров
[*] Подправлены стили unitheme2 и файл лицензии
[+] Добавлена возможность отображать товары в единицах измерений на всех этапах оформления заказа даже если товар продается упаковками
v2.9.0 от 20.02.2024
[*] Проведена оптимизация запросов в базу данных
v2.8.1 от 16.02.2024
[*] Добавил проверку локального значения для товара при отображении цен для единиц товара и для упаковки
v2.8.0 от 16.02.2024
[+] Добавлены настройки в модуле и у товара для управления использования цены (единицы/упаковки)
v2.7.1 от 30.01.2024
[!] Удален дублирующий код, нарушавший добавление в корзину дробного остатка при работе со складами
v2.7.0 от 19.01.2024
[+] Добавлена возможность работы с модулем "Склады"
[*] Исправлено отображение изображения товара на странице детального просмотра заказа на витрине
[*] Подправлены стили
[*] Если товар продается упаковками, то при оформлении заказа количество будет вычитаться в единицах товара, а не в упаковках
[*] Изменен механизм вычитания количества на складах при продаже товара упаковками и включенном режиме отображения "Показывать количество товара и упаковок" товар будет списываться количеством выбранных штук
[*] Изменен механизм вычитания количества на складах при продаже товара упаковками и включенном режиме отображения "Показывать количество упаковок" товар будет списываться: количество упаковок, умноженное на количество штук в упаковке
[*] При продаже товара упаковками и включенном режиме отображения "Показывать количество упаковок" в поле ввода количества упаковок можно ввести только целые исла
v2.6.0 от 10.01.2024
[*] Изменена структура во вкладке Настройки->Информация
[+] Добавлена передача дробных остатков через обмен commerceml
[-] Удалены исключения для единиц измерений
[+] Добавлена передача дробных остатков товаров в заказе через обмен commerceml
[+] Запросы в базу данных из файла addon.xml перенесены в файл func.php для корректной проверки перед выполнением запросов
[*] Изменены стили
[+] Добавлены языковые переменные
[+] Добавлены настройки для управления "Способ изменения количества товаров"
[*] Переименованы настройки "Шаг списка выбора количества" в "Шаг изменения количества товара"
[*] Исправлено увеличение количества упаковок
v2.5.14 23.11.2023
[!] Экспорт/импорт поля "Единица измерения количества"
v2.5.13 14.11.2023
[-] Удаление закомментированного кода
[!] Корректировка поля MS: "Минимальное количество товара для заказа"
[!] Перевод поля "Единица измерения количества"
[!] Корректное отображение в карточке товара
[*] Актуальные номера строк для добавления хуков модуля
[+] Добавлена информация о добавлении хуков модуля
[!] Добавлены виды отображения количества товара на иконке корзины
[!] Отображение дробного значения в корзине
[!] Отображение счетчика количества товаров в карточке товаров
[+] Стандартизация модуля
v2.5.12 от 23.10.2023
[!] Правильный подсчет упаковок на странице корзины
[!] Доступность сервиса на странице заказа в административной панели
[!] Поле "Единица измерения количества" в настройках продукта изменено на тип "float"
[!] Поля, связанные с выбором количества, сохраняют только положительное значения
[!] В поле MS: "Минимальное количество товара для заказа" доступен только ввод цифровых значений
[*] Стандартизация языковых переменных
v2.5.11 от 16.10.2023
[*] Изменены короткие теги на обычные
[*] Переработаны настройки модуля
v2.5.10 от 18.07.2023
[!] Корректное отображение в карточке товара
[!] Загрузка иконки
[!] Поле "Шаг количества товара", сохраняет только положительное значения
[!] Корректное отображение названия единиц на страницах товары по акции, новинки, хиты продаж и результат поиска
[!] Отображение единиц измерения на странице отложенные
v2.5.9 от 25.06.2023
[+] Стандартизация модуля
v2.5.8 от 12.06.2023
[+] Стандартизация модуля
v2.5.7 от 08.06.2023
[*] Подправлен стиль в блоке "Хиты продаж" если он открывается в карточке товара
v2.5.6 от 05.06.2023
[+] Добавлена настройка отображения дробного остатка в импорт и экспорт товаров
[+] Добавлены настройки и регулировка отображения всех способов продаж на разных страницах
[+] Добавлена настройка для отображения единицы измерения в блоке предложений от продавцов в карточке товара
[!] Исправлена ошибка, которая ломает страницу просмотра категории
v2.5.5 от 20.05.2023
[+] Добавлена настройка отображения дробного остатка в карточке товара на странице редактирования товара в админке
v2.5.4 от 16.05.2023
[*] Мелкие правки в шаблоне qty.override.tpl
v2.5.3 от 16.05.2023
[!] Исправлена ошибка при добавлении товара в корзину при работающем модуле "Общие товары продавцов"
v2.5.2 от 15.05.2023
[*] Лицензирование
v2.5.1 от 10.05.2023
[!] Исправлен импорт поля product_amount_postfix
Локально задавать тип упаковки
Добавление локальной настройки ввода типа упаковки (метры, паллеты, коробки, ящики)
Обучить модуль Склады дробным остаткам
Обучить модуль Склады дробным остаткам
Разделение модуля Дробный остаток на 2 модуля
Разделение существующего модуля на 2 автономных
Адаптация и настройки отображения счетчика количества товаров
Адаптация и настройки отображения счетчика количества товаров
Арифметика продажи упаковками
Использование существующей цены как за уп так и за м2
Использование существующей цены как за уп так и за м2
Количество товара для отображения в карточке
Доработка модуля
Новая логика расчета товара в наличии при продаже уп.
Новая логика расчета товара в наличии при продаже уп.
Удобные настройки
Настройки для модуля интуитивно не понятные, надо это исправить, сделать их логичными и удобными
шт. или упаковки отображение при оформлении заказа
Настройка отображение типа товара (упаковками, штуками и т.д.) на всех этапах оформления заказа.
Ваш запрос отправлен!
Ваш запрос на доработку модуля отправлен в техническую поддержку. Мы изучим ваши пожелания и дадим обратную свзязь.
Вам придет уведомление на указанный Email.