require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
use Bitrix\Main,
Bitrix\Main\Loader,
Bitrix\Main\Config\Option,
Bitrix\Sale,
Bitrix\Main\Type,
Bitrix\Main\Localization\Loc;
IncludeModuleLangFile(__FILE__);
/** @global CMain $APPLICATION */
global $APPLICATION, $USER;
/** @var CAdminMessage $message */
Loader::includeModule('sale');
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if($saleModulePermissions == "D")
$APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED"));
$statusesList = \Bitrix\Sale\OrderStatus::getStatusesUserCanDoOperations($USER->GetID(), array('delete'));
if($saleModulePermissions < "W" && empty($statusesList))
{
LocalRedirect("sale_order_archive.php?lang=".LANGUAGE_ID);
}
$res = false;
if($_SERVER["REQUEST_METHOD"] == "POST" && $_REQUEST["archive"]=="Y" && check_bitrix_sessid())
{
CUtil::JSPostUnescape();
@set_time_limit(0);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_js.php");
$timeLimit = null;
$filter = array();
if(isset($_REQUEST["site_id"]) && $_REQUEST["site_id"] != "")
$nextStep["SITE_ID"] = $_REQUEST["site_id"];
if (isset($_POST['archive_status_id']))
{
$filter["STATUS_ID"] = array();
foreach ($_POST['archive_status_id'] as $key=>$status)
{
if ($saleModulePermissions == "W" || in_array($status[$key], $statusesList))
{
$filter["STATUS_ID"][] = $status[$key];
}
}
}
if($_POST['archive_payed'] <> '')
{
$filter["=PAYED"] = $_POST['archive_payed'];
}
if($_POST['archive_canceled'] <> '')
{
$filter["=CANCELED"] = $_POST['archive_canceled'];
}
if($_POST['archive_deducted'] <> '')
{
$filter["=DEDUCTED"] = $_POST['archive_deducted'];
}
if (isset($_POST['archive_site']))
{
foreach ($_POST['archive_site'] as $key=>$site)
{
$filter["LID"][] = $site[$key];
}
}
if ((int)($_POST['archive_period']) > 0)
{
$date = new Type\DateTime();
$latestDate = $date->add('-'.(int)$_POST['archive_period'].' day');
$filter['<=DATE_INSERT'] = $latestDate;
}
if (isset($_POST['archive_count_execution']))
{
$timeLimit = (int)$_POST['archive_count_execution'];
}
unset($filter['PERIOD']);
if ($saleModulePermissions == 'P')
{
$userCompanyList = Sale\Services\Company\Manager::getUserCompanyList($USER->GetID());
$filter[] = array(
"LOGIC" => "OR",
'=RESPONSIBLE_ID' => $USER->GetID(),
'=COMPANY_ID' => $userCompanyList,
);
}
if (
($_POST['archive_blocked_order_accept'] !== 'Y' && $saleModulePermissions == "W")
|| $saleModulePermissions < "W"
)
{
$filter[] = array(
"LOGIC" => "OR",
'=LOCKED_BY' => $USER->GetID(),
array(
"=DATE_LOCK" => null,
'=LOCKED_BY' => null,
)
);
}
$resultArchiving = Sale\Archive\Manager::archiveOrders($filter, 200, $timeLimit);
$dataResult = $resultArchiving->getData();
$count = (int)$dataResult['count'];
if($_POST['countArchived'] <> '')
{
$count += (int)$_POST['countArchived'];
}
if($resultArchiving->isSuccess() && $dataResult['count'] > 0)
{
CAdminMessage::ShowMessage(array(
"MESSAGE"=>Loc::getMessage("ARCHIVE_IN_PROGRESS"),
"DETAILS"=>Loc::getMessage("ARCHIVE_TOTAL")." ".$count."
".Loc::getMessage("SEARCH_REINDEX_NEXT_STEP")."",
"HTML"=>true,
"TYPE"=>"PROGRESS",
));
?>
}
else
{
CAdminMessage::ShowMessage(array(
"MESSAGE"=>Loc::getMessage("ARCHIVE_COMPLETE"),
"DETAILS"=>Loc::getMessage("ARCHIVE_TOTAL")." ".$count."",
"HTML"=>true,
"TYPE"=>"OK",
));
if (!$resultArchiving->isSuccess())
{
$errorList = $resultArchiving->getErrorMessages();
foreach ($errorList as $error)
{
CAdminMessage::ShowMessage(array(
"MESSAGE"=>$error,
"TYPE"=>"ERROR",
));
}
}
}
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin_js.php");
}
else
{
$APPLICATION->SetTitle(Loc::getMessage("ARCHIVE_TITLE"));
$aTabs = array(
array("DIV" => "edit1", "TAB" => Loc::getMessage("ARCHIVE_TAB"), "ICON"=>"main_user_edit"),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs, true, true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
?>