[spoiler]
Напишем функцию в init.php и будем ее запускать на агенте раз в день, например.
function My_Clear_Orders()
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (CModule::IncludeModule("sale")) {
//получим текущую дату в формате сайта
$date=date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), time());?><br/><?
// получим Unix timestamp даты
$stmp = MakeTimeStamp($date, "DD.MM.YYYY");?><br/><?
//создадим массив добавления(отнимания) срока(5 дней)
$arrAddTime = array(
"DD" => -5,
"MM" => 0,
"YYYY" => 0,
"HH" => 0,
"MI" => 0,
"SS" => 0,
);
//Получим дату, младше которой заказы аннулируются
//echo $date_critical_order = date("d.m.Y",AddToTimeStamp($arrAddTime, $stmp));
// получим все заказы старше текущей даты на 5 дней
$arFilter = Array(
"PAYED"=>"N",
"CANCELED"=>"N",
"<=DATE_INSERT"=>date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")),AddToTimeStamp($arrAddTime, $stmp))
);
$db_sales = CSaleOrder::GetList(
array("ID"=>"DESC"),
$arFilter,
false,
false,
//array()
array("ID", "PAYED", "CANCELED", "DATE_INSERT", "USER_LOGIN")
);
while ($id_sales = $db_sales->Fetch())
{
CSaleOrder::CancelOrder($id_sales["ID"], "Y", "Заказ не был оплачен более 5 дней с момента оформления и аннулирован.");
}
return "My_Clear_Orders();"; // обязательно сделаем return для агента, иначе агент самоуничтожится после одного запуска
}
}
|