Кейс: B2B платформа для оптовых клиентов

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

Собрали B2B-портал на Laravel: кабинет дилера, выгрузка прайсов, двусторонний обмен цен и заказов с 1С. Название клиента и отрасль не раскрываются — NDA.

Карточка проекта

Формат
B2B-кабинет дилера со своим контуром на Laravel, не витрина типового магазина
Продукт
Персональные оптовые цены, заказ в кабинете, выгрузка прайса по ссылке, обмен с 1С
Стек
Laravel, FilamentPHP, Livewire, Tailwind CSS
Роль
Full-stack: кабинет, админка, двусторонний обмен цен и заказов с 1С
Статус
Внедрён, NDA
B2B каталог с оптовыми ценами на Laravel
Каталог в кабинете: дилер видит свой оптовый прайс, а не общий розничный список.
Личный кабинет B2B клиента, интеграция 1С
Кабинет заказа: история, статусы и обновления приходят из обмена с 1С.

Результат

Прайс в кабинете индивидуальные оптовые цены без переписки таблиц
Выгрузка автоматическая выгрузка цен по ссылке
В 1С цены и заказы уходят в учёт
Обратно статусы и обновления заказа возвращаются в кабинет
Что внедрилиКак работает
Личный кабинет дилераЗаказ с индивидуальными оптовыми ценами без ручной переписки прайса
Выгрузка ценАвтоматическая выгрузка по ссылке для клиента
Обмен с 1СЦены и заказы уходят в учёт, статусы возвращаются в кабинет
АдминкаFilamentPHP: клиенты, прайсы, статусы, история заказов

Задача

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

Как было

  • персональный прайс уходил почтой или жил в отдельной таблице
  • заказ и статус смотрели в 1С, кабинет их не показывал
  • менеджер участвовал в каждом типовом заказе

Как стало

  • дилер видит свой прайс и собирает заказ в кабинете
  • цены и заказы уходят в 1С, статусы возвращаются
  • менеджер подключается к исключениям, а не к каждому заказу

Кто пользуется кабинетом

Портал — не розничная витрина. Дилер работает со своим прайсом, учёт остаётся в 1С, Filament держит внутренний контур.

Дилер

Входит в кабинет, видит персональные оптовые цены, собирает заказ, смотрит историю и статус. Типовой заказ идёт без менеджера.

Менеджер

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

Администратор

Ведёт клиентов, прайсы, статусы и историю заказов в FilamentPHP. Доступ и роли — в том же контуре.

Как устроена работа

  1. Вход и персональный прайс

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

  2. Заказ в портале

    Заказ собирается в кабинете и уходит в 1С. Отдельная CMS-витрина под опт здесь не нужна.

  3. Обмен с 1С

    Цены и заказы уходят в учёт, статусы и обновления заказа возвращаются в кабинет. Источник истины по номенклатуре и условиям — 1С. Слой обмена разобран на странице интеграции Laravel с 1С.

  4. История и выгрузка

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

Что входит в портал

Кабинет дилера

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

Выгрузка цен

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

Обмен с 1С

Двусторонний контур: цены и заказы в учёт, статусы обратно в кабинет.

Админка Filament

Клиенты, прайсы, статусы, история заказов и управление доступом.

Почему Laravel

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

Laravel плюс Filament и Livewire закрыли кабинет и внутренний контур без отдельной CMS. Индивидуальные оптовые цены и двусторонний обмен с 1С проще держать в своём контуре, чем втискивать в готовую витрину.

Ограничения

В открытом описании

  • стек, состав кабинета и факт двустороннего обмена с 1С
  • скрины кабинета: прайс и заказ, без бренда заказчика

Не публикуем

  • название клиента, отрасль и объёмы каталога — NDA
  • внутренние детали обмена и боевые прайсы

Частые вопросы

Что именно синхронизируется с 1С?

Цены и заказы уходят в учётную систему, статусы и обновления заказа возвращаются в кабинет. Источник истины по номенклатуре и условиям — 1С.

Может ли дилер работать без менеджера?

Да: кабинет показывает персональный прайс, историю и статус заказа. Менеджер подключается к исключениям, а не к каждому типовому заказу.

Почему не магазин на готовой CMS?

Индивидуальные оптовые цены, роли и двусторонний обмен с 1С проще держать в своём контуре на Laravel, чем втискивать в типовую витрину.

Кто источник истины по номенклатуре?

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

← Все кейсы · интеграция Laravel с 1С · заказать разработку B2B-портала · Контакты