Разработка B2B-портала
B2B-портал — это закрытая веб-платформа для работы с корпоративными клиентами: оптовые заказы, управление договорами, совместная работа с документами, личные кабинеты юридических лиц. Ключевое отличие от B2C — многоуровневое ценообразование, сложная иерархия пользователей внутри одной компании и интеграция с учётными системами (1С, SAP).
Аутентификация и иерархия пользователей
В B2B аккаунт принадлежит компании (organization), а не физическому лицу. Внутри компании — несколько пользователей с разными ролями:
Organization: ООО "Технопром"
├── Director (owner) — полный доступ
├── Buyer — заказы, просмотр цен
├── Accountant — счета, акты, финансы
└── Viewer — только просмотр каталога
Приглашение сотрудника: директор вводит email → сотрудник получает invite-ссылку → устанавливает пароль → назначается роль.
Реализация: RBAC (Role-Based Access Control) на уровне маршрутов и объектов. Spatie Laravel Permission или Casbin для Node.js.
Договорное ценообразование
Ключевая функция B2B-портала — индивидуальные прайс-листы. У каждого клиента может быть своя цена на каждую позицию или группу позиций. Структура данных:
-- Прайс-лист привязан к организации
CREATE TABLE price_lists (id, organization_id, name, valid_from, valid_to);
-- Правила: для конкретного товара или категории
CREATE TABLE price_list_rules (
price_list_id, product_id, category_id,
price_type ENUM('fixed', 'discount_percent', 'multiplier'),
value DECIMAL
);
При расчёте цены: сначала ищется правило для конкретного товара, затем для категории, затем применяется базовая цена.
Оптовые заказы и минимальные суммы
B2B-заказы, как правило, крупнее и сложнее розничных:
- Минимальная сумма заказа (MOQ)
- Заказ по каталожным единицам с весовыми / упаковочными коэффициентами
- Отложенные заказы (pre-order с датой поставки)
- Быстрое добавление по SKU (bulk add form)
- Шаблоны заказов — сохранить список товаров для повторного заказа
Документооборот
После оформления заказа автоматически генерируются документы:
- Счёт на оплату (PDF) — реквизиты платформы + строки заказа
- УПД/накладная — после отгрузки
- Акт сверки — за период
Генерация PDF: wkhtmltopdf, puppeteer, dompdf (PHP), @react-pdf/renderer (Node.js). Шаблоны документов хранятся в базе, заполняются данными заказа.
Интеграция с 1С
Большинство B2B-клиентов ведут учёт в 1С. Интеграция через:
- 1С REST API (HTTP-сервисы на платформе 1С 8.3+)
- Двусторонняя синхронизация: остатки и цены из 1С → портал; заказы с портала → 1С
Периодичность обновления остатков: от realtime (через 1С-оповещения) до раз в час (cron). Для критичных остатков — резервирование при создании заказа через очередь.
Личный кабинет организации
Разделы ЛК:
- Дашборд — оборот за период, статусы заказов, баланс
- Заказы — история, статусы, отслеживание
- Документы — счета, УПД, акты (скачать PDF, запросить оригинал)
- Справочники — адреса доставки, контактные лица
- Пользователи — управление сотрудниками и ролями
- Кредитный лимит — текущий долг, лимит, история транзакций
Технический стек
| Слой | Технологии |
|---|---|
| Backend | Laravel / Django / Spring Boot |
| Frontend | React + Next.js / Vue + Nuxt |
| API | REST + WebSocket для уведомлений |
| БД | PostgreSQL с row-level security |
| Интеграции | 1С REST API, ERP WebServices |
| Документы | Puppeteer / dompdf |
Сроки
MVP B2B-портала (каталог с индивидуальными ценами, оформление заказов, личный кабинет компании, генерация счетов): 3–4 месяца. С интеграцией 1С, документооборотом и расширенной аналитикой: 5–8 месяцев.







