<?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);
}
}
}
}
?>
<?AddEventHandler("sale", "OnSaleComponentOrderOneStepComplete", "OnSaleComponentOrderOneStepCompleteHandler"); // Добавление параметров заказа (закупочная цена, а так же базовая.)
function OnSaleComponentOrderOneStepCompleteHandler($ID, $arOrder){
CModule::IncludeModule("main");
CModule::IncludeModule("sale");
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"ORDER_ID" => $ID,
),
false,
false,
array("PRODUCT_ID")
);
while ($arIt = $dbBasketItems->Fetch()) // клеим ID и цену всех товаров в корзине
{
CModule::IncludeModule('catalog');
$ar_res = CCatalogProduct::GetByID($arIt['PRODUCT_ID']);
$all .= $arIt['PRODUCT_ID'].";".$ar_res['PURCHASING_PRICE']."|"; //передача ID товара и ЗАКУПОЧНАЯ стоимость
$ProdId = CPrice::GetBasePrice($arIt['PRODUCT_ID']); //массив с базовой ценой
$BasePrice .= $arIt['PRODUCT_ID'].";".$ProdId['PRICE']."|"; //передача ID товара и БАЗОВАЯ стоимость
}
$arFields_zak = array(
"ORDER_ID" => $ID,
"ORDER_PROPS_ID" => 2,
"NAME" => "Закупочная цена",
"CODE" => "ZAKUPPRICE",
"VALUE" => $all
);
CSaleOrderPropsValue::Add($arFields_zak);
$all = null;
$arFields_baz = array(
"ORDER_ID" => $ID,
"ORDER_PROPS_ID" => 4,
"NAME" => "Базовая",
"CODE" => "BASE_TO_ORDER",
"VALUE" => $BasePrice
);
CSaleOrderPropsValue::Add($arFields_baz);
}
?>
|