Как вывести в письме заказы по сегменту
В рассылке можно вывести заказы за период, используя сегменты и параметр Recipient.Orders.FilterBySegment().
Параметр доступен как в автоматических, так и массовых рассылках.
Другой вариант задачи: вывести в письме информацию по конкретному заказу из сценария. Например, после оформления заказа или после доставки для получения отзыва. Для такой задачи используйте параметр Order, описанный в статье.
Вывод заказов по сегменту
1. Определите, информация по каким заказам должна попасть в письмо.
Например, в своей рассылке мы хотим учитывать заказы, совершённые за последние 30 дней в статусе «Оформлена»:
В фильтр должны попасть все действия нужных заказов, чтобы учитывались их конечные статусы
2. Создаём сегмент по инструкции:
3. Находим параметр. Подробнее о шаблонизаторе — в статье.
Так как у нас нет привязки к событию, а заказы мы достаём из привязки к клиенту, базовый параметр — Recipient. Дальше — Orders.
Чтобы отфильтровать заказы по нашему сегменту, выберем его в списке FilterBySegments():
С помощью функции Take() отбираем нужное количество заказов. Например, ставим Take(1), чтобы обратиться к последнему заказу.
4. Выводим данные по самим заказам, например, стоимость, дату или дополнительные поля.
Так как параметр Recipient.Orders.FilterBySegment("").Take() является коллекцией, чтобы обратиться к каждому элементу используем цикл for...end for.
Вёрстка:
@{for order in Recipient.Orders.FilterBySegment("Zakazy").Take(1)}
Идентификатор - ${order.IDs.VneshniyID}
Фактическая стоимость - ${order.TotalAmount}
Стоимость (сумма каждой линии чека + стоимость доставки) - ${order.BaseAmount}
Дата и время первого действия - ${order.DateTime}
@{end for}
5. Выводим данные по позициям заказа
Позиции заказа — коллекция, поэтому для её вывода нужен свой цикл for...end for.
Данные по позиции берутся те, что переданы в операции/импорте по созданию заказа. Они спрятаны в коллекции items.
Данные по продукту — те, что переданы в фиде и записаны у продукта в проекте. Они спрятаны в параметре items->product.
Цена позиции и цена продукта могут отличаться. Например, цена на продукт могла повыситься уже после продажи. Или когда в заказе применены скидки, которые изменили цену товара.
Вёрстка:
@{for order in Recipient.Orders.FilterBySegment("Zakazi").Take(1)}
@{for item in order.Items}
${item.BasePrice} - цена позиции
${Item.DiscountAmount} - фактическая цена минус цена позиции
${item.Price} - фактическая цена
${item.Product.Price} - цена продукта на проекте
${item.Product.Name} - название продукта
@{end for}
@{end for}
Как вывести количество и сумму всех заказов
Для этой задачи не нужен сегмент. Используем параметры:
- Recipient.Orders.Count — количество всех заказов
- Recipient.Orders.TotalPriceSum — сумма оплаты по заказам (фактическая стоимость) всех заказов, кроме отменённых