Доброго времени суток. Проблема вот в чем. С помощью события OnSaleComponentOrderOneStepProcess проверяю остатки товара у поставщика, и если товара нет в наличии надо вывести ошибку, как выводятся стандартные ошибки при оформлении заказа. Т.е. делаю как: в инит.пхп добавляю
Код |
---|
AddEventHandler('sale', 'OnSaleComponentOrderOneStepProcess', Array('MayClass', 'OnSaleComponentOrderOneStepProcessFunction'));
|
Далее, сам класс.
Код |
---|
class MayClass {
public static function OnSaleComponentOrderOneStepProcessFunction(&$arResult, &$arUserResult, &$arParams){
$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => "s1",
"ORDER_ID" => "NULL"
),
false,
false,
array("PRODUCT_ID")
);
while ($arItems = $dbBasketItems->Fetch())
{
if ('' != $arItems['PRODUCT_PROVIDER_CLASS'] || '' != $arItems["CALLBACK_FUNC"])
{
$resProduct = CIBlockElement::GetByID($arItems["PRODUCT_ID"]);
if($arProduct = $resProduct->GetNext()){
$productQuantity = GetQuantityNew($arProduct["XML_ID"]);//функция запроса остатков у поставщика
if($productQuantity<=0){
$arResult["ERROR"][] = "Товара нет";
file_put_contents($_SERVER["DOCUMENT_ROOT"].'/log.txt', $arProduct["XML_ID"]." - отсутствует\n", FILE_APPEND);
}
}
}
}
return $arResult;
}
}
|
В логе мы видим, все ок. Кол-во товара скрипт определяет, а вот сообщение об ошибке не передеает в компонент. Че делать то? Как мне проверить наличие остатка перед оформлением заказа и если товара нет, выдать ошибку?