Свершилось! Не знаю только на сколько правильно и корректно, но у меня все отлично работает! Если кто-то заметит что не ладное, прошу сообщить, т.к. опыта программирования у меня нету, только начинаю осваивать.
Напомню, данный обработчик добавляет торговое предложение для второго типа цены, с ценой равной закупочной (добавляется и обновляется при приходе товара на склад, где собственно и задается закупочная цена).
[CODE]AddEventHandler("catalog", "OnStoreProductUpdate", array("MyClass", "OnStoreProductUpdateHandler")); //изменение товара на складе
AddEventHandler("catalog", "OnStoreProductAdd", array("MyClass", "OnStoreProductUpdateHandler")); //добавление товара на склад
AddEventHandler("catalog", "OnProductUpdate", "notInStore"); //событие, для того, что бы вытащить данные по товару
class MyClass {
protected static $handlerDisallow = false;
public static function OnStoreProductUpdateHandler($ID, $arFields)
{
CModule::IncludeModule("iblock");
CModule::IncludeModule("sale");
CModule::IncludeModule("catalog");
if (self::$handlerDisallow)
return;
self::$handlerDisallow = true;
function notInStore($ID,$Fields){
$ar_res = CCatalogProduct::GetByIDEx($ID); //получаем данные товара по ID
$PRODUCT_ID = $ar_res['ID']; // $ID = прихода товара на склад
$price_2 = $ar_res['PRODUCT']['PURCHASING_PRICE'];
$PRICE_TYPE_ID = 2; // оставляем для второго типа товаров.
$arFields = Array(
"PRODUCT_ID" => $PRODUCT_ID,
"CATALOG_GROUP_ID" => $PRICE_TYPE_ID,
"PRICE" => $price_2, // сюда цену закупочную.
"CURRENCY" => "RUB",
"QUANTITY_FROM" => false,
"QUANTITY_TO" => false
);
$res = CPrice::GetList(
array(),
array(
"PRODUCT_ID" => $PRODUCT_ID,
"CATALOG_GROUP_ID" => $PRICE_TYPE_ID
)
);
if ($arr = $res->Fetch())
{
CPrice::Update($arr["ID"], $arFields);
}
else
{
CPrice::Add($arFields);
}
}
}
}
[/CODE]