- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/archive/recovery/restorer.php
- Класс: BitrixSaleArchiveRecoveryRestorer
- Вызов: Restorer::load
static function load($id)
{
$id = (int)$id;
if ($id <= 0)
{
return null;
}
$archivedOrder = InternalsOrderArchiveTable::getList(
array(
"select" => array("*", "ORDER_FULL" => "ORDER_PACKED.ORDER_DATA"),
"filter" => array("=ID" => $id),
"limit" => 1
)
);
$orderFields = $archivedOrder->fetch();
if (!$orderFields)
return null;
$restorer = new self($id);
if (!$restorer->checkVersion($orderFields['VERSION']))
{
return null;
}
$restorer->version = (int)$orderFields['VERSION'];
$restorer->dateArchived = $orderFields['DATE_ARCHIVED'];
$builder = $restorer->loadBuilder();
$builder->setPackedOrder($restorer->packField($orderFields['ORDER_FULL']));
$orderFields['ID'] = $orderFields['ORDER_ID'];
$archiveFields = ['ORDER_DATA', 'ORDER_FULL', 'ORDER_ID', 'VERSION', 'DATE_ARCHIVED'];
foreach ($archiveFields as $fieldName)
{
unset($orderFields[$fieldName]);
}
$builder->setEntityFields('ORDER', $orderFields);
$basketArchivedItems = InternalsBasketArchiveTable::getList(
array(
"select" => array("*", "BASKET_FULL" => "BASKET_PACKED.BASKET_DATA"),
"filter" => array("ARCHIVE_ID" => $id)
)
);
$basketItems = [];
while ($item = $basketArchivedItems->fetch())
{
$builder->addPackedBasketItem(
$item['ID'],
$restorer->packField($item['BASKET_FULL'])
);
unset($item['BASKET_DATA'], $item['BASKET_FULL'], $item['ARCHIVE_ID']);
$basketItems[$item['ID']] = $item;
}
$builder->setEntityFields('BASKET', $basketItems);
$restorer->setBuilder($builder);
return $restorer;
}