CGrain_Fastorder::CanBuyAll
Возвращает true при возможности покупки (при наличии на складе или если параметр товара "Разрешить покупку при отсутствии товара" имеет значение "нет") всех товаров, указанных в параметре $arProductID, в противном случае возвращает false. В параметре $arQuantity содержаться необходимое количество товаров для заказа, тогда функция вернет true, только если на складе присутствуют все товары в заданном количестве.
Параметры функции:
- $arProductID - массив идентификаторов товаров
- $arQuantity - массив, содержащий необходимое количество каждого товара соответственно, по умолчанию false - только одна единица каждого товара
Событие OnOrderNewSendEmail
Вызывается перед отправкой письма о новом заказе. Если обработчик события вернет false, то письмо не будет отправлено.
Параметры:
- $ORDER_ID - ID созданного заказа
- &$eventName - код почтового события (значение данной переменной можно изменять, по умолчанию "SALE_NEW_ORDER")
- &$arFields - массив полей почтового события (значение данной переменной можно изменять)
Пример использования:
AddEventHandler("grain.fastorder", "OnOrderNewSendEmail", "OnOrderNewSendEmailHandler");
function OnOrderNewSendEmailHandler($ID,&$eventName,&$arFields){
// дублируем письмо о новом заказе на E-mail менеджера из свойства пользователя UF_EMAIL_MANAGER
if($GLOBALS["USER"]->IsAuthorized()) {
$USER_ID=$GLOBALS["USER"]->GetID();
$rsUser = CUser::GetByID($USER_ID);
$arUser = $rsUser->Fetch();
$MANAGER_EMAIL = $arUser["UF_EMAIL_MANAGER"];
if($MANAGER_EMAIL) {
if(array_key_exists("BCC",$arFields) && strlen($arFields["BCC"])>0)
$arFields["BCC"] .= ",".$MANAGER_EMAIL;
else
$arFields["BCC"] = $MANAGER_EMAIL;
}
}
}
Примечание: данное событие полностью повторяет подобное из стандартных компонентов заказа.
AddEventHandler("grain.fastorder", "OnOrderNewSendEmail", "OnOrderNewSendEmailHandler");
function OnOrderNewSendEmailHandler($ID,&$eventName,&$arFields){
// дублируем письмо о новом заказе на E-mail менеджера из свойства пользователя UF_EMAIL_MANAGER
if($GLOBALS["USER"]->IsAuthorized()) {
$USER_ID=$GLOBALS["USER"]->GetID();
$rsUser = CUser::GetByID($USER_ID);
$arUser = $rsUser->Fetch();
$MANAGER_EMAIL = $arUser["UF_EMAIL_MANAGER"];
if($MANAGER_EMAIL) {
if(array_key_exists("BCC",$arFields) && strlen($arFields["BCC"])>0)
$arFields["BCC"] .= ",".$MANAGER_EMAIL;
else
$arFields["BCC"] = $MANAGER_EMAIL;
}
}
}
Событие OnComponentOrderComplete
Вызывается после создания заказа и привязки к нему товаров.
Параметры:
- $ORDER_ID - ID созданного заказа
- $arOrder - массив параметров заказа
- $arParams - массив параметров компонента "grain:fastorder"
Пример подключения обработчика события:
AddEventHandler("grain.fastorder", "OnComponentOrderComplete", "OnComponentOrderCompleteHandler");
function OnComponentOrderCompleteHandler($ORDER_ID,$arOrder,$arParams) {
// Устанавливаем значение свойства заказа с кодом 12
$VALUE = "значение свойства";
$arOrderProp = CSaleOrderProps::GetByID(12); // получаем параметры свойства заказа
if($arOrderProp) {
$dbOrderPropsValue = CSaleOrderPropsValue::GetList(
array(),
array(
"ORDER_ID" => $ORDER_ID,
"ORDER_PROPS_ID" => $arOrderProp["ID"]
)
);
if ($arOrderPropsValue = $dbOrderPropsValue->Fetch())
{
// если значение свойства уже добавлено к заказу, обновляем его
CSaleOrderPropsValue::Update($arOrderPropsValue["ID"], array("VALUE"=>$VALUE));
} else {
// если значение свойства не было добавлено ранее, добавляем
$arFields = array(
"ORDER_ID" => $ORDER_ID,
"ORDER_PROPS_ID" => $arOrderProp["ID"],
"NAME" => $arOrderProp["NAME"],
"CODE" => $arOrderProp["CODE"],
"VALUE" => $VALUE,
);
CSaleOrderPropsValue::Add($arFields); // Сохраняем значение свойства заказа
}
}
}
AddEventHandler("grain.fastorder", "OnComponentOrderComplete", "OnComponentOrderCompleteHandler");
function OnComponentOrderCompleteHandler($ORDER_ID,$arOrder,$arParams) {
// Устанавливаем значение свойства заказа с кодом 12
$VALUE = "значение свойства";
$arOrderProp = CSaleOrderProps::GetByID(12); // получаем параметры свойства заказа
if($arOrderProp) {
$dbOrderPropsValue = CSaleOrderPropsValue::GetList(
array(),
array(
"ORDER_ID" => $ORDER_ID,
"ORDER_PROPS_ID" => $arOrderProp["ID"]
)
);
if ($arOrderPropsValue = $dbOrderPropsValue->Fetch())
{
// если значение свойства уже добавлено к заказу, обновляем его
CSaleOrderPropsValue::Update($arOrderPropsValue["ID"], array("VALUE"=>$VALUE));
} else {
// если значение свойства не было добавлено ранее, добавляем
$arFields = array(
"ORDER_ID" => $ORDER_ID,
"ORDER_PROPS_ID" => $arOrderProp["ID"],
"NAME" => $arOrderProp["NAME"],
"CODE" => $arOrderProp["CODE"],
"VALUE" => $VALUE,
);
CSaleOrderPropsValue::Add($arFields); // Сохраняем значение свойства заказа
}
}
}