Персональные цены в B2B-портале: приоритет источников и проверка расчёта
Персональные цены в B2B-портале — это результат выбора между несколькими источниками: базовым прайсом, договорной скидкой, акцией и индивидуальным прайсом контрагента. Чтобы цена в корзине, заказе и счёте совпадала, нужно заранее зафиксировать приоритет источников, правило пересчёта при смене условий и порядок сверки. Чтобы цена в корзине, заказе и счёте совпадала, нужно заранее зафиксировать приоритет источников, правило пересчёта при смене условий и порядок сверки. Ниже — практическая логика, таблица приоритета, матрица сценариев и чек-лист приёмки.
Что входит в задачу и где её границы
Задача — определить, какую цену B2B-портал показывает конкретному контрагенту и его сотрудникам, когда одновременно действуют несколько условий. Входные данные: базовая цена товара, договорная скидка, акция, персональный прайс, тип цены, привязанный к контрагенту или группе контрагентов. Выходные данные: цена в карточке товара, в корзине, в заказе и в счёте.
Границы задачи — только логика приоритета и отображения цены в B2B-кабинете. Мы не рассматриваем тарифы, финансовые условия продавца, кредитные лимиты и отсрочку как предмет настройки: финансовые условия задаёт продавец, а портал лишь отображает то, что ему передали. Не смешивайте этот материал с корпоративным порталом сотрудников — там другая логика доступа и другие роли.
Отдельно стоит развести понятия. Персональная цена — это цена, привязанная к контрагенту или группе контрагентов (или тип цены, назначенный контрагенту). Договорная скидка — процент или сумма, уменьшающая базовую цену. Акция — временное условие, действующее для всех или для части покупателей. Персональный прайс — отдельный список цен (или тип цены), который может пересекаться с базовым по составу товаров. Все четыре источника могут сосуществовать, и именно поэтому нужен явный приоритет.
Исходные данные и ответственные
Прежде чем настраивать приоритет, соберите данные и назначьте ответственных. Без этого любая логика останется предположением.
- Базовая цена: откуда она берётся, как часто обновляется, кто отвечает за её корректность.
- Договорные условия: какие скидки зафиксированы, на какой срок, кто их согласовал.
- Акции: период действия, список товаров, условия участия, кто запускает и останавливает.
- Персональные прайсы: для каких контрагентов, на какие товары, кто ведёт файл или запись.
- Типы цен: какие типы существуют в системе, как они связаны с контрагентами и группами.
- Роли сотрудников контрагента: кто видит цену, кто может её изменить в заказе, кто согласует.
Ответственные обычно распределяются так: коммерческий отдел отвечает за договорные условия и персональные прайсы, маркетинг — за акции, администратор портала — за типы цен и привязки, менеджер — за ручные изменения в конкретном заказе. Если ответственный не назначен, при расхождении цены никто не сможет быстро объяснить, какой источник сработал.
Важно: права на изменение цены в портале должны соответствовать должностным инструкциям. Не давайте права на ручное изменение цены всем менеджерам, если это не входит в их обязанности.
Варианты приоритета источников цены и критерии выбора
Есть несколько подходов к приоритету. Выбор зависит от того, что для вас важнее: предсказуемость договора, гибкость акций или простота поддержки.
Первый вариант — персональный прайс (или назначенный тип цены) всегда имеет наивысший приоритет. Подходит, когда с контрагентом подписано индивидуальное соглашение и любые акции не должны его перекрывать. Плюс: предсказуемость. Минус: акции не работают для таких клиентов, и это нужно явно сообщать.
Второй вариант — акция имеет приоритет над персональным прайсом. Подходит, когда акция — это временное улучшение для всех, и вы готовы дать его даже тем, у кого есть индивидуальные условия. Плюс: единая кампания. Минус: договорная цена может оказаться выше акционной, и клиент увидит снижение, что иногда требует согласования.
Третий вариант — берётся минимальная из доступных цен (автоматический выбор лучшей цены). Подходит, когда цель — дать клиенту лучшую цену без ручного разбора. Плюс: клиент всегда видит выгодное предложение. Минус: сложнее прогнозировать маржу и объяснять, почему в разных заказах сработали разные источники.
Четвёртый вариант — приоритет задаётся для каждой группы товаров или каждого контрагента отдельно (гибридный подход). Подходит для сложного ассортимента, где условия различаются. Плюс: гибкость. Минус: выше стоимость поддержки и риск ошибки при добавлении нового товара.
При выборе гибридного подхода убедитесь, что административная панель позволяет настраивать приоритеты без правки кода. Иначе каждое изменение потребует участия разработчиков.
Критерии выбора: предсказуемость для клиента, прозрачность для менеджера, сложность поддержки, влияние на маржу, частота изменения условий. Ни один вариант не является универсально правильным — важно, чтобы правило было записано и одинаково применялось в карточке, корзине, заказе и счёте.
Таблица приоритета источников цены
Таблица помогает зафиксировать правило до настройки. Заполните её для своего портала и согласуйте с коммерческим отделом.
| Приоритет | Источник цены | Когда применяется | Что перекрывает | Кто отвечает |
|---|---|---|---|---|
| 1 | Персональный прайс (тип цены контрагента) | Есть действующий индивидуальный прайс на товар | Базовую цену, договорную скидку, акцию (если так решено) | Коммерческий отдел |
| 2 | Договорная скидка | Есть подписанные условия на группу товаров или контрагента | Базовую цену и акцию (если так решено) | Коммерческий отдел |
| 3 | Акция | Действует в указанный период и на указанные товары | Базовую цену | Маркетинг |
| 4 | Базовая цена | Нет других действующих условий | — | Администратор портала |
| 5 | Ручная цена менеджера в заказе | Менеджер изменил цену при оформлении | Все автоматические источники для этого заказа | Менеджер |
Порядок в таблице — это пример. В вашем портале акция может стоять выше договорной скидки, если так решено коммерчески. Главное — чтобы порядок был один и тот же во всех местах, где показывается цена.
Проверьте, не дублируются ли правила в разных модулях (например, в модуле акций и в модуле персональных цен). Конфликт правил в разных частях системы — частая причина расхождений.
Матрица сценариев: что делать в спорных ситуациях
Спорные ситуации возникают регулярно. Матрица ниже помогает заранее решить, как портал должен себя вести.
| Сценарий | Что произошло | Правильное поведение | Кто проверяет |
|---|---|---|---|
| Цена изменилась между корзиной и заказом | Условие истекло или обновился прайс | Показать клиенту новую цену и причину, попросить подтвердить заказ | Менеджер |
| Скидка закончилась | Период акции завершился | Пересчитать корзину по действующим условиям, уведомить клиента | Маркетинг |
| Товар в нескольких прайсах | Пересечение персонального и базового прайса | Применить правило приоритета, показать источник цены менеджеру | Коммерческий отдел |
| Смена организации у пользователя | Пользователь переключил контрагента | Пересчитать все цены и корзину, не переносить старые цены | Администратор портала |
| Ручная цена в заказе | Менеджер изменил цену | Сохранить основание изменения, не применять автоматические скидки поверх | Менеджер |
Матрица не заменяет настройку, но помогает договориться о поведении до того, как клиент увидит расхождение.
Предметная последовательность действий
Работа идёт по шагам. Каждый шаг заканчивается проверяемым результатом.
Шаг 1. Зафиксировать источники и их владельцев
Составьте список всех источников цены, которые используются в портале. Для каждого укажите владельца и формат обновления. Результат: список, в котором нет источника без ответственного.
Шаг 2. Определить приоритет и записать его
Заполните таблицу приоритета. Согласуйте её с коммерческим отделом и маркетингом. Результат: подписанное или хотя бы зафиксированное в рабочем документе правило.
Шаг 3. Настроить привязку цен к контрагентам
Проверьте, как в портале устроена привязка типов цен и персональных прайсов к контрагентам и их сотрудникам. Убедитесь, что сотрудник видит цену своего контрагента, а не соседнего. Результат: тестовый контрагент видит ожидаемую цену.
Шаг 4. Проверить отображение в карточке, корзине и заказе
Пройдите путь клиента: карточка товара, добавление в корзину, оформление заказа. На каждом шаге сверьте цену с ожидаемой. Результат: цена совпадает на всех шагах.
Шаг 5. Проверить пересчёт при смене условий
Смоделируйте ситуацию: акция закончилась, прайс обновился, пользователь сменил организацию. Убедитесь, что портал пересчитывает цену и сообщает об изменении. Результат: понятное поведение без молчаливой подмены цены.
Шаг 6. Настроить уведомления и объяснения
Если цена изменилась, клиент и менеджер должны понимать причину. Продумайте текст сообщения и место, где оно появляется. Результат: клиент не видит «прыгающую» цену без объяснения.
Как проверить расчёт цены в корзине, заказе и счёте
Проверка — это не разовое действие, а регулярная процедура. Ниже — порядок, который можно повторять при каждом изменении условий.
Сначала сверьте цену в карточке товара с ожидаемым источником. Затем добавьте товар в корзину и проверьте, что цена не изменилась без причины. Оформите тестовый заказ и сравните цену в заказе с ценой в корзине. Если в вашем портале формируется счёт, проверьте и его (учитывая, что формирование счёта может требовать доработки или настройки печатной формы). Расхождение на любом шаге — повод разобраться, какой источник сработал.
Обратите внимание: цена в счёте может отличаться от цены в заказе, если в настройках включено округление или применение налогов на этапе формирования документа. Это штатное поведение, если оно задокументировано.
Полезно вести журнал изменений: кто, когда и почему изменил цену или условие. Это помогает при разборе обращений клиентов. Если в портале есть роли и лимиты, проверьте, что сотрудник контрагента не может изменить цену вручную без права на это.
Для регулярной сверки удобно использовать личный кабинет B2B: остатки, цены под клиента и повторные заказы — там видно, как клиент видит свои условия. Если вы только планируете портал, полезно заранее изучить B2B-портал для оптовых продаж: личный кабинет, остатки и цены под клиента. А если в вашей логике есть согласование закупки, посмотрите согласование заказов в B2B-портале: роли, лимиты и маршрут заявки — там описано, как цена проходит через маршрут.
Учебный пример: три контрагента и один товар
Учебный пример. Данные условные, они не описывают реальную компанию и не являются статистикой.
Входные условия. Есть товар «Кабель условный, артикул К-100». Базовая цена — 1000 условных единиц. Для контрагента А действует договорная скидка 10%. Для контрагента Б есть персональный прайс с ценой 850. Для контрагента В действует акция с ценой 900, персонального прайса и договорной скидки нет. В портале принято правило: персональный прайс выше договорной скидки, договорная скидка выше акции, акция выше базовой цены.
Действия. Проверяем цену в карточке товара для каждого контрагента. Для А ожидаем 900 (1000 минус 10%). Для Б ожидаем 850. Для В ожидаем 900 по акции. Добавляем товар в корзину и оформляем тестовый заказ для каждого контрагента.
Наблюдаемый результат. Если настройка корректна, цена в карточке, корзине и заказе совпадает с ожидаемой для каждого контрагента. Если у контрагента Б в корзине появляется 900 вместо 850, значит, персональный прайс не сработал или его перекрыла акция. Если у контрагента А цена 1000, значит, договорная скидка не применилась.
Проверка. Сверяем цену в счёте, если он формируется. Проверяем, что сотрудник контрагента Б видит цену 850, а сотрудник контрагента А — 900. Меняем условие: отключаем акцию для контрагента В и смотрим, вернулась ли цена к базовой. Если да, логика пересчёта работает.
Ограничение примера: в реальном портале могут быть дополнительные условия — округление, налоги, валюта, минимальная партия. Их нужно проверять отдельно.
Чек-лист приёмки логики персональных цен
- Список источников цены составлен, у каждого есть владелец.
- Приоритет источников зафиксирован в рабочем документе и согласован.
- Привязка типов цен и персональных прайсов к контрагентам проверена на тестовых данных.
- Цена в карточке товара совпадает с ожидаемым источником для каждого тестового контрагента.
- Цена в корзине совпадает с ценой в карточке без необъяснимых изменений.
- Цена в заказе совпадает с ценой в корзине на момент оформления.
- Цена в счёте, если он формируется, совпадает с ценой заказа.
- Пересчёт при смене организации пользователем работает и не переносит старые цены.
- Пересчёт при окончании акции работает и сопровождается понятным сообщением.
- Ручное изменение цены менеджером сохраняет основание и не смешивается с автоматическими скидками.
- Сотрудник контрагента не может изменить цену без соответствующего права.
- Журнал изменений цены и условий ведётся.
Ограничения, типичные ошибки и следующий шаг
Ограничения. Логика приоритета не отменяет финансовых условий продавца: портал не является кредитором и не устанавливает отсрочку или лимиты. Если в вашей системе есть налоги, валюты и округление, они влияют на итоговую цену и требуют отдельной проверки. Юридические и персональные данные обрабатываются в рамках задачи и сверяются с профильным специалистом; эта статья не заменяет юридическое заключение.
Типичные ошибки. Первая — приоритет не зафиксирован, и разные менеджеры объясняют цену по-разному. Вторая — персональный прайс настроен, но не привязан к сотрудникам контрагента. Третья — акция перекрывает договорную цену без согласования. Четвёртая — при смене организации пользователь видит старую цену. Пятая — ручная цена менеджера теряет основание, и при разборе невозможно понять, почему она отличается.
Следующий шаг. Если вы только проектируете портал, начните с фиксации источников и приоритета, а затем переходите к настройке. Если портал уже работает, проведите сверку по чек-листу и устраните расхождения. Для проектирования и доработки логики цен можно обратиться к разработке b2b-порталов и оптовых интернет-магазинов на 1с-битрикс.
Что делать, если цена в корзине изменилась после добавления товара?
Проверьте, не истёк ли период акции или не обновился ли прайс. Портал должен показать новую цену и причину, а клиент — подтвердить заказ. Если причина неясна, сверьте источник цены по таблице приоритета.
Может ли акция быть выше персонального прайса?
Да, если так решено коммерчески. Главное — зафиксировать это правило и одинаково применять его в карточке, корзине, заказе и счёте. Иначе клиент увидит разные цены в разных местах.
Кто отвечает за корректность персональной цены?
Обычно коммерческий отдел отвечает за договорные условия и персональные прайсы, маркетинг — за акции, администратор портала — за привязки типов цен. Если ответственный не назначен, разбор расхождений затягивается.
Нужно ли пересчитывать корзину при смене организации пользователем?
Да. При переключении контрагента цены и корзина должны пересчитываться по условиям нового контрагента. Переносить старые цены нельзя — это приведёт к расхождению с заказом и счётом.
Как проверить, что сотрудник видит цену своего контрагента, а не соседнего?
Создайте тестовых контрагентов с разными условиями и проверьте цену в карточке, корзине и заказе под каждым сотрудником. Если цена не совпадает с ожидаемой, проверьте привязку типов цен и персональных прайсов.
Заменяет ли эта логика финансовые условия продавца?
Нет. Портал отображает цену по заданным правилам, но не устанавливает отсрочку, лимиты и другие финансовые условия. Их задаёт продавец, а портал лишь показывает то, что ему передали.
Практический разбор: приоритет источников цены для контрагента
Учебный разбор. Условная задача: в B2B-портале для контрагента «ООО Ромашка» действуют базовая цена 1 000 ₽, договорная скидка 10% и персональный прайс 850 ₽ на товар «Клей ПВА». Требуется зафиксировать, какая цена показывается в карточке, корзине и заказе, и как она пересчитывается при изменении количества.
| Действие | Что проверить |
|---|---|
| Зафиксировать в требованиях приоритет источников: персональный прайс выше договорной скидки, договорная скидка выше базовой цены. | В карточке товара для контрагента отображается 850 ₽ из персонального прайса, а не 900 ₽ после скидки. |
| Добавить товар в корзину от имени сотрудника контрагента и изменить количество так, чтобы сработало условие правила корзины. | В корзине цена пересчитывается по заданному приоритету; при количестве, кратном упаковке, применяется правило корзины, а не персональный прайс. |
| Оформить тестовый заказ на копии и сверить цену в заказе с ценой в корзине на момент оформления. | В заказе зафиксирована та же цена, что была в корзине на момент оформления. |
Для приёмки. Зафиксировать: скриншоты карточки, корзины и заказа с ценой; выписку из требований с приоритетом источников; ID тестового заказа, присвоенный системой после создания.
Ограничение. Сценарий проверяет только логику приоритета источников цены для одного контрагента и одного товара. Он не покрывает групповые прайсы, несколько контрагентов, валютные курсы и финансовые условия продавца.