Модули официально продаются только на LiveOpenCart. Покупка или использование файлов из сторонних источников может привести к проблемам с безопасностью, вредоносным изменениям и потере доступа к сайту.
-------------------------------------------------
Менеджеры по продажам - разграничение доступа к клиентам и заказам
Каждый менеджер видит в админке только своих клиентов и их заказы. Не фильтр списков, который обходится подстановкой чужого ID в адресную строку, а закрытый запрос: чужая карточка не открывается, чужой заказ не редактируется, чужой клиент не попадает ни в поиск, ни в рассылку, ни в отчёты.
Что видит менеджер
- Покупатели - только закреплённые за ним. Список, поиск, автодополнение в заказе, одобрение регистраций.
- Заказы - свои: список, карточка, печать, история, итоги. Возвраты и подписки по тому же правилу.
- Отчёты - «Заказы клиентов», «Отчёт по заказам», «Товары в заказах» считают только его продажи. Отчёт, который менеджеру показывать нечем, не собирается вовсе.
- Дашборд - четыре виджета со своими цифрами вместо общемагазинных: заказы, продажи, покупатели, последние заказы.
- Рассылка из «Маркетинг → Почта» уходит только своим клиентам: получателей она берёт из того же отфильтрованного списка.
Защита, а не декорация
Фильтрация списков прячет чужие записи с экрана и ничего не делает с адресом, набранным руками. Модуль закрывает запрос целиком, до того как контроллер начнёт работу.
- Прямая ссылка на чужого клиента или заказ отвечает «Доступ запрещён» - тем же экраном, что и любой другой отказ OpenCart.
- Массовое действие проверяется по каждому отмеченному идентификатору, а не по первому.
- Вход в магазин от лица клиента закрыт так же, как карточка.
- AJAX-вызовы - автодополнение, вкладки истории, пересчёт итогов - получают отказ в своём формате, а не страницу прав внутри выпадающего списка.
- Режим «по умолчанию закрыто»: незнакомый роут, в котором есть идентификатор клиента или заказа, блокируется. Такие роуты описываются в настройках одной строкой.
Администратор видит всё
- Переключатель в шапке: «Менеджер: Все / Иванов / Петров». Выбрали - списки, отчёты и дашборд показывают его глазами.
- Пока переключатель включён, об этом говорит строка на каждой странице, со ссылкой «Показать всех»: забытый фильтр не выдаст себя за пустой магазин.
- Переключатель сужает то, что видно, и никогда не отнимает доступ - администратор, забывший его сбросить, не получит отказ на чужом заказе.
- По умолчанию выбор не переживает сессию; при необходимости включается запоминание.
Распределение накопленной базы
После установки все существующие клиенты остаются нераспределёнными: автоправила работают только для новых. Мастер раскладывает базу, которая уже есть.
- Поровну между выбранными менеджерами, по группам покупателей, одному менеджеру или по CSV-файлу - клиент по ID или по e-mail.
- Отбор: только нераспределённые, группа покупателей, статус, период регистрации, часть имени или адреса. Счётчик сразу показывает, сколько клиентов попадает под условие.
- Предварительный просмотр: сколько будет назначено, сколько уже у нужного менеджера, сколько пропущено. Ничего не записывается.
- Заказы клиента переносятся вместе с ним - все или только те, что ещё ни за кем.
- Работа идёт порциями с индикатором: база в десятки тысяч клиентов не упирается в таймаут хостинга. Можно остановить и продолжить с того же места.
Снимок распределения
Выгрузка владельцев клиентов и заказов в CSV и восстановление из того же файла. Страховка перед первым распределением и перед любой массовой операцией: если разложили не так, прежняя картина возвращается целиком. Восстановление тоже идёт порциями, с предпросмотром и паузой.
Кто ведёт нового клиента
- Автоправила «группа покупателей → менеджер»: клиент закрепляется при регистрации.
- Политика нераспределённых: оставить администратору, отдать в общий пул или раздавать наименее загруженному.
- Гостевые заказы и заказы из интеграций - отдельными правилами, чтобы выгрузки и приём заказов по API не плодили заказы «ничьи».
- Массовая передача выбранных клиентов другому менеджеру прямо из списка покупателей.
- Менеджер заказа меняется в самой карточке заказа. Если за это время заказ изменил кто-то другой, модуль откажет, а не перезапишет чужую правку.
Замещение на отпуск
Календарь «кто кого замещает, с какого по какое число и с каким правом»: только просмотр или просмотр и правка. Замещение не меняет владельца - клиенты остаются за менеджером, прошлые продажи не переписываются, премии задним числом не пересчитываются. Начинается и заканчивается само, по датам, без cron.
Заместитель видит в шапке, кого он замещает и до какого числа, и переключает списки между своими клиентами и клиентами подопечного. Фильтр сужает списки и не отнимает прав: запись, которую заместитель вправе открыть, откроется при любом положении фильтра.
Менеджер в личном кабинете клиента
Карточка «Ваш менеджер» на странице аккаунта: фото, имя, должность, телефон, e-mail, Telegram, WhatsApp, MAX. Телефон и почта открываются нажатием с телефона, мессенджеры - ссылками. Выводится отдельным модулем через «Дизайн → Макеты», поэтому встаёт в любую тему и не требует правки её шаблонов.
Три уровня подробности: только имя и должность; имя, телефон и e-mail; полный профиль с мессенджерами. Если у клиента менеджера нет, можно показать общий телефон магазина или не показывать ничего.
Отчёт по продажам
Менеджер видит в «Мои продажи» своих клиентов, свои заказы и суммы, срезы по периодам и статусам. Администратору тот же раздел показывает всю команду: заказов, сумма, средний чек и число покупателей по каждому менеджеру.
Журнал переназначений
- Кто, кого, кому и когда передал, с причиной: вручную, массово, автоправилом, мастером, восстановлением снимка.
- Имена сохраняются в самой записи - журнал остаётся читаемым после увольнения сотрудника и удаления его учётной записи.
- Срок хранения настраивается, старые записи удаляются сами, без cron.
Совместимость со сторонними модулями
В живом магазине стоят чужие расширения со своими экранами заказов. Строгий режим такие роуты блокирует - и модуль показывает, какие именно: список заблокированных роутов с готовой строкой правила, которую остаётся скопировать в настройки. Не «что-то не работает, разбирайтесь», а «вот этот роут, вот эта строка».
Отдельно выключается изоляция в cron, CLI и API-сессиях - для интеграций, которые создают заказы в обход чекаута.
Запуск
На странице модуля - чек-лист из четырёх шагов в том порядке, в котором их нужно делать: отметить менеджеров, ограничить их права, распределить клиентов и только потом включить изоляцию. Чек-лист сверяется с фактическим состоянием магазина и предупреждает, если менеджеру оставлен доступ к настройкам самого модуля, то есть возможность изоляцию выключить. Когда все четыре шага сделаны, чек-лист исчезает.
Группа прав для менеджера создаётся кнопкой: свои клиенты, заказы, возвраты, подписки, товары для подбора в заказ и отчёт модуля; настройки, пользователи, резервные копии и общие отчёты закрыты. Имя группы задаётся в поле, занятое имя модуль не перезаписывает.
Лицензия
Одна лицензия - один домен; поддомены основного домена входят в ту же лицензию. Модуль настраивается после активации.
Установка
- Загрузите архив в «Расширения → Установка расширений».
- «Расширения → Модификаторы» → «Обновить». Файлы движка не меняются: правки применяются поверх, штатным механизмом OCMOD.
- «Расширения → Расширения → Модули» → «Менеджеры по продажам» → «Установить», затем «Редактировать».
- Для карточки в личном кабинете: там же установите «Ваш менеджер» и поставьте его в макет «Аккаунт» через «Дизайн → Макеты».
-------------------------------------------------
Не нашли подходящую версию модуля для вашего OpenCart? Сделаю адаптацию или разработку модулей под практически любую версию OpenCart и большинство популярных сборок.
Также доступна помощь с:
- установкой и настройкой модулей
- адаптацией под шаблон или нестандартный функционал
- доработкой OpenCart под задачи магазина
- исправлением конфликтов между модулями
- переносом сайта и настройкой хостинга
- оптимизацией и технической поддержкой
Если у вас нестандартная задача - напишите в личные сообщения, обсудим возможное решение.