в init.php пишем
AddEventHandler("sale", "OnOrderUpdate", "OnOrderAddHandler");
function OnOrderAddHandler($ID, $arFields)
{
//при выборе пользователем способа доставки - "самовывоз", добавлял в сессию переменную dostavka со значением 'samovivos'
//второе условие - это условие для выхода, т.к. при обновлении заказа вызовется тоже самое событие и получится зацикливание
if($_SESSION["dostavka"]=='samovivos' && !$_SESSION["exit"]) {
//если соответствие найдено, но уменьшаем стоимость заказа на 10%
$orderPrice=$arFields["PRICE"]*0.9;
$arFieldsNew = array(
"PRICE" => $orderPrice,
"PAYED" => "Y",
"DATE_PAYED" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))),
"EMP_PAYED_ID" => $USER->GetID(),
"DELIVERY_ID"=>2,
"PAY_SYSTEM_ID"=>1,
"STATUS_ID"=> "F",
);
$_SESSION["exit"]='true';
//дали переменной произвольное значение, чтобы не произошло зацикливание и обновили заказ
CSaleOrder::Update($ID, $arFieldsNew);
}
$_SESSION["exit"]='';
};