События
С версии 1.4.5 добавлены события, срабатывающие перед отправкой данных о ценах (OnUpdatePrice) и остатках (OnUpdateStock) товара, перед выгрузкой нового товара (OnUploadItem). События могут быть использованы, например, для применения наценки или изменения количества товара. 
 
С версии 1.5.3 добавлены события перед проверкой заполненности атрибутов для Озон простых товаров "OnItemPrepare" и торговых предложений "OnOfferPrepare". могут быть использованы, например, для изменения атрибутов.

С версии 1.5.4 добавлено событие перед созданием заказа "OnOrderNew". Может быть использовано для изменения полей заказа перед сохранением.

С версии 2.0.7 добавлено событие после подготовки массива данных товара для выгрузки AfterItemPrepare. 


Пример обработчика в init.php

<?
AddEventHandler("maxyss.ozon", "OnUpdatePrice", Array("MyClass", "OnUpdatePriceMy"));
AddEventHandler("maxyss.ozon", "OnUpdateStock", Array("MyClass", "OnUpdateStockMy")); AddEventHandler("maxyss.ozon", "OnUploadItem", Array("MyClass", "OnUploadItemMy"));


class MyClass
{
function OnUpdatePriceMy(&$items)
{
foreach ($items as &$item){
$item['price'] = strval($item['price']*1.1);
}
return $items;
} function OnUploadItemMy(&$items)
    {
foreach ($items as &$item){
// здесь изменяем $item
}
return $items;
}

function OnUpdateStockMy(&$items)
{
foreach ($items as &$item){
$item['stock'] = '0';
}
return $items;
}
} ?>


Пример для события создания заказа

<?
AddEventHandler("maxyss.ozon", "OnOrderNew", Array("MaxyssCustomClass", "OnOrderNewMy"));

class MaxyssCustomClass {

function OnOrderNewMy(&$order_bitrix, $order_ozon){

// здесь что-то делаем с $order_bitrix - это объект заказа в БУСе
// в $order_ozon находятся данные с Озона

return $order_bitrix;

}
}?>

Пример для "OnItemPrepare" и "OnOfferPrepare"

<?
AddEventHandler("maxyss.ozon", "OnItemPrepare", Array("MyClass", "OnItemPrepareMy"));

class MyClass
{
function OnUpdatePriceMy(&$arOzonAttrTovar, $arFields, $arProps)
{
// $arOzonAttrTovar - массив данных которые будут отправлены на Озон
// $arFields, $arProps поля и свойства элемента

// здесь что-то меняем в массиве $arOzonAttrTovar

return $arOzonAttrTovar;
}

} ?> Пример для "AfterItemPrepare"

<? AddEventHandler("maxyss.ozon", "AfterItemPrepare", "AfterItemPrepareMy");
function AfterItemPrepareMy(&$arSku, $arFields, $arProps, $arSettings)
{
$prop_sklad_v3 = unserialize($arSettings['PROP_SKLAD_ID_V3']);
foreach ($arSku['stock'] as $wh=>&$stock){
$stock_prop = 0;
foreach ($prop_sklad_v3[$wh] as $s) {
$stock_prop += $arProps[$s]['VALUE'];
}
$stock = $stock_prop;
}
return $arSku;
}
?> Пример для "AfterItemPrepare" <? AddEventHandler("maxyss.ozon", "OnBasketUpdate", Array("MaxyssCustomClass", "OnBasketUpdateMy"));
class MaxyssCustomClass {
function OnBasketUpdateMy($order_bitrix, &$order_ozon){
$order_ozon["products_bitrix"] = array(); // передаем пустой массив товаров чтобы корзина заказа не изменялась
return $order_ozon;
} } ?>