
Омниканальная корзина со сложной логикой складов, доставок и программ лояльности

1. Определились с задачей и проанализировали существующие схемы
Наш клиент — ДжамильКо, одна из ведущих российских компаний в сфере маркетинга и дистрибуции одежды, обуви и аксессуаров от ведущих мировых производителей. Одним из самых известных брендов был NewBalance — обувь продавали и оффлайн, и в интернете. Компания хотела дать клиентам возможность бронировать товар в магазине, поэтому мы взялись за настройку омниканальной корзины со сложной логикой взаимодействия складов, доставок и программ лояльности.
- Омниканальная корзина — это объединение разных каналов доставки и оплаты в единую систему.
Задача
Если бренд продает товары только со своего склада — проблем нет. Пользователь добавляет их в корзину, стандартно оформляет заказ — заполняет данные о себе, указывает адрес для доставки, выбирает способ оплаты. Но если, например, в заказе есть товары, часть из которых находится на складе интернет-магазина, а часть — в торговых залах, откуда пока нельзя оформить доставку, стандартный способ перестает работать: не получится заказать часть товаров курьером, а часть — в ближайший магазин. Это неудобно для пользователей: приходится либо оформлять два разных заказа, либо искать другой магазин.

Как эту проблему решают на других проектах
Некоторые магазины дают оформить заказ на самовывоз по механике «купить в 1 клик», но оплатить и использовать программу лояльности получится только в розничном магазине.

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

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

Еще один метод, который мы пробуем на другом проекте — если в корзине есть товары, что доступны онлайн, и те, что продаются только в розницу, то клиент видит оповещение «увеличенный срок доставки» и может заказать курьера для всех позиций. Но есть и минусы: не получится оформить самовывоз, и срок доставки больше ожидаемого.
На маркетплейсах можно оформить раздельную корзину в одном окне: например, когда клиент выбирает товары, которые доставляют внутри РФ, и те, что привозят из-за рубежа. Но доставка иностранных заказов обычно занимает месяц и больше.

2. Определились с логикой разбивки заказа
Мы решили организовать логику разбивки заказов на подзаказы — чтобы оформлять доставку всех товаров в одном окне и не заморачиваться, ровно так, как пользователь привык покупать на маркетплейсах.
Клиент может использовать следующие способы доставки:
- Доставка курьером со склада;
- Доставка в пункт выдачи;
- Доставка в выбранную розничную точку.
Для каждого способа доставки действуют свои ограничения. Например, в розничных магазинах может быть отключена курьерская доставка по техническим или иным причинам. Некоторые товары в целом невозможно отправить курьером, поскольку это запрещено законом (например, взрывоопасные аэрозоли). Это нужно учитывать: например, на этапе корзины оповещать клиента о том, что товар доступен только в розничном магазине.

Мы решили, что в случае с курьерской доставкой или доставкой в пункт выдачи каждый подзаказ должен формироваться исходя из приоритетов складов. На всех этих этапах нужна оптимизация процесса отгрузки. Например, если в корзине пользователя пять товаров, то лучше доставить их из одной-двух точек, а не из пяти, тем самым сократив расходы на доставку.
Сделали акцент на курьерскую доставку со склада и розничного магазина
В приоритете — максимально удобные для пользователя варианты. Но если ни один из них не подходит, юзер может выбрать самовывоз из ПВЗ или из розничного магазина.
Разберем, как выглядит процесс доставки курьером из розничного магазина с омниканальной корзиной:
1. Ищем магазин, где все товары есть в наличии. Если получилось найти такую точку, то оформляем заказ без разбивки на подзаказы.
2. Составляем комбинации магазинов. Это список розничных магазинов, где есть минимум одна единица товара с анализом общего вхождения всех товаров корзины по пути меньших логистических цепочек. Так заказ разделяется на подзаказы: например, из одного магазина доставят кроссовки и футболку, и второго — спортивные штаны.

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

В таком случае мы списываем максимально возможное количество товара из первой точки, а остаток — из второго магазина. Если количество товаров одинаковое, то списываем максимум из магазина с самым высоким приоритетом (наименьшее число). Если полный состав товаров в комбинации двух магазинов не найден, то перебираем комбинации 1+1+1 и повторяем весь цикл описанный во втором пункте.
Рассчитали стоимость доставки
Цена может меняться в зависимости от общей суммы товаров в заказе (товаров из всех подзаказов).
Разберем, как варьируется стоимость доставки:
- Курьерская доставка и доставка в пункт выдачи: при заказе товаров на сумму до 10 тысяч рублей стоимость рассчитывается по внутренним тарифам курьерской службы. Если сумма заказа выше 10 000 рублей, и оплату провели онлайн, то доставка бесплатная;
- Самовывоз из магазина: бесплатно при любой сумме заказа.
Для каждого способа доставки доступны свои способы оплаты:
- Самовывоз из розницы: действует только оплата наличными или картой при получении;
- Доставка в пункт выдачи и курьерская доставка: можно оплатить как при получении, так и онлайн.

Способы оплаты являются взаимоисключающими. В рамках одного подзаказа должен быть доступен только один способ оплаты.
3. Доработали программы лояльности
С омниканальной корзиной при покупке в интернет-магазине действуют различные механики программы лояльности — промокод, АэрофлотБонус, бонусная система. Все они зависят от тех способов доставки, которые выбраны пользователем. Разберем подробнее:
Самовывоз из магазина и курьерская доставка: можно списать или начислить бонусы на карту, использовать карту «Аэрофлот Бонус», но применить промокод не получится.
Доставка в пункт выдачи и курьером: можно как использовать бонусные карты, так и применить промокод.

Добавили поддержку промо-механик
Промо-механики поддерживаются на уровне всех подзаказов пользователя. Объясним на примере. Допустим, клиент заказал постельное белье от магазина Х за 10 000 рублей и других товаров на 35 000 рублей. Если магазин Х дает 1000 бонусов за покупку от 40 000 рублей, то пользователь их получит, так как оценивается полная стоимость заказа, а не конкретных позиций.
Какие бывают промо-механики:
- Статичные — например, для онлайн-оплаты применяется скидка 5%;
- В зависимости от акций — например, скидка 20% на изделия из выделенного ассортимента при покупке двух любых единиц; прогрессивная скидка за товары от 10 000 рублей; подарок за покупку на сайте при определенной стоимости заказа.

Что в итоге
В результате мы собрали действительно гибкую и удобную омниканальную корзину — пользователь видит все доступные способы доставки, может комбинировать товары из розничных магазинов и интернет-склада, оплачивать разными способами и при этом использовать все промо-механики.
Мы детально проработали логику разбивки заказов, определили приоритеты складов, оптимизировали маршруты доставки и учли нюансы, вроде невозможности курьерской доставки некоторых категорий товаров. Всё это — в одном интерфейсе, без необходимости оформлять два и более заказа вручную.
Изначально эта корзина создавалась для New Balance — она должна была соединить онлайн и офлайн-продажи и позволить пользователю бронировать товар в магазине и заказывать его с доставкой. Но после того как New Balance ушёл с российского рынка, наработки не пропали: корзина начала внедряться на других проектах ДжамильКо — например, в Wolford, Bootwood и других брендах из их портфеля.
Другие кейсы





