
Order Archive для OpenCart — архив старых заказов без потери истории
Модуль для OpenCart 4, 3 и 2.3 переносит старые выполненные заказы из рабочих таблиц в отдельный архив. Список заказов в админке и поиск становятся легче, а покупатель по-прежнему видит все свои заказы в кабинете, отчёты считают и архивные, страница заказа открывается как раньше. Любое изменение архивного заказа сначала возвращает его в магазин. Без правок ядра и OCMOD.
- Совместимость
- 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) · работает рядом с модулями CatCode: Новая Почта Premium, Multi PRRO, KeyCRM / SalesDrive / KeepinCRM Sync, Returns & Exchanges, One Page Checkout, Payment Status Sync · MariaDB 10.11
- Версия
-
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3) - Лицензия
- один сайт, навсегда
- Триал
- 7 дней, без карты, один на сайт
Что есть во Free,
а что даёт Pro
Бесплатная версия работает без ограничения по времени. Pro добавляет остальные функции из таблицы.
Как это выглядит
Главное о модуле
Как это выглядит для покупателя
Для покупателя не меняется ничего. Он заходит в «Историю заказов» и видит все свои заказы — и новые, и трёхлетней давности — в одном списке, в том же порядке и с теми же страницами.
Что получает админ
Пункт «Архив заказов» в меню «Продажи» с тремя вкладками.

Триал стартует, когда вы попросите
Свежая установка — бесплатная версия, ничего не включается само. Кнопка «Попробовать 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.1–8.3. Расширение cURL — для лицензии Pro.
База: проверено на MariaDB 10.11 с таблицами InnoDB.
Расписание (Pro): в OpenCart 4 — штатный планировщик (Расширения → Cron Jobs) или cron хостинга; в 3.x и 2.3 — cron хостинга по адресу с секретным ключом, который показывает модуль.
История версий
Архив старых заказов с чтением для кабинета покупателя, страницы заказа, счёта, отчётов и модулей; автоматический возврат при любом изменении, в том числе из Multi PRRO и Returns &…
Вместе с Order Archive для 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
Полное описание модуля
Order Archive для OpenCart — модуль для магазинов, у которых за годы накопились десятки тысяч заказов. Штатный OpenCart держит все заказы в одних таблицах: каждый открытый список, поиск, фильтр и счётчик в шапке админки каждый раз проходит и по свежим заказам, и по тем, что выполнены три года назад. Удалять старые заказы нельзя: покупатели открывают их в кабинете, бухгалтерии нужны отчёты, а возвратам и CRM — история.
Модуль переносит старые выполненные заказы в отдельные таблицы-архив и делает так, чтобы OpenCart этого «не заметил»: покупатель по-прежнему видит все свои заказы в кабинете, страница заказа и счёт в админке открываются, отчёты считают и архивные. А любое изменение архивного заказа — новый статус, колбэк оплаты, статус из CRM — сначала возвращает его в магазин. Ядро OpenCart, шаблоны и OCMOD-патчи модуль не трогает.
Магазин на WooCommerce? Для него есть отдельный плагин Order Archive для WooCommerce с тем же подходом: старые заказы в сжатый архив, отчёты и итоги покупателей без изменений, поиск и восстановление одним кликом.
Как это выглядит для покупателя
Для покупателя не меняется ничего. Он заходит в «Историю заказов» и видит все свои заказы — и новые, и трёхлетней давности — в одном списке, в том же порядке и с теми же страницами. Открывает старый заказ — видит товары, суммы, адреса, историю статусов. Кнопка «Купить снова» кладёт товар в корзину, «Вернуть товар» открывает форму возврата, заполненную данными заказа.
Оформление новых заказов архив не затрагивает: штатный чекаут и One Page Checkout работают как обычно, номера новых заказов идут дальше после архивных.
Что получает админ
Пункт «Архив заказов» в меню «Продажи» с тремя вкладками.
Обзор
Сколько заказов в магазине и в архиве, размеры таблиц, самый старый заказ в магазине. Правила записаны обычным языком («Заказы, оформленные более 24 мес. назад, в статусах Complete, Canceled, без изменений 90 дней»). Кнопка «Сколько уйдёт сейчас?» считает кандидатов, «Архивировать сейчас» переносит их шагами с прогрессом — запуск можно остановить в любой момент. Ниже — «Оптимизировать таблицы» (возвращает освободившееся место на диск после первой большой архивации) и журнал: что, когда и кто архивировал или возвращал.
Архив
Поиск по номеру, покупателю, e-mail, телефону, дате и статусу. Архивный заказ можно просмотреть и распечатать, не возвращая его. «Вернуть» переносит один заказ в магазин, «Вернуть выбранные» и «Вернуть все найденные» — группу. В Pro здесь же — экспорт найденного в CSV.
Штатный список заказов
Список Продажи → Заказы остаётся таким, каким был, и показывает только заказы магазина — поэтому он и быстрый. Когда вы фильтруете список (по покупателю, номеру, e-mail, статусу), под ним появляется строка «В архиве ещё N заказов по этому фильтру.» со ссылкой на них.
Настройки
- Правила: возраст заказа в месяцах (по умолчанию 24), статусы, которые можно архивировать (по умолчанию — «завершённые» статусы магазина), сколько дней заказ не менялся (90), размер шага.
- Защита: оставлять в магазине заказы с загрузками; не архивировать заказы с возвратом, изменённым за последние N дней (180); сколько дней возвращённый заказ остаётся в магазине (90).
- Совместимость: кабинет покупателя, страница заказа в админке, отчёты, строка под списком заказов, «возвращать в магазин при открытии», счётчики дашборда — каждый слой включается отдельно.
- Pro: расписание, незавершённые оформления, окончательное удаление.
Как это работает — шаг за шагом
- Установка. Модуль создаёт таблицы-архив с той же структурой, что и у таблиц заказов вашего магазина (
order,order_product,order_option,order_total,order_history,order_voucher; в 2.3 ещёorder_custom_field). Колонки, которые добавили другие модули, архив подхватывает перед каждым запуском. - Выбор кандидатов. Заказы старше N месяцев, в выбранных статусах и без изменений N дней. Никогда не попадают в архив: самый новый заказ, заказы с подпиской или регулярным платежом, с проданным подарочным сертификатом, с загрузками (настройка), с недавним возвратом, недавно возвращённые из архива, а также те, с которыми ещё работает модуль CatCode: ТТН Новой Почты в очереди, неотправленная синхронизация KeyCRM / SalesDrive / KeepinCRM, незавершённый чек ПРРО, открытая заявка Returns & Exchanges, непроверенная оплата в Payment Status Sync.
- Перенос. Шагами по 200 заказов (настраивается). Каждый шаг — одна транзакция: строки копируются в архив, количество сверяется по каждой таблице, и только тогда удаляются из магазина. Не сошлось — шаг откатывается полностью.
- Чтение. Когда OpenCart через свои модели ищет один заказ (кабинет, страница заказа, счёт, модули, которые читают заказы штатно) и не находит его в магазине, модуль повторяет тот же запрос в архиве. Список в кабинете объединяет оба источника с правильным постраничным делением, отчёты читают магазин и архив вместе.
- Изменение. Любая попытка изменить архивный заказ через OpenCart (новый статус, редактирование, номер счёта, удаление), а также чек возврата Multi PRRO и действия с заявкой Returns & Exchanges сначала возвращают его в магазин. Возвращённый заказ остаётся в магазине 90 дней.
- Возврат вручную. Из вкладки «Архив» — один, выбранные или все найденные; строки возвращаются такими, какими были.
Что под капотом
- Без правок ядра и OCMOD. Только события OpenCart: модели заказов в кабинете, чекауте и админке, отчёты, список заказов, страница заказа.
- Архив — копия структуры, а не новый формат. Таблицы
cc_oarch_*создаются какCREATE TABLE … LIKE, поэтому строка в архиве — та же строка заказа, а возврат — точная копия обратно. - Транзакции и блокировки. Каждый шаг архивации или возврата — одна транзакция InnoDB и один именованный лок базы, поэтому архивация по расписанию и ручной возврат не пересекаются.
- Отчёты. На время работы модели отчёта таблицы заказов подменяются на «магазин + архив»; на дашборде — только по отдельному переключателю, чтобы главная админки оставалась быстрой.
- Что остаётся на месте: транзакции и бонусы покупателей, история купонов (лимиты купонов считают и старые заказы), возвраты, подарочные сертификаты, подписки, таблицы других модулей.
- Честно об ограничениях. Модули других разработчиков, которые читают таблицу заказов собственным SQL, архивных заказов не видят — поэтому в архив уходят только давно завершённые заказы, а страница заказа в админке по умолчанию возвращает архивный заказ в магазин. Статус, изменённый в KeyCRM для заказа, который уже в архиве, не применяется, пока заказ не возвращён. Блок «Бестселлеры» витрины считает только заказы магазина. Отчёты, которые читают и архив, работают медленнее, чем до архивации (замеры — в FAQ).
Как установить
- Скачайте архив для своей версии:
cc_orderarchive.ocmod.zip(OpenCart 4.x),cc_orderarchive-oc3.ocmod.zip(3.x) илиcc_orderarchive-oc2.ocmod.zip(2.3). - OpenCart 4 и 3: Расширения → Установка расширений → «Загрузить». OpenCart 2.3: скопируйте содержимое папки
upload/из архива в корень магазина. - Расширения → Расширения → Модули → CatCode Order Archive → «Установить».
- Откройте Продажи → «Архив заказов» → «Настройки», проверьте правила и статусы, сохраните.
- На вкладке «Обзор» нажмите «Сколько уйдёт сейчас?», потом «Архивировать сейчас». Первую большую архивацию лучше запускать в тихий час, а после неё — «Оптимизировать таблицы».
Вопросы
о модуле
Не нашли ответ? Напишите в Telegram — ответим в течение рабочего дня.
Покупатель увидит свои старые заказы?
Да. Список «История заказов» в кабинете показывает живые и архивные заказы вместе, в том же порядке и с теми же страницами, что и до архивации. Страница архивного заказа, кнопки «Вернуть товар» и «Купить снова» работают. Мы сверяли страницы кабинета до и после архивации на 4.1, 4.0.2, 3.0 и 2.3 — они одинаковые.
Что будет, если архивный заказ изменится?
Модуль сначала возвращает его в таблицы магазина, и только потом OpenCart делает изменение. Так работает для нового статуса из админки, колбэка платёжки, статуса из CRM, чека возврата в Multi PRRO, возврата денег в Returns & Exchanges. История не теряется: старые строки и новая — вместе в живом заказе. Возвращённый заказ остаётся в магазине 90 дней (настраивается), чтобы следующий запуск не забрал его сразу.
Можно ли вернуть всё назад?
Да, в любой момент: один заказ, выбранные или все найденные фильтром. Возврат переносит строки точно такими, какими они были, — мы сверяли контрольные суммы всех таблиц заказов до архивации и после полного возврата.
Отчёты не «просядут»?
Отчёты «Продажи» и «Купленные товары» читают магазин и архив вместе — цифры те же, что и до архивации. Цена этого — скорость самого отчёта: он каждый раз читает и магазин, и архив, поэтому на 60 000 заказов «Продажи» строились 1,7 с вместо 0,3 с, «Купленные товары» — 2,8 с вместо 0,25 с. Если архивные периоды в отчётах не нужны, выключите «Отчёты учитывают архивные заказы». Счётчики на главной странице админки по умолчанию считают только заказы в магазине (так дашборд остаётся быстрым); если нужны полные цифры — включите «Дашборд считает архивные заказы».
А если модуль другого разработчика читает таблицу заказов напрямую?
Такой модуль будет видеть только заказы в магазине. Поэтому архивируются только старые завершённые заказы (по умолчанию — старше 24 месяцев, без изменений 90 дней), а страница заказа в админке по умолчанию возвращает архивный заказ в магазин, как только вы его открываете. Модули CatCode мы проверили вместе с архивом.
Что с возвратами товара?
Штатные возвраты OpenCart остаются на месте. Заказ, по которому возврат менялся за последние 180 дней, не архивируется. Открытые заявки Returns & Exchanges CatCode тоже держат заказ в магазине.
Что будет, если удалить модуль?
Архивные таблицы остаются — в них ваши заказы. Но без модуля OpenCart их не видит. Поэтому перед удалением нажмите «Вернуть все найденные» в разделе «Архив». Повторная установка модуля снова находит архив.
Сколько времени занимает первая архивация?
Зависит от сервера. На локальном стенде (MariaDB 10.11, PHP 8.3) 60 001 сгенерированный заказ: 29 150 подошли под правила и ушли в архив за 6,9 с, полный возврат — 4,4 с, запуск по расписанию — 6,5 с. На хостинге будет медленнее, но каждый шаг ограничен по времени, поэтому запрос не упадёт с тайм-аутом, а прогресс показывает, сколько уже перенесено. Каждый шаг — одна транзакция, поэтому прерванный запуск ничего не ломает: просто нажмите ещё раз.
Можно ли удалять старые заказы навсегда?
Да, в Pro, и только те, что уже в архиве и старше указанного возраста (от 12 месяцев, по умолчанию 84). Это нельзя отменить, поэтому сначала сделайте экспорт в CSV. По умолчанию выключено.
Как модуль ведёт себя с One Page Checkout и новыми заказами?
Новые заказы архив не трогает: они оформляются как обычно, номера идут дальше после архивных. Самый новый заказ никогда не архивируется, чтобы счётчик номеров в MySQL не возвращался назад.
Пока нет ни одного отзыва. Будьте первым.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Не тот вариант, что искали?
Делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.
Заказать кастомный модуль
Покупка модуля
—
