
Stock Reserve & Reorder для OpenCart — физический остаток, резерв заказов и точка дозаказа
Модуль для OpenCart 4, 3 и 2.3 показывает для каждого товара и значения опции три числа: сколько физически на полке, сколько уже продано, но ещё не отгружено (резерв, с заказами, которые его держат), и сколько ещё можно продать. Приход добавляет «+N» к остатку, а не перезаписывает его; списание и инвентаризация пишутся в журнал и отменяются. Точка дозаказа — по скорости продаж, сроку поставки и страховому запасу. Pro — параметры на товар, рекомендуемое количество, документы из таблицы, CSV и ежедневный отчёт на e-mail и в Telegram.
- Совместимость
- OpenCart 4.0.2 – 4.1.x (проверено на 4.1.0.3 и 4.0.2.3, в том числе с DB_DRIVER=pdo) · OpenCart 3.0.x (проверено на 3.0.5.0) · OpenCart 2.3.0.2 (PHP 7.0) · PHP — как требует ваша версия OpenCart (проверено на 7.0 и 8.x) · MariaDB 10.11
- Версия
-
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3) - Лицензия
- один сайт, навсегда
- Триал
- 7 дней, без карты, один на сайт
- Обновлено
- 9 октября 2026
Что есть во Free,
а что даёт Pro
Бесплатная версия работает без ограничения по времени. Pro добавляет остальные функции из таблицы.
Как это выглядит
Главное о модуле
Как это выглядит для покупателя
Покупатель модуля не видит: на витрине и в оформлении заказа ничего не меняется, скриптов и запросов на страницах магазина модуль не добавляет, а OpenCart продаёт дальше из того же поля «Количество».
Что получает админ
Пункт меню Каталог → «Остатки и дозаказ» и страницы «Остатки», «Дозаказ», «Складские документы», «Настройки».

Триал стартует, когда вы попросите
Свежая установка — бесплатная версия, ничего не включается само. Кнопка «Попробовать Pro 7 дней» → e-mail → ключ сразу в окне и письмом.

Один ключ — один сайт
Переносите магазин — отвяжите лицензию на старом домене и активируйте на новом сами. Для студий — ключи на 5, 25 сайтов или без ограничений.
Технические требования
OpenCart 4.0.2 – 4.1.x (проверено на 4.1.0.3 и 4.0.2.3, с драйвером базы mysqli и pdo), 3.0.x (проверено на 3.0.5.0) или 2.3.0.2.
PHP — тот, что нужен вашей версии OpenCart: сборка для 2.3 проверена на PHP 7.0, остальные — на PHP 8.x.
База: проверено на MariaDB 10.11. Право CREATE TEMPORARY TABLES ускоряет страницы на больших каталогах; без него модуль считает прямыми запросами с теми же цифрами.
PHP-расширение cURL — для лицензии и Telegram.
Для ежедневного отчёта в OpenCart 3 и 2.3 — cron хостинга, который раз в день открывает адрес из настроек.
История версий
Для OpenCart 4.x, 3.x и 2.3: физический, зарезервированный и доступный остаток по заказам по правилу списания ядра (варианты OpenCart 4, значения опций), заказы резерва, приход «+N»,…
Вместе с Stock Reserve & Reorder для OpenCart покупают
4 модуля одним заказом — на 40% дешевле, чем по отдельности


Nova Poshta Premium — модуль Новая Почта для OpenCart 2.3, 3.x и 4.x

LiqPay — оплата картой для OpenCart 2.3, 3.x и 4.x

Telegram-уведомления и Viber/SMS покупателям для OpenCart
Полное описание модуля
Stock Reserve & Reorder для OpenCart — модуль для магазинов, которые держат товар на собственном складе. OpenCart хранит для товара одно число — «Количество» — и вычитает из него заказ, как только тот переходит в статус обработки, задолго до того, как посылку забрали с полки. Поэтому после нескольких дней продаж число в админке не совпадает с тем, что лежит на складе, а инвентаризация начинается с вопроса «а куда делись 7 штук?».
Модуль читает заказы и показывает для каждого товара и каждого значения опции три числа: физический остаток (что лежит на полке), резерв (продано, но ещё не отгружено — со списком заказов) и доступный (что ещё можно продать). Приход добавляет «+N» поверх остатка, а не перезаписывает его; списание и инвентаризация пишутся в журнал и отменяются. Точка дозаказа считается по скорости продаж, сроку поставки и страховому запасу.
Для WooCommerce есть отдельная версия — Stock Reserve & Reorder для WooCommerce.
Как это выглядит для покупателя
Покупатель модуля не видит: на витрине и в оформлении заказа ничего не меняется, скриптов и запросов на страницах магазина модуль не добавляет, а OpenCart продаёт дальше из того же поля «Количество». Покупатель замечает только следствие: товар дозаказали вовремя, а не тогда, когда последнюю единицу уже продали дважды.
Что получает админ
Пункт меню Каталог → «Остатки и дозаказ» и страницы «Остатки», «Дозаказ», «Складские документы», «Настройки».
- Плитки: сколько единиц в резерве и в скольких позициях, сколько физически на полке, сколько позиций пора дозаказать и сколько перепродано.
- Таблица для каждого товара и значения опции, где OpenCart вычитает со склада: количество в OpenCart, физический, резерв, доступный, продано за период, точка дозаказа и состояние — «Норма», «Дозаказать», «Перепродано», «Ничего доступного», «Не отслеживается».
- Клик по резерву открывает заказы, которые его держат: номер, дата, статус, покупатель, количество и пометка, списал ли OpenCart товар.
- Фильтры: поиск по названию, модели, SKU или #ID, категория, «с резервом», «дозаказать + перепродано», «ничего доступного», значения опций, отключённые товары; сортировка по резерву, доступному остатку, дням запаса или срочности.
- Изменение остатка из строки: приход «+N», списание «−N» или инвентаризация — посчитанное на полке становится физическим остатком. Каждое изменение — документ в журнале со счётчиком до и после, его можно отменить.
- Строка в карточке товара: «Физически · резерв · доступно» под полем «Количество» и ссылка на страницу остатков.
Дозаказ
- Точка дозаказа = продажи в день × (срок поставки + страховой запас). Позиция попадает в «Дозаказать», когда доступный остаток на этой точке или ниже, и в «Перепродано», когда резерв больше физического остатка.
- «Хватит на» — дней продаж на доступном остатке при текущей скорости.
- Pro: срок поставки, страховой запас, минимальный остаток, кратность упаковки и поставщик для конкретного товара или значения опции; колонка «Заказать» с рекомендуемым количеством; кнопки «CSV для закупки» и «Приход из рекомендаций».
Pro: складские документы, CSV и ежедневный отчёт
- Многострочные документы — приход, списание или инвентаризация с номером, поставщиком и примечанием. Строки вставляются прямо из таблицы: SKU, модель,
#product_idили#product_id/option_value_idи количество. «Проверить строки» показывает остаток до и после; неизвестный код, неоднозначная модель или нулевое количество блокируют весь документ, пока строку не исправят. - CSV остатков, списка закупки и всех изменений остатка: UTF-8 с BOM, разделитель «;», названия, начинающиеся с «=», не выполняются в Excel как формулы.
- Ежедневный отчёт — позиции на точке дозаказа или ниже с рекомендуемым количеством и, по желанию, перепроданные. Если ничего не нужно — ничего не отправляется.
- Каналы: до 5 e-mail через почтовые настройки магазина и Telegram (токен бота и ID чата). В OpenCart 4 отчёт запускает планировщик OpenCart, в 3 и 2.3 — адрес с секретным ключом для cron хостинга.
Как это работает — шаг за шагом
- Модуль берёт заказы в резервных статусах — по умолчанию это статусы обработки вашего магазина без статусов выполнения, то есть «продано, но не отгружено».
- Для каждого товара и значения опции он считает, сколько из этих заказов OpenCart уже списал из «Количества» — по тому же правилу, что и ядро (OpenCart 4.1 объединяет списки статусов обработки и выполнения, вариант OpenCart 4 списывает ещё и главный товар).
- Физический = количество в OpenCart + уже списанные товары резервных заказов. Резерв = все товары резервных заказов. Доступный = физический − резерв.
- Продажи в день = продано за период (по умолчанию 30 дней) ÷ дни. Точка дозаказа = продажи в день × (срок поставки + страховой запас); в Pro — не меньше минимального остатка.
- Приход, списание или инвентаризация меняют «Количество» одним атомарным запросом «количество + N», поэтому продажа, пришедшая в ту же секунду, не теряется. Каждое изменение — в журнале, отмена возвращает его назад.
Что под капотом
- Без правок ядра. Без OCMOD-патчей; пункт меню и строка в форме товара добавляются событиями OpenCart. Одна библиотека классов одинакова в трёх сборках, код совместим с PHP 7.0.
- Собственные таблицы
oc_cc_stockres_doc(документы),oc_cc_stockres_move(строки изменений со счётчиком до и после),oc_cc_stockres_item(параметры товара). Таблицы ядра не меняются. - Расчёт на лету, раз на запрос во временной таблице; без кеша, поэтому цифры всегда свежие.
- Адрес крона
index.php?route=extension/cc_stockres/cron.cron&key=…(в 3.x и 2.3 —extension/module/cc_stockres_cron/cron): без ключа — «403», отчёт уходит не чаще раза в день, при сбое отправки повторяется. - Лицензия живёт в отдельной группе настроек: «Сохранить» её не трогает.
- Деинсталляция снимает события и (OpenCart 4) задание cron, а документы и параметры товаров оставляет — повторная установка их видит. Настройки модуля OpenCart при деинсталляции удаляет, лицензия в отдельной группе остаётся. Для полного удаления удалите таблицы
oc_cc_stockres_*вручную.
Как установить
- OpenCart 4: Расширения → Установщик → загрузите
cc_stockres.ocmod.zip(имя архива не меняйте) и нажмите «Установить». OpenCart 3: Расширения → Установщик →cc_stockres-oc3.ocmod.zip, затем Расширения → Модификации → «Обновить». OpenCart 2.3: залейте содержимое папкиupload/изcc_stockres-oc2.ocmod.zipв корень магазина (FTP или файловый менеджер хостинга) — Установщик 2.3 без настроенного FTP файлы не копирует. - Расширения → Расширения → Модули → CatCode Stock Reserve & Reorder → «Установить». Модуль сразу включён.
- Каталог → «Остатки и дозаказ». В «Настройках» проверьте резервные статусы, период продаж, срок поставки и страховой запас.
- Для Pro: вставьте лицензионный ключ из письма после оплаты или нажмите «Попробовать Pro 7 дней» во вкладке «Лицензия».
Вопросы
о модуле
Не нашли ответ? Напишите в Telegram — ответим в течение рабочего дня.
Чем «физический» остаток отличается от количества в OpenCart?
OpenCart вычитает товар из поля «Количество», как только заказ переходит в статус обработки, — задолго до того, как посылку забрали с полки. Модуль добавляет обратно товары таких заказов, которые ещё не отгружены: это физический остаток. Резерв — те же товары, доступный — физический минус резерв.
Модуль меняет количество товаров сам?
Нет. Цифры считаются по заказам, в каталоге ничего не перезаписывается. Количество меняется только вашим приходом, списанием или инвентаризацией: одним атомарным «количество + N», с записью в журнал и возможностью отменить.
Какие статусы считаются резервом?
По умолчанию — статусы обработки вашего магазина без статусов выполнения, то есть «продано, но не отгружено». В настройках можно выбрать свои, в том числе статусы, в которых OpenCart остаток не списывает: такие заказы помечаются «ещё не списано» и уменьшают доступный остаток.
Как считается точка дозаказа?
Продажи в день за последние N дней × (срок поставки + страховые дни), с округлением вверх. В Pro — для каждого товара отдельно и не меньше минимального остатка; рекомендуемое количество покрывает точку дозаказа плюс заданное число дней продаж и округляется до кратности упаковки.
Отчёт в Telegram работает?
Отчёт отправляется методом sendMessage Bot API по документации Telegram; в тесте его проверяли на моке сервера Telegram, живым ботом — нет. Отчёт на e-mail проверен через почтовые настройки магазина. Проверьте оба канала кнопкой «Отправить тестовый отчёт сейчас» в 7-дневном триале.
Лицензия на год?
Нет. Для OpenCart это одна оплата, лицензия навсегда, одна на все три сборки: 4.x, 3.x и 2.3. Триал Pro стартует только по вашей кнопке. После триала документы, журнал и параметры остаются, а расчёт переходит на глобальные настройки.
Модуль меняет файлы OpenCart или витрину?
Нет. Без правок ядра и OCMOD-патчей; пункт меню и строка в форме товара добавляются событиями. Витрины и оформления заказа модуль не касается, таблицы ядра не меняет — только собственные.
Пока нет ни одного отзыва. Будьте первым.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Не тот вариант, что искали?
Делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.
Заказать кастомный модуль
Покупка модуля
—
