Кому магазин показывает персональную цену

Персональную цену назначают определённому клиенту по принятому в компании правилу. Ошибка в этой связи приводит к чужой цене в каталоге или заказе. Владельцу нужно описать эту связь, а затем пройти с исполнителем весь путь от входа до заказа.

Рассмотрим оптовый магазин, где часть клиентов покупает по общим условиям своей группы, а некоторым компаниям назначают отдельный прайс. Сотрудник покупателя входит под личной учётной записью и оформляет заказ от имени организации. Здесь полезно разделять человека, компанию и ценовые условия. Смена сотрудника не означает смену прайса. И наоборот, право войти в кабинет ещё не даёт права покупать по любым условиям, которые существуют в каталоге.

Для одинаковых условий нескольких покупателей я выберу группу. Отдельный прайс нужен там, где договорённость действительно отличается по ассортименту или ценам, а не потому, что каждый новый клиент технически может получить ещё один тип цены. Лишние исключения усложняют обновление и поиск ошибки.

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

Группа покупателей и отдельный прайс

Группа объединяет одинаковые условия. Персональный прайс относится к определённой компании или договору, поэтому при совместном использовании двух подходов нужно решить, какое условие выбирает сайт и какую цену получает покупатель, если отдельного значения для товара в его прайсе нет.

СитуацияПодходЧто решить заранее
У нескольких компаний одинаковые условияГруппа покупателейКто включает и исключает участников
У компании собственные ценыОтдельный прайсКак определяется компания и срок условий
Личная цена есть не у всех товаровПравило отсутствующего значенияПоказать общую цену или запросить расчёт
Доступны несколько условийНазванный приоритетВыбрать договор, группу или другое основание

В 1С-Битрикс типами цен управляют в разделе «Магазин → Настройки → Цены → Типы цен». У каждого типа есть ID, код и название: по ним сотрудники и программа различают цены для групп покупателей. Справка отмечает ограничения доступности для редакций, поэтому перед оценкой исполнитель сверяет возможности установленного продукта. Облачный Битрикс24 и 1С-Битрикс — разные продукты, их инструкции не следует смешивать.

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

Кто получает право на оптовую цену

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

В настройках типов цен Битрикс24 выбираются группы, которые могут просматривать и покупать товары по этому типу. При создании есть поля «Базовый», «Внешний код», «Код» и «Название». Базовый тип может быть только один, а код задаётся уникальным именем на латинице. Это конкретные возможности платформы. Привязку сотрудников покупателя к организации и договору исполнитель отдельно показывает на вашем сайте.

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

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

Наглядный разбор

Как покупатель получает свою цену

  1. Вход

    Компания определена

  2. Группа

    Назначен нужный договор

  3. Каталог

    Показана договорная цена

  4. Заказ

    Та же сумма сохранена

Цена появляется после проверки клиента и его условий.

Когда личная цена появляется на странице

После входа сайт определяет доступные условия и использует их во всех местах показа товара: каталоге, поиске, карточке, корзине и предложениях похожих товаров. По каталогу покупатель заранее оценивает стоимость заказа. Разные цены в соседних блоках заставят его выяснять, какую сумму магазин действительно предлагает. В Битрикс24 создание типа цены не завершает настройку: справка требует заполнить соответствующие поля товаров и включить тип в настройках каталога. Новое ценовое поле сначала скрыто. Эта деталь объясняет, почему одного добавленного названия в списке цен недостаточно для появления персонального предложения у клиента.

Для отсутствующего значения я предпочту ясный запрос цены случайной подстановке нуля. Если компания разрешает использовать общую стоимость, это обозначают как обычную цену, а не как персональную выгоду. Здесь выбор зависит от коммерческой политики: можно ли продать товар по общему прайсу или требуется отдельное предложение менеджера.

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

Корзина, количество и дополнительные скидки

Если прайс зависит от объёма покупки, сайт пересчитывает цену при изменении количества, но сначала владелец должен определить область действия порога: один товар, группу товаров или заказ целиком, поскольку каждый из этих вариантов даёт собственный результат. Без этого разработчик не сможет однозначно рассчитать итог. В расширенном управлении ценами 1С-Битрикс есть поля «От» и «До» для количества, «Цена (за единицу)» и «Валюта». Они позволяют описывать диапазоны. Перед запуском такие диапазоны проверяют на границах: значение до порога, на пороге и после него. На каждой границе сравнивают стоимость единицы и итог строки, которые появились после изменения количества в корзине.

Персональная цена и дополнительная скидка — разные правила. Если маркетинговая акция не действует на индивидуальные прайсы, покупатель узнаёт об этом до ввода промокода, а сайт не обещает применить льготу, которую затем отменит на последнем шаге. При совместном применении компания отдельно определяет основу расчёта и приоритет, как в разборе нескольких скидок на один товар.

Проверять арифметику лучше на небольшом наборе позиций, для которых продажи заранее рассчитали ожидаемый результат, чем на большой корзине, где расхождение можно заметить только по общей сумме. После этого добавляют смешанный заказ с разными правилами.

Почему скрытой колонки недостаточно

Скрытие чужого прайса в интерфейсе помогает избежать случайного показа, но права доступа защищают данные на сервере. Если сайт отправляет в браузер все цены, а затем просто прячет ненужные, информация уже передана пользователю. Рекомендации OWASP по авторизации требуют контролировать разрешения при каждом запросе и не полагаться на клиентскую сторону. Для оптового магазина из этого следует конкретное задание разработчику: чужие цены не возвращаются при прямом запросе, а стоимость заказа вычисляется по правам покупателя, даже если он изменил отправленные из браузера значения.

В приёмке нужны разные тестовые компании с заведомо различными условиями. Сначала одну и ту же карточку открывают под каждой из них, потом выходят из аккаунта и повторяют просмотр. Дополнительно исполнитель испытывает прямые обращения к данным. Защиту запроса подтверждает разработчик. Эти действия дополняют друг друга, потому что обычный просмотр не показывает все способы получения сведений.

Отдельное внимание нужно сохранённым копиям страниц — кешу. Это способ ускорить повторный показ, который при неправильной настройке может смешать содержимое разных пользователей. Разработчик объясняет, как отделены персональные данные и что происходит после смены аккаунта в том же браузере. Доступность чужой цены — основание остановить запуск.

Наглядный разбор

Где нельзя доверять цене

  1. Витрина

    Показывает доступное покупателю

  2. Корзина

    Пересчитывает перед заказом

  3. Сервер

    Не принимает чужую цену из браузера

Проверка на сервере важна даже при корректном экране.

Кто обновляет условия и разбирает исключения

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

Полезно отдельно описать начало и окончание условий, замену прайса, уход сотрудника покупателя и изменение группы. Для каждой операции известно, кто её выполняет и когда она становится видна клиенту. Тогда менеджер сможет объяснить расхождение без просьбы «попробуйте другой браузер», если причина на самом деле в истёкшей договорённости.

Ручная правка требует основания. Когда менеджер снижает стоимость одного заказа, интерфейс должен отличать эту уступку от изменения постоянного прайса компании, иначе разовое решение начнёт влиять на будущие покупки и отделу продаж придётся разбирать непредусмотренную скидку. В интерфейсе и инструкции эти действия разделяют.

Отдельно определяют, в какой момент цена заказа фиксируется. Прежде чем разработчик настроит автоматический пересчёт, отдел продаж определяет судьбу существующих заказов: сохранить подтверждённую стоимость, согласовать её заново или применить другой принятый порядок, чтобы обновление прайса для новых покупок не изменило прежние договорённости случайно.

Если товар появился в каталоге раньше своей цены, его включают в список недостающих значений и передают сотруднику, который ведёт прайс, чтобы он мог заполнить сведения до обращения клиента.

Попросите показать один товар под разными клиентами

Для разговора с исполнителем полезен предметный вопрос: «Что увидят на одной карточке гость, обычный оптовик и клиент с индивидуальным прайсом, и какая цена попадёт в их заказы?» Ответ лучше показать на тестовых аккаунтах: так можно сопоставить доступ каждого покупателя и цену, попавшую в его заказ.

Продолжая приёмку, сотрудник меняет количество, входит и выходит из кабинета, выбирает другую организацию и добавляет промокод, причём ожидаемую цену для каждого состояния отдел продаж называет заранее, чтобы результат сайта можно было сравнить с принятым правилом. Если у клиента отсутствует личное значение для товара, отдельно показывают выбранный путь: общая стоимость или обращение за расчётом. Так принимается не один удачный экран, а правило, которое магазин будет повторять для покупателей.

Финальный набор включает и запретные действия: получение чужого прайса, изменение цены через данные браузера и заказ после отзыва прав. Испытания выполняет разработчик на тестовом окружении. Компания получает краткое описание результата без раскрытия настоящих условий других клиентов.

Перед доработкой оптового сайта подготовьте небольшой список товаров и клиентов с ожидаемыми ценами. Он поможет выбрать модель доступа, оценить объём и принять работу, а потом останется контрольным набором для следующих обновлений каталога.

Источники и полезные ссылки

  1. 1С-Битрикс: типы цен и ограничения редакций ↗
  2. Битрикс24: типы цен для групп покупателей ↗
  3. 1С-Битрикс: цены товара и диапазоны количества ↗
  4. OWASP: проверка прав доступа ↗

Интерфейсы и возможности сервисов могут меняться. Перед настройкой сверяйтесь с актуальной документацией.

Игорь Крещенко

Руководитель ШТАБ ИТ. Занимается управлением проектами, веб-разработкой, рекламой и PR. Подробнее об авторе →