Типовые ситуации
Работа с крупногабаритными товарами
В данном разделе будет собрана информация по работе с крупногабаритными товарами.
1. Я продаю и крупногабаритные и некрупногабаритные товары, как в этом случае работать с решением?
Ниже я опишу типовую схему работы, которую обычно используют в этих случаях. Основное правило от которого мы отталкиваемся - часть складов принимают крупногабаритный товар, а часть не принимают. Соотвественно Ozon не даст загрузить товарный остаток крупногабаритного товара на склад, который не принимает крупногабаритные товары.
Как обычно решают эту проблему:
1. Со стороны Ozon создаётся два склада, один для отгрузки обычных товаров, другой для отгрузки крупногабаритных товаров.
2. Со стороны решения указываем 2 склада, у одного указываем "Только некрупногабаритный товар", у второго "Только крупногабаритный товар"
Не забываем, что для каждого из складов нужно выбрать источник остатков на вкладке каталог
3. Крупногабаритных товаров указываем системное свойство решения "Крупногабаритный товар Ozon (системное)" = "Да"
4. Готово.
При таких настройках, на первый склад будут выгружаться остатки только некрупногабаритных товаров, а на второй только остатки крупногабаритных товаров (у которых установлено "Крупногабаритный товар Ozon (системное)" = "Да")
Интеграция сайта с несколькими лк
Решение поддерживает интеграцию одного сайта с несколькими личными кабинетами Ozon (количество подключаемых лк не ограничено).
По умолчанию для каждого активного сайта заведенного в админке отображается свой слот интеграции.
Соответственно если у вас создано 2 записи сайтов в битриксе:
То решение будет показывать 2 слота для интеграции с двумя различными кабинетами:
Как добавить еще слоты для интеграции?
Для добавления дополнительных слотов интеграции - нужно добавить дополнительные записи сайтов в битрикс. Заполнять и настраивать их ненужно, нужна только строка сайта.
Добавить и посмотреть записи сайтов можно перейдя в Админку -> Настройки -> Настройки продукта -> Сайты -> Список сайтов
Для добавления сайта нажимаем добавить сайт.
В форме добавления заполняем следующие поля:
- ID (например o2)
- Название (например служебный сайт oz2)
- Папка сайта (например /o2 проще всего делать папку сайта похожую на ID)
- Сортировка (например 500)
- Создать почтовые шаблоны - выбираем не создавать.
- Шаблон сайта - выбрать шаблон и выбираем в первой строке любой шаблон
Остальные настройки можно не менять.
Нажимаем сохранить. Если всё заполнено корректно - создание пройдет успешно и отобразится еще один слот.
Добавление кнопки Купить на Ozon
Добавить кнопку купить на Ozon можно разместив компонент решения в нужном месте сайта (например в шаблоне карточки товара).
Код вставки компонента и описание параметров:
<?$APPLICATION->IncludeComponent(
"arturgolubev:ozon.link",
"",
Array(
"CACHE_TIME" => "360000",
"CACHE_TYPE" => "A",
"ELEMENT_ID" => $elementID, // айди товара или торгового предложения
"OZON_ACCOUNT" => "s1", // аккаунт ozon
"TEXT_BEFORE_BTN" => "Купить на ", // текст перед кнокой
"TEXT_BTN" => "Ozon" // текст на кнопке
), $component
);?>
Так же можно разместить компонент на тестовой странице, настроить параметры компонента через интерфейс параметров компонентов и переместить в конечное место размещения.
Особое внимание уделите переменной $elementID - вместо неё нужно указать переменную в которой хранится айди товара или торгового предложения для которого формируется ссылка
Компонент проверяет заполнен ли у товара связывающий артикул, запрашивает через API ссылку на карточку и выводит кнопку только если найдена реальная связь.
Маркировка товаров
Решение поддерживает передачу маркировки товаров с сайта в Ozon.
Маркировка по товарам должна быть отправлена, когда заказ находится в статусе "Ожидает упаковки (awaiting_packaging)"
Передать маркировку можно двумя способами - вручную из конкретного заказа и автоматически по триггеру смены статуса.
Передача вручную для конкретного заказа
Для передачи маркировки вручную нужно открыть заказ в админке, перейти на вкладку Ozon. В доступных действиях выбрать "Отправить коды маркировки".
После этого откроется окно передачи маркировки. Вводим в него код маркировки и нажимаем отправить.
После отправки вы увидите сообщение о том что маркировка успешно отправлена. После отправки маркировка будет сохранена в служебное поле конкретной позиции заказа.
Передача автоматически по триггеру
Для автоматической передачи маркировки мы сначала должны выбрать статус, при установке которого будет отправляться маркировка. Это можно сделать в настройках решения, на вкладке Автоматизация FBS, настройка "Отправить доп. информацию при установке статуса".
Теперь при установке указанного статуса в заказе, решение будет проверять наличие маркировки в полях и если маркировка есть - отправлять её в Ozon.
Указать маркировку для передачи можно в одном из двух мест:
а) В свойстве конкретной позиции корзины "Ozon loaded mark" (открываем заказ на изменение, открываем позицию заказа требующую маркировки на изменение и там будет такое свойство)
б) В стандартном интерфейсе указания маркировки битрикса, в отгрузке (это стандартное поле, что бы оно отображалось должна быть настроена работа с маркировкой в битриксе)
Типовые ошибки и методы их решения
В данной заметке будут отписаны ошибки которые вы можете увидеть в логе и необходимая реакция на их:
Остатки
- "Ошибка обновления остатков 6204 - Product not found" - решение сделало запрос на установку остатков к озон - у товара с артикулом 6204 установить остаток X. Озон ответил что у него нет товара с артикулом 6204
Цены
- "Ошибка обновления цен 6204 - product not found" - решение сделало запрос на установку цен к озон - у товара с артикулом 6204 установить цену X. Озон ответил что у него нет товара с артикулом 6204
События
Модификация рассчёта остатков
Внимание:
События это заложенная разработчиком возможность вносить изменения в логику решения без кастомизации (с сохранением обновлений)
Для работы с событиями необходимы базовые навыки программирования. События позволяют сделать подстройку решения под индивидуальные требования сайта, поэтому их реализация не входит в стандартную техническую поддержку решения
Для изменения рассчитанных решением остатков вы можете использовать событие решения onAfterCalculateStocks.
AddEventHandler("arturgolubev.ozon", "onAfterCalculateStocks", "onAfterCalculateStocks", 10);
function onAfterCalculateStocks($sid, &$stocks){
// $sid - идентификатор сайта
// $stocks - массив актуальных рассчитанных данных
}
- Добавлять значения в массив крайне не рекомендуется.
- Учитывать режим изменений и итерации выгрузки не нужно - решение сделает это самостоятельно.
- Ключи массива $stocks в будущем могут измениться (если этого будет требовать дальнейшее улучшение функционала или смена api ozon).
- Не создавайте "тяжелых" обработчиков - если у вас тяжелая логика лучше её реализовать на событии изменения элемента, записать результат в свойство, свойство выбрать источником (это будет гораздо производительнее).
Модификация рассчёта цен
Внимание:
События это заложенная разработчиком возможность вносить изменения в логику решения без кастомизации (с сохранением обновлений)
Для работы с событиями необходимы базовые навыки программирования. События позволяют сделать подстройку решения под индивидуальные требования сайта, поэтому их реализация не входит в стандартную техническую поддержку решения
Для изменения рассчитанных решением цен вы можете использовать событие решения onAfterCalculatePrices.
AddEventHandler("arturgolubev.ozon", "onAfterCalculatePrices", "onAfterCalculatePrices", 10);
function onAfterCalculateStocks($sid, &$prices){
// $sid - идентификатор сайта
// $prices - массив актуальных рассчитанных данных
}
- Добавлять значения в массив крайне не рекомендуется.
- Учитывать режим изменений и итерации выгрузки не нужно - решение сделает это самостоятельно.
- Ключи массива $prices в будущем могут измениться (если этого будет требовать дальнейшее улучшение функционала или смена api ozon).
- Не создавайте "тяжелых" обработчиков - если у вас тяжелая логика лучше её реализовать на событии изменения элемента, записать результат в свойство, свойство выбрать источником (это будет гораздо производительнее).
Модификация заказов с Ozon
Внимание:
События это заложенная разработчиком возможность вносить изменения в логику решения без кастомизации (с сохранением обновлений)
Для работы с событиями необходимы базовые навыки программирования. События позволяют сделать подстройку решения под индивидуальные требования сайта, поэтому их реализация не входит в стандартную техническую поддержку решения
Для модификации заказов созданных на основе данных с Ozon вы можете использовать стандартное событие OnSaleOrderBeforeSaved
Пример использования события (в заказах созданных решением проверяем наличие заполненного email'а и если он не заполнен подставляем дефолтный):
<?
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderBeforeSaved',
'onSaleOrderModifyOzonData'
);
function onSaleOrderModifyOzonData(\Bitrix\Main\Event $event){
$order = $event->getParameter("ENTITY");
if($order)
{
$propertyCollection = $order->getPropertyCollection();
$propsData = array();
foreach ($propertyCollection as $propertyItem) {
if (!empty($propertyItem->getField("CODE"))) {
$propsData[$propertyItem->getField("CODE")] = trim($propertyItem->getValue());
}
}
if($propsData["AOZ_POSTING_NUMBER"]){
foreach ($propertyCollection as $propertyItem) {
switch ($propertyItem->getField("CODE")) {
case 'EMAIL':
if(!$propsData["EMAIL"]){
$propertyItem->setField("VALUE", "no-reply@ozon.ru");
}
break;
}
}
}
}
}
?>